普段 Claude Code で作業すると、その会話内容は自動的に Second Brain(Obsidian のメモ帳)に保存される。あとから「前にやったあの作業、どんな内容だっけ?」と振り返れる仕組み。
ところが、Discord のボット経由で Claude に指示した作業だけは、一切記録に残っていなかった。スマホから Discord で「あれ調べて」と頼んだ結果が、あとから検索しても出てこない状態。
放置すると、Discord 経由の作業が増えるほど「やったはずなのに記録がない」ケースが積み重なり、Second Brain の信頼性が下がってしまう。
原因は、Discord Bot が Claude を呼び出すときに付けていたあるオプションにあった。
Claude Code にはセッション(会話の単位)ごとにログファイルを残す機能がある。Bot はこれまで --no-session-persistence(セッションを保存しないオプション)を付けて Claude を呼んでいた。そのためログファイル自体が作られず、同期スクリプト(ログを Obsidian に書き出す自動処理)が拾えるデータがそもそも存在しなかった。
--print(結果をテキストで返すモード)ではその自動処理が発火しない。そこで、Bot 側で Discord に返信したあとに、同期スクリプトをバックグラウンド(裏側で別の作業として)で呼ぶようにした。バックグラウンドで動かすので、Discord への返信速度には影響しない。変更したファイルは1つだけ。 claude-runner.ts(Claude を起動して結果を Discord に返す処理を担当するファイル)に約20行を追加・修正しただけ。同期スクリプト本体や他のファイルは変更不要だった。
なぜ同期スクリプトの自動実行が効かないのか。 Claude Code には「セッション終了時にスクリプトを自動実行する」仕組み(Stop フック)がある。しかし --print モードではこのフックが発火しない仕様になっている。これは Claude CLI 側の制約で、Bot 側で代行するのが正しい対処。
見送ったこと。 定期的にまとめて同期する方式(launchd のタイマー)も検討したが、--print セッションは recall list(過去のセッション一覧を取得するコマンド)に表示されない仕様のため、Bot 側で即時同期するのが確実。