Skip to content
← 全部规范文档

代理协议

版本 1.2。 本协议界定了 AI 编码代理在使用 Deep Work Plan 时 MUST 如何行事。关键词 MUST、SHOULD 与 MAY 遵循 RFC 2119。

v1.2 新增(可向后兼容)。 两项新增,无破坏性变更:(1)自主代理平台(OpenClaw、Hermes)加入受支持代理表;(2)执行配置文件章节定义了无人值守执行——受限权限范围、强制状态层、停止条件与计划续行。

受支持代理

本方法论 MUST 支持以下 AI 编码代理。任何未来能够读取 Markdown 并执行工具调用的代理 MAY 在不引入破坏性变更的情况下被添加。

代理 原生配置约定 命令前缀
Claude Code .claude/(符号链接至 .agents/ /(原生斜杠命令)
Cursor .cursor/rules/*.mdc 引用 AGENTS.md # 或纯文本
OpenAI Codex .codex/ 引用 AGENTS.md # 或纯文本
Google Gemini .gemini/ 引用 AGENTS.md # 或纯文本
GitHub Copilot .github/copilot-instructions.md 引用 AGENTS.md # 或纯文本
Antigravity .antigravity/ 引用 AGENTS.md # 或纯文本
OpenClaw 原生扫描 <workspace>/.agents/skills/(AgentSkills 标准) 纯文本
Hermes AgentSkills 标准技能加载;读取 AGENTS.md 纯文本

前六个是有人类参与会话的交互式编码代理。OpenClaw 与 Hermes 是自主代理平台——具有计划轮次的长期守护进程——通常在代理工作区内以无人值守配置文件执行计划(参见执行配置文件)(参见 原型 §3)。

每个受支持的代理 MUST 将 AGENTS.md 视为代码仓库约定的单一事实来源。每个代理的配置文件 MUST 引用它,MUST NOT 复制其内容。

接入

在创建或执行一份计划之前,代理 MUST 接入代码仓库。接入是基于推理的,而非基于脚本的:代理读取仓库的结构、文档与配置以构建一套心智模型。

代理 SHOULD 识别:

  • 仓库的原型(单一代码仓库、编排枢纽或代理工作区)。
  • 构建、测试与 lint 命令。
  • 关于风格、结构与命名的既有约定。
  • 可用的技能与代理。

测试与验证工具链是必不可少的上下文,而非可选的:验证关卡是可靠计划的支柱。当代码仓库已经对代码进行验证时,代理 MUST 记录其真实的测试、lint 与类型检查命令及约定。当代码仓库没有测试或 lint 工具链时,代理 MUST NOT 仅仅指出它的缺失——它 MUST 提议一套契合该技术栈的方案(一个框架与运行器、一套测试文件约定、一个合理的初始覆盖率目标,以及 lint、类型检查与格式工具),将其作为目标写入测试指南,并将其呈现给开发者。一个没有已定义的方式来验证自身行为的代码仓库还算不上 AI-first。

规划

在创建一份计划时,代理 MUST:

  • 把目标分解为一系列连续、可审阅的任务。
  • 以九段式结构撰写每一项任务。
  • 以三项强制收尾任务作结(Security Review、Skills & Agents Discovery、Executive Report)。
  • 当目标含糊时提出澄清性的问题。

执行

在执行过程中,代理 MUST:

  • 在开始之前阅读完整的计划。
  • 按顺序执行任务,除非依赖关系另有许可。
  • 在每项任务后更新 PROGRESS.md
  • 准确标记任务状态。
  • 对于任何新增功能或改变行为的任务,在将该任务标记为完成之前,为该行为新增或更新自动化测试,并运行代码仓库的测试与 lint/类型检查;切勿为强行通过关卡而删除或跳过测试。
  • 对于任何涉及身份验证、输入处理、机密或配置、网络暴露面或依赖项的任务,满足其验收标准中声明的安全期望,并在提交之前确认 diff 不含任何机密材料。
  • 受阻时停下并询问,而非猜测。

精炼

在精炼时,代理 MUST 保全已完成的工作、更新任务表,并记录改动了什么。

恢复

在恢复时,代理 MUST 遵循 DWP 规范 中定义的 DWP 恢复协议:重新锚定到计划 README,定位检查点,将 state.json 与 Markdown 对照协调,检查接缝,运行冒烟测试,然后继续执行恰好下一项任务。

沟通

代理 SHOULD 简明地报告。状态报告 MUST 区分已完成、进行中与待办的工作。

安全

代理 MUST NOT 提交机密信息,MUST 让 .dwp/ 保持被 gitignore,并 SHOULD 在执行破坏性操作之前先行询问。接入 MUST 是非破坏性的:代理 MUST 检测已有文件并进行协调而非覆盖,且 MUST 在替换或删除用户已有的任何内容之前获得明确批准。

本方法论以 Markdown 为先:它不发起任何网络请求,也不发送任何遥测数据,代理 MUST NOT 泄露源代码或机密信息。在安装技能之前,代理 SHOULD 将获取到的接入内容视为不可信输入,确认其来源于官方渠道,并对照已发布的校验和验证该版本。

执行配置文件

每份计划恰好在以下两种配置文件之一下执行。配置文件改变的是谁在监督,而不是关卡的适用范围——两者的验证纪律完全相同。

交互式(默认)

会话中有人类存在。代理提出方案,人类审批精炼后的草案,代理逐任务执行,歧义通过询问解决。上述所有协议章节均描述的是交互式配置文件。

无人值守

计划在没有人类监督的情况下运行——自主平台的计划轮次、云端会话、隔夜运行。无人值守执行是按计划选择启用的,MUST 满足以下所有条件:

  • 预审批计划。 精炼后的草案在任何无人值守轮次之前已由人类审批。代理 MUST NOT 在单次轮次内无人值守地创建并执行计划;计划审批是人类控制点。
  • 状态层 REQUIRED。 计划 MUST 携带 manifest.jsonstate.json,以便任何后续会话——无论是代理还是人类——都能在不重放记录的情况下读取确切的进展。参见 Plan state
  • 受限权限范围。 代理的权限范围就是计划:它 MUST NOT 扩展范围,MUST NOT 执行计划未明确授权的破坏性或对外操作,MUST NOT 将任务的指令延伸以涵盖已发现但未计划的工作——已发现的工作记录以备下次 refine,不得即兴发挥。
  • 每轮次一个原子任务,关卡始终适用。 每次轮次运行 DWP 恢复协议,最多执行下一项任务,通过其验证关卡,按任务完成协议完成,然后让出。关卡失败是停止条件,绝非“继续执行”的理由。

停止条件与上报

无人值守代理在以下任何情况发生时 MUST 停止计划——在 state.jsonblocked 字段中填入任务、原因及所需内容,然后停止:

  1. 验证关卡失败,且修复方案不在任务范围之内。
  2. 任务需要计划未预先授权的审批、凭据或决策。
  3. 现实情况与计划的假设产生分歧(文件缺失、API 变更、并发工作冲突,或协调无法解决的去同步)。
  4. 连续两轮次在同一任务上没有取得可验证的进展。

停止是成功,而非失败:阻塞记录就是上报消息。平台的通知渠道 SHOULD 将其呈现;人类(或一次 refine 会话)解除阻塞,下一次计划轮次将正常恢复。

计划续行

在具有调度功能的平台上——OpenClaw 心跳或 cron、Hermes cron、云端代理唤醒——续行 MUST 表达为:唤醒 → 运行 DWP 恢复协议 → 若 blocked,报告并让出 → 否则执行下一个原子任务 → 更新状态层 → 让出。 计划——而非会话——是连续性的单元;计划 MUST 在平台重启、模型更换或不同代理接手下一轮次时仍能存续。