📄 补充 Agent 自主操作边界、指令冲突裁决与人类可读写作规范 - #1728
Open
cyfung1031 wants to merge 1 commit into
Open
Conversation
cyfung1031
force-pushed
the
claude/agent-autonomy-contract
branch
from
September 5, 2026 05:09
1b8f0de to
e402b18
Compare
cyfung1031
force-pushed
the
claude/agent-autonomy-contract
branch
from
September 5, 2026 05:16
e402b18 to
e6cfaa7
Compare
现有 agent 文档规定了改动的质量门槛,但缺三层:agent 在两次人工决策之间可以自行做什么、 指令冲突如何裁决、以及写给人看的东西该怎么写。静态审查的依据: 整套文档没有一处把 agent 写成决策者(`decide` 的主语全是分类表或原则),因而产出「建议生成器」; `material` 作为门槛术语被引用九次却从未定义,且在 pull-request.md 内有两种含义; 测试失败例外在 AGENTS.md 概括成两条而 owner 定义了六种;路由表是一次性分类; 人工指令能覆盖什么没有成文;以及全套文档没有任何一条关于行文的规范, 而 pull-request.md 提供的九级标题骨架会被当成表格来填。 本次补齐:范围内自行决策、交还决定须指名归属与阻塞点、不写可查证却不查的保留意见、 指令冲突裁决与人工指令覆盖边界、连续路由、`material` 定义、测试失败例外改交 owner 裁决、 自主操作边界、不稳定结果报告口径、面向人类读者的写作原则、文档集自身的指令预算。 PR 模板补一条不渲染注释;pull-request.md 明确其结构是待考虑项而非待填表格。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
cyfung1031
force-pushed
the
claude/agent-autonomy-contract
branch
from
September 5, 2026 05:22
e6cfaa7 to
017872b
Compare
Collaborator
Author
|
@CodFrm 你 agent 提交的那些还没合并的 PR,建议先把这个 PR 合并掉,然后再基于最新代码重做一下那些 PR。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Checklist / 检查清单
N/A — 不对应单个 issue;尚无人工复核。
Changes tested指文档验证,不是产品测试,见「验证」。背景
我们的 agent 文档把「改动要达到什么质量」写得很全,但漏了三件事,而这三件事恰好决定 agent 用起来舒不舒服。
一、文档从没把 agent 写成决策者。
decide的每一处主语都是别的东西:proceed也一样,要么是许可,要么是限制。整套文档是约束语料,从未授予判断权,所以 agent 遇到自己完全能解决的判断题时会写成「建议」交回来——把活推回给人。本 PR 前两版自己就这样:发现 PR 模板缺 checklist 诚实性提示,
却写成「应由维护者决定,不属于本 PR 范围」。那不是审慎,是把一行可回滚的编辑推给别人。本版直接做掉了。
二、写给人看的东西该怎么写,全套文档一个字都没有。
develop.md的 Language Conventions 只管用哪种语言。而
pull-request.md给的是九级标题骨架 + 七项决策链 + 十行证据表——一张表格。Agent 会把表格填满,于是产出前三版这份 PR 描述那样的东西:两百行、四个表格、同一件事在五个章节里各说一遍。人读起来很累。
三、几个具体的分歧点,都能在
main上 grep 复核。material是决定「要不要写七段 rationale chain、要不要风险段、能不能算 ready」的门槛词,被引用九次、从未定义,而且
pull-request.md:77的“needs only the material parts” 用的还是另一个意思。测试失败的例外在常驻的
AGENTS.md里只有两条,owner 的分类表实际有六种处置,其中 Flaky 和 Misclassified integration 两种不在例外里——
「popup.test.ts flaky,修稳定」按常驻文件读要改生产代码,按 owner 读多半是修测试隔离。
路由表是一次性分类,跨边界的重命名做到一半发现该读架构文档时,没有规则叫你回去。
执行期没有冲突裁决规则(
DOC-MAINTENANCE.md那套是给改文档的人用的),agent 只能静默选边。「人工指令能覆盖什么」也没写——面对「先
as any顶一下」,手上是三块互不衔接的文本。本次改动
给 agent 判断权,同时把边界写清楚。
AGENTS.md的## Autonomous operation改成「acting as much as thebounds on it」,并新增两条:
Decide inside the scope you were given区分三种被混为一谈的情况——不知道就去查(自己能回答的不算问题)、还不可知就取最省的合理读法并写明假设、无权决定才是升级;难度、歧义、
一般风险不是授权问题。
Hand a decision back only with its owner and its blocker named要求升级时指名谁拥有该决定、只有他们能提供什么、没回音时你的默认动作;顺带发现的事,任务确实需要就做掉,只是恰好在旁边就记 follow-up,
边界是 scope discipline 而不是你打开了哪些文件。把本可做完的事写成「建议」不是更轻的选项,是更小的交付物。
新增
## Writing for a human reader:写到读者的下一个决定为止;散文是默认,结构要自己挣来位置;每件事只说一次;靠取舍变短而不是靠省略——查过的检查、限制、不确定性一个都不能删。
配套把
pull-request.md的结构说明改成「待考虑项,不是待填表格」,并点明描述比 diff 还长通常已经帮倒忙。其余是修正已有规则:前言补指令冲突裁决与人工指令的覆盖边界(可豁免 preference,不满足写成禁止的规则;
说明一次,被重申则执行并记为具名的已接受偏离);路由改成持续的;测试失败例外整体交给 owner 分类表裁决,
链接改指
#cleaning-up-tests-safely;pull-request.md:77一处material改relevant消除一词两义。新增
material的可操作定义、声明范围与最终 diff 的绑定、不稳定检查结果的报告口径(绿色重跑不撤销红色运行)、临时性修复必须自我披露、禁止自造 oracle,以及
DOC-MAINTENANCE.md的Instruction budget(约束以后往这套文档里加规则,也约束本 PR 自己)。
.github/pull_request_template.md加了三行不渲染的注释:只有真做了才勾、Code reviewed by human指人而不是作者自己的 agent、不适用就留空并写一行
N/A — why。pull-request.md要求模板保持 lightweight并保留 Checklist,两条都守住了——去掉全部 HTML 注释后模板输出与改前逐字节相同。它是唯一能触达
不读
AGENTS.md的外部 agent 的位置。若认为模板一个字符都不该动,删掉这三行即可。已知限制
这是静态审查。上面每条都能在
main上 grep 复核,属可验证的文本事实;但「改完之后真实模型行为会变好」本 PR 不提供证据。我用任务 trace 走查了这些分歧点(flaky 测试、
as any豁免请求、跨边界重命名、一行修复的 materiality、owner 间冲突、以及本 PR 自己的 deferral 和这份描述本身),trace 用于定位文本缺陷,
不构成验收依据——本 PR 新增的规则之一就是禁止把自造评分当 oracle,所以这里没有分数。
material的定义放在AGENTS.md(shared contract),pull-request.md靠常驻加载继承。若认为该由
pull-request.md拥有,位置可以调,但不该两处各写一份。建议审查重点
Decide inside the scope you were given的三分法是不是你们要的升级门槛。Hand a decision back与 scope discipline 的边界:现在切在「任务确实需要就做,只是在旁边就记 follow-up」。## Writing for a human reader会不会和pull-request.md的证据要求打架——写的是「靠取舍变短,不靠省略」,查过的检查和限制不许删,请确认这个防线够不够。
AGENTS.md是否仍保住足够强的非可协商部分。验证
只改 Markdown。
pnpm run lint的 prettier 只覆盖**/*.{ts,tsx,js,jsx,mjs},Markdown 不在其内,所以跑的是
pull-request.md#documentation-only-prs要求的文档验证。未跑
pnpm test/pnpm run lint/pnpm run build:不触及产品代码、测试、生成文件或翻译,且本 worktree 无
node_modules,Markdown 也不在这些检查范围内。无 UI 变更。🤖 Generated with Claude Code