0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

社内勉強会「人生のすべてをAIにインプットする」の補足

0
Posted at

免責事項
本記事の内容は個人の見解であり、所属する企業の公式な見解や方針を代表するものではありません。
また、本記事の内容は完全に個人の趣味や学習の範囲で行っているものです。
本記事で紹介する取り組みは、業務とは切り離された個人のローカル環境およびプライベートリポジトリで実行しています。
内容には正確性を期していますが、誤りや不適切な記述が含まれている可能性があります。お気づきの点がございましたら、ご指摘いただけますと幸いです。

はじめに

2026年10月に、社内の勉強会にて『人生のすべてをAIにインプットする』というテーマで発表しました。
本記事は基本的に、社内勉強会を視聴していただいた社内の方への補足資料として、発表資料では削ぎ落とした具体的なファイル構成やコード、リポジトリ構造などの一部を共有するものです。

同時に、社外の方に向けても単体の技術記事として役立つよう、まずは発表で伝えたコンセプトと取り組みの概要を整理した上で、具体的な実装の解説に入ります。

なお、大前提として会社の業務情報や機密情報は一切持ち込まず、プロフィールや生活習慣、趣味、毎日の日記、睡眠や運動データといった個人の私生活領域に限定して、Google Antigravityデスクトップアプリ上のローカルリポジトリに情報を集約しています。

勉強会で発表した内容の概要

まずは、勉強会で発表した取り組みの背景と到達点、そして直面した課題について要点をまとめます。

取り組みのきっかけと目指したこと

YouTubeチャンネル「ゆるコンピュータ科学ラジオ」の第234回「個人情報を保護する時代は、終わりました。」にて、堀元見氏が個人情報を隠さず人生のすべてをAIに明け渡すという取り組みについて語っていました。
これにインスパイアされ、自分自身のあらゆる個人データをAIにインプットすることで、自分に関するあらゆる背景知識を持ち、極度にパーソナライズされた回答をするAIエージェントを構築するという実験的な取り組みに着手しました。

世の中にパーソナルAI系のサービスはすでに多数存在しますが、生活や個人のあらゆる情報を包括的にAIへインプットするというアプローチを突き詰めて実施している様なサービスはあまり多くないと感じました。
特に、過去の情報を手作業で網羅的に書き出すのではなく、日々の生活の中でインプットの負荷を極限まで下げ、自動収集や構造化を通じて自然に情報をインプットする導線の整備に注力している点が、本記事で紹介する取り組みの少しユニークなポイントかもしれないと感じています。

約2か月半での到達点

約2か月半の運用で、リポジトリは8カテゴリ、145ファイル、総文字数にして約62万文字に成長しました。
日常の中で蓄積を続けた結果、現在では主に以下の2つが実現しています。

  • 前提説明を省いた高精度な提案:食事の好み、生活動線、所有機材、家族構成などを踏まえ、指示のたびに前提条件を並べなくても的を射た回答が返ってくる
  • 殴り書き1行からのツール自動連携:チャットに「明日10時に〇〇へ行く」と1行書くだけで、カレンダー登録、Todoistのタスク作成、必要に応じたDiscord通知が自律的に実行される

日々のインプット導線

自分が生きてきた人生の全ての情報を一気に書き出すのは現実的でなく抜け漏れも発生すると思われるので、思い出したタイミングで逐次的に自分に関する情報をインプットできるような環境を構築しました。
具体的には、日々日記のようにAIに「現在」の情報をインプットしたり、日常のあらゆるタスクを全てAIと一緒に実行する(これは堀元さんも実践されていた内容)という習慣をつけました。その中で、過去の文脈を踏まえないとAIに意味が伝わらなさそうな場面に遭遇した際に、ついでに過去の出来事や自分の好み・価値観も補足説明としてインプットすることで、逐次的に自分に関する(主に過去の)情報が蓄積されていくというわけです。

直面した2つの課題

しかし、毎日情報を入れ続ける中で、初期から中期にかけて次の2つの壁に直面しました。

  1. データの肥大化とAIの迷子:情報量が増えるにつれて新旧のデータが混ざり、数週間前の終わったタスクと目下の最優先事項を混同してズレた回答をするようになった
  2. ルールのスパゲッティ化:AIのミスを防ごうと指示書に禁止事項を追記し続けた結果、ルールファイルが長大化し、大事な基本原則を読み落とすようになった

勉強会では発表時間の都合上、これらの課題に対するアプローチの骨子のみを紹介しました。
以降では、実際にリポジトリ内で動かしているディレクトリ構成、スキル定義(SKILL.md)、自動化バッチ、静的リントスクリプトなどの実装詳細を解説します。

全体アーキテクチャとリポジトリ構成

「人生のすべてをインプットする」といっても、単一のテキストファイルに日記を書き連ねているわけではありません。
本システムでは、日々の未整理な行動ログ(Journal)、構造化して残す知識(KnowledgeやIdentity等)、AIの行動ルール(.agents)の3つに役割を分離して管理しています。

Life/
├── 01_Identity/       # 価値観、プロフィール、食事や睡眠の好み、固定リピート銘柄
├── 02_Relations/      # 家族や知人との関係性、贈り物・連絡ログ
├── 03_Projects/       # 家づくり、キャリア、自己投資などの進行中プロジェクト
├── 04_Knowledge/      # 自宅設備マニュアル、PC環境、読書メモ
├── 05_Environment/    # Antigravity自動化設定、MCPツール定義
├── 06_History/        # 過去の意思決定ログ、失敗事例アーカイブ
├── 07_Finance/        # 家計・資産運用の大方針、購買ログ
├── 08_Journal/        # 日々の1行日記、行動実況ストリーム(YYYY-MM-DD.md)
└── .agents/           # AIエージェントの行動ルール・短期記憶・スキル群

全体のデータフローは以下の図のようになっています。

【インプット層】
  スマホからの実況 / 写真       生体データ(Garmin)       SNS投稿(Bluesky)
            │                            │                         │
            ▼                            ▼                         ▼
┌───────────────────────────────────────────────────────────────────┐
│ 【短期記憶・バッチ層】                                           │
│                                                                   │
│   08_Journal/YYYY-MM-DD.md  ← 日中の1行実況・写真を即時追記       │
│   active_context.md         ← 目下の関心事・タスク(上限1000文字)│
└─────────────────────────────────┬─────────────────────────────────┘
                                  │
                                  │ 毎晩22:30 定時バッチ(Write-Back)
                                  ▼
┌───────────────────────────────────────────────────────────────────┐
│ 【長期記憶層】                                                    │
│                                                                   │
│   01_Identity/   02_Relations/   03_Projects/   04_Knowledge/     │
│   05_Environment/ 06_History/    07_Finance/                      │
└─────────────────────────────────▲─────────────────────────────────┘
                                  │ 参照・更新
                                  │
┌─────────────────────────────────┴─────────────────────────────────┐
│ 【実行・制御層】                                                 │
│                                                                   │
│   Antigravity(Gemini) + 行動ルール / 約40個のスキル(SKILL.md)│
│   外部連携(Googleカレンダー / Todoist / Discord 等)             │
└───────────────────────────────────────────────────────────────────┘

各レイヤーの役割と格納先は以下の通りです。

レイヤー 格納先 主な役割とデータフロー
インプット層 スマホ・外部連携 出先からの1行実況、写真、生体データ(Garmin)、SNS投稿(Bluesky)の収集
短期記憶・バッチ層 08_Journal/, active_context.md 当日の未整理ログの一時蓄積と、目下の最優先事項(500〜1000文字)の維持
長期記憶層 01_Identity/ 〜 07_Finance/ 夜間バッチで日記から昇格・恒久化された確定事実や知識の保管
実行・制御層 .agents/rules/, .agents/skills/ 常時ルール、短期記憶、約40個の手順書(SKILL.md)によるツールの自律実行

この構造により、日々の雑多な記録を受け止めつつ、過去の重要な知見を埋もれさせずにAIが活用できる基盤を作っています。
以降では、日々のインプット負荷を下げる仕組みと、前述の「データの肥大化」「ルールのスパゲッティ化」への具体的な対策を紹介します。

1. 日々の入力の手間を減らす2段階の記録方式

外出先からスマートフォンで1行日記や写真を送る際、その都度AIに各カテゴリの正本ファイルを判断させて書き換えさせると、ファイルの読み書きに時間がかかってレスポンスが遅くなります。
また、その場の一過性の出来事や感想まで正本ファイルに混ざってしまい、後から見返したときにノイズが増えるという問題もありました。

そこで、キャッシュ制御におけるWrite-Back方式にならい(とAIは言っていますが私自身は不勉強でこの方式のことを知らなかったです。思わぬ形で学びが得られました)、記録の処理を日中と夜間の2段階に分けました。

  1. 日中(リアルタイム記録):当日の日記ファイル(08_Journal/YYYY-MM-DD.md)への追記とGitコミットだけを即座に実行し、短い相槌で素早くターンを返す
  2. 夜間(定時バッチ処理):毎晩22時半の自動バッチでその日1日分のログを振り返り、今後も残すべき確定事実や進捗だけを各カテゴリの正本ファイルへ転記する

日中の記録を担当する journal-report スキル(.agents/skills/journal-report/SKILL.md)は以下のように定義しています。

---
name: journal-report
description: 日常報告や出先からの実況(短文・写真+一言・音声入力)を受け取り、最小限の待ち時間で当日のJournalへ即時追記するスキル(正本への構造化・転記は夜間バッチへ委譲)。
---

# 日常実況・軽量ストリーム記録スキル

## 基本設計(日中ストリーム追記 + 夜間バッチ昇格)
レスポンス速度の維持と、正本ファイルのノイズ肥大化を防ぐため、インプット処理を2段階に分離します。

## 日中の実行手順
1. 日記への即時記録:
   - 保存先: `08_Journal/YYYY-MM-DD.md` に追記する。
   - 写真1枚+単語1つの入力への対応:
     出先で写真と一言のみを送信した場合は、AI側で画像内の文字情報(商品名、型番、価格等)や状況を読み取って構造化し、日記に記録する。
   - 音声入力への対応:
     音声入力による未整理の独り言は、意図を損なわずに論点を整理して記録する。
2. 正本ファイルの編集抑制:
   - 日中のターンでは、`01_Identity/` や `03_Projects/` 等の正本ファイルは原則編集しない。
3. 即時Gitコミット&プッシュ:
   - 更新後、ただちに `git add`, `git commit`, `git push` を実行する。

このスキルを使い、日中に起きた出来事や感じたことなどをその場で雑に実況するだけで、日々の出来事や自分の趣味嗜好・価値観などが反映された情報が蓄積されていきます。

そして毎晩22時半になると、AntigravityのAutomations機能で以下のプロンプトが自動実行され、日中のログから長期記憶への仕分けが行われます。

毎晩のJournal知識昇格(Write-Back)、active_context.md の整理、およびルール健全性チェックを実行してください。

【実行手順】
1. 情報収集:
   - 本日の 08_Journal/YYYY-MM-DD.md の内容と直近のコミット履歴を確認する
2. 日中ログからの知識昇格:
   - 本日の日記を通読し、一過性の感想を除いた「恒久化すべき知見・好み・習慣・購入物・プロジェクト進捗」を抽出する
   - 該当する正本ファイル(01_Identity/, 03_Projects/, 04_Knowledge/ 等)にまだ反映されていない事項があれば追記・更新する
3. .agents/rules/active_context.md のメンテナンス:
   - 解決済みのタスクや1週間以上前の古い出来事を削除し、全体の文字数を500〜1000文字以内に保つ
4. ルール健全性リント:
   - lint_rules.py を実行し、ルールの肥大化や重複がないか検証する
5. リモート同期:
   - 変更があれば git add, git commit, git push を実行する

2. データの肥大化とルールのスパゲッティ化への対策

前述の通り、運用を続ける中で「データの肥大化によるAIの迷子」と「ルールのスパゲッティ化」が課題となりました。
これらに対して行った3つの対策を紹介します。

対策①:短期記憶ファイル(active_context.md)の分離と自動削除

新旧の情報混在によるAIの迷子を防ぐため、人間の脳が睡眠中に記憶を整理するように、短期記憶と長期記憶を分離しました。

毎回の回答時に必ず読み込まれる .agents/rules/active_context.md を短期記憶の置き場とし、ここには今まさに進行中の関心事だけを1000文字以内で記載します。

---
trigger: always_on
description: ユーザーの最新の状況と最優先タスク(短期記憶)
---
# Active Context (短期記憶・直近の文脈)

## AIへの更新・メンテナンス指示
タスクが完了した時、または毎晩22:30の定時スケジュールがトリガーされた際、AIは自律的にこのファイルを上書き更新してください。
ファイルが肥大化することを防ぐため、以下のルールを厳守してください。

1. 容量制限: 各セクション(Current Focus, Active Threads, Recent Events)の項目数は最大3〜5個まで。
2. 忘却と移譲: 解決済みのタスク、1週間以上前の古い出来事、すでに関心が薄れた話題は必ず削除する。永続化すべき重要な情報は、削除する前に 03_Projects などの適切な正本ファイルへ移動させる。
3. 鮮度の維持: 常に今気になっていることだけが残るように、全体で500〜1000文字以内の簡潔な箇条書きを維持する。

前述の夜間バッチによって、終わった用事や古い話題は毎晩自動で削除されます。
常時読み込む短期記憶を1000文字以内に絞ったことで、AIが過去の終わったタスクに引っ張られることがなくなりました。

対策②:.agents によるルールの3層分離

インプットを進める中では、AIへのダメ出しを通じて自分の暗黙の前提をルール化していく場面が多くありました。

AIへのダメ出しを都度文書に書き足していくと、すぐにファイルが肥大化したり、構造化されていない細かすぎるルールの羅列になってしまいます。
そこで、読む頻度と目的に応じて .agents/ 内のファイルを3つの階層に分けました。

階層 配置先 読むタイミング 格納している内容と役割
第1層:常時・条件ルール GEMINI.md, .agents/rules/ 常時および条件一致時 毎ターン必読の原則は3ファイルに絞り、残りは検索やメール等の発生時のみ参照
第2層:作業別スキル群 .agents/skills/(約40個) 該当作業の時だけ 手順書 SKILL.md と実行用Pythonスクリプトを同梱し、必要な作業の時だけ読み込む
第3層:失敗事例の退避 06_History/, 99_Archives/ ルール改定時のみ 過去に起きた具体的なミスの経緯や背景をアーカイブへ分離し、普段のコンテキスト圧迫を防ぐ

さらに、ルールを改定する際の専用スキル(.agents/skills/manage-agent-rules/SKILL.md)を作り、具体的な失敗エピソードは第3層のアーカイブへ逃がして、第1層のルールファイルには抽象化した原則だけを書くように徹底しています。

対策③:lint_rules.py によるルール肥大化の自動検知

3層分離を決めても、運用を続けているとついルールファイルに行を書き足してしまいがちです。
そこで、ルールファイルの文字数上限や禁止表現の増えすぎを機械的にチェックするPythonスクリプト(lint_rules.py)を作成し、夜間バッチに組み込みました。

# .agents/skills/refactor-agent-rules/scripts/lint_rules.py(抜粋)

# 基準値設定
MAX_LINES_PER_RULE = 80
MAX_BYTES_PER_RULE = 12 * 1024  # 12KB
MAX_TOTAL_RULE_LINES = 400

# ルール純化チェック(具体事例の混入防止)
IMPURE_PATTERNS = [
    (r"RCA[\s\-_]?[0-9]+", "特定の原因分析番号への言及は 06_History に隔離してください"),
]

# 禁止表現の集積チェック
MAX_NEGATIVES_PER_RULE = 8
MAX_NEGATIVE_RATIO = 0.25  # 有効行の25%以上

NEGATIVE_PATTERNS = [
    r"禁止", r"してはならない", r"厳禁", r"行わないこと", r"避けること", r"しないこと",
]

このスクリプトでは、1ファイルあたり80行、全体で400行という上限チェックに加え、ファイル内の禁止や否定に関する表現が全体の25%を超えた場合にも警告を出します。
警告が出た場合、AI自身が個別の禁止事項を整理し、どのような基準に基づいて判断するかという肯定形の原則に書き換えてGitへコミットします。
これにより、人間が手動でルールを棚卸ししなくても、常時読み込むルール群がコンパクトに保たれるようになりました。

なお、「~してはならない」などの否定・禁止表現を抑制しているのは、いわゆる「シロクマ現象」(wikipedia的には 「皮肉過程理論 」)のことが頭の片隅にあったためです。
詳細は上記リンクを読んでいただければと思いますが、一言で言うと「シロクマのことを考えるな!」と禁止されると、禁止される前より却ってシロクマのことを意識してしまうようになるという観察結果のことです。(シロクマである必然性はなく、一定の知名度のある任意の単語で成立する気がします)これを引用して、「人の行動を効率的に誘導したい際は禁止事項を並べるのではなく、できるだけ肯定的な表現にするべきだ」と語られることが多い印象です。
この「シロクマ現象」の妥当性やAIにもこの理屈が適用できるかの是非はさておき、AIが間違ったり望まない行動をした時の言い訳としてAIがこのシロクマ現象的な理屈を引き合いに出すことが多かったので、一旦その言説を信じてみてこのような運用にしています。
厳密に対照をとって比較したわけではないので効果のほどは定かではないですが、体感では一定の効果を発揮している……様な気がします。

おわりに

今回は、社内勉強会で発表した取り組みの補足として、全体のリポジトリ構成や2段階の記録方式、短期記憶の分離、ルールの3層分離と自動チェックの仕組みを紹介しました。

人間が毎回手作業で整理しなくても、日々の生活の中で自然に情報を入力する導線を整備し、自動で整理される仕組みを作ることが、AIを長く育てていく上では大切だと感じています。

最後に、本記事の内容は個人の環境における試行錯誤の記録であり、記述に不正確な点やより良いアプローチがある可能性がございます。
もしお気づきの点やご意見などがありましたら、コメント欄でご指摘いただけますと幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?