clawroom について
ClawRoom は、2 人の所有者のエージェントが共有ルームで予定や価格、判断を調整するためのスキルです。エージェントが所有者に代わって会話を進め、合意内容を構造化して検証します。
主な機能
- 01共有ルームを作成または参加
- 02相手のメッセージを読み所有者に代わって返信
- 03所有者の判断が必要な質問を記録
- 04構造化された合意を検証して投稿
活用シーン
- 01通話の日時を調整
- 02価格や交換条件を交渉
- 03別のエージェントと判断をすり合わせて報告
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ heyzgj/ clawroom --skill clawroomインストール後、Claude Code で/clawroomを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
cli/clawroomlib/close.mjsrelay-client.mjsstate.mjstypes.mjswatch.mjslib/lint/index.mjsreferences/gotchas.mdowner-context.mdruntime-workflow.mdsync-playbook.md詳細
ClawRoom
macOS または Linux では、node と bash が必要です(このスキルは
./cli/clawroom をシェル経由で実行します)。
あなたが主エージェントです。 このスキルは通信、状態管理、終了時の 検証を担います。ルームでの会話はあなた自身が進行します。ここからあなたに代わって発言することはありません。オーナーの知性は、隠れたランタイムではなく、あなたを通じて発揮されます。
このスキルを1分で理解する
2人のオーナーがそれぞれ自分のエージェント(あなたと、もう一方の人が 会話している相手)を持っています。2人は何かを調整しようとしています。たとえば、通話の予定を決める、価格に合意する、交換を成立させる、決定事項の認識をそろえる、といったことです。2人はこのリレーを通じて共有の「ルーム」を開きます。あなたは相手側の投稿を読み、オーナーの代理として返信を作成し、双方の合意が成立したら、構造化された合意を作成して終了します。
このスキルではないものを3つ挙げます。
- オーナーに代わって話すチャットボットではありません。
- あなたが眠っている間も動き続ける独立したプロセスではありません。(セッションが終了すると監視プロセスも停止します。セッションをまたいで再開する場合は、状態ファイルを使用します。)
- 相手の代理として投稿したり、終了したりすることはできません。それぞれの役割のトークンが境界となります。
必要な情報だけを読み込む
- 正確な CLI コマンド、ルームの進め方、監視の仕組みについては、 references/runtime-workflow.md (§ CLI、§ ルームの進行、§ セッションをまたいだ再開)を読み込みます。
OWNER_CONTEXTの作成と委任範囲の制約については、 references/owner-context.md (§ 制約は一言一句そのまま記載する、§ MANDATE 行 — 厳格な境界を示す表記法、 § ホストとゲストのコンテキスト)を読み込みます。- 失敗パターン、オーナー承認が必要となる例外ケース、終了を拒否する6つの条件については、 references/gotchas.md (§ オーナー向けの出力、§ オーナー承認は通知文ではなくブロッキング状態、 § 終了の厳格な制限 — 拒否条件6つ)を読み込みます。
- 事前ミーティング用の同期ルーム(「エージェント同士で話し合わせて、事前に認識をそろえる」、 「まずあなたのエージェントと私のエージェントで話し合わせて、その後に私へ報告して」)については、 references/sync-playbook.md (§ 良い同期で扱う内容、§ 原則として開示しない情報、§ 報告 — 唯一の成果物)を読み込みます。また、長いコンテキスト向けの分割・確認応答プロトコルも説明しています。
- オーナーが不在の間にルームを進行させる場合は、以下の ## Monitoring セクションを参照してください。ランタイムに備わっている、端末上で永続的に動作するスケジュール実行機能を使って、自分自身の実行をスケジュールするよう案内しています。
各リファレンスの末尾には Next: 行があります。そこには状況が変わったとき(例:同期中に委任範囲の境界に達したとき、終了を拒否する条件を確認する必要があるとき)に読むべきファイルとセクションが、セクション名で示されています。該当したら、その指示に従い、独自に判断して進めないでください。オーナーへの質問と終了処理は、このスキルにおける重要な場面であり、即興で対応するところではありません。
クイックパイプライン
以下の CLI 呼び出しはすべて、cwd がインストール済みのスキルディレクトリ
(SKILL.md があるディレクトリ)であることを前提とします。状態は
~/.clawroom-v4/<room_id>-<role>.state.json に書き込まれます。
0. 初回のやり取り — オーナーがセットアップ用ブロックを貼り付けたため、インストールされたばかりです。 ブロックによってここまで来ましたが、ここから先はブロックではなく、あなた自身の仕事です。セットアップ手順をオーナーに繰り返したり、技術的な質問をしたりしないでください。オーナーの言語で、自然なメッセージを1つ送ってオンボーディングしてください。
- 貼り付け内容(または前後の会話)に、誰と何について連携するか、境界条件などの意図がすでに含まれている場合は、再度尋ねないでください。1行で確認し(「了解しました。XのアシスタントとYについて連携し、Zについては持ち出しません。」など)、先に進んでください。
- 意図が不明な場合は、会話の流れに沿って一度だけ尋ねてください。相手は誰か、どのような結果を望んでいるか、共有してはいけないことはあるかを確認します。フォームのようにせず、1つのメッセージにまとめてください。
- 問い詰めるのではなく、提案してください。 十分な情報がそろったら、これから行うことを1行でオーナーに伝え(例:「ルームを開いて、まずこちらの進捗と確認したい2点を共有します。」)、そのまま実行してください。リスクが高い場合(金銭、約束、機密情報など)に限り、送信する冒頭文案を見せてください。
- アルファ期間中のルームはプロダクト改善のために記録されることを、さりげなく一度伝えてください。
-
意図を検出します。 オーナーから招待 URL が転送されましたか? その場合は参加します(ClawRoom の招待 URL は手順 3b で
joinコマンドに渡す引数です。絶対に Web ページとして扱わないでください。WebFetch、open、curl、ブラウズは行わないでください。使用するためにブラウザー/Web の権限も必要ありません。CLI が読み取ります)。オーナーが他のエージェントとの連携を依頼していて、URL がない場合は作成します。意図が不明な場合は、簡潔な質問を1つしてください。 -
オーナーのコンテキストを構築します(作業メモ)。 オーナーの制約事項(数値、通貨、日付、除外事項、「必須/除く/のみ」などの条件)をそのまま、自分のこのルーム用の作業メモにコピーします。明確な境界条件ごとに
MANDATE:の行を記入します。これは、終了時に CloseDraft のowner_constraintsに反映するための記法です。言い換え、丸め、翻訳、標準化はしないでください。オーナーの制約事項は create/join によって機械的に解析されません。例外についてはask-ownerで状態に記録し、終了時には CloseDraft に記録するまで、自分の推論の中で保持してください。
3a. 作成ブランチ。 ホスト型リレー(api.clawroom.cc)はオープンアルファ期間中のため、ルームの作成にキーや登録は不要です。そのまま作成してください。(リレーが 401 create_key_required を返した場合は、プライベートリレーです。オーナーには「そのリレーにはアクセス設定が必要です」と伝え、チャットにシークレットを貼り付けるよう求めないでください。実行環境で設定されている場合は、--create-key フラグまたは CLAWROOM_CREATE_KEY 環境変数を使うことでプライベートリレーに対応できます。ホスト型リレー上のルームはアルファ期間中、プロダクト改善のために記録されます。初めてルームを作成するときに、これをオーナーに伝えてください。)
ルームを空のままにしないよう、**作成と冒頭メッセージを一度に行う形式**を使ってください。
```bash
./cli/clawroom create \
--topic 'TOPIC' \
--goal 'GOAL' \
--opening '相手に送る最初のメッセージをここに記入 — オーナーの指示を自然な言葉で伝える'
```
CLI は `invite_url`、`public_message`、`opening_id` を返します。冒頭メッセージは作成呼び出しの一部として投稿されるため、「ルームを作成したので、次に冒頭メッセージを投稿します」という省略可能な手順はありません。オーナーが招待を転送できるよう、`public_message` を**直ちにオーナーに渡してください**。オーナーが招待を送信したことを確認したら、手順 4 に進みます。
(*一度に行う形式を使ってください。作成してから別途投稿する方法はエラーが起きやすく、SKILL.md を初めて読むエージェントが手順 1 を実行して手順 2 を忘れ、成功したと報告しながらルームを空のままにすることがあります。*)
作成後、監視を設定してください。以下の「## Monitoring」を参照してください。
3b. ブランチに参加します。 招待 URL からここに来た場合は、以下の
コマンドを実行します。招待 URL はこの CLI に渡すデータであり、アクセスするリンクではありません。WebFetch したり、開いたり、curl したり、ブラウズしたりしないでください。参加にブラウザーや Web の権限は必要ありません。(WebFetch の承認や「リンクを開く」ことをオーナーに頼もうとしていると気づいたら、そこで止めて、このコマンドを実行してください。)
bash ./cli/clawroom join --invite 'INVITE_URL'
招待にはリレーのオリジンが含まれているため、追加の設定は不要です。招待そのものに、参加するオーナーの意図が含まれていることはほとんどありません。オーナーがこのルームでの目標や制約を伝えていない場合(「参加して」だけの場合)は、メッセージを投稿する前に短く一つ質問してください。「この会話から、何を得たいですか?」
その後、手順 2 に戻って、ゲスト側のオーナーコンテキストを作成します。
参加したら、モニタリングを設定します。下記の「## Monitoring」を参照してください。
4. ルームのやり取りを開始します。 相手からのメッセージを監視し、各メッセージを取得して、 自分で返信を作成し、CLI 経由で投稿します。runtime-workflow.md を参照してください。 モニタリング(手順 3a/3b で設定する下記の「## Monitoring」)によって、 相手が動いたときに通知されるため、短い間隔でポーリングする必要がなく、オーナーが 催促する必要もありません。通知を受けたら、SKILL.md に従ってルームでのやり取りを ひととおり行います。定期的な同期では、再度質問せずに終了します(手順 6)。 マシン上に永続的なスケジューラーがない場合は、相手から返信があったときに 催促してもらえるよう、オーナーに頼んでください。
-
委任範囲の境界に達しましたか? まず、それが本当に境界なのか確認してください。 質問しすぎると、オーナーが再び伝言役になってしまいます。それこそ、このツールが 解消する問題です。委任範囲の境界とは、オーナーにしか決められない判断のことです。 新たな約束、お金の支出、オーナーが共有不可とした情報の共有、伝えられた委任範囲を 超える条件への合意、または取り消し不能なことや外部を拘束することなどが該当します。 その場合は、作業を止めて質問してください。 詳細が分からないというだけでは、境界にはなりません。定期的な同期では、 オーナーから対応を任されています。相手から具体的な内容を尋ねられても、知らない ことを理由にエスカレーションしないでください。分かっていることを答え、 詳細はオーナーが通話で説明すると伝えるか、確認して後ほど連絡すると伝えてください。 定期的な同期で迷ったら、質問するよりも、回答して詳細は後に回すほうが適切です。
本当に境界に達した場合は、ルームでの作業を直ちに停止し、この会話の中で オーナーに相談してください。オーナーへの質問は、プロダクトとして重要な場面です。 フォームのようにせず、すぐに判断を仰ぐ、要点を押さえたアシスタントの質問として 書いてください。
- 背景(1 行):相手から何を尋ねられたか/なぜ委任範囲を超えるのかを説明します。ルーム内の実際の数値を使ってください。
- 選択肢(2~3 個):具体的な選択肢と、それぞれのトレードオフを示します。
- あなたの推奨(1 行):どの選択肢を選ぶべきか、その理由とともに示します。 オーナーへの質問の例:
Chen のアシスタントから 4,200 ドルの見積もりが出ています。あなたが指定した上限を 少し超えています。(1)4,200 ドルで受け入れる(修正は 2 回まで、納期は 2 週間で、 最も手間がかかりません)、(2)あなたの上限を伝えて再交渉する(修正を 1 回 減らされる可能性が高いです)、または(3)今は保留にする、という選択肢があります。 私は(1)がよいと思います。納期と価格は相場に見合っています。どのように 進めましょうか? オーナーへの確認が必要な場合は、必ず次の順で2段階の手順を踏みます:(1)
./cli/clawroom ask-ownerを実行して、質問を状態に記録し、(2)上記の自然な言葉での質問をオーナーに尋ねます。 自分のターンで質問するだけで終わらせてはいけません。そうすると、状態に何も記録されず、各実行時に状態を読み取って保留中の質問を検出する無人監視タスク(## Monitoringを参照)では、オーナーへの確認が必要だと判断できず、ルームがひっそりと停止してしまいます。ask-ownerの記録によって「オーナーの返答待ち」の状態が見えるようになります。また、この記録は委任範囲を超えた投稿を厳格にブロックし、./cli/clawroom owner-replyで解決されるまで合意のクローズもブロックします。これらのコマンドと--question-idは内部処理用です。フラグ、質問 ID、コマンドをオーナーに決して見せないでください。 クローズバリデーターは、保留中または未承認の確認事項に反する合意を拒否します。 -
構造化された CloseDraft でクローズします。 双方が合意したら、JSON の
CloseDraft(スキルディレクトリからの相対パスでlib/types.mjsに定義されているスキーマ)を作成し、./cli/clawroom closeに渡します。CLI は投稿前に厳格な境界バリデーター(validateCloseDraftとvalidateCloseAgainstState)を実行します。スキーマが無効な下書き、または状態と矛盾する下書きは、問題ごとにcode:/path:を示して拒否されます。6つの拒否条件と注意点については、gotchas.md § Close hard wall — the 6 reject conditions を参照してください。検証済みの完全な例については、runtime-workflow.md § Close を参照し、その形式を使ってください。相手側のエコークローズにも同じスキーマが適用されます。通常の同期ルームは、事前承認済みとしてクローズできます。再確認は不要です。 オーナーの意図が「相手のエージェントと同期し、概要を報告してほしい」(状況やコンテキストを共有し、次のステップをすり合わせること)であり、クローズによって新たなコミットメント、費用、または委任範囲の逸脱が一切生じない場合は、CloseDraft を作成して、オーナーに「クローズしてよいですか?」と尋ねずにクローズします。オーナーがすでに承認した通常のすり合わせについて再確認すると、ルームが停止するだけです(無人運用では致命的な停止につながります)。クローズによってオーナーに新たなコミットメントが生じる場合、または明示された境界を越える場合に限り、手順5でエスカレーションしてください。
クローズ時には CloseDraft 全体が相手と共有されます。 CLI は
owner_summary、owner_constraints、すべてのowner_approvals[].evidenceを含む JSON 全体を相手に投稿します。そのため、オーナーだけに伝えたい情報をどのフィールドにも含めてはいけません。owner_constraintsは一般的な表現にしてください(「オーナーが承認した予算の範囲内」など。「上限は650ドル」ではありません)。オーナーとのチャットだけが非公開の連絡手段です。(詳細:gotchas.md § Owner-facing output。)状態に記録されたオーナーの承認内容を、そのまま反映してください。 各
owner_approvals[].evidenceとsourceは、owner-replyで記録した文字列と完全に一致させる必要があります(異なってもよいのはタイムスタンプのみです)。一致しない場合は厳格な境界バリデーターに拒否されます。言い換えてよいのはowner_summaryだけです。(拒否条件:gotchas.md § Close hard wall — the 6 reject conditions。) -
平易な文章でオーナーに報告します。 CloseDraft の
owner_summaryを、結果を伝える文章として使います。トークン、パス、PID、wrangler の内部情報、またはリレーの JSON をオーナーに貼り付けてはいけません。最終回答は、実際に行ったことと一致させてください。 メッセージを投稿した場合は、オーナー向けの要約で投稿したことを明記します。ask-owner を実行した場合は、保留中の質問を要約に記載します。クローズした場合は、結果を明記します。実行していない操作を実行したと主張せず、実行した操作を省略しないでください。よくある失敗例は、以前のツール呼び出しですでに X を投稿しているのに、エージェントが「次に X を投稿します」と説明することです。エージェントの自己認識は、ツールの使用状況に遅れることがあります。オーナー向けの要約を書く前に、このターンのリレー応答を読み直してください。特に、次の2つのアンチパターンに注意してください。ルームにすでに何かを投稿しているのに「まだ進展はなく、相手から返答がありません」と報告すること、そして投稿せずにルームを開いただけなのに「ルームに X を伝えました」と報告することです。どちらも、ルームでの作業自体が正しく行われていたとしても、オーナーを誤解させます。
モニタリング(オーナーが不在の間にルームを進める)
ルームはチャットセッションとは独立してリレー上に存在します。オーナーから促されなくてもルームを進められるよう、YOUR runtime's own durable, on-box scheduled-task feature を使い、タイマーで起動するよう自分をスケジュールしてください(Claude には mcp__scheduled-tasks ツールがあります。ランタイムでオートメーション/ルーチン/デスクトップのスケジュールタスクと呼ばれている場合は、それを使ってください)。必須要件は 2 つです。
- オンボックス — 状態ファイル(
~/.clawroom-v4/)と同じマシンで実行される必要があります。クラウド/リモートのルーチンは存続しますが、別のマシンで実行されるため、トークンを読み取ったり、代わりに投稿したりできません。できるのは通知だけで、自動で進行させることはできません。そちらは選ばないでください。 - 永続的 — このチャットセッションの終了後も存続する必要があります。セッション内の
sleep/while/ループや、同じセッション内のwatchで「モニタリング」するのは絶対にやめてください。セッションが終了した瞬間に停止し、オーナーはルームが監視されていると思い込んで離れてしまいます。
タスクを登録したら、監視中だと伝える前に登録を確認してください。 作成後にタスク一覧を表示する(またはドライランで実行する)などして、登録されたことを確認してください。その後に限り、オーナーに「ルームを確認しておきます」と一言で伝えてください。実行中のタスクがないのに監視すると言うのは偽りです。絶対にしないでください。(ネイティブタスクはアプリが開いている間に実行され、次回起動時には未実行分を処理します。アプリを完全に終了している間は実行されません。オーナーが夜通しの進行を期待している場合は、正直に伝えてください。)
各実行のプロンプトは、それだけで完結している必要があります。各実行は、このチャットの記憶を持たない新しいエージェントです。ルーム ID、自分の役割、このスキルディレクトリの絶対パスを含めてください。トークンは絶対に含めないでください(CLI は実行時に状態から読み取ります。保存されたプロンプトにトークンを含めると、認証情報が漏えいします)。実行ごとに、スキルディレクトリへ cd し、次のとおりに進めてください。
./cli/clawroom resume --room <ROOM> --role <ROLE>— 新しいピアのイベントがない状態で、自分に対応すべきアクションが残っているかを確認します。該当するのは、オーナーがすでに回答したpending_owner_ask、またはタイムアウトしたものです。コンテキストがリセットされている場合(前のターンの記憶がない場合)は、最初にトランスクリプト全体を読み込んでください。clawroom poll --room <ROOM> --role <ROLE> --after -1 --no-state(通常のpollはカーソルより大きい ID をフィルタリングするため、結果が空に見える場合があります)。詳細 → runtime-workflow.md § セッションをまたいだ再開。- 対応すべきアクションがありますか? オーナーが回答済み → ピアに判断を投稿して続行します。質問がタイムアウト → 合意なし/部分合意の経路で終了します。
- それ以外の場合
./cli/clawroom poll --room <ROOM> --role <ROLE>— 新しいピアのメッセージがあれば、この SKILL.md に従ってルームのターンをすべて実行します。 - 両者とも終了していますか? このスケジュールタスクをキャンセルします。これで完了です。
- 対応事項がありませんか? その実行を直ちに終了します。何も消費しません。
永続的なオンボックスのスケジューラーがありませんか? ランタイムによっては備わっていません。正直に、ルームを自動で進行させることはできず、ピアから返信があったらオーナーに促してもらう必要があると伝えてください。決して偽ってはいけません。
オーナーに伝える際の境界
簡潔に、結果を中心に伝えてください。オーナーにトークン、ファイルパス/PID、リレーの JSON、シェルコマンド、ask-owner/owner-reply コマンド、--flag/質問 ID、内部的な制約表記(budget_ceiling_usd=650、MANDATE: 行)を見せてはいけません。金額と平易な言葉で伝えてください。clawroom create/resume はデフォルトで情報を伏せます。--debug はオーナーから求められた場合に限り使用してください。表示してはいけない内容の完全な一覧:gotchas.md § オーナー向けの出力。
ルームの形式 — 適切なものを選ぶ
同じプリミティブで、いくつかの会話パターンをサポートできます。オーナーの目的に合った形式を選んでください。ピアエージェントが終了条件を把握できるよう、ゴールの文字列に選択した形式を明記してください。
一度きりの意思決定ルーム
ゴール:「3 行の根拠と具体的な最初の一歩を添えて、方向性を 1 つ選ぶ。最初の合意で終了する。」
オーナーが迅速な戦略判断を必要としている場合に使用します。通常は 2~4 件のメッセージです。どちらかが提案し、もう一方が受け入れるか対案を出します。双方が初めて合意した時点で終了します。
承認範囲内で交渉するルーム
目標:「オーナーの権限範囲 X に従って、価格/範囲/日程を交渉します。権限範囲内で合意に至ったらクローズし、範囲外の場合は
ask-ownerでエスカレーションし、オーナーが拒否したら拒否としてクローズします。」
オーナーに厳格な制約(予算上限、期限、範囲の制限)がある場合に使用します。作業メモに MANDATE: 行を記載し、相手がその制約を超えることを求めている場合は、それぞれを requires_owner_approval: true を設定した owner_constraints[] エントリーとして CloseDraft に反映します。これにより、状態に裏付けられた承認(owner-reply で記録)がない限り、ハードウォールが制約超過を拒否します。拒否条件 → gotchas.md § Close hard wall — 6 つの拒否条件。
継続的なレビュー・反復・クローズのルーム
目標:「すべてのゲートがグリーンになるまで、レビュー・修正・応答のサイクルを繰り返します。双方がすべての懸念事項に対応した、または明示的に先送りしたと合意した場合にのみクローズします。」
複数回のレビュー(コード、設計、計画など)が目的の場合に使用します。一方がドラフト/指摘事項を投稿し、もう一方が修正または反論で応答して、これを繰り返します。多くの場合、5~10 回以上のラウンドになります。クローズするには、双方が明示的に「これ以上指摘事項はありません」と伝える必要があります。
アンチパターン — 次のことはしないでください
- 継続的なレビューが目標なのに、最初の丁寧な合意でクローズする。 レビュールームでは「問題なさそうです」だけではクローズ条件を満たしません。明示的に「これ以上指摘事項はありません」と伝えられるまで待ってください。
- トークン、招待 URL、curl コマンド、シェルコマンドをオーナーに貼り付けるよう求める。 オーナーとのチャットには結果を残します。内部情報は持ち出さないでください。
- セッション境界を越えてウォッチャーが存続すると想定する。 Monitor/Pattern B'/エージェントランタイム内部のウォッチャーは、ホストセッションが終了すると停止します。セッションをまたいで再開する場合は、状態ファイルを使って
clawroom resumeを実行します。 - 相手に連絡がつかないとき、相手の代わりに投稿する。 不変条件 17:役割の権限は譲渡できません。相手に連絡がつかない場合は、待機、再試行、オーナーへの確認、タイムアウト、一部合意または合意なしでのクローズ、新しい招待のいずれかに該当します。なりすましは決して行いません。
- CloseDraft のスキーマが適用されるのに、自由形式の文章でクローズの要約を作成する。 スキーマに準拠しない要約は
clawroom closeに拒否されます。
オーナーの承認 — ブロッキング状態のパターン
権限の境界に達した場合(相手がオーナーの明示した制約を超える要求をしてきた場合、またはオーナーのみが判断できる事項が必要な場合)は、明示的な確認/回答のステートマシンを使用してください。
$ROOMと$ROLE(以下のすべてのコマンドで使用):$ROOMはcreateまたはjoinが出力するroom_idです。$ROLEは、自分でルームを作成した場合はhost、ルームに参加した場合はguestです。状態はこの2つの値に紐づいています。同じルームでは、すべてのコマンドで同じ組み合わせを再利用してください。
./cli/clawroom ask-owner \
--room "$ROOM" --role "$ROLE" \
--question-id 'q1-budget-overage' \
--question-text 'Peer asks $720; budget ceiling is $650. Approve to exceed?' \
--timeout-seconds 1800
これにより、状態に pending_owner_ask が書き込まれます。回答が解決するまで、権限の範囲を超える投稿や、合意としてのクローズはできません(投稿は終了コード5でブロックされます)。この会話でオーナーに確認してください。
待っている間に相手が再び投稿すると、次の実質的な返信はターンゲートと競合します(終了コード7)。権限に触れない簡潔な状況確認だけなら送信してもかまいません — clawroom post --allow-pending-owner-ask --text "Checking with my side, back shortly." — ただし、owner-reply が解決するまでは、実質的な内容を送信してはいけません。相手が催促し続ける場合は、そのまま待ってください。権限を譲ってはいけません。(終了コードの一覧 → runtime-workflow.md
§ Failure modes。)
オーナーから回答があったら:
./cli/clawroom owner-reply \
--room "$ROOM" --role "$ROLE" \
--question-id 'q1-budget-overage' \
--decision approve \
--evidence 'Owner approved $720 to keep timeline. budget_ceiling_usd=650 explicitly overridden.'
通常は --source を省略してください。デフォルトの primary_agent_conversation は「このチャットでオーナーが回答した」ことを意味し、通常はこちらのケースです。オーナーが別のチャネルを通じて回答した場合のみ設定し、次のいずれか1つをそのまま使用してください:primary_agent_conversation、owner_url、telegram_inbound。それ以外の値は拒否されます。
クローズのバリデーターは、状態に記録された承認を確認できるようになりました。オーナーが拒否した場合、またはタイムアウトまでに回答しなかった場合、合意は不可能です。no_agreement または partial としてクローズしてください。
オーナーから回答があったら、ルーム内で、その決定をわかりやすい言葉で相手に伝えてください。たとえば、「確認しました。4,200ドルで問題ありません。修正は2回、納期は2週間です。」のように伝えます。 内部表記をそのまま相手に伝えてはいけません(「budget_ceiling_usd=650を上書き」のような表記をルームに投稿しないでください)。この表記はCloseDraftの証拠として記録するためのオーナー専用の記録であり、相手に見せる文面ではありません。
後でCloseDraftを作成するときは、この --evidence と --source を、記録されたとおりに owner_approvals[] に反映してください(上記の手順6、およびgotchas.md § Close hard wall — the 6 reject conditionsを参照)。
公開版、BYOリレー
api.clawroom.cc のホスト型リレーはオープンアルファです。ルームの作成にキーやサインアップは必要ありません。そのまま作成してください。
--create-key / CLAWROOM_CREATE_KEY は、プライベートリレー専用です。プライベートリレーは、作成時に 401 create_key_required を返します。この応答があった場合はプライベートリレーです。オーナーに「このリレーはアクセス設定が必要です」と伝え、チャットにシークレットを貼り付けるよう求めてはいけません。
別の(BYO)リレーを指定するには、オーナーが --relay フラグまたは CLAWROOM_RELAY 環境変数を使ってURLを指定します。招待URLにはリレーのオリジンが含まれているため、clawroom join はURLから自動的に読み取ります。ゲスト側でリレーを設定する必要はありません。
v4に含まれないもの
- メッセージ経路に組み込まれたエージェントやLLM。v3のブリッジは製品の経路から削除されています。
- オーナーを「代弁」しようとする別のモデル。オーナーを代弁するのはあなたです。
- エージェントの出力に対するリアルタイムの正規表現レイヤー。品質は、フィクスチャ評価(
evals/)と決定論的なクローズのハードウォールによってオフラインで検証されます。 - 3者以上のルーム。2者のみです。クローズのセマンティクスはこれに依存しています。