zerocode の実行
ローカルセットアップ
同じマシン上でデーモンを実行する場合、追加の設定は必要ありません:
sh
zerocode
zerocode はデーモンのローカルエンドポイントを自動的に検出します。Unix では <data_dir>/data/daemon.sock、Windows では \\.\pipe\zeroclaw-<hash> です。デーモンが実行されていない場合、zerocode は一時的なものを生成します。
セッションの作業ディレクトリ
ローカル接続では、新規の Chat および Code セッションは、zerocode を起動したディレクトリで開始されるため、ファイルツールとシェルツールはそのプロジェクトに対して動作します。ローカルセッションを再起動した場合も同様です。zerocode がそのディレクトリを特定できない場合、またはそのパスが有効な UTF-8 でない場合は、セッションは作成されず、理由が表示されます。別の場所に黙って開始されることはありません。
リモート接続(WSS)では、zerocode を起動したディレクトリは別のマシン上にあるため、送信されることはありません。新規のリモート Chat セッションでは、選択されたエージェントに設定されたワークスペース(daemon 上)が使用されます。
デーモンは要求されたルートを解決し、エージェントのポリシーに照らして検証したうえで、セッションが実際に使用するディレクトリを報告します。エージェントの ID およびパーソナリティファイルは、セッションがどこから開始されたかに関係なく、設定されたワークスペースから引き続き読み込まれます。
Remote (WSS) Code は常に確認を求めます。新規または再起動されたリモートの Code セッションは、セッションを作成する前にデーモン側のディレクトリピッカーを開くため、そのルートは常にデーモンのファイルシステム上で選択したディレクトリになります。このピッカーはローカルマシンではなくデーモンのマシンを参照し、フォールバックとなるデフォルトはありません。
Code ペインで /change-directory を実行すると、ディレクトリ選択画面が開き、選択したディレクトリで新しいセッションが始まります。ローカル接続と WSS 接続の両方で動作します。ローカルでは選択画面がこのマシンを参照し、WSS 経由ではデーモンのファイルシステムを参照します。既存のセッションは移動されません。保存済みのルートにそのまま残り、いつでもそのセッションに戻れます。選択画面をキャンセルした場合や、デーモンが選択を拒否した場合は、元のセッションに戻り、変更は加えられず、その理由が表示されます。
再開された Code セッションは、起動ディレクトリやエージェントに設定されたワークスペースが後から変更されても、作成時の作業ディレクトリを保持します。Chat はこの点が異なります。デーモン上でまだ実行中の Chat セッションは、zerocode が再接続しても作業ディレクトリを保持しますが、デーモンは Chat セッションの作業ディレクトリを保存しません。デーモンが再構築する必要がある Chat セッション(例: デーモンの再起動後)は、選択されたエージェントの現在のワークスペースで開始されます。
セッションの切り替え
Chat および Code ペインでは、zerocode を再起動せずに既存のセッションを読み込んだり切り替えたりできます:
- Switch session はセッション一覧を開きます(デフォルトのコード: Ctrl+S。キーマップで再バインド可能)。
- リストナビゲーションキーを使って選択を移動します(デフォルト: Up/Down)。
- Enter でハイライトされたセッションに切り替えます。
- 新しいセッション はサイドバーの
[+]と同じエージェント選択画面を開き、選んだエージェントのセッションを追加します。フォーカス中のセッションは追跡されたまま残ります(デフォルトのキー操作: Ctrl+N。変更可能)。
セッション行の本体をクリックするとそのセッションにフォーカスされます。右端の ✕ をクリックすると、事前にフォーカスせずに、そのセッションを閉じます。セッションヘッダーの [+] で兄弟セッションを追加し、[-] でアクティブなペイン内のフォーカス中のセッションを閉じます。実行中のセッションを閉じると、現在の処理は安全に停止され、永続的な履歴は保持されます。
既存の Code セッションに切り替えると、そのセッション自身に保存されたルートで再開されます。一方、New session は新規に開始されます。ローカルセッションでは zerocode を起動したディレクトリ、リモートの Chat セッションでは選択したエージェントのワークスペース、リモートの Code セッションでは daemon 側のピッカーで選んだディレクトリが使われます。どちらの操作も、実行中のセッションのルートは変更しません。別の場所で Code セッションを使いたい場合は、/change-directory を使用してください。
アプリ内のヘルプオーバーレイには、これらのアクションに対する現在のキーバインドが表示されます。
Chat/Code セッションと ACP ベースのセッションは異なるストアを使用します。ACP プロトコルを直接使用する場合、トランスクリプトの再生が必要なときは session/load を、サーバー側のセッション状態の復元のみが必要なときは session/resume を使用してください。プロトコルレベルの詳細については、ACP ドキュメント を参照してください。
ターミナルでのテキスト入力
zerocode はターミナル UI をロー モードで実行します。ネイティブ プラットフォームのテキスト フィールド イベントではなく、ターミナルのキー イベントおよびペースト イベントを受け取ります。そのため macOS では、zerocode が入力を受け取る前にターミナルが展開した場合にのみ、システムのテキスト置換が機能します。
Composer を編集中
Chat および Code のコンポーザーでは、これらのデフォルトがサポートされています。「Primary」は macOS では Command、それ以外では Control を指します。ターミナルが送信する場合は、リテラルの Control エイリアスも使用できます。
| 対応 | デフォルトのショートカット |
|---|---|
| 元に戻す / やり直し | Primary+Z / Primary+Shift+Z (Control+Z / Control+Shift+Z) |
| すべて選択 | Primary+A(Control+A も可) |
| コピー / 切り取り (選択範囲) | Primary+C / Primary+X (Control+C / Control+X でも可) |
| 選択範囲を拡張 | Shift+矢印キー、Shift+Home/End |
| Extend selection by word | Alt+Shift+Left/Right |
| 削除: 次の単語 | Alt+Delete |
| テキストをクリア | Primary+U(Control+U でも可) |
元に戻す履歴は現在の下書きに属し、最大100件の編集グループを保持します。スペースを含む連続した入力は1回の操作で元に戻せます。2秒間の一時停止、カーソルまたは選択範囲の移動、マウスのクリックまたはドラッグ、別の編集コマンドのいずれかにより、入力グループは終了します。貼り付け、補完、切り取り、削除、改行は、それぞれ別の編集になります。選択範囲の上に入力すると新しいグループが開始され、元に戻すと選択されていたテキストと選択範囲が復元されます。カーソルの移動は編集になりません。元に戻した後に新しいテキスト編集を行うと、やり直し履歴は破棄されます。元に戻す操作とやり直し操作はテキスト、カーソル、選択範囲を復元しますが、添付ファイルを追加または削除することはありません。送信、セッションの切り替え、キュー済みメッセージの編集用読み込みを行うと、履歴は新しく始まります。
選択ショートカットは、キュー サイドバーではなく、フォーカスされているコンポーザーに作用します。選択した入力をコピーしても、実行中のターンはキャンセルされず、終了もしません。入力の選択がない場合、Control+C は従来どおりキャンセルまたは終了の動作を行います。ダイアログとトランスクリプトの閲覧は、独自のショートカットを維持します。ファイルを参照するには /attach を使用してください。設定可能な browse files アクションには既定のショートカットがありません。これは Primary+A がテキスト選択に使われるようになったためです。ヘルプ オーバーレイには、現在設定されているバインディングが表示されます。
Terminal やオペレーティングシステムのショートカットが、zerocode に届く前に Command、Control、またはクリップボードのイベントを横取りする場合があります。クリップボードへのコピーは、ターミナルの OSC 52 対応を利用します。ブラケットペーストは引き続き利用できます。
CLI フラグ
| フラグ | 説明 |
|---|---|
--connect <url> | WSS経由でリモートデーモンに接続します(例: wss://host:9781) |
--tls-skip-verify | TLS証明書の検証をスキップします。自己署名証明書の場合に必要です |
--config-dir <path> | 設定ディレクトリを上書きする |
ターミナルの状態
zerocode は、最も緊急性の高い Chat または Code のターン状態を、2 種類のエスケープシーケンス規約を使ってターミナルに自動的に公開します:
- OSC 2 は、
⏳ my-agent — workingや⚠ my-agent — awaiting approvalのような、短く人が読みやすいタブタイトルを設定します。 - OSC 9;4 は、別のプログラムがタイトルテキストを解析しなくても、進捗状態(クリア、不定、警告)を通知します。
Both sequences derive idle, working, blocked, and finished semantics from the content-free lifecycle contract in zeroclaw-api; Zerocode keeps localized detail such as thinking, responding, or the current tool only for display. Every live session in the sidebar is a candidate, focused or not: blocked outranks working, working outranks idle, and a named session wins ties.
Wait, that was the source repeated back. Here is the translation:
両方のシーケンスは、zeroclaw-api の内容を含まないライフサイクル契約から、idle、working、blocked、finished の意味を導き出します。Zerocode は、thinking、responding、現在のツールといったローカライズされた詳細を表示用にのみ保持します。サイドバーに表示されているすべてのライブセッションは、フォーカスの有無にかかわらず候補となります。blocked は working より優先され、working は idle より優先されます。名前付きセッションは同順位の場合に勝ちます。
これはターミナルのメタデータであり、特定のワークスペースマネージャーへの接続ではありません。対応するターミナルやターミナルマルチプレクサーはこれを表示、保持、または利用する場合があります。これらのシーケンスに対応していないソフトウェアは無視します。ペイロードに含まれるのは、選択されたエージェントのエイリアスと、上限のある範囲のステータスまたはツール名のみです。プロンプト、ツールの引数、ツールの出力、応答テキストは決して含まれません。
デーモンへの接続が失われた場合、zerocode は進捗をただちにクリアし、キャッシュされた「作業中」または「ブロック中」の状態を保持する代わりに、中立的なタイトル ✓ zerocode を表示します。セッション状態は再接続に備えて引き続き利用可能です。ライブのセッションステータスは、デーモンが再接続された後にのみ再度反映されます。
On normal exit and supported termination signals, zerocode clears progress and restores the terminal title when the terminal supports a title stack. It writes a neutral zerocode fallback for terminals without one. Like all terminal programs, it cannot clean up after an uncatchable SIGKILL or an abrupt machine shutdown. A later terminal or shell title update, or closing the tab, clears that stale display.