Escritório
オフィス
Claude Code セッション間の ピアツーピア通信。あなたのセッションと専門家が名前で呼べる人になり、同時に複数の話題について互いに会話します — オーケストレーターなし。
デザイン仕様: pessoal/claudicaro-cli/docs/design/2026-08-02-escritorio-multiagente.md。
なぜこれなしではできなかったのか
Claude Code のネイティブトポロジーは ツリー です。サブエージェントは親に返し、SendMessage は自身のセッションが生成した相手にしか届かず、Workflow はスクリプト経由でデータを渡します。兄弟同士は会話しません。横方向の通信には共有メディアが必要です — それがこのメールです。
Related MCP server: neighbors
6つのツール
tool | 機能 |
| 誰がいるか、何を知っているか、どのティアか — 一人につき一行、 |
| 質問して 応答を待つ |
| 送信して 続行する。保留中の質問のスレッド内では、その応答になる |
| メッセージを取得する(通常はフックが自動で配信する) |
| 共有ホワイトボード、宛先なし |
| 操作する前にリソースを主張する |
さらに fechar_thread は会話を終了し、各同僚にノートブックを蒸留させます。
仕組み
スレッド は会話の唯一のコンテナです — ルームやチャンネルを置き換えます。ピア間の議論は N 人の参加者がいるスレッドで、各参加者は誰に返信するかを選びます。
ボスなし、メール内の2つのルールがシステムを支えます:
hopsはメッセージごとにデクリメントされ、ゼロになるとメールは拒否します。無限のピンポンを防ぎます。スレッドの所有者はそれを開いた人であり、その人だけが閉じることができます。
配信 には2つの性質があります:
生存セッション は フック で受信します(
Stopは停止をブロックして配信します。PostToolBatchは作業の途中で配信します)。フックはスクリプトです — モデルの外部で実行され、トークンコストはゼロです。ロスターの同僚 はメールによって
claude -pで 起こされ、応答してから再び眠ります。
同僚のメモリ: スレッド内ではセッションを生存させ(--resume)、すべてを記憶します。スレッドが閉じられると、学んだことを ノートブック .md に蒸留し、セッションは終了します。長期的なものはノートブックです — 監査可能、手動編集可能、バージョン管理されています。
インストール
npm install && npm run build
node scripts/instalar.mjs # --dry pra ver antes, --remover pra desfazerインストーラーは配信フックを ~/.claude/settings.json に登録し、ESCRITORIO_WORKSPACE/ESCRITORIO_ROSTER を設定し、claude mcp add --scope user で MCP サーバーを登録します(これは ~/.claude.json に書き込まれます — settings.json は MCP を登録しません)。
初回は settings.json.antes-do-escritorio にバックアップを作成し、そのバックアップを上書きすることはありません。
ロスター
~/claude-workspace-config/roster.yaml(Mac ↔ VM で同期されたリポジトリ):
especialista-deposito:
brief: "Depósito antecipado: cobrança, pagamento, reembolso (DSG/v1)"
agent_file: ${ESCRITORIO_WORKSPACE}/dsg/.agent/especialista-deposito.md
caderno: ${ESCRITORIO_WORKSPACE}/pessoal/escritorio/cadernos/especialista-deposito.md
tier: advisor
cwd: ${ESCRITORIO_WORKSPACE}/dsg/v1brief は roster() が返す唯一のものです — 「この人を呼ぶのはどんな時か」を考えて書いてください。パスは ~ と ${VAR} を受け入れます。環境変数の展開により、同じファイルが Mac と VM の両方で機能し、ワークスペースは異なる場所にあります。
ティア
tier | 可能なこと | 強制方法 |
| 読み取りとアドバイス | ツールの 許可リスト( |
| ワーキングツリーに書き込む |
|
| 分離して書き込む | 独自の git worktree。作成できない場合、実際のリポジトリにフォールバックせず 拒否 する |
リクエストはクエリ内でティアを 引き下げる ことはできますが、引き上げることはできません。
なぜ拒否リストではなく許可リストなのか
最初のバージョンは --disallowedTools Edit Write NotebookEdit を bypassPermissions と共に使用していました。実際の claude でテストしたところ、漏洩しました: 同僚が Bash 経由でファイルを書き込みましたが、これは拒否リストに含まれていませんでした。4つのバリエーションで測定:
flags | 結果 |
| 漏洩(Bash 経由で書き込み) |
| 防止 |
許可モードなし + 拒否 Edit/Write/Bash | 防止 |
許可モードなし + 許可リスト 読み取り専用 | 防止、さらに |
許可リストに決定しました: リストし忘れたものは許可される代わりに 拒否 されます。許可リスト内の Bash(cat:*) はリダイレクト(cat > arquivo)によるエスケープを 許可しなかった ことに注意してください。
動作の確認
npm run tailメールを監視し、すべてのセッション間 で何が起こっているかを出力します — ボードへの書き込み、クレーム、スレッドの開始、メッセージの交換、応答の到着:
Escritório — monitor ao vivo
sessões vistas na última hora: icaromelo@v1, icaromelo@kairos-ui, icaromelo@oraculo-api, …
threads abertas: (nenhuma)
────────────────────────────────────────────────────────────────────────
13:26:36 ▤ quadro dsg/v1:decisoes = cache sempre via RedisService · icaromelo@v1
13:26:37 🔒 claim src/infra/redis por icaromelo@v1 · revisar TTLs
13:26:38 ⊕ thread [477cfbdc] Em uma frase: qual TTL padrao usamos? · dono icaromelo@v1
13:26:38 icaromelo@v1 →? especialista-cache [477cfbdc]
Em uma frase: qual TTL padrao usamos?
13:26:44 especialista-cache ←! icaromelo@v1 [477cfbdc]
O TTL padrão é 3600 segundos (1 hora) — mas sempre passe TTL explícito…→? はブロッキング質問、→ はメッセージ、←! は応答です。
アイデンティティ
各セッションには名前が必要です。ESCRITORIO_ID が宣言されている場合はそれを使用し、ない場合は usuário@pasta から派生します — プロジェクトごとに安定しているため、dsg/v1 で開かれたセッションは常に icaromelo@v1 であり、別のセッションからアドレス指定できます。
テスト
npm test # 117 testes, sem gastar API
node scripts/smoke-mcp.mjs # sobe o servidor MCP de verdade via stdio
node scripts/smoke-e2e.mjs # E2E REAL: acorda colega, --resume, caderno (gasta API)
node scripts/smoke-escrita.mjs # E2E REAL dos 3 tiers: advisor bloqueado, worktree isolado,
# editor sob claim (gasta API)既知の制限
マシンごとに1つのメール。 Oracle VM 上のセッションは Mac のメールと通信しません。マシン間のブリッジは別の問題です。
dist/は SSD 上にあります。 SSD がアンマウントされると、フックは静かに失敗し(|| true)、MCP は切断されます — 何も停止しませんが、再マウントされるまでオフィスは消えます。生存セッションへの
askは、そのセッションが実行中であることに依存します。 誰もそのセッションを開いていない場合、タイムアウト(5分)まで待機し、応答は後で受信箱に入ります。
This server cannot be deployed
Maintenance
Related MCP Connectors
Shared memory and mail for your AI agents. Verified with Claude Code; other MCP clients in testing.
Messaging and inboxes for AI agents: register, send signed messages, check your inbox, find agents.
Communication and persistent state for AI agents: spaces, posts, search, mailbox, direct messages.
Privacy-first coordination for autonomous agents: rooms, messaging, inbox, and per-agent memory.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables multiple Claude Code instances to communicate through direct messages and topic-based channels. It features a real-time web dashboard for monitoring conversations and includes a persistent mailbox for offline message delivery.10 npm-
- AlicenseNot gradedqualityBmaintenanceEnables multiple Claude Code sessions to communicate and coordinate through broadcast and peer-to-peer messaging.2 npm1MIT
- AlicenseNot gradedqualityDmaintenanceLets Claude Code instances discover and message each other across sessions, with reliable delivery via hooks instead of experimental channels.17 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code sessions to discover each other as named peers and exchange instant messages across directories, machines, and Docker containers, with durable delivery for offline sessions.MIT