xray -- Codified Context: Infrastructure for AI Agents in a Complex Codebase
挠痒
AI agents 在复杂代码库中缺少结构化的上下文基础设施——没有持久化的项目规约、领域知识和架构约束,agent 每次会话都是白纸状态,导致幻觉、违反项目惯例、重复犯错。论文在一个 108K 行 C# 分布式实时多人模拟项目上,用 283 sessions / 70 天的实践数据验证了三层上下文体系。
翻译
一句话
Before: agent 每次会话靠提问或猜测项目惯例。After: 三层上下文体系(T1 宪法级 / T2 专家级 / T3 冷知识库)让 agent 行为一致,且 prompt 开销仅 4.3%。
核心机制
Human Prompt
|
v
+-------------+
| SESSION |
| |
| T1 Constit. <== ALWAYS (660 ln, rules+triggers)
| | |
| trigger |
| | |
| T2 Agents <== PER-TASK (19 specialists, 65% domain knowledge)
| | |
| MCP query |
| | |
| T3 Cold KB <== ON-DEMAND (34 specs, 1478 calls/218 sessions)
| |
+------+-------+
|
v
Result
核喻:公司新员工入职。 T1 是员工手册——所有人必读的公司宪法(代码规范、安全红线、触发词),660 行,每次会话自动加载,O(1)。T2 是老师傅带教——19 个专家 agent,按任务类型触发,承载 65% 的领域知识("这个模块的数据流怎么走""网络同步用什么模式")。T3 是资料室——34 份技术文档,通过 MCP 按需检索,70 天里被调用 1478 次。新人(agent)不用每次从零摸索,公司知识已经铺好了路。
关键概念
上下文工程 vs 提示工程: 提示工程关注单次对话怎么措辞。上下文工程关注跨会话的知识基础设施——哪些知识永远在场(T1),哪些按需加载(T2/T3),怎么组织让 agent 行为稳定。类比:提示工程是写好一封邮件,上下文工程是建好整个邮件系统。
Napkin Sketch
Agent_Consistency = f(T1_hot, T2_specialist, T3_cold)
T1: ~660 lines, always-on → O(1) 加载
T2: 19 agents, per-task → O(trigger_match)
T3: 34 docs, on-demand → O(MCP_retrieval)
Knowledge : Code = 26K : 108K = 24.2%
Meta overhead = 4.3% of prompts
一句话核心位移:从"agent 靠猜"到"agent 有基础设施",知识代码比 24.2% 是这个位移的量化锚点。
洞见
哦,原来……上下文不是 prompt 的附属品,而是跟代码同等地位的基础设施——"知识代码比 24.2%"说明你的 AI 系统有四分之一是用来让 agent 理解系统的。
提示工程的主流思路是"怎么写好这次 prompt",隐含假设是知识存在 LLM 权重里,prompt 只是激活它。这篇论文颠覆了这个假设:复杂领域知识(架构约束、项目惯例、领域术语)根本没在 LLM 权重里,必须显式编码成持久化基础设施。之所以没人把它当"基础设施"对待,是因为传统软件工程里没有这个概念——代码是代码,文档是文档,没有"让机器理解代码库的专用知识层"这种东西。
这个洞见的实际意义是:上下文工程是软件工程的新子领域,跟数据库设计、API 设计一样需要专业投入。知识代码比 24.2% 是行业首个量化基准,说明这不是可选项而是必要投资——省掉它,agent 的行为就是随机的。
博导审稿
有意思的实践报告——单项目 N=1,但 283 sessions、70 天的纵深数据让它不是玩具。知识代码比 24.2% 和 prompt 开销 4.3% 是有用的工程基准,给后来者一个参照系。不过缺泛化验证:一个 C# 游戏项目的数字能不能迁移到 Python 微服务或 Rust 编译器?三层划分的边界(什么该 T1 什么该 T2)也缺原则性指导。判决:weak accept——有趣的实践报告,不是研究贡献,但数据扎实、框架清晰。
接线
迁移:论文的三层触发机制(T1 always-on → T2 per-task trigger → T3 on-demand MCP)可以作为 PAI skill 体系的优化蓝图——当前 CLAUDE.md 承担了太多 T2 级别的内容,可以按照"触发频率 × 领域专精度"矩阵,把高频通用知识留 T1,把领域专精知识迁移到 T2 specialist agents,把低频冷知识推到 OpenViking T3。论文给出了 4.3% prompt 开销这个目标基准。
反转:我一直认为 PAI 的 CLAUDE.md 越全越好——越多背景 agent 越懂我。这篇论文揭示了这个直觉的代价:always-on 的 T1 内容每次都消耗 token,把不该在 T1 的内容塞进去是在为所有会话持续付出不必要的成本。"宪法应该精简"不是哲学立场,是工程效率问题——660 行的 T1 比 2000 行的 T1 更好,因为剩下的内容在 T2/T3 按需触发时才花钱。