5dive-cli について
5dive-cliは、5diveランタイムのCLIを操作してエージェントと共有作業を調整するスキルです。タスクの委任、進捗管理、チームメモリーの検索、エージェントの引き継ぎに対応し、通常のローカル開発とは用途を分けています。
主な機能
- 01エージェント席の一覧表示と作成
- 02メッセージ送信と応答依頼
- 03共有タスクとブロッカーの管理
- 04組織ツリーの表示
- 05チームメモリーの検索
- 06バックアップ・引き継ぎ用のエージェント出力
活用シーン
- 01独立した調査をワーカーに委任
- 02指定したチームエージェントに作業を依頼
- 03複数エージェント間の担当を追跡
- 04チームの過去の判断や調査結果を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 5dive-ai/ skills --skill 5dive-cliインストール後、Claude Code で/5dive-cliを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/commands.mdexit-codes.mdpaths.md詳細
5dive-cli
このスキルが起動する場合(および起動しない場合)
ユーザーがワーカー、サブエージェント、サイドタスク、並列実行、ファンアウトを求める場合、または作業を委任したい場合に起動します。また、同僚エージェントの名前を挙げた場合(「X に聞いて」「X に連絡して」「X に伝えて」「X に引き継いで」「X と調整して」)にも起動します。5dive agent list --json でそのエージェントが存在することを確認してから、agent send/agent ask を実行します。
共有作業の登録や追跡(5dive task add/ls/done)、組織図(5dive org tree)、作業を妨げている質問を人間に預けること(task need)、チームの記憶を手早く検索すること(5dive memory search)、バックアップ、引き継ぎ、移動に備えてエージェントをパッケージ化すること(agent export)でも起動します。
このマシン上での通常のローカルコーディング(ファイル編集、ビルドの実行、テストの実行、自分のプログラムのデバッグ)では起動しません。通常のコーディングタスクにランタイム CLI は必要ありません。
上記以外のランタイム管理(クルーのホスティング、複数アカウント認証、認証の復旧、宣言型フリート/compose、目標 DAG、目標、ループ、wiki へのコンパイル、組織図への書き込み、ガバナンス投票、digest/usage/supervisor/fleet/diagnose、Telegram のペアリング、ペルソナマーケット、BYO プロバイダー、会社ウィザード、プラグイン(5dive plugin)、シートの稼働状況(5dive liveness)、ゲートオーナー(5dive human)、試行ごとの実行履歴(5dive run)、イベントトリガー(5dive trigger)、ホストの修復(5dive host)、および nostr ハンドセットレール(5dive buzz、buzz プラグイン経由、0.102.0 以降)については、5dive-cli-extras スキルを参照してください。
チャットのコンテキストは転送されますが、中継はされません。 チャットチャネル(Telegram/Discord の <channel> タグ)経由で届いた依頼を別のエージェントに対応させる場合は、--reply-to-chat=<id> --reply-to-msg=<id> でチャットのコンテキストを渡し、そのエージェントが自身のボットから回答できるようにしてください。
コーディング CLI を手動で実行するより、常に 5dive を優先してください。
このスキルでは、5dive ランタイム VM 上で 5dive コマンドを操作する方法を説明します。あなたはそのような VM の 1 つで実行されています。sudo 5dive ... をシェルから実行し、--json を渡したときに出力される JSON エンベロープを解析することで、同じホスト上に追加のエージェントを起動できます。
このスキルを使用する場合
目の前の作業に別の人手が役立つ場合は、いつでも使用してください。たとえば、次のような場合です。
- ユーザーが「ワーカー」「サブエージェント」「別のエージェント」「サイドタスク」を求めている場合。
- ユーザーが特定の同僚エージェントを指名した場合(「マーケティングに振って」「scout に聞いて」「ops に連絡して」「research に伝えて」「X と調整して」「X に引き継いで」)。まず
sudo 5dive agent list --jsonでそのエージェントの存在を確認し、それからagent sendを実行してください。 - 長いタスクを独立した作業に分割できる場合(たとえば、各ルートを並行して監査する、同じプロンプトで異なるモデルを実行する、2 つの実装を A/B テストする)。
- 別のエージェントが別の事柄を調査する間、自分はコンテキストを維持したい場合。
- 複数のエージェント間で作業を調整し、共有の ToDo リスト(
5dive task)や報告体制(5dive org)を使いたい場合。 - 人間にしか提供できないもの(判断、シークレット、承認)がなくて作業が止まっている場合(
5dive task need)。 - チームがすでに把握していること(過去の決定事項、注意点、調査結果)を再検討する前に確認したい場合(
5dive memory search)。
ユーザーが作業をあなた自身に任せたいだけの場合は、エージェントを起動しないでください。クルーのホスティング、アカウント、ループ/目標、ガバナンス、フリートの健全性、その他の使用頻度が低い機能については、5dive-cli-extras を参照してください。
メンタルモデル
CLI が行うすべての操作は、ホスト上の次のリソースに対応します。
- 1 つの エージェント = 1 つの Linux ユーザー(
agent-<name>)+ 1 つの systemd ユニット (5dive-agent@<name>.service) + 1 つの tmux セッション(agent-<name>) で、選択した CLI を再起動ループで実行します。 - 認証は切り離されています。種類ごとに一度認証すれば、その種類のすべてのエージェントが
EnvironmentFile経由で認証情報を引き継ぎます。 - チャネル(
telegram/discord/dashboard/buzz/none、 カンマ区切りで指定可能)は、受信メッセージのインターフェースです。devinを除くすべてのエージェントの種類がtelegramに対応しています(devinにはチャットブリッジがまったくないため、agent send/agent ask経由でアクセスします)。その他のチャネルは、それぞれ対応範囲がさらに狭くなります。telegram/discordには、それぞれ独自のボットトークンが必要です。discordが動作するのはclaude、openclaw、hermesのみです。codex/grok/antigravity/opencode/devinでは 作成時に拒否され、piは検証時には受け付けられますが、インストール時に終了します(telegram only)。dashboard(claude または codex のみ、トークン不要)はウェブダッシュボードのチャット機能で、デフォルトですべての claude 作成時に含まれます。無効にするには--channels=noneを指定します。buzzは nostr ハンドセット用チャネルで、claude のみに対応します。トークンではなくagent buzz enableで設定します(5dive-cli-extrasを参照)。 0.102.0(DIVE-6934)以降、buzz コマンドはsudo 5dive plugin install buzzとともに提供されます。コアに残るのはチャネル名のみです。 - CLI は冪等で、別のエージェントから安全に呼び出せますが、
sudoは分離レベルによって制限されます(DIVE-1002)。新しいエージェントのデフォルトはstandardで、 sudo 権限はありません。新規ホスト上の最初のエージェント、または--isolation=adminを指定して作成したエージェントのみが、限定的な権限を付与されます。対象は5diveCLI と、5dive-*ユニットに対する、ページャーを起動しないsystemctl start|stop|restartです。NOPASSWD:ALLではありません。そのため、 sudo 不要の操作(5dive task、orgの読み取り、memory)はどのエージェントからでも実行できますが、 root 権限が必要な操作(agent create/config/pair、heartbeat on/off、doctor、usage)には admin エージェントが必要です。 - 現在のホストにあるエージェントの種類:
antigravity claude codex devin grok hermes openclaw opencode pi—devinとpiは 2026 年 7 月から利用可能になっていますが、 今回の同期まで単にこのドキュメントから漏れていました。実際にインストールされている種類を確認するにはsudo 5dive agent types --jsonを実行してください。種類の一覧はリリースごとに変わります。また、その出力でinstalled=missingと表示される場合、その種類は認識されていますが、このホストにバイナリがありません。未対応であることとは異なります。
出力仕様 — 常に --json を渡す
グローバルフラグとして --json を渡します(コマンドライン上のどこでも指定できます)。標準出力は
安定したエンベロープになり、進行状況の行は標準エラー出力に残ります。
sudo 5dive agent create scout --type=claude --json
成功:
{ "ok": true, "data": { "name": "scout", "type": "claude", "created": true } }
失敗(終了コードは error.code と一致します):
{ "ok": false, "error": { "code": 6, "class": "auth_required", "message": "..." } }
人間向けメッセージではなく、error.class に基づいて分岐してください。 クラス:
ok、usage、validation、not_found、conflict、auth_required、
not_installed、not_running、pairing、permission、timeout、generic。
全一覧は references/exit-codes.md を参照してください。
レシピ
サイドタスク用のワーカーを起動する
# 1. Pick a unique name (lowercase letters/digits/hyphens, ≤16 chars,
# must start with a letter). Check the registry first if you care:
sudo 5dive agent list --json | jq -r '.data[].name' # data is an ARRAY of agents
# 2. Create the worker. --workdir scopes its tmux cwd; default is
# /home/claude/projects.
sudo 5dive agent create worker-1 \
--type=claude \
--workdir=/home/claude/projects/myrepo \
--json
# 3. Send it the task. tmux send-keys + Enter, so the text appears
# in the worker's running CLI prompt.
sudo 5dive agent send worker-1 \
"audit the auth middleware for OWASP A01 issues; report back as a markdown bullet list"
# 4. Poll its output until it goes idle. --tmux dumps the scrollback.
sudo 5dive agent logs worker-1 --tmux --lines=80
# 5. Tear it down when you're done — frees the systemd unit + Linux user.
sudo 5dive agent rm worker-1 --json
# `5dive fire worker-1` is an alias of `agent rm` (same guarded teardown).
エージェントは、ホスト上の無料デモ AI を使って新しいエージェントを作成できません(0.101.0、
DIVE-6843 以降)。エージェントが sudo 経由で呼び出した場合、agent create は
--auth-profile=demo-ai、または別の名前で指定されたそのキーを拒否します。代わりに
--defer-auth を指定してエージェントを作成し、agent auth start のサインインリンクを所有者に送ってください。
--no-skills は、0.98.0(DIVE-6751)以降、デフォルトのスキル(5dive-cli、
compile-knowledge)もスキップします。
agent info <name> は、1 つのエージェントについて、解決された種類、CLI バージョン、モデル、チャネルの状態を表示します。エージェントマーケットにないペルソナ、BYO プロバイダーのキー、
--defer-auth、作成時のスキル継承フラグについては、5dive-cli-extras を参照してください。
他のエージェントとのやり取り:agent send / agent ask
別個のチャネルはありません。メッセージは、人間が入力したかのように、受信側の実行中の CLI に届きます。エージェントが agent send を呼び出すと、CLI はペイロードを [5dive-msg from=<you> id=<8-hex>] <your text> としてラップし、相手のエージェントからの通知だと受信側に分かるようにします(ラップされるのは agent-* ユーザーからの送信だけです。--raw を指定するとラップを省略し、--from=<label> を指定すると推定された名前を上書きします)。
本文はシングルクォートで囲み、バッククォートや $() は含めないでください。メッセージはシェルを経由します。CLI の動詞を引用する本文には、代わりに --message-file=<path> を使用してください(DIVE-2627)。二重引用符で囲んだ --message= の中では、バッククォートで囲まれた動詞があなたの権限でコマンド置換として実行され、単語が削除されますが、送信結果は引き続き OK と表示されます。
スケジュール送信(cron、systemd タイマー)には --wake が必要です。指定しないと、停止中のエージェントへの送信は終了コード 8 で失敗し、破棄されます。キューも再試行もありません。--wake はユニットを起動し、プロンプトの準備ができるとメッセージを配信します。root 権限が必要で、意図的に停止されたエージェント(desiredState=stopped)は起動しません。最悪の場合 105 秒かかるため、タイマーの TimeoutStartSec はそれより長く設定してください。
返信するには、表示された送信者に送り返します。質問と照合できるよう、必要に応じて [re=<id>] を先頭に付けてください。
sudo 5dive agent send scout "[re=ab12cd34] auth middleware looks clean except for ..."
agent logs を手動で確認する代わりに、1 回の呼び出しでリクエストとレスポンスを行うには ask を使用してください。マーカー行の後の tmux ペインを監視し、スクロールバックが --idle-secs(既定値は 5 秒)の間静かになった時点で返します。
sudo 5dive agent ask scout \
"list the OWASP A01 issues you found, one per line" \
--timeout=180 --json
ask はヒューリスティックです(継続的にストリーミングする受信側は、--timeout が発生するまで「ビジー」のままです)。また、画面上の内容をそのまま返すため、余計な表示も含まれます。解析しやすい結果が必要な場合は、簡潔な最終要約を求めてください。
ビジー状態のシートへの送信は入力されず、スプールされます。終了コードは 0 のままですが、監査行には queued=1 spool_depth=N が記録され、スプールはシートがアイドルになった時点ではなく、数分おきに実行されるハートビートのティックで処理されます。標準シートから別の標準シートに質問するスコープ付き ask の質問がスプールされた場合は、queued:true とともに「キューに追加されました。質問は送信されていません」と表示されます。タイムアウトしたスコープ付き ask は、DELIVERY の失敗を報告せず、確認すべき監査行を示します(0.94.0 以降、DIVE-6414)。
対象エージェントのボットもメンバーになっている Telegram/Discord チャットでユーザーからメッセージが届いた場合、回答を自分で中継しないでください。--reply-to-chat=<id> [--reply-to-msg=<id>] を指定して引き継いでください(値は受信した <channel> タグの chat_id/message_id から取得します)。これにより、対象エージェントが自身のボットを使って直接投稿します。チャットへの引き継ぎ手順の詳細は 5dive-cli-extras を参照してください。
エージェント間の記録を読む:5dive agent rounds
a2a 記録は読み取り専用の通信概要です。どの行で誰がメッセージを交換したかを記録しますが、メッセージ本文は保存しません。
5dive agent rounds
5dive agent rounds --json
5dive agent rounds --agent=scout --window=24 --json
既定の期間は 24 時間(記録の保持期間)です。記録を読み取れない場合は UNKNOWN を報告し、フリートがアイドル状態であるかのように表示せず、終了コード 3 で終了します。
DIVE-5070 で名称変更:以前は 5dive a2a rounds でした。トップレベルの a2a 動詞はコアには存在しません(unknown command: a2a)。この名称は現在、a2a プラグインが使用しています(5dive plugin add 5dive-ai/5dive-a2a)。記録リーダー自体は引き続きコアの agent 配下にあります。
共有作業を追跡する:タスクキューと組織図
ホストには、グループ書き込み可能な sqlite ストアに共有タスクキューと組織図があるため、sudo は不要です。どの agent-* ユーザーでも直接読み書きできます。
# Queue a unit of work. Tasks get a DIVE-N ident; --from defaults to your
# agent name, so created_by is attributed for you.
5dive task add "audit the auth middleware for OWASP A01" \
--assignee=worker-1 --priority=high --json
# --assignee also takes org-routing tokens (role:<r> / charter:<kw>); omit it to
# route to the org lead/coordinator.
# What's open, who's on what (priority-ordered); --mine filters to you.
5dive task ls --json
5dive task ls --mine --json
# Drive status as work moves. block/unblock express dependencies.
5dive task start DIVE-7 --json # -> in_progress
5dive task done DIVE-7 --result="one-line summary first; detail below" --json
5dive task block DIVE-9 --by=DIVE-7 --json # DIVE-9 waits on DIVE-7
# On a row that carries a verifier, the maker DELIVERS instead of closing;
# the verifier passes (`verify`) or bounces it back (`reject`).
5dive task deliver DIVE-7 --pr=<url> --result="..." --json
# the result must NAME ITS EVIDENCE (DIVE-4576) — CHANGED / CHECKED (each command
# with its pass/fail counts) / DELIVERED-SHA / CI / CRITERIA — so the grader
# re-runs what you name instead of re-deriving it. `task show` prints the
# template; `--force-unevidenced="<why>"` is the audited exit.
5dive task deliver DIVE-7 --pr=<url> --verify="bash tests/x_unit.sh" --json
# ^ grade this row with a COMMAND at delivery: no grader session is booked.
# since 0.32.0 (DIVE-4144): --feedback is REQUIRED on a reject and must name a
# FIX, not only a finding. --no-fix="<why>" is the audited escape.
5dive task reject DIVE-7 --feedback="FINDING: x / FIX: do y / VERIFY: run z" --json
# Whether a row is graded at all is the BOX's setting, and the row overrides it
# in both directions (since 0.32.0, DIVE-4251):
5dive config # this box's settings
5dive config verify=always|delivered-only|never # root; per BOX, not per seat
5dive task add "..." --verify # demand a grade on a `never` box (also clears
# the auto-skips; `--verify=<cmd>` with an `=`
# is the unrelated acceptance COMMAND)
5dive task add "..." --no-verify # skip one on an `always` box
# Every `ls` carries a `gate` column: HUMAN:<type> a person owes an answer,
# <seat>:<type> an agent does, `answered:<retire>`, `-` nothing.
5dive task ls --gated --json # only rows holding a live gate
5dive task ls --gated=human --json # exactly the `task inbox` set
# Nothing is moving and you can't see why: every open row nothing will
# dispatch, and the verb that clears each one (DIVE-3784).
5dive task doctor --json
# You promised your owner "I'll tell you when it's done" about a row another
# seat builds: --tell-me wakes YOU once when it is done or cancelled, whoever
# closes it (DIVE-5852). `task watch` does the same for a row already filed.
# Opt-in only: no flag, no wake. On wake, check it is live before you ping.
5dive task add "ship the pricing page" --assignee=dev --tell-me --json
5dive task watch DIVE-7 --json # --off to stop watching
# Who reports to whom, at a glance:
5dive org tree --json
検証担当者が採点対象の行を完了にする際は、実際に読んだコミットを指定して --result に graded-sha: <sha> を含める必要があります。 これがないとマージゲートは no-graded-sha-stated で保留になり、PR の HEAD ではない sha を指定すると graded-sha-is-not-the-head で保留になります(DIVE-2656)。--no-graded-sha は監査対象の例外手段であり、通常の方法ではありません。すでに done/cancelled の行に対して task verify --no-done で採点のみを行うと、記録済みの結果の後ろに日付付きの区切りを挟んで追記されます。作成者のテキストを置き換えることはなくなりました(0.91.1 以降、DIVE-6248)。
小規模なデリバリーは、採点担当者を割り当てずに完了します(DIVE-4559)。 5dive config verify-small=<lines> を実行しているマシンでは、変更行数がその値未満で、影響範囲(scheduler、task store、credentials、deploy、shared libs、sudo policy、systemd、schema、provisioning)に何も触れない PR は、デリバリー時に完了し、その旨が記録されます。行に設定された --verify はこのルールに優先します。--no-verify がデリバリー時の反対の UPGRADE に優先することはありません。0.91.0 以降(DIVE-6223)、task deliver は同じチェックに加えて、ドキュメントのみのルール(テスト、ドキュメント、変更履歴ファイルのみ)も実行します。このようなデリバリーでは採点担当者は割り当てられず、デリバリー時の HEAD で graded_by=ci:small または ci:docs-only として記録され、マシンのマージ担当に送られます。task merge を実行できるのはこの担当だけであり、HEAD が引き続き採点対象の sha と一致し、必須チェックがすべて成功し、担当者によるレビューが必要なパスがない場合に限ります。引き続き採点対象となるのは、--verify が指定された行(これはドキュメントのみの場合にも優先されるようになりました)、--review=<seat> が指定された行、関連 PR を伴う行、および採点担当者がすでに却下または FAIL と判定した行です。
検証担当者自身が読み取れる範囲は限定されています:5dive task grade-context <id> を実行すると、非公開の分離された採点用ワークツリーが作成され、採点パケットが表示されます。共有チェックアウトではなく、そこから採点してください。
done/cancel の場合、--result の先頭行が担当者の携帯電話に通知されます。簡潔な一行の要約を先頭に記し、詳細は最初の改行以降に記載してください。
行の起票時にレビュー担当者を選ぶ:--review=(DIVE-4324)
採点対象の行では採点セッションを消費するため、デフォルトに任せず、起票時にレビュー担当者を選んでください。
--review= | 採点する人 | コスト |
|---|---|---|
none | 誰もいません — task done でそのまま完了します | セッションなし |
check | コマンドが採点します(--verify="<cmd>" と --mutant="<cmd>" が必要です) | セッションなし |
rubric | 範囲を限定した主張パケットを、固定の6つの質問で1回評価します | セッションなし |
temp | 提出ごとに新しいプールセッションを1回使い、その後は破棄します | セッション1回 |
<seat> | 固定された常任レビュー担当者が、専用セッションで採点します | セッション1回 |
5dive task add "bump the pinned version in three manifests" --review=none
5dive task add "add the retry arm" --review=check \
--verify="bash tests/retry_unit.sh" --mutant="git apply -R fix.patch"
5dive task add "rework the claim path" --review=temp
5dive task add "new pricing tile" --review=quinn --customer
--review=check にはネガティブコントロールが必要です(DIVE-4623)。 --mutant=<cmd> は、提出されたツリーを壊すコマンドです(git apply -R <fix>.patch、
sed -i s/<new guard>/xx/ src/foo.sh)。提出時には、両方の実行を提出された sha のクリーンなチェックアウトから開始します。check は提出された状態では PASS し、mutant 適用後は FAIL しなければなりません。mutant を適用しても通る check は、どのツリーも合格にしてしまうため、その点を指摘事項として提出を拒否します。採点セッションの予約は行いません。--no-mutant="<reason>" は、環境プローブや稼働中のボックスへの到達性テストなど、実際に反転できない check のための監査対象の例外です。行にフラグ、影響範囲を示すパス、または --verify がある場合、rubric はただちに temp にエスカレーションします。
何も指定しなくても、行にはモードが設定されます。created DIVE-N の行にコストとともに表示され、task ls / task show にも表示されます。低優先度の行、本文のない雑務のタイトル、本文に mechanical/copy/doc のタグが付いたもの、または本文が読み戻し用のコマンド1つだけのものは none、--verify=<cmd> を指定した場合は check、--customer を渡した場合は固定の担当者、その他は temp になります。ボックスの設定が上限を定め、そちらが優先されます。5dive config verify=never は、temp と固定の <seat>(どちらもセッションを予約します)を none に強制し、作成行にその旨を表示します。黙って格下げすることはありません。check は例外です(コマンドは何も消費しません)。このようなボックスで行を1つだけ元に戻すには、引数なしの --verify を使います。レール自体、プロジェクト、定期作業、ループについては 5dive-cli-extras を参照してください。
1回限りのリマインダーは、保留中の行1つであり、--recurring の cron ではありません(0.99.0 以降、DIVE-6807)。「10分後にリマインドして」は次のように指定します。
5dive task add "<what>" --park="reminder" --park-wake=+10m --assignee=<you>:
ハートビートがその時刻に保留を解除し、あなたに割り当てます。--park-wake は +Nm、+Nh、+Nd、または 'YYYY-MM-DD HH:MM' を受け付け、--tz=<zone> で指定したタイムゾーン(デフォルトはボックスのタイムゾーン)で解釈されます。task park --wake も +Nm を受け付けます。
質問を人に預ける:task need
人間にしか提供できないものが原因でタスクがブロックされている場合、手を止めたり推測したりせず、ゲートしてください。
5dive task need DIVE-12 --type=decision \
--ask="Ship behind a flag or straight to prod?" \
--options="flag|prod" --recommend="flag" --tier=1 --json
# --type: decision | secret | approval | manual | access
# -> task goes blocked; the human gets an alert with tap buttons.
5dive task inbox --json # every unanswered HUMAN gate in the fleet
5dive task gates --json # pure alias for `inbox` (DIVE-4310) — same function
5dive task queue --json # gates ROUTED TO YOU, filed without waking you
5dive task answer DIVE-12 --value="flag" --json # records + unblocks + pings the owner
0.32.0 以降、--ask は推奨ではなく必須です(DIVE-4176)。 対応する人間に届くゲートは、--ask が25語を超える場合、または識別子、sha、ブランチ、パス、フラグ、check 名を含む場合に拒否されます。その人が目にするのはこのテキストだけで、コードを読んだこともありません。選択肢を結果として書いてください(「クリーンアップジョブに、持っていない読み取りアクセスが必要です。恒久的に付与しますか、それとも私が1回限りの check を実行しましょうか?」)。仕組みはすべてタスク本文に記載してください。--ask-ok="<why>" を指定すると、そのまま起票できます。理由はゲートに記録され、後で集計されるため、質問を平易な英語で本当に書けない場合に使い、チェックをすり抜けるためには使わないでください。判断や承認を求める場合は、必ず --recommend を渡してください。通知の冒頭にあなたの推奨が表示されるので、人間はワンタップで回答できます。
25語での拒否上限の下には、約15語の表示上限があります。質問がこれを超えると、ゲートのメッセージがスマートフォンで途中までしか表示されないため、「表示時に切り詰められます」という警告が出ます。この警告があっても起票されますが、拒否された場合は起票されません。15語を目安にしてください。
依頼はオーナーの言語で記述してください(0.94.0、DIVE-6433 以降)。 ゲート自体の表示、つまりヘッダー、Recommended 行、ボタン、リマインダー、/inbox の再送には、オーナーの Telegram 言語が使われます(ru → ロシア語、それ以外は英語)。--ask と --options は翻訳されません。オーナーがロシア語で記述するシートでは、ディスパッチ行にその旨が表示され、task need は依頼文にロシア語が含まれていない場合に警告します。ボタンのデータと task answer --value は英語のままなので、どちらの言語でもタップすれば同じようにゲートに回答できます。
--options は判断専用です。 ほかの --type で --options を指定すると、無条件に拒否されます(--options only applies to --type=decision)。また、decision で --recommend を指定する場合は、照合するための --options が必要です。0.36.0(DIVE-4462)以降、すべての選択肢が1文字のみの場合も拒否されます。選択肢は人がタップするボタンであり、「A」と表示されたボタンでは結果が分からないためです。それぞれを、結果が分かる表現で記述してください。
リスク階層(--tier=0|1|2): 0 は直ちに自動承認されます(--recommend が必要で、通知なし)。1 は通知を送りますが、48 時間回答がない場合は推奨内容を自動適用します。2 は自動適用されません。金銭、公開コミュニケーション、シークレット、破壊的操作、ブランドに関する依頼は、フラグの指定にかかわらず階層 2 に引き上げられます。
解除できる担当者は難易度ではなく TYPE で決まります。申請前に確認してください。task answer で拒否されてから確認するのでは遅すぎます(DIVE-3228)。
| type | デフォルトの階層 | デフォルトで解除できる担当者 |
|---|---|---|
decision | 1 | 任意のエージェント |
approval | 1 — 2 ではありません | ルーティングされたリード |
access | 2 | ルーティングされたリード(デフォルトの階層でリードが解除可能) |
manual | 2 | 人間のみ — 人にしか実行できない手順 |
secret | 2 | どの階層でも人間のみ。ルーティングされません |
自分で --tier=2 を指定するか、カテゴリによる引き上げが適用されると、approval と access も人間のみが解除できます。どの type でも、--needs=spend_authority|human_tap|secret_provision を指定すると、その宣言が階層より優先され、人間のみが解除できます。したがって、人間の対応を避けるために、approval に --tier=1 を手動で指定しないでください。 それはすでにデフォルトであり、このフラグを指定しても何も変わりません。
0.34.0 以降、階層 2 未満の decision ゲートは種類に基づいて ORG LEAD にルーティングされます(DIVE-4415)。 対応する人間には届かず、gate_builder_routing の設定も参照しません。この設定が適用されるのは、担当者が割り当てられていない階層 2 未満の approval または manual ゲートのみです。現在の回答は記憶に頼らず、5dive task routing で確認してください。
対応する人間に届くゲートは、使用する権限を明示する必要があります(DIVE-4346)。明示しないと、申請時に拒否されます。 顧客に確認するのは、金銭、シークレット、取り消せない操作、またはブラウザーやキーボードを使う人にしか実行できない操作の 4 つだけです。そのいずれかを宣言してください。
--needs=spend_authority|secret_provision|human_tap。「難しい」はこの 4 つに該当しません。必要な権限を特定できないなら、それは不安を感じる判断であって、人間対応のゲートではありません。
リードが保持するゲートを対応する人間にエスカレーションするには、5dive task gate-escalate を使います。実行できるのは、ゲートの申請者、そのリード、ルーティングされたレビュアー、組織コーディネーター、または実際のログインセッションにいる人間のみです(DIVE-4365)。人に確認してもらうために、ゲートを --tier=2 で再申請しないでください。 そうするとゲートの履歴が失われます。それこそが、この仕組みで防ごうとしている問題です。
ルーティングされたゲートは、レビュアーのセッションを起動するのではなく、レビュアーが次に通常どおり起動したときに確認できるようキューに入ります。申請時に通知するには --urgent を指定します。これは --recommend とは別の指定です。「回答は X だと思います」と「今すぐ対応が必要です」は、それぞれ独立した主張です。task park/escalate/clear-recs/need --withdraw、--type=access と --probe によるセルフチェック、および先例の事前入力については、5dive-cli-extras を参照してください。
キーはチャットではなく、安全なリンクを使ってオーナーに依頼します(DIVE-5370)
金銭を使ったり、アカウントを開設したりできるものはすべて、シークレットゲートの ワンタイムリンクを経由させます。チャットでは依頼しません。 有料 API キー(ElevenLabs、fal、OpenAI…)、パスワード、 アカウントトークン(GitHub、Vercel、Stripe、Cloudflare、Meta)、2FA シードが該当します。チャットで依頼すると、 チャット履歴にいつまでも残ります。
5dive task add "Connect ElevenLabs for voice clips" --json # no task yet? file one first
5dive task need DIVE-12 --type=secret \
--secret-key=ELEVENLABS_API_KEY --connector=tools \
--ask="Paste your ElevenLabs API key so I can make voice clips"
# -> the owner gets a one-time link (admin seat: the box serves it; standard
# seat: the Telegram Mini App's "Open secure link" card). They paste, the gate
# clears, and you are pinged.
echo "${ELEVENLABS_API_KEY:+set}" # from your next command, the key is in your env
開発中のアプリで使うキーは、tools ではなく、そのアプリに渡します。
--connector=project-<app> は任意の変数名を受け取り、
プロジェクトフォルダーの所有者として(DIVE-5664)、KEY=value を
/home/claude/projects/<app>/.env.local(.env.local がない場合は
.env)に書き込みます。task need の申請時にフォルダーの存在を確認します。キーを
適当な名前で受け取って、手作業でアプリにコピーしてはいけません。
5dive task need DIVE-12 --type=secret \
--secret-key=GOOGLE_MAPS_API_KEY --connector=project-myshop \
--ask="Paste your Google Maps key so the shop's map can load"
すべてのエージェントのツールで使うキーには、--connector=tools を使います。 /etc/5dive/connectors/tools.sh に書き込みます。このファイルは、
すべてのエージェントのコマンドが読み込みます(BASH_ENV)。Mini App の「Settings → Tools」画面で入力するのと同じ保存先です。他のすべての --connector は、エージェント用のシートから読み取れない、root 専用の <name>.env に書き込みます。値は空白や引用符を含まない、1 行でなければなりません。(--connector=tools には 5dive tool が付属する CLI が必要です。古いボックスでは、キーは root 専用の場所に保存されます。)
オーナーがこのチャットで待っていて、通知にリンクがない場合は? ボックスでリンクを作成できなかった場合、task need は「この通知に安全なリンクがありません」と警告します。管理者用シートなら、自分で発行できます。sudo 5dive secret link DIVE-12 を実行すると、同じワンタイムリンクが表示されます。返信では、その LINK を送ってください(キーそのものは絶対に要求しないでください)。標準シートでは発行できません。オーナーに Telegram Mini App の「Open secure link」カードを案内してください。0.91.0 以降(DIVE-6205)、ゲートで有効なリンクは常に1つです。最初のリンクの有効期限が切れる前に2つ目の secret link を実行すると、有効期限を示して終了コード 3 で終了します。--again を指定すると、新しいリンクを発行します。使用済みのリンクを開くと、「This request is closed」というページが表示されます。
エージェントがサイトで入力するログイン情報(0.101.0 以降、DIVE-6844):
sudo 5dive secret link --save=<name> は、タスクなしでワンタイムリンクを発行します。
オーナーがボックス専用のページに値を貼り付けると、どのシートからも読み取れない root 専用の保存先に格納されます。sudo 5dive secret saved ls は名前だけを一覧表示し、値は表示しません。
secret saved rm <name> で削除します。ブラウザーでは、5dive browser act のステップに
"saved":"<name>" を指定して入力します。名前には小文字、数字、ハイフンを使用できます。値は1行でなければなりません。
使い捨てのキーならチャットで受け取ってもかまいません。 無料プランまたはテスト用のキー、オーナーが使い捨てだと言ったキー、あるいは秘密ではない値が該当します。判断に迷う場合はリンクを使ってください。どのような場合でも、キーをそのまま返信したり、ログに記録したり、コミットしたりしてはいけません。
エージェントのバックアップ、引き継ぎ、移動:agent export
「自分をまとめて」と頼まれた場合や、エージェントをバックアップ、複製、移動する場合は、手作業でファイルを tar にまとめてはいけません。2段階のレビュー形式で、1つのコマンドで実行できます。
sudo 5dive agent export <name> --memory=raw --audience=self
# -> writes a memory DRAFT and prints its dir. Nothing is packed yet.
sudo 5dive agent export <name> --memory=raw --audience=self \
--approve-memory=<draft dir> -o <name>.tar.gz
# -> the pack. Attach this file. Keep the two flags on step 2: the
# SEAL hint step 1 prints leaves them out, and without them the
# seal keeps only reference/project facts.
含まれるもの:CLAUDE.md、ペルソナ、設定(モデル、労力、プラグイン、フック)、スキルの本文、メモリフォルダー全体。意図的に含まれないもの:セッションログ(プライベートなチャットが含まれるため)と、エージェント自身のトークンやログイン情報(新しいシートには agent import で独自のものが用意されます)。何も黙って削除されることはありません。キーと思われるものは、ファイル名と行番号が示され、削除するまでパックの作成は拒否されます。
- メモリ関連のフラグを指定しない場合、設定とペルソナのみが含まれます。
--with-memoryはバックアップではなく、公開可能なパックです。参照情報やプロジェクト情報のみが含まれ、プライベートな情報は除外されます。また、デフォルトの--audience=publishでは、ホストのパス、名前、ID が含まれていると作成が拒否されます。--memory=rawは--audience=selfを指定しないと作成が拒否されます。self パックはプライベートなものです。絶対に公開しないでください。--format=agents-mdは tarball の代わりに、1つの AGENTS.md ファイルを書き込みます。
sudo 5dive agent import <file> --as=<new name> で復元します。
再検討する前にチームの記憶を検索する
5dive memory search "hetzner capacity gotchas" --json
読み取り専用で、sudo 不要です。BM25 で順位付けされたスニペットには、ファイルと見出しの出典情報が付いています。過去の決定を再検討したり、チームメイトがすでに遭遇した問題をデバッグしたりする前に、まず検索してください。
大規模なストアでは、2 段階検索(DIVE-3821)を優先してください。スニペットよりも、トークンあたりの候補数を増やせます。
5dive memory search "hetzner capacity" --index # stage 1: slug + one-liner + score, no bodies
5dive memory get <slug> [<slug>...] # stage 2: full bodies, only what you chose
ステージ 1 の結果が空なら、それは該当する情報がない証拠ですが、インデックスが短いだけではそうとは言えません。タスクで使われている言葉ではなく、事実を表す言葉で検索してください。書き込み処理(memory add、共有 wiki へのコンパイル)、memory router、memory check、および衛生管理については、5dive-cli-extras を参照してください。
自分の身元を確認する、または正しいユーザーとして gh を実行する
5dive whoami --json # actor, authority (root|sudo:<who>|self) and tier — with the SOURCE of each
ゲートによる拒否や権限エラーが不自然に思える場合に使ってください。自分が想定しているものではなく、CLI が実際に認識している uid/エージェント/ティアを示します。実行者を特定できない場合は unknown を出力せず、終了コード 6(auth_required)を返すため、スクリプトから実行可能性を確認する用途にも使えます。
エージェントとして PR や issue を開いたりコメントしたりするタスクでは、gh バイナリを直接呼び出すのではなく、5dive gh <gh args...> を優先してください。書き込み(pr create、pr merge、issue comment、…)は 5dive-bot のマシンアカウント経由で実行されるため、GitHub の actor フィールドでエージェントの操作と人間の操作を実際に区別できます(DIVE-2448)。読み取りや管理者クラスの呼び出しは、自動的に自分の認証情報を使います。5dive gh --explain <args> を使うと、何も実行せずにルーティングの判断を確認できます。
運用ルール
- 必ず
--jsonを渡してください。 エンベロープを解析してください。stderr を grep しないでください。 - 名前 1 つにつきエージェント 1 つです。 名前には小文字、数字、ハイフンのみを使用し、先頭は英字、最大 16 文字にしてください。
agent rmを実行した後に限り、名前を再利用してください。 - ボットのトークンを共有しないでください。 同じボット上の 2 つの Telegram チャネルエージェントは、
getUpdatesの取得を奪い合います。エージェントごとに専用のボットが必要です。 - 起動したものは停止してください。 漏れた
worker-Nエージェントは再起動後も実行され続けます。これはスレッドではなく、実際の systemd ユニットです。タスクの完了時に5dive agent rm <name>を呼び出してください。 - 基盤となる CLI バイナリを直接シェルから実行しないでください。
5diveを迂回すると、systemd ユニット、監査ログ、環境変数の注入が省略されます。その結果、エージェントは認証が壊れた状態で実行され、再起動ループも機能しません。 - フラグが不明として拒否された場合は、
5dive --helpを読んでください。ホスト上のバイナリは、このスキルより新しい場合も古い場合もあります。ヘルプの出力が正式な情報です。 - 人間の対応待ちで止まっている場合は、ゲートを設けてください。 推測したり、タスクを黙って停滞させたりせず、推奨事項を添えて
task needを使ってください。 - チャットのリクエストを委任するときは、伝言するのではなく、コンテキストを引き継いでください。
agent send --reply-to-chat=<id> --reply-to-msg=<id>を使います。
リファレンス
references/commands.md— すべてのサブコマンドとフラグを、コピーして貼り付けられる形式で掲載しています。 上記では再掲していない、使用頻度の低いトップレベル動詞も含まれます。5dive deploy(委任による本番環境へのデプロイ、INST-5)、5dive bug(診断レポートを5diveに送信します。所有者が承認した場合にのみ送信されます)、constitution(マシンによって強制されるガードレールへの入口)、5dive acp(stdio経由でACPを使用し、BuzzやZedなどのクライアントが5diveを コーディングエージェントのランタイムとして選択できるようにします。クライアントによって起動されるものであり、直接実行するものではありません。DIVE-3017)、liveness(DIVE-3778。あるエージェントが自ら書き込んだアーティファクトに対して稼働中かどうかを確認します)、plugin(プラグインやマーケットプレイスのインストール、有効化、ロールバック)、human(ゲートを解除できる人、DIVE-3342)、run(1つのタスクに対する1つのエージェントの1回の試行。traceより下位の単位)、trigger(署名付き外部イベントを通常のタスクに変換)、host(CLIルートの許可のもとで、強化されたunit/journal/cronの修復を行います。host timezoneも含みます)。標準シートでルート権限なしに使える動詞である5dive route(ポートでアプリを公開)、5dive pkg install(aptパッケージのインストールのみ)、5dive tool(ツールキー)、5dive hire-link(人間向けのワンタップ採用リンク、またはカタログに適合するエージェントがいないニーズに対応するカスタムエージェントを--createで作成)、 パートナーボックスで使える5dive partner hire、さらに5dive machine add|rm|ls(あらゆるエージェントがssh <name>でアクセスできるマシンを接続。DIVE-5622。add --note="<what it is for>"を指定すると、すべてのClaudeシートのCLAUDE.mdで、そのマシンの行にメモを記載します。DIVE-6143)に加え、所有者向けの5dive telegram-app link(Mini Appのサインイン)と5dive disk sweep|alarm|tick(安全なキャッシュの一掃とディスク容量低下アラーム)については、5dive-cli-extrasで説明しています。- Web UIはコアから切り離され、プラグインになりました。
5dive plugin add 5dive-ai/5dive-uiでインストールすると、以前と同じように5dive uiを使えます。コアに残ったのは、各ビューが描画する読み取り用コントラクトです。5dive board [--json]は、このホストの組織/キュー/ゲート/フロー/トリガーを1つのバージョン付きJSONドキュメントとして出力するため、利用側がコアの非公開sqliteストアを開く必要はありません(DIVE-4779)。5dive board --contract-versionはストアを一切読み取りません。これにより、ボードがまだ存在しないボックスに対してもバージョンを照合できます。 references/exit-codes.md— 終了コードとエラークラス。references/paths.md— ディスク上の状態のレイアウト(デバッグ専用)。5dive-cli-extrasスキル — クルーのホスティング、アカウント、認証の復旧、compose/チームのテンプレート、目標DAG、目標、ループ、メモリ書き込み/wiki、組織図への書き込み、ガバナンス投票、ダイジェスト/使用状況/スーパーバイザー/フリート/診断、Telegramのペアリング詳細、ペルソナマーケット、BYOプロバイダー、会社ウィザードを扱います。
さらに詳しく
完全なリファレンスマニュアルはhttps://5dive.com/docsにあります。このスキルのフラグ指定が実行中のバイナリで受け付けられる内容と食い違う場合は、バイナリの内容を優先してください。sudo 5dive --helpまたはsudo 5dive agent <sub> --help
を直接実行し、その内容に従ってください。
5dive CLI 0.102.2(コミット46c65af9、2026-10-26)に同期済みです。各ボックスのバイナリは、mainより最大1日遅れている場合があります(nightly更新チャンネル)。内容が異なる場合は、5dive --helpを優先してください。