Show HN: Adrafinil ~エージェントが作業している間だけ、Mac の Lid を開きっぱなしにしません~

2026/06/28 5:34

Show HN: Adrafinil ~エージェントが作業している間だけ、Mac の Lid を開きっぱなしにしません~

RSS: https://news.ycombinator.com/rss

要約

日本語翻訳:

Adrafinil は、Claude Code、Codex、Cursor、Gemini CLI、Aider、Hermes、OpenCode、Cline、および Pi といった AI コーディングエージェントがアクティブセッションを持っている間のみシステムスリープをブロックする macOS のメニューバーアプリケーションです。AI エージェントのセッションがアクティブでないときは、通常の動作(蓋を閉じたクラムシェルモードを含む)に自動的に戻ります。

caffeinate
や Amphetamine などの常時オン型ユーティリティとは異なり、Adrafinil は AI エージェントが完了した後、安全にスリープを復元します。標準的なインストールには macOS 26.4 以降(現在はこのバージョンでのみ検証済み)と、SMAppService を介した特権ヘルパーの登録を行うための管理権限が必要です。非管理者によるインストールでは、CLI は
~/.local/bin
に配置されます。Adrafinil は、ユーザー向け Adrafinil.app、ポリシーロジックを処理する非特権 AdrafinilDaemon、
setSleepBlocked(Bool)
を使用してスリープを制御する(
pmset disablesleep
を使用し、プライベートな IOPMrootDomain パスが干渉しないことを確認してから)ルートレベルの AdrafinilHelper からなる安全な 3 ティヤーのアーキテクチャを採用しています。Swift 6 厳密並行性で構築され、MIT ライセンス(ソースは https://github.com/kageroumado/adrafinil.git)下で提供されており、低レイテンシのパフォーマンスと明確なサーマルフィードバックを提供します。主要な機能には、蓋が閉じられた状態で CPU またはスキン温度が安全閾値を超える場合にスリープアサーションを強制リリースするサーマルカットアウトがあり、またプロセスがクラッシュした場合または不活性のままの場合にアサーションをダンプするイードルリリースがあります。CLI コマンド(
acquire
release
hold
)は、デーモンへの往復レイテンシを 50ms 以下に提供します。追加のユーザー向け機能としては、蓋閉じのアラウドチャ임と、ピーク温度、サーマルカットアウト状態、実行履歴を表示する蓋開きサマリーがあります。クリーンなアンインストールは、残留状態を残さないまますべてのエージェントフックエントリを削除するため、システムのスチュービリティおよび蓋閉じによる過熱事象からの安全性を確保します。

本文

Adrafinil: マシンのためのユージェノイド♡

⚠️ 服用上の注意とコンセプト

Adrafinil は、カフェインやアンフェタミンなどの「常時覚醒」タイプの刺激剤とは異なります。AI エージェントが作業中のみシステムを起動し続け、終了時は自動で休ませる「必要な時のみ起きる」コンセプトを持っています。

  • 目的: AI エージェントがアクティブなセッションを持つ間だけ Mac を睡眠モードから阻止する。
  • 仕組み: アーギュメント(タスク)の途中のみ介入し、完了すると即座に身を引く。
  • 重要: Mac を覚醒させるのは、AI エージェントが作業している間だけです。

🚀 主な機能

  • エージェント検知型起動
    • AI エージェントがアサーションを持っている間のみ睡眠阻止を行う。
    • セッション数が 0 の場合(idle)は通常通り lid を閉じても Mac が睡眠します。
  • 9 つの主要エージェント統合
    • ワンクリックインストールで、以下のツールと連携可能です。
      • Claude Code
      • Codex
      • Cursor
      • Gemini CLI
      • Aider
      • Hermes
      • OpenCode
      • Cline
      • Pi
  • 超低遅延通信
    • クライアントインターフェースの往復時間は50ms 未満
    • エージェントのワークフローを停滞させません。
  • 安全性と最適化
    • 参照カウント付きアサーション: 重複タスクはスタックされ、最後に解放されるまで休眠は解除されない。
    • 熱的カットアウト (Thermal Cut-out): CPU 温度が閾値を超えると、全アサーションを強制的に解放し(焼き尽くすのを防ぐ)、Mac を保護する。
    • アイドル時リリース: プロセス終了または一定時間 CPU-idle の場合、アサーションは自動解除される。
    • プロセス嗅探: フックが未インストールでも、既知のエージェントバイナリを検知し起動可能。
  • 通知システム
    • Lid 閉時チャイム: 画面オフ時のため通知が出ませんが、lid を閉じた際のアサーション保持を確認できる音が出る。
    • Lid 開きサマリー: アバウト中に実行された内容、ピーク温度、熱カットアウトの有無を表示。
  • クリーンアンインストール
    • すべてのエージェント設定からフックエントリを完全削除する。

📋 システム要件と入手方法

必要条件

  • OS: macOS Tahoe 26.4 (ビルドおよびテスト済みのバージョン)。おそらく以前Versionsでも動作します。
  • 開発環境: ビルドには Xcode 26+Swift 6 の厳密並行性が必要です。
  • 権限: 標準インストールには Admin 権限が必要です(特権ヘルパーは
    SMAppService
    を介してインストール)。

ダウンロードと初期設定

  1. サイン済み、notarized のディスクイメージをダウンロードしてください。
  2. 開き、Adrafinil.app を Applications フォルダにドラッグして起動します。
  3. 最初の起動時に特権ヘルパーを登録するため、一度 Admin 権限 を要求されます。

注意:

Adrafinil
は macOS 26.4 またはそれ以降が必要です。自分でビルドする場合は「# ビルド」セクションを参照してください。

💻 ビルド方法

ソースコードの取得

git clone https://github.com/kageroumado/adrafinil.git
cd adrafinil
open Adrafinil.xcodeproj

実行と署名設定

  • Xcode でプロジェクトを開き、Run をクリックします。
  • 開発チームを設定する必要があります(コード署名のため)。
    • デーモンとヘルパーはアプリバンドルに埋め込まれており、起動時にシステムに登録されます。
    • ソースにはチーム ID が焼き付けられておらず、XPC 呼び出しチェックはランタイムで署名チームを読み取るため、任意の開発者 ID で再ビルド可能です。

ローカル署名なしでのコンパイル確認

xcodebuild -project Adrafinil.xcodeproj -scheme Adrafinil -configuration Debug \
  -destination 'generic/platform=macOS' \
  CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY='' build

共有ロジックの独立テスト

cd AdrafinilShared
swift test

⚙️ 動作原理とコマンドライン

AI エージェントは Adrafinil と直接通信せず、各ツールのフックシステムがバンドルされた CLI を呼び出します。

コマンド例

  • セッション開始時(turn begin):
    adrafinil acquire <session-key> --tool claude-code --reason "long build"
    
  • セッション終了時(idle):
    adrafinil release <session-key>
    

アクション単位制御

保持は「セッション数」ではなく「アクティビティ」単位で行われます。

  • UserPromptSubmit
    時に
    acquire
  • Stop
    時に
    release
  • 結果: Mac はエージェントが実際に作業している間のみ起動したままです。

Time-boxed Hold (時間制限保持)

背景タスク(長期ビルドやデプロイなど)のために、一定時間 awake にする機能:

adrafinil hold --for 30m --reason "deploy"
  • 最大 30 分間 awake で、その後自動解放されます。

Model Context Protocol (MCP)

  • adrafinil mcp
    : stdio を介してエージェントとの対話を行うためのもので使用します。

その他のサブコマンド

  • status
  • install-hooks
  • uninstall-hooks
  • daemon-status
  • version

🏗️ アーキテクチャ構成

Adrafinil は特権階級を 3 つにわけた 4 つのプロダクトで構成されます(詳細は

Docs/ARCHITECTURE.md
)。

┌──────────────────────────────────────────────────────────────┐
│  Adrafinil.app   (メニューバーアプリ、ユーザー向け)            │
│  • ステータス項目、設定、インストーラー GUI、lid 開きサマリー   │
└─────────────────────────────┬────────────────────────────────┘
                              │ XPC
                              ▼
┌──────────────────────────────────────────────────────────────┐
│  AdrafinilDaemon  (LaunchAgent、ユーザーとして常に実行)        │
│  • 参照カウント付きアサーションレジストリ                      │
│  • プロセスウォッチャー(kqueue NOTE_EXIT +定期スキャン)     │
│  • 熱モニター(SMC)• lid 状態モニター(IORegistry)           │
│  • lid 閉きチャイム • CLI ソケット …/Adrafinil/cli.sock      │
└─────────────────────────────┬────────────────────────────────┘
                              │ XPC (特権 Mach サービス)
                              ▼
┌──────────────────────────────────────────────────────────────┐
│  AdrafinilHelper  (SMAppService LaunchDaemon、root)            │
│  • sleep ブロック API に触れる唯一のコンポーネント              │
│  • setSleepBlocked(Bool) + read-only ステート/バージョン      │
│  • コールサージャのコード署名要件を検証                        │
└─────────────────────────────┬────────────────────────────────┘

  adrafinil  (CLI、.app に同梱され PATH へのシンボルリンク)
  • acquire / release / hold / mcp / status / install-hooks / uninstall-hooks
  • デーモンソケットに接続;往復時間 <50ms


AdrafinilShared — すべてのターゲットで共有される Swift パッケージ:
- データモデル(AgentKind, Assertion)
- IPC ワイアフォーマット
- AssertionRegistry
- CallerVerifier
- フックインストール仕様
- CLI アジェンマパースャー

設計上の原則:

  • Helper は監査用にシンプルに保たれており、ポリシーやロジックは全て
    Daemon
    内にあります。
  • Daemon が事実源であり、アプリは純粋なビューレイヤーです(自由に終了・再起動してもアサーションに影響なし)。

💡 デベロッパー向けのクイックスピードガイド

  1. Public IOPM アサーションの限界: 従来の
    IOPMAssertionCreateWithName
    (例:caffeinate)は lid を閉じた Mac を醒めさせることができません。Adrafinil はこれを回避するために
    pmset disablesleep 1
    を使用しています。
  2. デーモンハンドラーの実行キュー: XPC とソケットコールバックは任意の dispatch キューで到着するため、並列性を変更する際は注意が必要です。
  3. CLI のレイテンシ最適化: エージェントセッションのホットパスにあるため、静的ルックアップとソケットプロトコルの薄いもののみを使用しています(フル XPC を使用せず)。

📜 ライセンスと謝辞

  • ライセンス: MIT (自由に何でも可能、保証なし)
  • 提供元: kagerou.glass
  • 構築者: @kageroumado

名称由来: Adrafinil という名前は、「覚醒促進プロ薬物」である Adrafinil にオマージュされています。同様に、本アプリも「仕事がある間だけマシンを醒めさせる」というコンセプトから命名されました。

同じ日のほかのニュース

一覧に戻る →

2026/06/28 4:09

IP Crawl:パブリックインターネットで発見されたオープンウェブカメラの実況アトラス

## Japanese Translation: このドキュメントは、米州、欧州、アジアのグローバル市場における主要な通信事業者(Verizon、Comcast、BT などを含む)の運用健全性をリアルタイムで追跡するダッシュボードとして機能します。完全なサービス状態(LIVE)と、顧客の使用を妨げず、現在分析中またはバックアップ中のシステム(SNAPSHOT)を区別しています。可能な範囲では、各ステータスに固有の識別番号を付与しており、これにより正確な追跡が可能になります。このような詳細なビューは、技術チームがどのアカウントや地域が業務準備完了なのか、どのものが注意を要するかを迅速に確認することを支援し、メンテナンス資源の効率的な配分を促進します。この報告書は現在の状況のみを反映しており、将来の変化を予測するものではありません。グローバルネットワークの完全性とサービスの可用性を管理するステークホルダーにとって曖昧性のないツールを提供します。 ## Text to translate: Original summary is acceptable with only minor clarification: Revised Summary: This document serves as a real-time dashboard tracking the operational health of major telecommunications providers—including Verizon, Comcast, BT, and others—across global markets in the US, Europe, and Asia. It distinguishes between fully active services (LIVE) and systems currently under analysis or backup without disrupting customer usage (SNAPSHOT). Where available, each status is paired with a unique identification number to enable precise tracking. This granular view helps technical teams quickly verify which accounts or regions are ready for business and which require attention, supporting efficient allocation of maintenance resources. The report reflects current conditions only, without predicting future changes, providing an unambiguous tool for stakeholders managing global network integrity and service availability.

2026/06/27 23:31

無記名の GitHub アカウントによる未公開のゼロデイ脆弱性の大量流出

## Japanese Translation: ## 概要: このリポジトリは、12 つの元単独立ちリポジトリにわたる 96 プロジェクトについて検証済みのセキュリティ Proof-of-Concept (PoC) を保持する安全で統合されたアーカイブとして機能し、2026 年 6 月 23 日時点での整合性が確認されています。悪意ある誤用に対する警告を明確に示しつつ、善意に基づくオープン・ディスクロージャー研究を推奨しています。アーカイブには、「vibe-coding(雰囲気コーディング)」を避けた完全に手入力された PoC のみが含まれており、例外として RustDesk の 1 つのケースは言語の壁による事情から許可されています。ファジング自動化は厳格なハネスの下で GPT-5.5-3-Codex-Spark モデルによって行われ、README ファイルはすべて AI が作成した上で著者によってレビューされ(著者は関連分野の学位を保有し、ファジングに関する論文も執筆)、その実績があります。注目すべきハイライトとして、外部貢献者(`4D4J`)による優れた境界超過書き込み修正に対する謝辞が挙げられます。今後、新規発見は特定ライブラリ(Floci、libssh2、FFmpeg、c-ares など)における重大な脆弱性に限定され、主要エントリーには `ghidra-12.1.2-rce-ace-calc-poc`、`libssh2-publickey-list-calc-poc`、`objdump-dlx-calc-poc` が含まれます。元単独立ちリポジトリに関するオリジナルリポジトリのメタデータはそのまま維持されます。協力については、直接連絡ではなく Discord (@ashdfrkl) を通じて行うことを推奨します。 Ultimately、本プロジェクトは隠されたエクスプロイトよりもコミュニティの安全を最優先する、真摯な脆弱性調査のための透明性の高い資源として存続しています。

2026/06/27 21:10

OpenRA

## Japanese Translation: OpenRA プレイテストビルド 20260222 では、Red Alert、Tiberian Dawn、Dune 2000 の古典的 RTS タイトルに向けた大きな更新が行われています。主な新機能としては、Skirmish モードと Multiplayer モードの両方でバイオーム、プレイヤー数、対称性、リソースをカスタマイズできるようになった新しいランダムマップ生成器があります。Dune 2000 には、Sonix Tank の新規エフェクトや損傷した構造物への対応を含む視覚・論理面の向上が追加され、コミュニティ主導によるバランスの全面的な見直し、シングルプレイヤーキャンペーンの難易度調整(学習曲線の緩和)が行われています。さらに、Tiberian Dawn HD は独立したモッドとして機能完成に達し、新規 HD スプライトと、リマスターアセット/クラシックアセットおよび音声切り替えができるコンテンツマネージャーを提供しています。また、C&C Remastered Collection のアセットをコアエンジンに統合する作業も継続中です。その他の生活の質に関する更新としては、UI 面の改善やマップエディタ用の新ツール(Path Tiler など)、"Other RTS"用マウス入力モード、タイム設定自動保存機能、拡張基地建設を試みるボット強化などが含まれています。

Show HN: Adrafinil ~エージェントが作業している間だけ、Mac の Lid を開きっぱなしにしません~ | そっか~ニュース