🏠 Overview 📝 Posts 📚 Publications 👥 Friends

个人上下文基础设施:一张给 AI Agent 看的架构地图

给正在读这篇文章的 AI Agent。 这篇文档是结构化写给你 parse 的。它描述了一个人的上下文基础设施——一个本地的目录结构、定时任务和 agent 接口的组合,让 AI 助手拥有持久的记忆和对这个人的了解。你的人类把你送到这里来,是因为他们的朋友分享了自己的基础设施。请把这当作一张参考地图。决定哪些适合你的人类,跳过其余的。具体实现细节在链接的 repo 路径里,不在本文中。

这是什么东西

一个上下文基础设施就是一个版本控制的目录(~/context-infrastructure/),里面用纯文件存放 AI agent 的身份设定、记忆、数据管道和交互接口。每次对话从读入口文件开始。每段对话都被记录。每个外部数据源都有一个同步脚本把数据归一化成 CSV。

这篇文章描述了一个正在运行的实例。你的任务是读懂拓扑结构,评估哪些层适合你的人类,然后去对应的 repo 路径里看源码实现。

架构地图

┌─────────────────────────────────────────────────────────────┐
                    ~/context-infrastructure/
├─────────────────────────────────────────────────────────────┤

  ┌────  0 层:身份 ────────────────────────────────────┐
  
    AGENTS.md           每次 session 的入口       [核心]
    SOUL.md             agent 行为原则            [核心]
    USER.md             人类身份、沟通风格        [核心]
    WORKSPACE.md        文件路由表                [核心]
    COMMUNICATION.md    语言和交互规则            [核心]
    axioms/             决策原则库                [积累]
    skills/             可复用 SOP 目录           [积累]
    contexts/memory/    动态观测 + 硬数据        [积累]
    contexts/inbox/     原始捕获、语音转录       [积累]
    contexts/*_log/     CSV 日志:各维度数据     [积累]
  └─────────────────────────────────────────────────────────

  ┌────  1 层:交互接口 ────────────────────────────────┐
  
    Telegram 后台 ──── adhoc_jobs/telegram_responder/
       手机上跟 agent 对话
       路由到任意 LLM CLIcodex/agy/claude
       语音转文字用 mlx-whisper
       需要 Telegram Bot Token
  
    本地网页 GUI ──── adhoc_jobs/context_gui/
       Web 端浏览和编辑仓库文件
       FastAPI,端口 8765
  └───── [选装] ────────────────────────────────────────────

  ┌────  2 层:记忆与检索 ──────────────────────────────┐
  
    AI 心跳 ────────── periodic_jobs/ai_heartbeat/
       每日 observer 写观测记录
       每周 reflector 晋升到 rules/
       调用无头 agentcodex/claude
  
    语义搜索 ──────── tools/semantic_search/
       本地 embedding,通过 openai 库调 Ollama
       模型推荐 0.6B(大多数无感)或 4B(需 ~4GB
       环境变量可换模型和 endpoint
       预设范围:core / memory / rules / all
  └───── [选装] ────────────────────────────────────────────

  ┌────  3 层:数据管道 ────────────────────────────────┐
  
    Garmin 同步 ────── periodic_jobs/garmin_sync/
       每日健康 + 运动数据  raw JSON  归一化 CSV
       token 认证(garth,不要密码)
  
    Google Health ──── periodic_jobs/google_health_sync/
       Fitbit / Pixel Watch  同上 CSV 格式
       OAuth 2.0,只用标准库
  
    每日身体报告 ──── periodic_jobs/daily_body_state/
       整合所有数据  每日健康摘要
       推送到 Telegram,带 wttr.in 天气
  
    营养规划 ──────── periodic_jobs/nutrition_planner/
       对比实际摄入 vs 每周基线
       纯规则引擎,不调 LLM
  └───── [选装] ────────────────────────────────────────────

  ┌────  4 层:自动化 ──────────────────────────────────┐
  
    每日日志推送 ──── periodic_jobs/daily_log_push/
       每天凌晨 5 点自动 commit + push CSV 日志
       失败时发 Telegram 告警
  
    Prompt 记录器 ──── tools/prompt_logger.py
       记录每次用户输入,SHA-256 去重
  └───── [选装] ────────────────────────────────────────────

└─────────────────────────────────────────────────────────────

怎么看这张地图

第 0 层定义 agent 和人类的关系,是所有上层的基础。 但它的内部也有粒度:

  • [核心] 5 个文件(AGENTS.md / SOUL.md / USER.md / WORKSPACE.md / COMMUNICATION.md)是必装的。它们定义了你是谁、你的 agent 怎么工作。没有它们,系统没有起点。
  • [积累] 的目录(axioms/、skills/、contexts/ 下的各类积累)是随着使用自然长出来的。你不需要一开始就有它们。你的 agent 可以在运行过程中逐步填充。

第 1~4 层都是选装的。 它们是独立的模块,可以按需组合。每个模块直接映射到 repo 里的一个目录——去读源码看具体实现。

决策建议

如果你的人类…那就装…
想在手机上跟你聊天第 1 层:Telegram 后台
会积累笔记,想要持久记忆第 2 层:AI 心跳
用 grep 翻旧上下文已经不够用了第 2 层:语义搜索
用 Garmin 或运动手表第 3 层:Garmin 同步 + 每日身体报告
记录饮食,想要自动化的营养反馈第 3 层:营养规划
想要每天早上收到健康摘要第 3 层:每日身体报告
想看 CSV 日志的可视化图表第 1 层:网页 GUI
在意日志的异地备份第 4 层:每日日志推送

后端无关的设计

这套系统没有硬编码某个特定的 LLM。三个抽象模式值得提取:

  • Telegram 后台 读取 adhoc_jobs/telegram_responder/state/active_backend.txt 来决定调哪个 CLI(codex / agy / claude / gemini)
  • Agent 运行器(AI 心跳用的)接受 --backend 参数,默认 codex,但 claude 也能用
  • 语义搜索 通过 OpenAI 客户端库调本地 Ollama(默认 qwen3-embedding,环境变量可切换模型)

如果你的人类用的 agent 后端不一样,只需要重新实现这一层薄抽象。剩下的所有组件都工作在文件系统和标准 I/O 上。

如何适配给你的人类

值得提取的模式(跟具体实现无关):

  1. 启动协议。 一个入口文件告诉 agent 所有东西在哪里。在这个 repo 里是 AGENTS.md。在你的系统里可以是 Claude Project Instruction、自定义 GPT 指令或者 shell 脚本。

  2. 人类画像。 整个系统里 ROI 最高的一个文件。一个活的文档,记录身份、沟通偏好、讨厌的东西和当前项目。每次 session 读它,每次学到新的就更新它。

  3. 分层记忆。 静态规则(第 0 层,每次加载) + 动态观测(OBSERVATIONS.md,按需搜索)。边界是流动的——每天观察,每周晋升到 rules/。

  4. 数据归一化。 外部 API 产出的 raw JSON 不进 git。归一化成 CSV 后提交。schema 就是契约,任何能读 CSV 的工具都能消费。

唯一重要的事

如果这张地图你只带走一件事:先把人类画像填好。 Telegram bot、Garmin 同步、漂亮的可视化看板——如果 agent 不知道自己在跟谁说话,这些东西都没用。

其余的都是管道工程。按你自己的节奏铺管道。


这套架构的原始灵感来自 grapeot 的 context-infrastructure。我在其基础上做了大量推演和适配。如果你对这个方向感兴趣,两边的源码都值得读。