
はじめに
AIと作業していると、その場ではかなり良いことを話しているのに、次の日には「あれ、昨日なに決めたっけ」となる。
これが地味に困る。
チャットの履歴を読み返せば分かることもあるが、毎回そこまで掘るのは面倒である。作業ログ、失敗、改善案、次に再利用できそうな知見は、最初からObsidianに残しておきたい。
そこで今回は、Obsidian VaultをCodexの長期作業メモリーとして使うために、obsidian-ai-memory というCodexスキルを作った。
結論から言うと、スキル本体はCodex側、記録先はObsidian側に分けるのがよかった。
- はじめに
- 何を作ったのか
- なぜObsidianを使うのか
- 設計方針
- 作ったファイル
- 日報化の流れ
- Daily Logに残す内容
- 技術スタック
- 検証で詰まったこと
- Context Packも確認した
- セキュリティ上の注意
- Before / After
- まとめ
何を作ったのか
作ったものは、Codexでの作業をObsidianに日報として残すための仕組みである。
ざっくり言うとこうなる。
Codexとの作業 ↓ obsidian-ai-memory スキルを呼び出す ↓ 今日の作業内容を要約する ↓ ObsidianのDaily Logへ追記する ↓ 週報・月報・Context Pack・スキル候補に再利用する
ただの「会話まとめ」ではなく、今後の作業で再利用できる記録にするのが目的である。
保存する内容は、次のような項目にした。
- 今日やったこと
- うまくいったこと
- 詰まったこと・失敗したこと
- 原因
- 次に改善すること
- 再利用できそうな知見
- スキル化候補
- AIに渡す要約
この形式にしておくと、ただの日記ではなく、次のAI作業に渡せるメモリーになる。
なぜObsidianを使うのか
理由は単純で、ObsidianはローカルMarkdownの保管場所として扱いやすいからである。
AIとの作業ログは、チャット履歴の中に埋もれると再利用しにくい。だが、MarkdownとしてVaultに入れておけば、検索できるし、日報や週報にも流せる。
また、Obsidianなら次のような使い方ができる。
- Daily Logに作業ログを残す
- Weekly Reviewで作業を振り返る
- Skill Candidateとして再利用ルールを貯める
- Context PackとしてAIに渡す要約を作る
自分のノート環境にAI作業の履歴を混ぜられるのが強い。
設計方針
今回の設計で一番大事だったのは、保存場所を分けることだった。
Codexスキル本体: <CODEX_HOME>/skills/obsidian-ai-memory Obsidian側の記録: <VAULT_PATH>/02_Logs/Daily/ <VAULT_PATH>/02_Logs/Weekly/ <VAULT_PATH>/03_Review/Skill_Candidates/ <VAULT_PATH>/90_System/output/
最初は「Obsidianフォルダ自体をスキル保存場所にできるか」と考えた。
しかし、Codexがスキルとして認識する場所と、Obsidianでノートを管理する場所は役割が違う。
なので、最終的にはこう分けた。
- Codexスキル: 実行ルール、発動条件、スクリプトを置く
- Obsidian Vault: 日報、週報、スキル候補、Context Packを置く
これで、Codex側のスキル管理とObsidian側のノート管理が混ざらなくなる。
作ったファイル
Codexスキル側には、次のファイルを作った。
obsidian-ai-memory/ ├─ SKILL.md ├─ agents/ │ └─ openai.yaml ├─ references/ │ └─ vault_paths.md └─ scripts/ └─ write_daily_log.py
SKILL.md には、どんな依頼でこのスキルを使うか、どのファイルを読むか、どう日報へ追記するかを書いた。
references/vault_paths.md には、Obsidian Vault内の保存先をまとめた。
write_daily_log.py は、完成済みのMarkdown要約をDaily Logへ追記するためのスクリプトである。
Obsidian側には、次のドキュメントを作った。
90_System/ ├─ Obsidian_AI_Memory_作業手順書.md ├─ Obsidian_AI_Memory_報告レポート.md └─ Obsidian_AI_Memory_使い方.md
作って終わりではなく、あとから自分が読める手順書として残した。
日報化の流れ
日報化するときの流れはこうである。
$obsidian-ai-memory を使って、今回のやり取りを今日の日報にして
このように明示的に呼び出す。
完全自動で全部の会話を保存する案もあるが、最初はやめた。理由は、保存しなくていい会話まで残るとノイズが増えるからである。
今は明示トリガー式にした。
必要なときだけ保存する 既存の日報は上書きしない Codex Session ブロックとして追記する 重複しそうなら差分だけ書く
これくらい安全寄りで始めるほうがよい。
Daily Logに残す内容
Daily Logには、単なる雑な要約ではなく、作業の再利用に向いた形で保存する。
例としてはこうである。
## Codex Session - 2026-06-07T01:17:03 ### obsidian-ai-memory daily logging run ## 今日やったこと - obsidian-ai-memoryを呼び出し、今回のやり取りをDaily Logに保存した。 - Vault pathを確認した。 - 既存の日報末尾を確認し、重複を避けて追記した。 ### うまくいったこと - append-onlyで安全に追記できた。 - 実装ログと運用テストログを分けて記録できた。 ### AIに渡す要約 ```text obsidian-ai-memoryを使い、CodexセッションをDaily Logへ追記した。 既存ログとの差分を見て、重複しない形で保存した。 ```
こうしておくと、後日AIに「この前の作業を踏まえて」と言いやすくなる。
技術スタック
今回使ったものは以下。
- Codex
- Codex Skill
- Obsidian
- Markdown
- PowerShell
- Python
- Dataview前提のDaily Log運用
- ローカルスクリプトによるContext Pack生成
AIメモリーと言っても、大げさなデータベースを作ったわけではない。
基本はMarkdown、補助としてPython、運用ルールとしてCodexスキルである。
検証で詰まったこと
スキルの構造チェックでは、一度文字コードで詰まった。
通常のPython実行だと、Windowsの既定文字コードで日本語の SKILL.md を読もうとして、UnicodeDecodeError が出た。
対処として、UTF-8モードで検証した。
py -3 -X utf8 <VALIDATION_SCRIPT> <SKILL_DIR>
日本語でスキルを書く場合、ここは地味に大事である。
Windows環境だと、ファイル自体はUTF-8でも、読み取り側が別の文字コードとして扱うことがある。AIに任せていても、このへんで普通に転ぶ。
Context Packも確認した
日報に保存するだけではなく、既存のAI Memory用スクリプトも呼べるか確認した。
確認したのは context 生成である。
<VAULT_PATH>/90_System/scripts/run_ai_memory.cmd context
実行後、90_System/output/context_pack.md が更新され、ログにも正常終了が残った。
これで、日報として残した作業ログを、将来的にAIへ渡すContext Packへつなげられる。
セキュリティ上の注意
この仕組みはローカルの作業ログを扱うので、公開時には注意が必要である。
特に、次の情報はブログや公開リポジトリに出さない。
- 実ユーザー名を含む絶対パス
- APIキー
- 認証トークン
- 個人のVault全体構成
- 未公開の作業ログ
この記事では、実際のローカルパスは <VAULT_PATH> や <CODEX_HOME> のように置き換えている。
また、Obsidian VaultをそのままZIP化して共有する場合、設定ファイルやプラグインの認証情報が混ざる可能性がある。VaultをAI作業の保存場所にするなら、公開・共有する前に必ず除外確認をしたほうがよい。
Before / After
導入前はこうだった。
Codexで作業する その場では進む でも作業ログがチャットに埋もれる 翌日、何を決めたか探す 再利用できそうな失敗も流れる
導入後はこうなる。
Codexで作業する 必要なタイミングで日報化する ObsidianのDaily Logに残る 週報・月報・Context Packに流せる 再利用できる知見をスキル候補にできる
かなり実務的な改善である。
AIの性能を上げるというより、AIと作業した結果を捨てないための仕組みである。
まとめ
ObsidianをCodexのAI作業メモリーとして使うなら、次の分離がよかった。
スキル本体: Codex側 記録・参照・asset: Obsidian Vault側 保存方式: Daily Logへのappend-only追記 再利用: Weekly Review / Skill Candidate / Context Pack
最初から完全自動保存にするより、明示的に $obsidian-ai-memory を呼び出して日報化する方式のほうが安全である。
今回これを作成した理由はそもそも使用している事=よく使う事であるという認識のもと作成している。そのためそれを行うことをより簡単になおかつ抽出できないかという面から作成している。積み上げたモノを元に作成できるのではないかという考えなので、一定の作成範囲が決まっていないと逆にただデータを積み上げる形になる可能性もある。
また別の思惑としてメモリー機能を使用しても良かったが、これも善し悪しで、関係ない事を出すことも多々あるのでこれもどっかでクリアしないといけないのを考えると、やはりやって来たこと自体を抽象化とスキルにした方がいいという考えもあった。 長期運用を前提とした組み上げなので、しない人間にはあまり意味がないのかもしれない。そもそもこれが途中で陳腐化して意味がなくなるは普通にあり得ると思う。