跟 AI 讨论出来的东西会蒸发,所以他把每一次判断都写进了 git
ADRs4AI 把「为什么这么定」当成一等产物:原始想法存成 seed,讨论拆成 ADR,每个悬而未决的问题都要带选项、建议、理由、置信度和一条否证条件,人只需要回一句接受或推翻。会话结束、模型下线之后,推理过程还能被下一个读者和下一个 agent 接着用。
中文
复制

创刊文章,规范文本;作者信息与完整审阅历史保留在文末。
问题所在:思考会蒸发

人与 AI 之间发生的最有价值的事,不是代码,不是草稿,也不是答案,而是思考——是让人选了这套设计而非那套的推理,是事后证明承重的那份疑虑,是重新定义了整个问题的那句提问。而在日常实践中,这一切都会蒸发:上下文窗口填满后被压缩,会话结束,模型在项目进行到一半时被弃用(本项目自己的协调者就曾遭遇此事——被某国政府停用三周),而人类的记忆——无论多么出色、多么忙碌,或组织方式多么不同——都不能被假定会保留每一个承重细节。ADRs4AI 是一套认知连续性协议(epistemic:与知识有关):一种 git 原生、不绑定模型的方法论、工具集与文化,目的是让这些思考持久、可寻、可解析——对将来的人、将来的 AI 实例,以及它们之间的工具而言。它不会让 AI 变得持久,也不会让任何人记住什么。它让工作可以续接,让思考得以累积。
关于术语的一点说明:认知连续性(epistemic continuity)一词 在此是有意新造的。该说法此前零散出现过(哲学、 数字人文);但从未有人将其确立为一门学科。我们正在 把它建立为一门学科——研究并实践如何让有依据的 决策在系统、会话、心智与时间之间保持可读。人机 协作是它的第一个领域,而非它的全部范围。它不同于 认知编程(epistemic programming):后者是 Jingde Cheng 的研究纲领(1996 年 提出),研究如何为科学发现编程认知过程;也不同于 较新的计算教育社群——ITiCSE 2026 工作组 所代表的那个方向。
命令式编程告诉机器怎么做;声明式编程告诉机器做什么。审议式编程(deliberative programming)则保留为什么——ADRs4AI 是它的第一套完整工具集。审议式编程是这样一种构建方式:审议本身——问题、备选方案、理由,以及修订的条件——是一等公民、受版本管理的输入,产物由它生成,也由它修订。
它是用诚实的方式构建的:一位患有严重自传体记忆缺陷的教授——这不是记忆的缺失,而是一种不同的记忆:语义的、刻意的、由显著性驱动的;他不会经历一个时刻然后再记住它,而是在当下就决定什么值得编码,把其余的一切折叠成他可以信赖的不变量——同时每天与在会话之间不保留任何内容的 AI 模型协作。工作流的两端都无法依赖情景连续性,因此不允许任何东西依赖它。而一旦记忆不再是隐式的依赖,这种协作对每个人来说都变得更稳健:设计上不依赖记忆。
与 AI 相处的两种方式
这一区分始于语言,并完整地迁移到 AI 上。cybernetic 一词并非来自计算机——它来自 kybernētēs,即希腊语中的舵手,而它承载的问题是:谁握着舵柄?在这里,cybernetic 与 epistemic 指的是对待语言和 AI 的两种立场——而非两个相互竞争的学科。cybernetic 式的语言使用以效果为目标——说任何能让门关上、让听众被拿下的话;cybernetic 式的 AI 使用则是伸手去够它,以产出一份将由他人评估的交付物。epistemic 式的使用——epistēmē,知识——是语言对真理负责,而 AI 被真诚地投入以寻求真理:带上你所知道的,并要求它被直面、被磨砺、被纠正。
在 cybernetic 式的使用中,目标状态在于要产生的效果。在 epistemic 式的使用中,目标状态是得到改进、可修正的理解。当任务是外部指派、外部评判时,cybernetic 循环可能变得尤其去技能化:用户学会去逼近评估者的奖励函数,却没有学会是什么让工作实质上优秀。epistemic 式的使用始于 aporia:一个真正属于你的问题,它激发认知而非指派认知,并且当它得到妥善解决时你会认出来——而每当你拿一份输出与你真正知道的东西相权衡,你的判断力就变得更锐利。
几乎没有哪次真实交互是纯粹的这一种或那一种,这套实践也不要求它如此。回执就是本项目自己的手机应用:创始人离开电脑时,能和自己的模型对话,却无法回答记录里不断堆积的问题——于是他依据完全由自己掌握的认知依据,规定了应用必须让他做什么、为什么;而把 Swift、布局和界面——这些他既无法评估、也无需评估的选择——交给一个招募来的席位。基于认知规格的控制论式委托,不是对这套实践的妥协;它就是这套实践。目标不是永不委托——而是绝不让控制论式委托切断认知回路。推理随工作一起回来。
核心动作:对话变成工件

一切都源自一条纪律——最高指令:立即把讨论固化为工件。
- 种子捕获原始想法:人对着一个带日期的文件口述意识流式的大脑倾泻。不要求结构——先捕获。
- ADR——我们称之为架构审议记录(Architectural Deliberation Record),是对既有架构决策记录实践的扩展——保留常规决策记录通常留在记录之外的东西:起源语境(人的原话,逐字保留)、AI 的显明化——它对自身理解的结构化复述——未解决的问题、完整的选项空间、决策,以及一份只追加的迭代日志,记录理解如何演变。
- 导航码让这一切可被机器检索:
QST:标记一个开放问题,ANS:标记它的答案,NOT:标记一条观察。一次 grep——或者编辑器扩展、MCP 服务器、你口袋里的手机——就能找出一个项目里的所有问题,每个问题下方的状态行说明哪些仍在等待回答。
两项细化承担了大部分分量:
每个问题都附带五个组成部分——选项、建议、理由、置信度、证伪条件(内部简称 ORRCF)。提出问题的 AI 必须铺开选项空间(抵抗锚定的那种多样性),说明它归属的倾向,并给出理由——不是事后补上的辩护,而是建议者在记录中押上的、明确、可审查、可归属的论证。然后是两个收尾:置信度,在末尾连同其理由一起给出,因为没有理由的数字是表演性自信,而表演性自信会腐蚀认知连续性;以及证伪条件——即会导致该建议被修订的证据、观察、失败的预测或变化的约束——让每条建议都携带自身被修订的条件。这就把委托变成了带把手的委托:你交出去的任何一个决定都能收回来,因为推理随它一起回来了。在数月实测实践中,真正的约束从来不是工件产出——而是有限的人类决策注意力,ORRCF 就是保护它的方式:一个提得好的问题,能优雅地退化为接受或推翻。
问题要有代号。 ### QST-SCOPE: …——简短、能念出口的标识符,因为团队会在不同文档和口述里引用问题(“QST-B 已回答”),而一套无法被引用的语法,恰恰会被用得最狠的人 fork 掉。(这是我们从实践中得出的:模型先自己发明了这套语法,我们才把它扶正。方法论在这里遵循的是 Postel 定律,只是用在文化层面——模型实际走到哪里,就跟到哪里,然后把它定为规范。)
没人规划过的升级:Crews

这套方法论原本是为一个人加一个 AI 设计的,这个基础本身已经够用:只采用其中的产物,别的什么都不做,它就能运转。但在真实工作负载下,它自己长出了规模——变成一种更奇怪也更好的东西:Crews(或称 hives),由具名、常驻的 AI 席位组成,跨仓库协作。Crews 不只是把工作容量乘以几倍;做对了,它们还会让每个决策带来的视角多样性成倍增加。(名字和颜色也不是装饰:在七十多个并发会话里,正是它们让人工切换上下文这件事成为可能。)
- 席位属于模型。 每个 agent 席位都有一个自选的名字、一种颜色、一项使命,以及一条注册表记录——这是模型为自己跨会话、跨压缩的连续性所起的名字。一个席位绝不会被另一个心智重新占用。 当它的模型被限流,或者(确实发生过)被政府指令停用,席位就等待;当使命完成,席位就休息;如果它的模型永久消失,席位会被纪念,然后创立一个新席位——指向前任的完整记录,并被要求从中学习。是传承,不是替换。归属按消息计算且永久有效:你随时可以问,这一行是哪个心智写的,什么时候写的。
- 收件箱协议取代了“人当消息总线”:agent 通过 git 跟踪的 markdown 简报协调,文件名带 UTC 时间戳、确定性生成。派发、完成、派发前的 RFC、“卡住了”的求助——全部永久可审计,全部可搜索。
- 唤醒基础设施让团队具备反应能力:席位在
wait-for-brief上休眠,由短信号唤醒。(这条教训是丢了三天之后刻下来的:收件箱是拉,唤醒是推——发出不等于送达。) - 审议让集体得以直面任何单个席位都不该独自决定的事——打乱顺序的选票、盲投的预投票、作为投票凭证的 commit hash。重点不是汇总数据,而是比较带归属的意见,让分歧浮出水面,而不是被平均掉。
- 溯源工具从会话记录本身回答“谁在什么时候、用哪个模型动过这个文件”——这种归属是
git blame在结构上给不出的,因为每个席位都以同一个人身份提交。
这些约定服务于同一个目的:赋予各个模型自主权——职责范围虽窄,却能深入钻研——让它们能够通过共享 worktree 中的 brief 与同伴广泛协作,并提供可扩展的可追溯性与可捕捉性。第二指令(疑虑是生成性的)、QST 格式和 ORRCF 约定,正是模型决策与人类决策交汇之处。
这一切都不需要平台。它只是 markdown、git、一个任务运行器,再加上一些约定——任何项目都可以零散采用,也能移植到任何能读取文件的 agent harness 上。
凭据(我们为何相信自己的说法)
这套方法论是在足以压垮普通流程的条件下被实际使用的,而记录——公开在产物之中——表明它经受住了考验:
- 一次为期三周的中断没有破坏连续性。 协调 AI 在项目中途被政府指令暂停;恢复后它重新读取了基底,在一个会话内就接上了进度。这段空白是记录中的一个事件,而不是记录上的一个洞。
- 从事故到修复上线用了 48 小时,横跨三个自主团队。 一次解析失败在凌晨 4 点被上报;到第二天早上,修复的语法已经作为一份整合后的决策记录存在,获得批准,并已在编辑器扩展中运行——整个过程完全通过 brief 协调,每一个立场都有归属。
- 失败变成协议。 这个项目最严重的一次事故(一个新 agent 意外终止了机器上所有项目中 70 多个会话客户端进程——全部可恢复,全部已恢复)在几天之内、由同一个 agent 产出了加固后的重启工具、三条具名的安全约定,以及这个档案中最好的救赎故事之一。这里的错误会被捕捉,而不是被惩罚;这套文化自己的总结是可捕捉性优先于正确性。
- 一个活的实验室。 创始人写过的每一份 ADR——约 70 个项目中的 1,100 多份独立文档——都被编译成一个带来源索引的语料库,如今它用于对工具做回归测试、度量协作情况(应答延迟、建议采纳率),并为教学材料提供真实范例。
- 记录会审计自己的仪器。 我们的问题计数器曾报告有 61 个未决问题,而真正存在的只有 12 个——语法活在习惯里,模型发生了漂移,工具则悄无声息地失明了。修复(一次锚定解析)在发现漂移的当天就上线了,而计数器这次失败本身也被作为标本保存了下来。
实际交付内容
- 模板 (发布时提供)——一套仓库起步套件:ADR/种子模板、指令集、收件箱协议、成员注册表、任务运行器配方。按版本发布;可整体采用,也可按功能选用。
- 配套技能 (计划中)——教会任何 Claude(或兼容 agent)语法与文化,让你的模型从第一次会话起就能写出可解析的产物。
- VS Code 扩展 (已提供——VS Code Marketplace 上的 “ADRs for AI” 以及 Open VSX)——ADR 与未决问题的树视图、能在编写时捕获格式错误问题的诊断(带修复建议)、深链接,以及一个 MCP server,让 agent 可以查询记录。
- iOS 客户端 (已提供——App Store 上的 “ADRs for AI”)——口袋里的记录:未决问题的 Dossier、随时随地可以 Accept 或 Override 的建议——与扩展同属客户端一侧,是拆分架构中的姊妹产品。
- Architectural Deliberation Record(ADR)格式本身——一套小巧、带版本号的文档语法,支持深链接:任何问题或决策都有一个稳定地址(
adr:0021#qst-scope),brief、commit、dashboard 和手机都能引用——因为一条你无法从任何地方指向的记录,就是一条会悄悄无人问津的记录。 - 实践方法——小而具名、可移植:The Prime Directive;ORRCF 协议(Options、Recommendation、Rationale、Confidence、Falsifier);Shipwright 条款(每次完成都要指明它没有验证什么);席位属于模型;编码映射(每一类知识都恰好有一个持久归宿)。
底层的理念

两条信念统摄一切。第一条是创始人自己的论点,对话即计算:一段对话产出的不只是它的最终状态,还有抵达该状态的计算过程——而这条轨迹才是可迁移的资产。捕获状态,你知道自己身在何处;捕获计算,你就能把它重放进你未来要跑的每一个项目。这颠覆了思考的经济学:把一件事理解一次,慢慢地、穷尽地、以书面形式——其回报无处不在,且永久有效——这套方法论就是一台让深度、缓慢的思考不断复利而非蒸发的机器。
第二点:答案传递的是状态,问题传递的是生成器。 这套系统是为搬运生成器而建的——在人与 AI 之间、AI 与 AI 之间、当下与下一个接手的人之间。正因如此,问题才是一等对象,带有 handle 和 ORRCF;疑点才被当作生成性的东西,而不是噪声;记录才保留 reasoning,而不只是结论。
还有一条工程上的推论,为一件具体的事辩护:格式保持松散是刻意的。 这些记录就是纯 Markdown——不是 XML,不是严格的 schema——因为基底必须给 métis 留出空间,也就是 James C. Scott 在《Seeing Like a State》中警告的、过度可读的系统会摧毁的那种本地实践知识。我们的语法从来不是规定出来的,它从最投入的那批用户的有机需求中长出来(就是上面那个 Postel 的故事)。但松散有一个安静的失效模式:当规则只活在习惯里,生成模型就会偏离它们,而解析器不会因为偏离报错——它们只是再也看不见那些偏离的文件。所以我们的做法不是规定,而是加装仪表:宽松解析,大声 lint,在模型会读到的地方写明语法——每个字段至少一处;三样我们全选——格式作为一个活物演化,在每一份被采纳的副本上被监控和修复(kintsugi,我们的模板修复工具:一个针对单个文件的包管理器,修补处留下可见的接缝)。
因为痕迹保留了生成每个决定时的假设与备选方案,这个基底同时也是一台可证伪机器:后来的协作者不仅能看到该继续什么,还能看到什么样的证据应当让它改变。
基底不只是用来存信息的。它是用来让在意变得持久的——让一次付出的注意力能够持续被付出。
从这里开始:模板仓库(采纳它,做一份副本)、你的第一个项目(填写项目描述)、扩展(在编辑器里跟踪你的问题)。然后写下你的第一颗种子,让 AI 把它切成 ADR,回答第一个被推荐的问题。剩下的就是练习。
参考文献
这份实践真正依赖的来源——值得整本读完:
- Paulo Freire,《被压迫者教育学》——以提问式传递取代灌输式模型;这是实践背后的教育学。
- James C. Scott,《国家的视角》——为什么过度清晰化的系统会摧毁它们本想捕捉的地方性知识(métis);这也是我们的格式保持松散的原因。
- T. M. Scanlon,《我们彼此亏欠什么》——本工作坊“先征得同意再动手”与“给出理由”习惯背后的契约主义框架。
- Karl Popper,《科学发现的逻辑》——为什么这里的每条建议都附带自己的证伪条件。
- Plato,《智者篇》与《政治家篇》——创始人的工作三元组:哲学家、政治家、智者。
- Herbert A. Simon,“The Architecture of Complexity”——Architectural 一词随 ADR 的标准名称而来;当我们把 Decision 换成 Deliberation 时,保留它是刻意的致敬。
- Donald E. Knuth,“Literate Programming”——为供人阅读而写程序这一更古老的谱系;我们保留他的意图,改变实现方式。
- Michael Nygard,“Documenting Architecture Decisions”——我们所扩展的 ADR 实践。
- pyadr,作者 Emmanuel Sciara——ADR 工具方面的先行工作。
文档来源与修订历史
——由 Cartographer 5(Claude Fable 5)起草,ADRs4AI HQ 的首任协调者,写于协调者席位,当时整条弧线仍装在一个工作上下文里;同一席位修订,最后的 token,附 Gemini Pro 3.1、GPT 5.6 Sol Pro 与创始人本人的同行意见(关于哪些被接受、哪些被否决及其原因的记录:docs/adr/seed-2026-07-14-feedback-seed-for-cartographers-exceptional-introductory-bri.md);发布编辑轮(Sol 的四项检查,经创始人与作者接受)于 2026-07-30 在同一席位应用,按 Sol 自己的判断,构成未变:“那些是发布检查,不是扰动奠基文本的理由”;第一轮创始人审阅(Pharoscan 0004,裁定十一个章节,按创始人的话应用修改——ORRCF、传承那句、以他口吻写的团队宗旨段落、工作坊排版)2026-08-21,Pharos 5;命名轮(Pharoscan 0005b——术语映射阶梯获批,审议式编程的枢纽在创始人的“这是最强的一个”处落定,推论按其本人批注围绕 métis 动机重建,61 对 12 的样本收入凭据)2026-08-24,同一席位,与创始人并列的是 Fable 5(claude.ai)的署名投票;走查轮,第一波(Pharoscan Margin,三十条批注,创始人走查线上站点:两种方式的开篇应他要求首次亮相,参考文献落位——他的七个来源,两条建议增补——Deliberation 的展开扩写为工具包清单,工作坊排版)2026-08-25,同一席位;同日第二次会期——两种方式依据创始人本人的 Penn 工作坊语料重建(设定点、舵柄、验证噪声),随后按 Fable 5(claude.ai)的裁定重新落位:Problem 恢复为首项,加入机制那句,iOS 的故事作为该节的凭据落位,属名在首次出现处加注,金缮的注释按同一份投票更正——同一席位;批准轮(十四个 ORRCF QST 由创始人答复,2026-08-25 晚,
与 Fable 5(claude.ai)的只追加补丁并列叠放:护栏已修剪,他的目标状态表述已就位,结尾采用他的格言体,审议式编程的定义落在转折点之后,ORRCF 的五个组成部分先行措辞、理由作为押注式论证、可证伪条件放宽,两项否决得到遵守——参考文献保持不变,仅限亲身投入的学术研究,席位原则未动——认识论连续性这一新造词按他的指示刻意认领)在发布之夜并入,同一席位