Skip to content

RT64M/cairn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cairn — A file-based protocol for humans + AI agents

代理会忘,团队会忘,文件不会。 像登山者堆石头路标一样,把"人 + 多个 AI 代理"的上下文堆在 Markdown 文件里 —— 后来的人和代理都能沿着路标走。

English | 中文

License: MIT


✦ 这是什么

Cairn 是一份纯 Markdown 形式的协作协议。 把模板文件复制进项目根目录即可生效,无需安装、构建或运行时依赖。

Cairn([ker-n])原指登山者沿途堆起的石头路标。 在这个项目里,每一块"石头"是一个 md 文件;它们一起标出项目的来路,让任何代理或新加入的人都不会迷路。

把它放进项目根目录,AI 代理和人类协作者就会共享同一份 可追溯的上下文:当前在做什么、为什么这么做、谁卡在哪、哪些事必须人来做、改动如何回写计划。

简言之:让记忆从聊天框里走出来,长在文件里。

✦ 它解决什么问题

如果你用 AI 代理写过真实项目,下面这些场景应该熟悉:

  • 🧠 代理失忆 / plan 漂移:换一个会话、换一个代理就要从头解释项目;上一次的设计取舍消失在聊天记录里,几周后没人记得项目原本要做什么。
  • 🤝 多代理打架:让 Codex 改一版,再让 Claude Code 接手;两个代理对"什么算完成"理解不同,互相覆盖对方的工作。
  • 👤 人工事项丢失:代理遇到无法独立验证或解决的事项时,要么执行进程被静默阻塞,要么相关问题被忽略丢弃;既没交还给人类,也没进入任何台账。

Cairn 用 职责边界清晰的几个文件 给每类信息一个固定家。

✦ 30 秒看懂

                  ┌──────────────────────────────────────────┐
                  │         人类  ⇄  多个 AI 代理            │
                  └─┬─────────────────────────────────────┬──┘
       反馈/审查/   │                                     │  写代码 /
       测试        ▼                                     ▼  推进任务

   ┌────────────────────┐ 条目进入 TODO  ┌──────────────┐ 代理改不动?    ┌─────────────┐
   │ fix_<desc>.md      │ ─────────────▶ │   TODO.md    │ ─────────────▶ │  HUMAN.md   │
   │ fix-plan_<desc>.md │                │   执行台账   │                │  人工分流   │
   │ (语义命名)         │                │  (执行中心)  │ ◀───────────── │             │
   └─────────┬──────────┘                └──────┬───────┘  完成: [x]/[~] └─────────────┘
             │ 修改 plan 的唯一两类入口         ▲
             │ fix 归档时按需修正描述           │ 初始拆解为步骤
             │ fix-plan 用户确认时新增内容      │
             ▼                                  │
   ┌────────────────┐                           │
   │    plan.md     │ ──────────────────────────┘
   │   项目大纲     │
   └────────────────┘

── 地基:进入项目时按顺序读 ─────────────────────────────────────────────────
   NICKNAME.md      项目术语表;第一个读 (≥5 个术语时建立)
   ARCHITECTURE.md  代码组织:新代码归属、模块依赖、启动顺序
   AGENTS.md        上面所有箭头背后的读写规则由它定义
   README.md        只给最终用户读 — 与 AGENTS.md 严格不重叠

── 按需:满足触发条件才出现 ─────────────────────────────────────────────────
   INTERFACE.md     对外接口契约;与代码同步,TODO 注 "已同步 INTERFACE.md"
   TEST.md          测试方法 (用户主动要求测试时建立);
                    测出的 bug 流入 fix_<desc>.md

── 终点:归档收纳 ─────────────────────────────────────────────────────────
   archive/         已归档 fix 批次 · 已完成 TODO 步骤 · 已完成 HUMAN 条目
  • 主流程闭环:fix / fix-plan → TODO ⇄ HUMAN;fix 归档时按需修正 plan 描述偏差,fix-plan 在用户最终确认时立即写入新增内容。
  • 稳定地基与按需补充各司其职,归档进 archive/ 不删除历史。

✦ 60 秒上手

# 把 AGENTS 模板拷进你的项目
cp template/AGENTS.zh.md your-project/AGENTS.md
cd your-project

打开任何支持读取仓库的 AI 代理,直接说:

读一下 AGENTS.md,按里面的规则给本项目补全协议要求的元文件。

代理会按协议建出 plan.md / ARCHITECTURE.md / TODO.md / README.md,并在触发条件出现时建 INTERFACE.md / NICKNAME.md / HUMAN.md

✦ 核心:5 个核心元文件 + 6 个按需补充文件

每个采用 Cairn 的项目都遵循同一套文件分工。职责互不重叠、信息只放在它的家里。

核心元文件(5 个,所有项目强制)

文件 角色 改动频率
plan.md 项目大纲:定位 / 功能清单 / 数据模型 / 接口 / 验收 仅初始化(仅 fix 归档时回写)
ARCHITECTURE.md 代码组织:目录分工 / 新增代码归属 / 启动顺序 仅初始化
AGENTS.md 代理协作协议:状态约定 / 文件分工 / 同步要求 低频
README.md 用户说明:能做什么 / 怎么装 / 怎么用 / FAQ 低频
TODO.md 执行台账:步骤 / 子项 / 阻塞 / 来源 / 完成状态 每次会话同步

按需补充文件(最多 6 类,触发后创建)

文件 触发条件 备注
fix_<desc>.md 用户要求审查 / 审计 / 复核,或提供测试反馈 缺陷反馈闭环,语义命名;归档时按需修正 plan 描述偏差
fix-plan_<desc>.md 用户提出 plan 之外的新功能 / 新模块 / 验收标准扩展 计划扩展闭环,语义命名;用户最终确认时立刻写入 plan,是新增 plan 内容的唯一入口
HUMAN.md 出现代理无法完成、必须人工执行的事项
INTERFACE.md 项目存在对外接口(API / CLI / SDK / 前后端)
TEST.md 项目复杂且用户明确要求代理测试
NICKNAME.md 项目专有术语 ≥ 5 个

完整规则见 template/AGENTS.zh.md

✦ 几个关键设计

以下是 Cairn 协议的几条核心硬性约束。每一条都直接对应一类典型的协作失败模式:

  • plan.md 仅可通过两类入口修改fix_<desc>.md 归档时按需修正描述偏差,fix-plan_<desc>.md 在用户最终确认时写入新增内容。防止每次会话都改大纲,导致项目定位漂移。
  • fix 与 fix-plan 严格分文件。 即使用户在同一次对话中同时提出 bug 修复与新功能,也必须分别建两份文件,从文件名前缀即可判别批次性质。
  • fix 文件用语义命名fix_gesture-scoring.md 而不是 fix_01.md)。从文件名就能判断批次主题。
  • TODO 优先级低于所有未归档的 fix 与 fix-plan。 反馈先收敛,再继续推 TODO,避免遗漏外部输入。
  • 代理改不动的事项必须转 HUMAN.md。 不让 fix 永久阻塞,不让人工事项溶解在聊天里。
  • TODO 的 [!] / [~] 状态保留废弃条目。 历史决策可回溯,而不是被悄悄删除。
  • AGENTS.md 给代理读,README.md 给用户读。 同一信息不在两边重复维护。

✦ 仓库结构

目录 内容
template/ AGENTS.md 中英文双版本,核心交付物
design/ 每个 md 文件的设计理由:为什么需要它、边界在哪、如何配合
workflow/ 6 个典型场景的代理工作流:新项目、迭代、fix 缺陷闭环、人工分流、fix-plan 扩展闭环、按需补充
example/ 一个完整虚构项目(Northstar Ops)的 md 状态快照,展示协议跑起来的样子

✦ 阅读路线

我想… 直接读
复制一份立刻用 template/AGENTS.zh.md
理解为什么这样分文件 design/overview.md
看代理在不同场景怎么走流程 workflow/01-new-project.md06-
看真实项目跑起来长什么样 example/README.md

✦ FAQ

Q:这跟在 README 里写一段"AI 须知"有什么区别? A:那只是给单个代理的提示。Cairn 规定 多个 代理之间如何在 多次 会话间共享状态、闭环反馈、回写决策。

Q:不会让文件多到爆炸吗? A:5 个核心元文件 + 最多 6 类按需补充文件。其中 plan.md / ARCHITECTURE.md 仅在初始化阶段撰写,后续基本不动;fix_*fix-plan_* 完成后均归档进 archive/,活跃文件始终保持清爽。

Q:改一行代码也要更新 TODO? A:是。这是协议的强制约束。每次同步只需一行 markdown,换来的是数月之后任何代理都能立即接手项目。

✦ 不做什么

  • 不提供具体语言 / 框架 / CI / Git 分支模型 / 测试工具的选择。
  • 不替代 issue tracker、不替代 ADR,但可以和它们共存。
  • 不绑定任何代理或 IDE:只规定文件结构和读写规则,任何能读取 Markdown 仓库的工具都可用。

✦ License

MIT — 见 LICENSE

About

A file-based protocol for humans + AI agents. Stack files like trail markers — any agent finds the trail.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors