跳转至

SOP:收尾自查新增 D 组「工具与子智能体」

主题:selfcheck-d-20261002 | 变更类型:C 类(改全局规则,进每轮 system 前缀) 备份台账:~/.trae-cn/user_rules/backup/README.md(全局规则统一台账,非本目录) 相关:~/.trae-cn/user_rules/rule-agent-efficiency.md

1. 背景

收尾自查此前为 A 效率 / B 成本 / C 积累三组(2026-10-01 二修定型)。用户的另两项效率手段 ——子智能体做上下文隔离(ctx-scout)与工具调用合并取数(step_profile.py 画像) ——只写在 HANDOFF 与 skill 里,没有验收方:用了没、有没有该用而未用、有没有该合并的碎步, 全凭自觉。故补一组,使这两项在每轮收尾时被显式判定。

2. 目标

  • 收尾自查由三组扩为四组,新增 D 组「工具与子智能体」,含三项: 子智能体调用与「漏用」、工具调用(重复读 DUP / 可合并只读组 / 单轮最多步)、大输出步;
  • 取数与现有 selfcheck.py 共用一条命令,不新增步数;
  • D 组无相关动作时可写一行「无」,但不得缺席。

3. 前置条件

项 要求
权限 以 rain 用户改写 ~/.trae-cn/user_rules/rule-agent-efficiency.md,无需 sudo
依赖 token_proxy/cost_audit/step_profile.py、cost_audit/selfcheck.py 存在且可运行
数据 logs/usage.jsonl(会话与步序列)、logs/req_shape.jsonl(含 shape.tool_names)
意识 该文件进每轮 system 前缀,改完必须开新会话

4. 影响范围

  • 主机:仅本机(rain),单机。
  • 组件:仅 rule-agent-efficiency.md 一个文件;不触碰代理、Hook、其它规则文件。
  • 是否停服:否。窗口期:无(对在途会话立即生效,代价是当轮前缀重建)。
  • 用户可感变化:每轮收尾答复多一个 D 组(正常情形为 2~3 行)。

5. 分步操作

步骤 1:备份(高危前置)

规则文件进每轮前缀,改错会影响所有后续会话,先备份再改。

cd ~/.trae-cn/user_rules
TS=$(date +%Y%m%d-%H%M%S)
cp -p rule-agent-efficiency.md "backup/rule-agent-efficiency.md.bak.$TS"
chmod 600 "backup/rule-agent-efficiency.md.bak.$TS"
ls -l backup/

预期:列出新备份,权限 -rw-------。 失败判断:目录或文件不存在 → 终止,不要继续编辑。

步骤 2:改写「收尾自查(硬门禁)」小节

文件:~/.trae-cn/user_rules/rule-agent-efficiency.md。共四处改动:

  1. 「按下面三组逐条给出判定」→ 四组;
  2. 在 C 组表格之后插入 D 组(三项:子智能体 / 工具调用 / 大输出步)与「无相关动作时写一行『无』」;
  3. 取数命令块补两行注释:先取本会话 conv_key,再跑 step_profile.py --conv;
  4. 文件末尾修订注记追加「2026-10-02 三修」说明。

坑:step_profile.py 的 --date 只在 --conv 分支生效(--top 排名会忽略它), 因此取数命令必须用 --conv,不能写成 --date ... --top N——否则拿到的是全库排名而非本会话数据 (本次实测踩到并已改正)。

grep -n "D\. 工具与子智能体" ~/.trae-cn/user_rules/rule-agent-efficiency.md
grep -n "step_profile.py --conv" ~/.trae-cn/user_rules/rule-agent-efficiency.md

预期:两条均命中各 1 处。 失败判断:未命中 → 编辑未落盘,重做步骤 2。

步骤 3:登记备份台账

在 ~/.trae-cn/user_rules/backup/README.md 表格追加一行(备份文件 / 原路径 / 时间 / 原因 / 回滚内容 / 何时可删)。

tail -3 ~/.trae-cn/user_rules/backup/README.md

预期:末行含本次备份文件名与「D 组」字样。

6. 验证

# ① 规则文件含 D 组与正确取数命令
grep -c "工具与子智能体\|step_profile.py --conv" ~/.trae-cn/user_rules/rule-agent-efficiency.md
# ② 文件完整(首行标题、无截断)
head -1 ~/.trae-cn/user_rules/rule-agent-efficiency.md; wc -l ~/.trae-cn/user_rules/rule-agent-efficiency.md
# ③ D 组取数命令可用(本会话视角,实测有输出)
cd ~/Documents/services/token_proxy
C=$(python3 -c "import json;print(json.loads(open('logs/usage.jsonl').read().splitlines()[-1])['conv_key'])")
python3 cost_audit/step_profile.py --conv "$C" | tail -6

预期:① 计数 ≥2;② 首行为 # 执行效率与输出成本约束;③ 末段输出「重复读 / 大输出步 / 单轮最多步」。

生效判据:开新会话后,收尾答复中出现 D 组;只在本会话验证不算生效(规则进每轮前缀, 需新会话重新加载)。

7. 回滚

备份位置:~/.trae-cn/user_rules/backup/rule-agent-efficiency.md.bak.20261002-194636(权限 600), 清单见 ~/.trae-cn/user_rules/backup/README.md。

cp -p ~/.trae-cn/user_rules/backup/rule-agent-efficiency.md.bak.20261002-194636 \
      ~/.trae-cn/user_rules/rule-agent-efficiency.md
grep -c "D\. 工具与子智能体" ~/.trae-cn/user_rules/rule-agent-efficiency.md   # 预期 0

更轻的回滚:只删除 D 组表格与其取数注释(保留三组结构)。回滚后需再开一次新会话 (该文件进每轮前缀)。

8. 风险说明

风险 缓解
规则文件被写坏(进每轮前缀,影响所有会话) 先备份;改后 grep 校验关键串;发现异常立即按第 7 章覆盖回滚
新会话前误以为已生效 第 6 章写明「只在本会话验证不算生效」
收尾答复变长、输出成本上升 D 组限 3 行,无相关动作写「无」;取数与 selfcheck 共用一条命令,不增步数
取数命令指向错误数据(--date 陷阱) 命令固定用 --conv,并在第 5 章留痕说明原因
子智能体调用统计口径有限 tool_names 仅覆盖部分步(全库 12148 条中 150 条有值);故 D 组以人判读为主,Task 计数仅作辅助证据,不得当作全覆盖统计

来源:/home/rain/Documents/services/token_proxy/selfcheck-d-20261002/SOP.md | 最后更新:2026-10-02 19:48(由 build/sync.py 同步,请勿在站点侧修改)