跳转至

SOP:过账结构治理(挂账 21 → 6,含阈值计数口径修正)

主题目录:backlog-review-20261007/|变更日期:2026-10-07|用户主动要求过账(非 Hook 提醒)

1. 背景

  1. 挂账虚高触发空转:optimization-backlog.md 第一节「挂账」累计 21 项 ≥ 20 闸值, SessionStart Hook 会每个会话注入 [过账提醒],但其中 13 项是判据型(判据早已写进规则 / skill, 没有独立交付物)——它们既"做不掉",又让计数长期虚高,提醒反复空转。
  2. 两项已被他处关闭:原第一节 #34 / #35(slurm_ins 逐条下发 / 重复探测)2026-10-07 已由该工程侧落地 (dedupe_probe_20261007/、parallel_probe_20261007/、sync_status_concurrency_20261007/、conn_reuse_20261007/,主部署器 07:24~07:32 改完),总账未同步。
  3. 本会话新增两项可登记成果:工具执行埋点、上游生成侧耗时字段;另有 1 条认知被证伪(hooks.json 免重启)。

2. 目标

  1. 第一节拆为 1.1 待办型(有交付物、可执行)与 1.2 判据型(已入规则、无交付物); 过账阈值只数 1.1,session-start-inject.py 的 _backlog_count 同步改口径(含旧格式回退);
  2. 关闭 #34 / #35(移入第二节「已做」,注明依据);#33 移入第五节「待标定」;
  3. 登记已做 #36 / #37、新增已证伪 #9、新增待标定 #38 / #39;
  4. 第四节补一条过账记录;收敛判据(关闭 ≥ 新增)满足。

3. 前置条件

  • 可写 ~/.trae-cn/skills/ops-execution-efficiency/references/optimization-backlog.md 与 sessionstart-hook/session-start-inject.py;
  • python3 可用;
  • 改 hook 脚本前必须备份(它影响每个会话的注入)。

4. 影响范围

项 说明
涉及对象 全局优化总账(被 session-start-inject.py 读取)、SessionStart Hook 脚本
是否停服 否,无停服、无窗口要求;改脚本后下一次会话启动即按新口径判定(脚本每次启动时执行)
影响面 ① 计数 21 → 6,阈值不再触发,提醒停止空转;② 总账结构变化,人工阅读路径改变(1.1 / 1.2)
不受影响 三锚点(## 一、挂账 / ## 二、 / ## 四、过账记录)保持原位,解析逻辑不失效

5. 分步操作

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

TS=$(date +%Y%m%d-%H%M%S)
D=~/Documents/services/token_proxy/backlog-review-20261007/backup/home/rain/.trae-cn/skills/ops-execution-efficiency/references
mkdir -p "$D"
cp -p ~/.trae-cn/skills/ops-execution-efficiency/references/optimization-backlog.md "$D/optimization-backlog.md.bak.$TS"
cp -p ~/Documents/services/token_proxy/sessionstart-hook/session-start-inject.py \
      ~/Documents/services/token_proxy/backlog-review-20261007/backup/home/rain/Documents/services/token_proxy/sessionstart-hook/session-start-inject.py.bak."$TS"

预期:两条 *.bak.<时间戳> 生成(总账约 30 KB、脚本约 15 KB)。

步骤 2:总账拆节与登记

坑:拆分不得移动三锚点标题(## 一、挂账 / ## 二、 / ## 四、过账记录), Hook 靠它们定位;只在其内部新增 ### 1.1 / ### 1.2 子标题与搬移表格行。

改动五处: 1. 头部加「分类说明」(1.1 / 1.2 的定义与动因); 2. 第一节原 21 行重组:1.1 留 #3 / #4 / #27 / #29 / #32 + 由第二节迁入的「改-验循环提醒」(现 #35); 1.2 收 #5 / #6 / #7 / #10 / #11 / #12 / #13 / #14 / #15 / #16 / #17 / #18 / #20(13 项); 3. 第二节新增已做 #36(工具执行埋点)/ #37(上游耗时字段)/ #38(slurm_ins 四改,原 #34 / #35); 4. 第三节新增已证伪 #9(hooks.json 须重启 → 推翻); 5. 第五节新增待标定 #33(TTL 边界,由第一节迁入)/ #38(三段占比与生成速率)/ #39(Edit 合并收益); 6. 第四节追加 2026-10-07 过账记录行。

cd ~/.trae-cn/skills/ops-execution-efficiency/references
grep -n "^## \|^### " optimization-backlog.md          # 预期:一/1.1/1.2/二/三/四/五 六节齐全
grep -c "^| [0-9]" optimization-backlog.md              # 各节合计(与拆分前对比看搬移是否完整)

预期:## 一、挂账 之后紧跟 ### 1.1 待办型 与 ### 1.2 判据型; grep -c "^| [0-9]" 的总数在拆分前后应一致(只搬位置、不增删行,新增的 #36~#39 与 #9 属预期增量)。

步骤 3:改计数口径(Hook 脚本)

_backlog_count() 由「数 ## 一、挂账 整节」改为「数 ### 1.1 待办型 子节」, 并保留旧格式回退(找不到 1.1 标题时退回整节计数),保证总账未升级时判据不失效。

坑:_section(text, start, end) 取的是 start 标记之后到 end 标记之前的内容—— 故 1.1 的区间写作 _section(text, "### 1.1 待办型", "### 1.2"),正好覆盖表头与数据行、不含 1.2。

cd ~/Documents/services/token_proxy
python3 -m py_compile sessionstart-hook/session-start-inject.py && echo "语法通过"
sed -n '229,245p' sessionstart-hook/session-start-inject.py      # 预期:见 1.1 区间 + 回退分支

步骤 4:验证(离线,不必开会话)

cd ~/Documents/services/token_proxy && python3 - <<'PY'
import importlib.util, os, re
spec = importlib.util.spec_from_file_location("inj", "sessionstart-hook/session-start-inject.py")
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m)
led = os.path.expanduser("~/.trae-cn/skills/ops-execution-efficiency/references/optimization-backlog.md")
text = open(led, encoding="utf-8").read()
old = len(re.findall(r"^\|\s*\d+\s*\|", m._section(text, "## 一、挂账", "## 二、"), re.M))
print("新口径 %d | 旧口径 %d" % (m._backlog_count(text), old))
print("回退路径 %d" % m._backlog_count("## 一、挂账\n\n| 1 | a |\n| 2 | b |\n\n## 二、x"))
print("提醒", m._review_notice())
PY

预期:新口径 6 | 旧口径 19、回退路径 2、提醒 None。 失败判断:新口径仍 ≥20 → 1.1 子标题未生效(核对标题字面量是否为 ### 1.1 待办型); 报 AttributeError → 脚本被改坏,走第 7 章回滚。

6. 验证

层级 命令 预期
语法 python3 -m py_compile sessionstart-hook/session-start-inject.py 无输出
计数口径 步骤 4 的脚本 新 6 / 旧 19 / 回退 2
阈值行为 同上(_review_notice()) None(挂账 6 < 20,且今日已过账)
端到端 python3 sessionstart-hook/session-start-inject.py < /dev/null \| head -2 正常输出「请全程用中文思考和回答。」+ HANDOFF 全文
结构 grep -n "^## \|^### " optimization-backlog.md 三锚点位置未变,新增 1.1 / 1.2 两个子标题

7. 回滚

备份位置: - backlog-review-20261007/backup/home/rain/.trae-cn/skills/ops-execution-efficiency/references/optimization-backlog.md.bak.20261007-074318 - backlog-review-20261007/backup/home/rain/Documents/services/token_proxy/sessionstart-hook/session-start-inject.py.bak.20261007-074448

台账见 backup/README.md。

# 还原总账
cp -p ~/Documents/services/token_proxy/backlog-review-20261007/backup/home/rain/.trae-cn/skills/ops-execution-efficiency/references/optimization-backlog.md.bak.20261007-074318 \
      ~/.trae-cn/skills/ops-execution-efficiency/references/optimization-backlog.md
# 还原 Hook 脚本
cp -p ~/Documents/services/token_proxy/backlog-review-20261007/backup/home/rain/Documents/services/token_proxy/sessionstart-hook/session-start-inject.py.bak.20261007-074448 \
      ~/Documents/services/token_proxy/sessionstart-hook/session-start-inject.py
python3 -m py_compile ~/Documents/services/token_proxy/sessionstart-hook/session-start-inject.py && echo "回滚后语法通过"

回滚后验证:_backlog_count 回到整节口径(21)、_review_notice() 重新返回提醒文本(挂账 ≥20)。 两者必须同时回滚——只回滚其一会出现「脚本按 1.1 数、总账没 1.1 标题」的组合, 虽然回退分支能兜住(退回整节计数),但语义已不一致。

8. 风险说明

风险 缓解
改 Hook 脚本影响每个会话的注入 改动局限在 _backlog_count 一个函数;_review_notice 整体 try/except 静默;步骤 4 的端到端实跑已验证
总账解析失效(锚点被移动) 三锚点位置未动,仅在其内部加子标题;步骤 6 的 grep -n "^## " 复核
计数为 0 导致阈值永不触发 回退分支保证旧格式仍可数;另 _review_notice 保留「距上次过账 ≥7 天」这一独立触发条件
判据型被误判为"已做" 1.2 节头部写明「无独立交付物、效果未标定前不动」,且其效果项单列在第五节
过账结论与事实不符(如 #34/#35 实际未做完) 已按 slurm_ins 侧四个 10-07 档案与主部署器改动时间取证;若实际未覆盖,回滚该两行即可

附录:交付物清单

文件 说明
optimization-backlog.md(改) 第一节拆分 + 登记 6 处
session-start-inject.py(改) _backlog_count 改口径 + 回退分支
backlog-review-20261007/SOP.md 本文档
backlog-review-20261007/backup/ 两个文件备份与台账

来源:/home/rain/Documents/services/token_proxy/backlog-review-20261007/SOP.md | 最后更新:2026-10-07 07:45(由 build/sync.py 同步,请勿在站点侧修改)