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。共四处改动:
- 「按下面三组逐条给出判定」→ 四组;
- 在 C 组表格之后插入 D 组(三项:子智能体 / 工具调用 / 大输出步)与「无相关动作时写一行『无』」;
- 取数命令块补两行注释:先取本会话
conv_key,再跑step_profile.py --conv; - 文件末尾修订注记追加「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同步,请勿在站点侧修改)