概览

目标与非目标

目标:

  • 存放宪法:少数稳定的原则和治理方式 (什么约束谁,哪些事只能由人决定,规定和宪法本身怎样修改)。宪法不点名任何具体做法:不写命令、存放位置或工具。
  • 存放通用规定库和通用 skill:细化宪法的具体做法,写的时候不带任何一个用户的机器、账号或历史。这些规定是一套默认集合,每个法域自己选用其中哪些。
  • 提供工具链,把这些源文件连同一份私有 overlay 变成 coding agent 读的那一份指令文件,并提供检查程序,让源文件、overlay 和输出保持一致。
  • 可以原样公开。每个文件都按这样的标准写:将来公开本仓时,不需要改写历史。

非目标:

  • 存放任何私有内容:机器名、账号、密钥存储的路径、issue 编号、对话记录、谁在什么时候说了什么。这些放在私有 overlay 里。
  • 存放为真实用户编译出的产物。真实的输出在用户那一侧构建,从不提交到本仓。
  • 在运行时强制执行任何东西。这件事由权限、分支保护和 harness 设置来做;本仓只产出文字、检查文字。下面每个检查程序都写明了它证明不了什么。
  • 现在就搭建反馈流水线 (事件、提案、自动采纳)。本文档只为它预留位置和接口。
  • 依赖任何编排工具。见「与 fleet 的关系」。

两层结构

公开的核心 (本仓) 私有 overlay (另一个私有仓库)
宪法 本地参数:规定留空待填的值 (机器、模型名、密钥存储的结构、仓库列表)
通用规定,一套默认集合,由每个法域从中选用 私有规定:只在该用户的技术栈上才有意义的规定
通用 skill 私有 skill (该用户特有的工具和工作流)
编译器、检查程序、私有词扫描程序 来历:事故与决定的案例集,附日期和出处
一份虚构的示例 overlay 及其 golden 输出 扫描程序运行时读取的私有词列表
静态 fixture apply 步骤:运行编译器并安装输出

overlay 从不修改或放宽宪法。它选用哪些通用规定 (division-of-instructions.rules;见选用规定),加入私有规定,填上参数。它从不改动核心的文件;它把核心固定在某个版本上,基于那个版本构建。

语言

宪法和通用规定用英文和中文两种语言维护。本仓其余文件 (skill、工具、这份设计) 都用英文。

为什么用两种语言:批准宪法和规定的那个人读中文比读英文快得多,而这项审阅正是人的注意力最要紧的地方。中文版也方便公开仓库的读者。英文仍是默认语言:可以假定公开仓库的读者都读得懂英文,它也是宪法 index.toml 里排在第一位的语言。

为什么其余文件保持英文:skill 原样安装,工具是代码;那里只用一种语言,就只有一份文字需要保持正确。编译出的指令文件只用一种语言构建,由 overlay 选定,所以 agent 读到的只有一份文字。仓库文件、审查和工单无论用哪种语言写,都按 ID 引用规定;承载引用的是 ID,不是措辞。

两种语言写在同一份源文件里,是同一张 TOML 表的两个键 (见源文件格式),所以一次修改同时改两种语言,审查方也能对照着看。

宪法各语言文本的效力由宪法自己规定 (amendment-languages、equal-languages),目前的草案是这样写的;在有人批准那段文字之前,这一点仍然未定。规定也照此办理。本仓另外补充的是:

  • 检查程序只证明结构上对齐 (每张文本表都有每种语言;各语言定义相同的 ID,顺序相同,引用的 ID 也相同)。没有基于 git diff 的检查去要求改了一种语言的变更也要改另一种:只修一种语言里的错别字是正当的修改,这样的检查会拦下它,或者让人学会做空改动。意思是否一致由审查负责。
  • 中文文本遵守 limae 用默认规则检查的排版规范 (检查程序):逗号、句号、顿号、分号和冒号用全角;括号用半角,外侧留一个空格。项的编号出于同样的原因用半角括号渲染,写作 (**三**) 。