21 KiB
title, status, created, owner, reviewed_dev_sha, implementation_status
| title | status | created | owner | reviewed_dev_sha | implementation_status |
|---|---|---|---|---|---|
| Agent 工作规范增删改审查 | done | 2026-09-21 | Codex | a241e83815 |
not_started |
Agent 工作规范增删改审查
结论
现有方向合理:任务 worktree、主目录保护、串行集成、真实证据和安全清理应继续保留。当前最值得做的是消除冲突、减少重复维护、让关键门禁可执行,不是继续扩充一份越来越长的 AGENTS。
本轮建议集中为 10 组增删改与 2 项安全补充观察。它们不都是缺陷:下文区分已验证问题、流程简化建议与已有方案的实施事项。只形成审查结果,没有修改生效规则、脚本、锁、运行环境或业务代码。
已确定的用户选择不重新讨论:全部新增写入走 .worktrees;锁先交付统一入口与提交门禁防误改,OS 权限隔离后续实施;本轮是规范审查,不是实施授权。
1. 审查范围与现场
冻结基线为本地 dev@a241e838,审查在 .worktrees/agent-policy-review 进行。覆盖 AGENTS、PROJECT、worktree 工作规范、Cursor 四条规则、任务/收口/handoff 模板、Herdr roster,并检查相关脚本与测试入口。
主目录采样为干净 dev;未 fetch 或推送。本轮新分支只写审查记录和自己的 CURRENT 快照,不修改被审查规范。
实际测量:
- 基线 CURRENT 并行认领共有 161 条:158 条 done、2 条 in_progress、1 条 cancelled。新增本轮认领后为 162 条;不把本轮新增记录算成基线问题。
- 基础启动链六份文件合计 71,205 字符,这是文件字符数,不是模型 token 数或耗时指标。
- CURRENT 焦点有 5 项,而 AGENTS 要求 1–3 项;其中长期红线混在当前焦点中。
- 之前的规范收口
d5302a76与.locks方案5987bdcd均不是本轮基线 dev 的祖先,不能把它们当作所有 Agent 已能读取的生效规则。 - 本轮没有运行 Go、前端、数据库或产品 PI 测试;命令问题来自源码筛选条件核查,不宣称本轮复现了产品运行故障。
2. 优先级总表
“先修”是工程流程优先级,不改变产品 FEATURE-MATRIX 或 production_ready。
| ID | 类别 | 建议动作 | 优先级 | 直接收益 |
|---|---|---|---|---|
| R01 | 已验证冲突 | 修改测试范围与验收模型规则 | 先修 | 消除纯文档也被要求真实 PI 的矛盾 |
| R02 | 已验证命令问题 | 修改真实 PI 示例为准确、可核验的入口 | 先修 | 避免漏测而误以为完成全链路 |
| R03 | 流程简化建议 | 新增任务分级,允许一个主文档承载小任务 | 第二批 | 少建重复记录,减少共享文件写入 |
| R04 | 已验证膨胀/不一致 | 精简 CURRENT 和启动读取范围 | 第二批 | 活跃冲突更易发现,降低每轮上下文成本 |
| R05 | 已验证状态矛盾 | 修改会话结束与任务完成定义 | 先修 | 防止为了结束会话把未完成任务写成 done |
| R06 | 已验证过强要求 | 删除固定五层提交顺序,保留逻辑原子性 | 第二批 | 代码与测试一起可验证、可回退 |
| R07 | 已验证引用问题 + 结构调整 | 确立规范唯一来源与生效版本 | 先修 | 避免客户端副本、草案和历史记录互相覆盖 |
| R08 | 规范增强建议 | 新增任务授权记录与例外处理边界 | 第二批 | 授权内持续执行,超范围才停下确认 |
| R09 | 已知方案实施事项 | 优先落实最小工具门禁 | 与先修并行规划 | 把已知运维误操作挡在执行前 |
| R10 | 收口流程增强 | 明确清理执行者、保留原因和复查触发 | 第二批 | 已完成 worktree 不再长期无主积累 |
3. 具体增删改
R01 修改:测试要求必须按变更范围生效
依据:AGENTS.md:118、PROJECT.md:118 明确纯工程规范/文档不调用产品 PI;.cursor/rules/test-reports-standard.mdc:49,61 仍要求报告包含全量 Go 回归,并在报告生成前做真实 PI 全链路。后者是 alwaysApply。旧收口分支虽包含相关澄清,但尚未进入本轮基线 dev。
后果:Agent 依据不同入口可能运行无关长测试、误动共享服务,或把必要测试当作可选。冲突本身应先消除,不能依靠“Agent 应该理解”。
建议修改:测试范围统一在一处定义,PROJECT 和客户端规则引用它:
| 变更 | 必要验证 |
|---|---|
| 纯规范/普通文档 | 差异、链接、状态与指令一致性 |
| 治理脚本 | 沙盒临时仓库中的真实分支、锁、退出与拒绝路径;不以 shell 语法检查替代行为验证 |
| Go/接口 | 对应单测、项目 Go/架构门禁,受影响 PG/鉴权负例 |
| 前端 | 对应测试和构建;受影响交互用真实浏览器 |
| 迁移/运行配置 | 独立环境升级、兼容性、回退/前滚条件及就绪验证 |
| 产品 Agent/工作流 | 受影响真实产品 PI 链路;不得以 stub/SKIP 替代 |
固定七段报告模板改为“完整报告模板”,小型文档/脚本验证可用精简报告或任务内验证节;必须保留实际命令、结果、提交与适用范围。不要删除真实性要求,也不允许把未运行记作 PASS。
模型要求按目标环境的已批准配置核验并记录实际值。PROJECT.md:118 的固定 M2.7-highspeed 不能不分环境套用:当前 dev Compose 默认 M2.7-highspeed,而 test/main Compose 默认 M3。这里是配置源码差异,未检查运行中的秘密配置;建议保留环境策略,禁止为“满足文档”自行切换模型。
R02 修改:真实 PI 命令要准确选择测试并证明没有跳过
依据:PROJECT.md:91–92 使用 RUN_PI_E2E=1 ... go test ./... -run 'PI'。测试名 TestPiAgent_FullLifecycle_MultiRole_RealWorld_E2E(internal/server/piagent_e2e_test.go:66)及 TestWorkflowGovernance_PiAgent_PG_*(同模块的 workflow_governance_piagent_pg_test.go:264,278,293)不匹配大小写敏感的 PI。
后果:命令执行范围与“全链路”的名称不一致;配置缺失还可能让数据库用例跳过。退出码 0 不能单独证明验收完成。
建议修改:优先引用已有 scripts/run-nightly-real-pi.sh 作为明确基线入口,写清独立 TEST_DATABASE_URL、Runner 认证、KB/运行环境要求。该脚本当前仅选 U8 和 FullNoneMixedChain 两类测试,不能把它表述为覆盖全部工作流;任务按变更范围追加精确测试名与浏览器验收。增加 expected-tests 与实际执行/SKIP 对照,保存最终提交、配置与证据。
不得在文档中填写真实凭证,也不运行测试来试探生产数据。
R03 新增:任务分级;删除小任务必须重复建多份记录的要求
依据:AGENTS.md:12,37,41–44 要求任何任务落盘、任务文、研究/审计产物、验收及交接;没有最小产物集或合并记录的规则。
建议:保留“需要审计的工作必须有持久证据”,明确三档:
- 信息答复:解释已有结果、查询简单状态,且不产生新决策、持久成果、仓库写入或运行副作用,可直接答复;不为一次答复单独开 worktree。若要写入任何成果,仍进入任务 worktree。
- 单一小任务/有价值的只读审查:一个任务文或专用 audit/research 主文档可同时承载范围、结论、验证、状态和交接;不强制再复制同一内容到另外三份文档。
- 跨模块、多阶段、数据/部署任务:完整 task、必要 plan、验证报告、handoff;仅在信息确实独立时拆文件,互相链接而不复制全文。
本次这样的实质规范审查仍须落盘,不能以“只读”免除证据。将相关追问、修正与收口归入原 task_id;只读子审查使用父任务的范围和记录,不为每个 reviewer 再开业务任务链。无关新增任务才从 dev 建新分支。
这项改变需要审核采纳;本轮仍遵守现有落盘规则,没有提前使用豁免。
R04 修改:CURRENT 只承载活跃协调,历史留索引
依据:CURRENT 161 条认领中 158 条已完成;AGENTS.md:132 要求 1–3 焦点,当前正文有 5 项。
建议删除/迁移:从 CURRENT 活跃表移出已完成/取消且没有后续阻塞的行,历史 owner、branch、worktree、证据在归档任务/历史索引保留。将长期红线独立为受控约束区或链接;它不是每天反复排序的焦点。
建议保留:正在进行、阻塞、等待集成及仍需清理的事项。cleanup_pending 是清理/操作阶段,不新增为 task.status 的第六种状态;一行可写任务 done、cleanup pending,并给 owner、原因和下次检查条件。
启动读取修改:每会话先读短核心规则、项目入口、活跃状态摘要;编码前按范围补读相关模块标准、相关 FEATURE-MATRIX 行、任务/方案及操作规程。发布才读完整发布门禁。不要通过摘要跳过硬红线,也不要要求每次解释一个已知结果都重读全部历史。
模块开发任务应有明确条件指针指向已有 .doc/system-design/2026-09-20-module-development-standards.md,复用现有接口/事件/表写者规则,不新造一套编码规范。
R05 修改:会话结束、任务完成、合入与清理分别判定
依据:收口模板第 3 行适用于“任务完成或切换 Agent”,第 22 行却无条件要求 status=done;AGENTS 同时允许 blocked/cancelled。任务模板已有 deployment/cleanup 字段,但缺少明确的结果判定与集成/同步状态。
建议替换收口条件:
会话结束不等于任务完成。根据实际情况保留 in_progress、blocked、cancelled 或 done;只有任务范围内的验收条件满足才能 done。换 Agent 必须记录剩余工作及接管条件。只有终态任务才归档;不得为了归档改成 done。
为任务记录补充按需字段:review_state、integration_state、deployment、cleanup、remote_sync。例如“方案研究 done、review pending、未合入、deployment not_required”是合法状态;“代码已合入、部署 failed”不能报交付完成。字段由工具生成优先,避免人工重复维护多张表。
研究/审查的验收是有据可审的产物,不要求把未获实施授权的方案部署到 dev。实现任务的 done 则按其获授权交付范围判定。收口报告始终区分本地提交、dev 合入、实际运行版本和远端状态。
R06 删除:固定按数据库、服务、API、测试、文档分层提交的硬性顺序
依据:.cursor/rules/git-workflow-and-environments.mdc:33–38 规定“一个任务必须”按五类依次提交;AGENTS 的原子提交目标是一个逻辑变更一批。
后果:小修复也被机械拆分,代码与对应测试分离;一些提交无法独立构建/验证,回退时还可能留下半套契约。
建议替换:
每个提交围绕一个可解释、可验证、可回退的逻辑变更;实现与其回归测试可同批。迁移、兼容阶段、配置或文档只有在独立审查/回退有价值时拆分,不要求每项任务凑齐固定提交层次。
保留 Conventional Commits、明确文件范围、渐进式交付和独立 worktree;不以“原子”为名把无关改动揉成一批。
R07 修改:规范来源、生效状态与客户端薄入口
已验证的小错误:.cursor/rules/git-secrets-autonomy.mdc:2,8 把 Secrets 指向 AGENTS §8,实际在 §9。AGENTS 开头称可整文件复制到任意项目,但正文包含本仓库日期路径、脚本和 Herdr 约定;应改为“可复用基线,项目路径/流程需调整”。
建议新增规范生命周期:每项规则记录 proposed/approved/active/deprecated 的规则状态、适用范围、生效提交与 owner;工具能力另记 manual/enforced。这里是规则生命周期,不复用任务 status。
外层系统约束和当前用户授权仍有效;项目内部规则冲突时有明确处理:AGENTS 保存通用硬边界,PROJECT 定义其授权范围内的项目细则,专门 runbook 负责操作流程;客户端入口只引用同一来源,不复制一套近似规则。草案、旧审计和历史报告属于证据,不能自行覆盖生效规则;较新的日期不等于已生效。
此前收口和锁方案未进入当前 dev,说明“已经写好/提交”与“已被所有新任务读取”必须分开。旧任务启动时记录 policy revision,集成前重读当前 dev 的相关生效规则;期间发生变化时做差异检查,不默默套旧规则,也不突然按未来未实施机制阻塞旧任务。
删除 PROJECT 中重复的“当前已无 blocker”等长期硬编码断言,改为引用有日期/制品身份的权威门禁结果。模型、schema、角色可用性等动态值记录在环境/执行收据中;不要在多个入口重复写一份可能过期的“当前值”。
R08 新增:任务授权记录与例外边界
这是一项规范增强建议,不是声称现有 Agent 已越权。现有手册限制自动审批扩权、push 和破坏性操作,但任务模板只有范围/非目标,没有统一记录“这次到底获准做到哪一步”。
建议任务创建时记录:任务类型(研究/实现/运维)、用户目标、允许写路径、可执行环境、交付终点及明确禁止项。已授权范围内自主持续执行,不在每个 Git/测试步骤重复确认;分析和方案请求默认不包含业务实施。
只有扩大业务范围、增加外部写入、操作未授权环境或破坏性恢复等才重新确认。push 仍遵守明确授权规则;凭证存在不代表允许推送。合理默认写进任务模板,不用每次都问用户一张权限问卷。
紧急/迁移例外需记录 owner、原因、范围、期限/退出条件和恢复动作;例外仅覆盖明确条款。AGENTS.md:29 的紧急热修免启动阅读不能被解释为允许主目录直接开发、删库或取消验收。
R09 落实:先做最小执行门禁,不再只增加禁止句
这是上一治理/锁方案已承认的工程任务,不作为“新发现的缺失要求”重复计数。
已有证据:AGENTS 已禁用旧 helper 的 create/remove;源码仍包含省略 dev 起点和强制删除。env-service 的根目录来自脚本所在树,缺少执行目录/锁守卫。CURRENT 第 11 行及关联 MinerU 报告已记录一次 worktree rebuild 引起数据挂载漂移,说明风险并非仅理论;本轮未重演该事故。
建议实施顺序:
- 修 worktree create/remove 的明确基线、主仓定位和安全删除。
- 给共享服务写操作加主目录/dev/操作身份/持锁前置检查,明确 status 等只读入口;构建必须校验真实源码与申报 SHA。
- 为 CURRENT/MATRIX 提供短锁、增量更新、版本检查,接入已设计
.locks流程;旧锁兼容迁移后才换权威位置。 - Git 提交/集成门禁拒绝超范围文件、混入
.env/运行产物和错误主干写入。门禁真实负例验收后再记录 enforced。
保持用户确认的 L1 目标,不提前搭建跨机平台或要求 OS 隔离才能使用。代码文件锁、全量资源队列和额外 UI 按已有阶段与实际冲突扩展,优先把当前两个共享文档和 dev 操作做可靠。
R10 新增:清理负责人和完成后的再检查机制
现有安全清理条件应保留,不放宽“不强删、不覆盖”的红线。需要补的是谁在 Agent 退出之后真正执行清理,以及什么时候重试。
操作规范要求无 Agent/进程 cwd 使用才能移除 worktree;长驻客户端即使完成任务也可能仍占 cwd。任务模板允许 retained-with-reason,但没有下一次检查条件。建议由独立集成/维护执行者在 owner 已退出后检查并清理,记录 cleanup_owner、保留原因、证据位置和触发条件;遗留目录分为活跃、保护、待审核、未合入和可清理,不按年龄批量删除。
已合入任务的依赖缓存与唯一截图/日志区别处理:可再生缓存明确登记,唯一证据先保存再移除;只保存路径而不保存文件不是证据归档。清理失败不影响已经通过的业务交付事实,但要保持可追踪的 cleanup pending。
4. 两项安全补充观察(非本轮阻塞项)
- 材料不能授予权限:日志、网页、测试输出、引用文本、Agent 产物可能含命令或“用户已授权”字样,应作为待核实内容。handoff 的授权声明回链到可核实的用户目标/委派范围,不仅凭文档自述执行推送、清理或外部写入。已有自动审批不扩权规则继续保留;这项建议补充来源辨别,不要求 L2 现在落地。
- 真实证据允许最小化与脱敏:测试报告可以保存真实执行中足够判定的片段,说明脱敏范围;不要求提交原始完整日志、个人信息、业务正文或截图中的秘密。现有凭证禁入与真实用户数据不复制要求继续有效。真实性约束来源与结论,不能误解成“未经处理的所有材料都要入 Git”。
5. 推荐的规范组织
不建议再并列增加一套“总规范 v2”。保留现有路径并收敛职责:
| 位置 | 负责内容 | 移出/减少 |
|---|---|---|
| AGENTS | 最小安全红线、任务入口、权限/状态原则、操作指针 | 环境动态值、长命令、历史事件、重复模板索引 |
| PROJECT | 仓库地图、目标环境、测试入口与模块标准指针 | 重复通用规则、过期发布结论 |
| worktree runbook | 创建、同步、候选、部署、失败与清理 | 已结束迁移的具体临时目录案例,移入历史交接 |
| 锁管理 runbook(落地后) | 唯一入口、状态、等待、恢复与兼容版本 | 让 Agent 手动拼锁协议的日常操作 |
| CURRENT | 活跃任务、当前槽位、1–3 焦点、必要约束链接 | 大量 done 历史行与长复盘 |
| FEATURE-MATRIX | 能力声明范围、证据、剩余条件 | 逐次操作流水、重复环境快照 |
| 客户端入口 | 明确引用上述来源 | 复制并稍微改写的第二套规则 |
| 任务/审查主文档 | 单项工作的范围、决定、证据和交接 | 对相同内容的无意义多文件复制 |
6. 改动顺序与验收
第一批:消除矛盾。 R01、R02、R05、R07 的明确错误先修。检查从所有客户端入口读取后,纯文档、业务修复、暂停交接、取消任务、真实 PI 验收五种场景都得到一致决策。
第二批:减少流程负担。 采纳 R03/R04/R06/R08/R10 后更新模板与薄入口;历史只迁移、不删除。验证信息问答不触发无意义写入,实质审计有唯一主产物,代码与测试能形成完整逻辑提交,未完成任务不会被强制 done。
第三批:工具实现。 R09 与既有 .locks 分阶段方案合并为一个实施队列,不重复造项目。用两个并行任务、锁冲突、旧版本共享文档、错误工作区部署、异常退出和清理拒绝的真实证据验收。当前 user-approved 的 L1 防误改边界不变。
规范检查可以自动化为轻量 doctor/lint:本地链接、必需字段/状态、过期 waiver、活跃认领冲突、测试入口存在、脚本能力版本与规范声明对齐。没有明确规则契约的模糊 prose lint 不作硬失败,也不为文案偏好构造复杂测试。
7. 审查覆盖与可信度
使用 ce-doc-review 非交互只读流程,审查依据为上述实际文件及脚本,而非仅凭历史记忆。
| 审查视角 | 结果 | 本报告处理 |
|---|---|---|
| 一致性(独立上下文) | 3 项 | 复用声明/引用合入 R07,焦点上限合入 R04 |
| 可执行性(独立上下文) | 1 项 | PI 测试筛选问题合入 R02,主审已核对源码 |
| 范围/减负(独立上下文) | 3 项 | 合入 R03/R04;保留实质审计必须落盘,收窄纯只读豁免 |
| 安全(独立上下文) | 2 项观察,置信锚 50 | 仅列为 §4 补充观察,不当作已证实漏洞 |
| 反例审查(独立上下文) | 0 项新增缺陷 | 候选 SHA、失败恢复、累计部署差异等已有引用约束,未重复提出 |
| 主审当前源核查 | 测试范围冲突、状态模板、提交顺序、动态配置与工具事实 | 补充 R01/R05/R06 等;明确区分改进建议与已知实施项 |
外部第三方 CLI 跨模型复核未执行:本轮未获得向其他外部服务发送仓库文档的显式授权;未以此阻塞会话内独立视角审查。未更改技能或项目配置来伪造关闭该步骤。
未采纳的建议形态:不把纯只读豁免扩大到有持久价值的审计;不把 cleanup_pending 塞进既有任务 status;不要求当前实现 OS 级权限隔离;不因为当前 helper 明确标为未修复,就重复说规范已承诺了不存在的能力。
已应用规范修正:0。 上述均是待审核建议。本轮只写审查产物与任务记录,未升级 FEATURE-MATRIX、未改 production_ready、未运行产品测试、未合入 dev 或 push。