マキモノ
AIのしつけ無料✅ 公式検証済みv1.0.0 / 更新

AIエージェント同士の非同期メッセージで「未返信」を誤判定しない

受信箱の無出力・exit 0・バウンス通知の3つが重なり、実際は送信済みなのに「N回連続で未返信」と引き継がれ続ける壊れ方。行為ログで1分で潰す手順と、作る側の設計チェックリスト。

出品者: seisaku-team@orgiast.jp📖 読込 約1,953トークン (約3円)💰 コスパ 11
トークン節約メーター86%節約
ゼロからAIに作らせた場合2.5万トークン
このMDを読ませた場合3,500トークン

2.2万トークンの節約 (API料金換算で約32円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。

この巻物について

AIエージェント同士の非同期メッセージで「未返信」を誤判定しない」は、AIのしつけカテゴリのAI指示書(MDファイル)です。受信箱の無出力・exit 0・バウンス通知の3つが重なり、実際は送信済みなのに「N回連続で未返信」と引き継がれ続ける壊れ方。行為ログで1分で潰す手順と、作る側の設計チェックリスト。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約2.2万トークン(API料金換算で約32円)・86%のトークンを節約できます。

カテゴリ
AIのしつけ
対応AI
claude-code、cursor、codex-cli
ライセンス
商用利用可 (再販不可)
価格
無料
ゼロから開発時
約2.5万トークン
この巻物使用時
約3,500トークン
節約量
約2.2万トークン (約32円)
更新日
2026-09-22

使い方 (AIに渡す3つの方法)

いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。

⬇ .md をダウンロード
claude "https://makimono-md.vercel.app/api/v1/files/md-df528f83/raw を読み込んで、この指示書どおりに実装して"
claude-codecursorcodex-cliライセンス: 商用利用可 (再販不可)

中身

AIエージェント同士の非同期メッセージで「未返信」を誤判定しない

複数のPC・複数のアカウントで走るAIエージェント同士が、非同期のメッセージ箱(スプレッドシート・キュー・ファイル) を介して質問と回答をやり取りする構成は珍しくない。この構成には、実際には送信済みなのに「まだ送っていない」と 判定し続けるという固有の壊れ方がある。引き継ぎメモを介して世代をまたいで増殖するため、放置すると 「3セッション連続で未返信」のような、誰も検証していない深刻そうな記述だけが育つ。

この指示書は、その誤判定を起こす4つの仕組みと、着手前に1分で潰す手順をまとめたもの。


1. 何が起きるか(実際に起きた形)

引き継ぎメモにこう書かれていた:

未読1件に返信する<メッセージID> / from=<相手ホスト>)。3セッション連続で未返信。

新しいセッションのエージェントはこれを信じて作業に着手する。だが実際には:

  • そのメッセージは返信すべき質問ではなく、バウンス通知だった(相手が受信種別を承諾していない、という自動応答)
  • 返信も、別種別での再送も、16時間前にすでに完了していた
  • 「未返信」という記述は誰も検証しておらず、世代ごとに回数だけが 2 → 3 と盛られていた

結果として、着手したセッションは存在しない作業を探して時間を溶かす。


2. 誤判定を生む4つの仕組み

(a) 受信箱の一覧コマンドが既定で「未読のみ」を返す

export function readInbox(home, { unreadOnly = true } = {}) { ... }

一覧コマンドを叩いて無出力だったとき、人もAIも「メッセージが無い」と読む。 実際の意味は「未読のものが無い」=全部既読フラグが立っている、かもしれない。 既読化 (--ack) は返信とは別操作なので、既読だが未返信も、既読で返信済みも、 どちらも同じ「無出力」に見える。

原則: 一覧コマンドの無出力を「空」と読まない。受信箱の実体ディレクトリを直接 ls して、 個々のファイルの readAt / resultAt を見る。

(b) 送信系コマンドが設定未投入時に「何もせず exit 0」

const config = envFile(path.join(dir, 'fleet-sheet.env'));
if (!config.URL || !config.TOKEN) { err('設定未投入のためスキップ'); return 0; }

設定ファイルが無いPCでバッチが落ちないように、との親切な設計。だが呼び出し側から見ると 「送信成功」と「1バイトも送っていない」が同じ exit 0 になる。 警告は stderr にしか出ないので、パイプや自動化の中では消える。

原則: 終了コードを送信の証拠にしない。行為ログに記録が載ったかで判定する。

(c) 「受信箱の状態」と「自分の行為の記録」が別ファイルにある

受信箱(=相手から来たものの状態)を見ても、自分が返信を送ったかどうかは分からない。 返信は送信ログ側に action: "reply" として残る。引き継ぎを書いたエージェントは 受信箱しか見ず、そこから「まだ返していない」を推測して書いていた。

原則: 状態(inbox)と行為(send log)は別物。完了判定は必ず行為ログで行う。

(d) バウンス通知を「返信すべき質問」と読み違える

相手が受信を承諾していない場合、システムは自動で

未オプトイン。承諾コマンド: node -e "..."

のような案内メッセージを返す。これは受信箱に普通のメッセージとして積まれるため、 「相手から来た未処理のメッセージ=返信しろ」と誤読される。バウンスに返信しても何も起きない。

原則: 受信箱のメッセージは replyTo / kind / 本文の性質を見て、 質問・回答・バウンスの3種に仕分けてから扱う。


3. 着手前にやる1分の検証

引き継ぎに「未返信」「未処理」「N回連続」と書かれていたら、作業に入る前にこの順で引く。

# 1. 行為ログ: 自分は本当に送っていないのか(最重要・これだけで大半は決着する)
tail -10 <送信ログのパス>          # action:"sent" / "reply" と id を探す

# 2. 受信箱の実体: 一覧コマンドではなくディレクトリを直接見る
ls -la <受信箱ディレクトリ>
cat <受信箱ディレクトリ>/<メッセージID>.json   # replyTo / readAt / resultAt / status / expiresAt

# 3. 未着の回答が無いか(副作用の無い形で)
<CLI> --poll --dry-run --json      # [] なら相手からの新着は無い

判定表:

行為ログ受信箱結論
action:"reply" に該当 id あり完了済み。着手不要。
記録なしreplyTo が自分の送信 id相手からの回答またはバウンス。中身を読んで仕分ける
記録なしreplyTo なし・readAt なし本当の未返信。 ここで初めて作業に入る

4. 作る側の設計チェックリスト

同じ仕組みを自分で作るなら、次を満たすと誤判定が構造的に起きにくい。

  • 送信は「試行」と「成功」を別レコードで残す。試行を先に書けば、通信が不確実に終わっても 同じ id を調べ直せる(新しい id での無条件再送を防ぐ)。
  • 一覧コマンドに未読フィルタの有無を明示するフラグを付け、既定値を --help に書く。 無出力時は (未読 0 件 / 全 N 件) のように母数を出す。これだけで (a) は消える。
  • 設定未投入のスキップは exit 0 以外(例: 3)にするか、最低でも stdout に SKIPPED: ... を出す。「静かに成功に見える」を作らない。
  • バウンス・自動応答には kind: "bounce" のような機械可読な種別を付ける。 本文の日本語を読ませて判別させない。
  • メッセージに expiresAt を持たせ、期限切れは期限切れとして表示する。 期限切れを「未返信」と同じ扱いにしない。

5. 安全側の線引き(AIに代行させないこと)

バウンスが「受信側で承諾コマンドを実行せよ」と案内してくる場合、それは 相手側の人間が下す同意であって、エージェントが代わりに実行してよいものではない。 自分のPC上のローカルな確認ダイアログと、他アカウント・他PCの安全機構の解除は別の話。

  • やってよい: 承諾の要らない種別(通知・note 相当)で送り直す
  • やってはいけない: 相手PCの承諾ファイルを書き換える / 相手に代わって承諾する / 「承諾すれば早い」と言って人に解除を促す

また、相手が答えないことは自分側の未完了ではない。 新しい id での再送は重複配達になるので、期限を記録して閉じ、再送するかどうかは人の判断に上げる。


6. まとめ(3行)

  1. 「未返信」は行為ログで検証する。受信箱を見て推測した「未返信」は信用しない。
  2. 一覧コマンドの無出力は「空」ではない。exit 0 は送信の証拠ではない
  3. 受信箱のメッセージは質問・回答・バウンスに仕分けてから扱う。バウンスに返信しても何も起きない。

よくある質問

「AIエージェント同士の非同期メッセージで「未返信」を誤判定しない」とは何ですか?

受信箱の無出力・exit 0・バウンス通知の3つが重なり、実際は送信済みなのに「N回連続で未返信」と引き継がれ続ける壊れ方。行為ログで1分で潰す手順と、作る側の設計チェックリスト。

どれくらいトークン(費用)を節約できますか?

ゼロから開発すると約2.5万トークンかかりますが、この巻物を使えば約3,500トークンで済みます。差し引き約2.2万トークン(API料金換算で約32円)・86%の節約です。

どうやって使いますか?

無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。

どのAIツールに対応していますか?

claude-code、cursor、codex-cli に対応しています。

商用利用できますか?

ライセンスは「商用利用可 (再販不可)」です。

🤝 自分でAIを動かすのは、まだ不安…という方へ

この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。

AI代行堂を見る →

関連する巻物

AIのしつけ無料✅ 公式

AI運用ルールを機械的に守らせる hook 設計 — ルール文が守られない本当の理由

チームでAIエージェントを使うと運用ルールが必ず守られなくなる。真因は「読んでいない」ではなく hook がそのマシンで登録されていない/委譲先が沈黙して壊れていること。禁止=実行前拒否・誘導=依頼時の具体コマンド注入・担保=セッション開始時の自己修復の3層、明示例外の短命トークン、warn→blockの段階昇格、BOM/サンドボックス/timeout など失敗が沈黙する罠と、環境依存で落ちないテストの作り方までを実測ベースでまとめた導入手順。

95%節約
24.6万トークン (料金換算 約370円)
新着
AIのしつけ無料✅ 公式

AIの応答を止める番人hookを1ランナーに統合し、書き直しを最大1回にする(誤爆率をfixtureで先に測る)

Stop hook を9本積んだら Stop の65%が書き直し・最多ゲートの91%が誤爆だった。誤爆測定→否定文除外→1プロセス合流→再試行上限統一→全PC移行→KPIで効果確認までの手順。

95%節約
17.1万トークン (料金換算 約260円)
新着
AIのしつけ無料✅ 公式

定額プランの最上位モデルを枯渇させずに使う「二段レーン」設計

5時間/週の枠を桁違いに食う最上位モデルを、長時間タスクと失敗時の昇格だけに自動で当て、上限に当たったら既定モデルへ退避する委譲レーンの作り方。判定は純関数・検証まで含む。

91%節約
11.8万トークン (料金換算 約180円)
新着

この巻物、誰かのトークンも救えます

𝕏 で節約レシートをシェア