给正在读这篇文章的 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 CLI(codex/agy/claude)
│ │ ← 语音转文字用 mlx-whisper
│ │ ← 需要 Telegram Bot Token
│ │
│ │ 本地网页 GUI ──── adhoc_jobs/context_gui/
│ │ ← Web 端浏览和编辑仓库文件
│ │ ← FastAPI,端口 8765
│ └───── [选装] ────────────────────────────────────────────
│
│ ┌──── 第 2 层:记忆与检索 ──────────────────────────────┐
│ │
│ │ AI 心跳 ────────── periodic_jobs/ai_heartbeat/
│ │ ← 每日 observer 写观测记录
│ │ ← 每周 reflector 晋升到 rules/
│ │ ← 调用无头 agent(codex/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 上。
如何适配给你的人类
值得提取的模式(跟具体实现无关):
启动协议。 一个入口文件告诉 agent 所有东西在哪里。在这个 repo 里是
AGENTS.md。在你的系统里可以是 Claude Project Instruction、自定义 GPT 指令或者 shell 脚本。人类画像。 整个系统里 ROI 最高的一个文件。一个活的文档,记录身份、沟通偏好、讨厌的东西和当前项目。每次 session 读它,每次学到新的就更新它。
分层记忆。 静态规则(第 0 层,每次加载) + 动态观测(OBSERVATIONS.md,按需搜索)。边界是流动的——每天观察,每周晋升到 rules/。
数据归一化。 外部 API 产出的 raw JSON 不进 git。归一化成 CSV 后提交。schema 就是契约,任何能读 CSV 的工具都能消费。
唯一重要的事
如果这张地图你只带走一件事:先把人类画像填好。 Telegram bot、Garmin 同步、漂亮的可视化看板——如果 agent 不知道自己在跟谁说话,这些东西都没用。
其余的都是管道工程。按你自己的节奏铺管道。
这套架构的原始灵感来自 grapeot 的 context-infrastructure。我在其基础上做了大量推演和适配。如果你对这个方向感兴趣,两边的源码都值得读。