跳转至

SOP:Agent 执行效率约束落地 + 提问对照卡(2026-09-23)

本次变更的实现体为 output-cost-20260923/apply_changes.py(默认预演、幂等、带备份与回滚)。 本文第 5 章的操作序列以实现体为准,仅供阅读、复核与手工复现。

1. 背景

实测(2026-09-23):输出 token 单价 ¥4/百万,是缓存命中输入(¥0.02/百万)的 200 倍; 每一次工具步进 = 一次完整的重新推理(含思考)。当日 697 条请求只对应 40 个用户轮次 (平均 17.4 步/轮),输出成本中 65% 是思考 token,42% 花在 7 轮重复的开放式检查上。

浪费的来源不是任务本身,而是提问方式与 Agent 执行方式:开放式提问(「再检查一下是否合理」) 让模型先自行定义「什么叫合理」,把不可穷尽的判断变成一轮又一轮的探索性读取。据此确定两项措施:

措施 作用面 落地形式
M1 新增全局规则约束 Agent 执行方式 Agent 侧(每次请求都注入) ~/.trae-cn/user_rules/rule-agent-efficiency.md
M2 落盘「提问对照卡」 用户侧(提问前自查) output-cost-20260923/提问对照卡.md

2. 目标

变更完成后,以下状态可验证:

  1. ~/.trae-cn/user_rules/rule-agent-efficiency.md 存在,且与 output-cost-20260923/rule-agent-efficiency.md 逐字节一致。
  2. 规则文件含四个小节:为什么 / 执行方式(必须)/ 边界 / 停止判据。
  3. docs/HANDOFF.md 的变更前版本已备份到 output-cost-20260923/backup/ 并在台账登记 (本次由主 agent 随后修订 HANDOFF 正文,实现体只负责备份)。
  4. 实现体复跑零变更、全跳过;核验脚本全通过(退出码 0)。
  5. proxy.py、config.yaml、~/.trae-cn/hooks.json 与变更前指纹一致(未被触碰)。

3. 前置条件

项 要求
运行环境 本机系统 python3(≥3.9),无需第三方依赖、无需 venv
目录 ~/.trae-cn/user_rules/ 已存在(本机已存在,含 4 个既有规则文件)
输入文件 output-cost-20260923/rule-agent-efficiency.md、docs/HANDOFF.md 均存在
目标状态 ~/.trae-cn/user_rules/rule-agent-efficiency.md 当前不存在(本次为纯新增);若已存在且内容不同,实现体拒绝覆盖
权限 当前用户 rain 对 ~/.trae-cn/user_rules/ 有写权限,无需 sudo
执行前检查 确认没有其它会话正在改 docs/HANDOFF.md;确认 token-proxy 服务状态与本次无关

4. 影响范围

项 值
主机 单机 192.168.31.250(用户 rain),无其它节点
组件 ① 全局用户规则目录 ~/.trae-cn/user_rules/(新增 1 个文件)② docs/HANDOFF.md 的备份(只读复制)
是否停服 不需要。不改动代理服务:proxy.py / config.yaml 不触碰,systemd 用户服务 token-proxy 不重启、不重载
窗口期 无要求。规则文件由 Trae 在下一次请求时读取,无在跑作业、无并发写入
影响面 仅影响本机 Trae 的规则注入内容;Hooks、Skills、其它 4 个规则文件均不改

4.1 前缀缓存影响(重要)

新增规则文件会使注入请求前缀的 system 消息内容变化。按 docs/SOP.md 18.4.1 的实测归因, system 或 tools 定义一变,前缀几乎必然整段失效(2096 组正常请求中该变化率为 0.0%, 而失效请求中 system+tools 变化占 31.7%),从变化位置起的所有前缀(system + tools + 全部历史) 在上游缓存里整段作废。

由此有两种代价,差别约一个数量级:

做法 代价 依据
改完立即开新会话(正确做法) 首条全 miss ≈ ¥0.03 docs/SOP.md 第 1171 行:「单次成本量级:改文件 + 一次新会话首条全 miss ≈ 0.03 元(依据见 18.4.1),可忽略」
在旧会话内继续对话 可能 0.1 ~ 0.35 元/次(且会周期性重复) docs/SOP.md 18.4.1 口径订正:09-21 0.118 元 → 09-22 0.588 元 → 09-23 0.536 元;只要持续改规则,前缀失效就是周期性的,不会自然收敛

结论:本次落地后必须开新会话,不要在当前会话里继续对话。

5. 分步操作

对应实现体:output-cost-20260923/apply_changes.py。以实现体为准,以下为等价序列。

cd /home/rain/Documents/services/token_proxy

# 1) 预演:只列出将执行的两项动作,不写任何文件(默认行为,无需参数)
python3 output-cost-20260923/apply_changes.py
# 预期:待变更 2 项(A1 备份 HANDOFF、A2 写规则文件),已达标 0 项

# 2) 语法预检实现体与核验脚本,避免跑坏文件
python3 -m py_compile output-cost-20260923/apply_changes.py \
                      output-cost-20260923/verify_changes.py

# 3) 执行:备份 HANDOFF → 新增规则文件 → 登记台账
python3 output-cost-20260923/apply_changes.py --apply

# 4) 验证(见第 6 章)
python3 output-cost-20260923/verify_changes.py

失败时的判断依据:

现象 判断
预演输出「待变更 0 项,已达标 2 项」 已应用过,无需重复执行(幂等)
报「已存在且内容与源文件不同」 目标被第三方占用或有历史版本,停止并人工核对,勿强制覆盖
报「写入校验失败」 立即 --revert 删除该规则文件,再定位
报「预检失败:待备份文件不存在」 docs/HANDOFF.md 缺失,检查工作目录

6. 验证

cd /home/rain/Documents/services/token_proxy

# 核验 11 项:交付物、结构、落地路径、逐字节一致、备份、台账、幂等、未触碰项
python3 output-cost-20260923/verify_changes.py
# 预期:结果:11/11 通过(退出码 0)

# 幂等复跑:第二次执行为零变更
python3 output-cost-20260923/apply_changes.py
# 预期:预演结束:待变更 0 项,已达标 2 项(预演不写文件)

# 逐字节比对(人工旁证)
sha256sum output-cost-20260923/rule-agent-efficiency.md \
          ~/.trae-cn/user_rules/rule-agent-efficiency.md
# 预期:两行 SHA256 相同

# 备份与台账
ls -l output-cost-20260923/backup/home/rain/Documents/services/token_proxy/docs/
cat output-cost-20260923/backup/README.md

真机行为验收(需你新开一次会话):新会话中执行一个多文件读取任务,观察 Agent 是否在同一条消息内 并行调用读取工具,而非「读一个、看一眼、再读下一个」。

7. 回滚

备份位置:output-cost-20260923/backup/,按「去掉开头斜杠的原绝对路径」保留层次,命名 <原名>.bak.<YYYYmmdd-HHmmss>;逐条台账见 output-cost-20260923/backup/README.md (含备份文件、原路径、备份时间、因何产生、回滚什么、何时可删)。

cd /home/rain/Documents/services/token_proxy

# 一键回滚:只删除本次新增的规则文件(路径白名单校验,内容非本次版本则拒绝删除)
python3 output-cost-20260923/apply_changes.py --revert
# 预期:已删除 ~/.trae-cn/user_rules/rule-agent-efficiency.md(备份未动)

# 回滚后复验:规则目标应不再存在,HANDOFF 备份与台账仍在
ls ~/.trae-cn/user_rules/rule-agent-efficiency.md   # 预期:No such file
python3 output-cost-20260923/verify_changes.py      # 预期:规则落地相关项转 FAIL,属回滚后的正常状态

# HANDOFF 正文如需一并恢复(本次不由实现体自动恢复,人工按需)
cp output-cost-20260923/backup/home/rain/Documents/services/token_proxy/docs/HANDOFF.md.bak.<时间戳> \
   docs/HANDOFF.md

说明:--revert 只删规则文件、不动备份(备份是「失败能回原点」的保障,由你对照台账自行清理)。 HANDOFF 的备份不作为自动回滚目标——它的正文由主 agent 修订,是否恢复由人决定。

8. 风险说明

风险 缓解
新增全局规则注入后,规则内容被误读、影响面超出预期 规则文件只约束执行方式,并在「边界」一节明确不以「省输出」为由违反串行依赖、必要验证与取证严谨性;回滚只需 --revert 一步
覆盖已存在的同名规则文件,丢失既有内容 实现体在目标存在且内容不同时直接报错退出,不覆盖、不猜测;本机该路径当前不存在(纯新增)
--revert 误删他人文件 删除前做双重校验:目标目录必须命中 ~/.trae-cn/user_rules/ 白名单、文件名必须为 rule-agent-efficiency.md,且内容仍等于源文件;非普通文件(符号链接)一律拒绝
本次落地触发前缀整段失效,旧会话内继续对话按次付费 见 4.1:改完立即开新会话,代价压到约 ¥0.03;不要在旧会话继续
文档与实现体漂移 第 5 章声明「以实现体为准」;核验脚本第 7 项以复跑实现体验证幂等,第 4 项校验内容一致性
台账与实际备份目录不一致 台账由实现体在备份成功后自动追加;核验脚本第 6 项逐条核对备份文件名是否已入账
A1 幂等判据曾误判(按「内容相同」比对) 验证阶段已修正为「backup 下已有本文件任一份 .bak 即跳过」。原因:HANDOFF 正文随后由主 agent 修订,内容必然变化,按内容比对会使修订后复跑重复备份、破坏「复跑零变更」判据(修正前核验 10/11,修正后 11/11)

附录 A:交付物清单

路径(相对项目根) 说明
output-cost-20260923/SOP.md 本文
output-cost-20260923/rule-agent-efficiency.md 规则源文件(写入源,逐字节复制到目标路径)
output-cost-20260923/提问对照卡.md 用户侧提问对照卡(M2)
output-cost-20260923/apply_changes.py 实现体(默认预演 / --apply / --revert)
output-cost-20260923/verify_changes.py 核验脚本(只读,11 项,退出码 0/非 0)
output-cost-20260923/backup/ HANDOFF 变更前备份 + README.md 台账
output-cost-20260923/logs/apply.log 实现体执行日志

落地目标(工程外):~/.trae-cn/user_rules/rule-agent-efficiency.md

附录 B:决策经过

  • 规则 vs 提问卡的分工:规则约束 Agent 侧(必然注入、无需用户配合),提问卡约束用户侧 (提问前自查)。两者都落盘,是因为实测显示浪费既来自执行方式也来自提问方式,缺一不可。
  • 实现体只备份 HANDOFF、不改其正文:HANDOFF 是交接快照,其修订需整体重写判断(由主 agent 按 writing-handoff 决定增量或重写),不属本实现体职责;实现体只保证「改前有档可回」。
  • 目标已存在且内容不同时拒绝覆盖:沿用 hooks-fix-20260923 的「不猜、不覆盖」原则;全局规则 目录属长期资产,静默覆盖的代价远高于一次人工核对。
  • 不写 .sh 交付:本次无需移交第三方手工执行,操作序列写进第 5 章即可。

2026-09-30 补充:任务提示词模板与澄清门槛

变更内容

  • 提问对照卡.md:在原有“目标 + 范围 + 停止条件”基础上,加入目标、范围、动作、约束、验收、停止、输出七项最小模板;说明哪些任务无需套完整模板,以及范围不明时的澄清写法。
  • 规则源与全局规则 ~/.trae-cn/user_rules/rule-agent-efficiency.md:增加“范围或验收不清时,只问一个最小澄清问题,不自行猜范围或开始探索”以及“用户明确只读时不修改、不创建交付物”两项约束。
  • 不新增自动提示词评分、不改日志采集;现有台账用于后续同类任务对照,当前结论标记为【经验】,尚未完成至少 3 个同类样本验证。

备份与回滚

修改前版本位于 output-cost-20260923/backup/,逐项见 output-cost-20260923/backup/README.md。如需回滚,分别将台账中的规则源及全局规则备份复制回各自原路径;提问卡可用版本管理或人工按需恢复。本次未修改代理配置或服务,无需重启代理。全局规则生效需在新会话中验证。

验证

核对规则源与全局规则逐字节一致;检查提问卡包含七项模板和澄清门槛;检查备份与台账文件均存在。成本效果待后续至少 3 个同类任务或可比样本评估,不据单日差异宣称有效。


来源:/home/rain/Documents/services/token_proxy/output-cost-20260923/SOP.md | 最后更新:2026-09-30 16:32(由 build/sync.py 同步,请勿在站点侧修改)