n8n 連携: 最終レビューの指摘を修正

- 進行中の判定: ローカルのコマンドを待ちにしない、ツールの結果待ちを進行中にする、
  24 時間更新の無いログは進行中にしない
- 写しの区間: 同着は古いファイルを残し、写し元の source でも送信済みにする。
  送信後に区間が変わったら知らせる
- 他のサイトからの API 要求を断る (Host / Origin / Content-Type)。
  URL のホストを変えたら合言葉を消す。合言葉は半角の表示文字に限る
- n8n との通信の想定外の例外 (送れない文字など) を N8nError にする

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-13 06:36:20 +09:00
co-authored by Claude Opus 5.5
parent 929f702cc6
commit 95943f4e0e
5 changed files with 249 additions and 19 deletions
@@ -38,8 +38,14 @@ Claude Code での作業を、手で「作業開始・終了」を記録しな
- ターンの起点は既存の規則どおり (人間の発言だけ。サブエージェント・再開時のメタ行は起点にしない)。
- `date` は区間の開始時刻のローカル日付 (日本時間)。日をまたぐ区間も開始日の記録。
- 30 分と 5 分は設定 (`n8n.json` の `gapMinutes` / `minMinutes`) で変えられる。画面から変更できる。
- セッションの最後の区間で、最後のターンがまだ応答中 (ログの最終更新から `gapMinutes` 経っていない、
または最後のターンに応答完了が無い) のものは「進行中」とし、送れない。
- セッションの最後の区間は、次のどちらかなら「進行中」とし、送れない (最終レビューで改訂):
- ログの最終更新から `gapMinutes` 経っていない
- 最後のターンが応答を待っている: 人の発言 (prompt / resume) に返事が無い、またはツール呼び出しの結果がまだ返っていない
(ローカルのコマンド `/exit` などは返事が来ないので待ちにしない。中断されたターンも待ちにしない)
ただしログが 24 時間更新されていなければ、待ちのままでも進行中にしない。
- 会話を続けると前の履歴が新しいセッションのファイルに同じ時刻のまま写される。開始時刻 (ミリ秒) が同じ区間は写しとみなして
1 件にし (長く続いている方、同着なら古いファイル)、外した写しの `source` を送信済みの判定に使う。
- 送信済みの区間が、送った後に伸び縮みしていたら「送信後に変化」と知らせる (n8n 側の行は自動では直さない)。
- `source` = `chktime:<セッションID>:<区間開始の epoch ミリ秒>`。同じログからは毎回同じ値になる。
区間の計算は、HTTP やファイル読み込みから切り離した純粋な関数 (ターンの列と設定値 → 区間の列) にする。