17 KiB
接续包 · 引用与技能纠偏
工作区:
E:\ProgramData\AIProject\aliyun-dsh-server线名:引用与技能纠偏线(承接「文档库结构治理」线的收官成果) 建包:2026-09-24 08:2x 建包会话:整理收官1本包地位:本线唯一依据。开工先读 §5(动作序列),§4 只读不动。
§0 一页速览
| 项 | 内容 |
|---|---|
| 目标 | 把「引用 / 技能 / 规则」三类面修到全部正常;规则已绿,本棒只修引用与技能两类 |
| 病根 1 | 工作区 09-23 20:12 由 AI技能\ 改名 AIProject\ ⇒ 153 文件仍写旧路径 |
| 病根 2 | 09-24 06:0x「文档库目录加序号前缀」批量改名在 08-skills/** 内过度替换 ⇒ 库 ↔ 本机 8 技能 / 16 文件不一致 |
| 本棒范围 | 只改「必改」档(工作区 15 件 + 文档库 15 件);历史件一律不动 |
| 验收 | 文档库自检四件套 rc=0 + 双端对账 289/289 + 技能三处归一化 md5 12/12 全同 + 「必改」档旧路径残留 0 |
| 体检报告 | 交付物/引用技能规则-体检报告-20260924.md(本包的证据来源,冲突以本包为准) |
§1 开工四步(顺序不可换)
- 跑状态:
"E:/ProgramData/.workbuddy/binaries/python/versions/3.13.12/python.exe" "E:/ProgramData/AIProject/aliyun-dsh-server/state.py"⇒ 只读本线那段;跑完之前 ⛔ 不许 Glob/Grep 全库摸底。 - 校验本包口径:
md5sum 接续包_引用与技能纠偏_20260924.md必须 = automation prompt 里给出的那个值(本包不自述 md5 —— 自述即自指,写进去就变;校验值一律放 prompt 与 automation 记忆)。 不符 ⇒ 停手报告「口径已更新,需重新接续」。 - 抢锁(先判定再抢):
⚠️ 动文档库与走哪个工具无关 —— 即使只用 Edit / Write 也要先抢到锁。 💡 若判定当日已有会话在同域开工而抢不到 ⇒ 先做 §5-A(工作区侧,不占文档库锁),把不冲突的部分做完,最后一次性报告。
bash D:/github/dsh_shenxian/dsh-server-docs/07-scripts/handoff-guard.sh --claim-exec "<你的会话名>" \ --domains "dsh-server-docs/08-skills" "dsh-server-docs/01-规范" "dsh-server-docs/07-scripts" "dsh-server-docs/INDEX.md" - 读库内
CODEBUDDY.md的「文档库结构与命名规则」章(违反即返工)。
§2 病根与判据(两条,必须分清)
判据 A —— 旧的工作区根路径
旧:E:\ProgramData\AI技能\aliyun-dsh-server(及兄弟 _tools / dsh-ai1net-github / dsh-ai1net-capability / _skill_归档_去AI味_20260920)
新:E:\ProgramData\AIProject\…(同名同级,仅顶层目录名变)
实测:E:\ProgramData\AI技能 GONE;E:\ProgramData\AIProject EXIST(mtime 09-23 20:12)。
判据 B —— 过度替换(本条最易误判)
09-24 06:0x 的批量改名是 纯子串替换,把不属于文档库的通用目录名也加了序号前缀:
| 目标属谁 | 正确写法 | 被误改成 |
|---|---|---|
| 文档库自己 | 07-scripts/ 08-skills/ 01-规范/ 05-交接单/ |
✅ 正确 |
平台代码仓 D:\github\dsh_shenxian\ |
scripts/ |
❌ 07-scripts/ |
用户级技能目录 E:\ProgramData\.workbuddy\ |
skills/ |
❌ 08-skills/ |
技能自身(如 短视频工作台/scripts/…,第三方技能库) |
scripts/ |
❌ 07-scripts/ |
| API / URL 路径 | /api/skills/shared |
❌ /api/08-skills/shared |
| 别的项目的约定目录名 | 规范/ 交接单/ |
❌ 01-规范/ 05-交接单/ |
决定性证据(存档,勿重做):
| 库侧(错) | 本机侧(对) | 探针结果 |
|---|---|---|
bash 07-scripts/install-egress-guard.sh |
bash scripts/install-egress-guard.sh |
脚本实体在 D:\github\dsh_shenxian\scripts\install-egress-guard.sh;文档库 07-scripts/ 下无此文件 ⇒ 本机对 |
~/.workbuddy/08-skills/ |
~/.workbuddy/skills/ |
实测真实目录 = E:\ProgramData\.workbuddy\skills\ ⇒ 本机对 |
/api/08-skills/shared |
/api/skills/shared |
09-24 06:4x 已修过同类 1 处(src/host/skills/plugin.ts)⇒ 同一 bug 的漏网 |
🔴 判据 = 「这条路径的目标到底属谁」 —— 不是看哪边"更新"。
§3 现成证据(⛔ 别重做,直接用)
3.1 旧路径影响面(grep -rl "AI技能")
| 位置 | 件数 | 处置 |
|---|---|---|
工作区 .workbuddy/tools/** |
4 | 🔴 改(脚本常量) |
工作区 .workbuddy/待落地/** |
2 | 🔴 改 |
工作区根 CODEBUDDY.md README.md 3 接续入口 1 接续包 |
6 | 🔴 改 |
工作区 交付物/** |
7 | 2 件改(插件建库权限-一次性执行.sh 等可执行件)/5 件档案不改 |
工作区 docs/覆盖网络/** |
2 | 🔴 改(活参数表 + 活跃方案) |
| 工作区 `docs/会话与接续 | 插件与平台 | 调研与审计/**` |
工作区 .workbuddy/memory/** |
45 | ⛔ 不改(append-only) |
工作区 归档/** .workbuddy/session-sync/** *.log backups/*.db |
34 | ⛔ 不改 |
文档库 08-skills/** |
8 | 🔴 改(命令模板 + 脚本常量) |
文档库 01-规范/** |
3 | 🔴 改(规范正文) |
文档库 07-scripts/** |
4 | 🔴 改(docstring / 注释,应对齐) |
文档库 INDEX.md BRIEF.md |
2 | 🔴 改 |
文档库 05-交接单/** |
21 | ⛔ 不改(正文不回改) |
文档库 04-调整方案/** |
8 | ⛔ 不改(过程档案不回改) |
本包 + 交付物/引用技能规则-体检报告-20260924.md |
2 | ⛔ 不改(正文里 AI技能 是旧名的叙述,不是待执行路径) |
🔎 验收口径:§5-C 第 1 条「必改档残留 0」不含上表 ⛔ 档,也不含本包与体检报告这份「叙述旧名」的两件 —— 统计时请用 §3.1 的逐条清单,⛔ 别用
grep -rl的全量计数(全量必然不是 0)。
3.2 技能库 ↔ 本机 差异(8 技能 / 16 文件,库侧全部较新 = 09-24 06:0x)
agent-operating-rules/SKILL.md, references/02-工作区纪律.md, references/03-多棒接力编排.md
dsh-auto-handoff-chain/SKILL.md
dsh-change-workflow/references/03-沙箱与技能机制.md, 05-插件与数据源口径.md,
06-实例可见面与共享边界.md, 08-浏览器验证栈详解.md
dsh-decision-method/references/素材库-A-AI推理.md, 素材库-U-用户决策.md
dsh-desktop-dev-shell/SKILL.md
dsh-env-bootstrap/SKILL.md, scripts/resident-rules.py
dsh-knowledge-upkeep/references/10-技能重组-千行技能拆分.md
dsh-opensource-release/references/01-保留移除与脱敏口径.md, 03-实测坑.md
✅ 全同(不动):dsh-architecture-lifecycle dsh-feature-first dsh-instance-diagnose dsh-plugin-diagnose
复算命令(一行,勿手写替代):
"E:/ProgramData/.workbuddy/binaries/python/versions/3.13.12/python.exe" - <<'PY'
import os,hashlib
L=r"D:/github/dsh_shenxian/dsh-server-docs/08-skills"; H=r"E:/ProgramData/.workbuddy/skills"
def t(r):
d={}
for dp,_,fs in os.walk(r):
for f in fs:
p=os.path.join(dp,f); d[os.path.relpath(p,r).replace('\\','/')]=hashlib.md5(open(p,'rb').read().replace(b'\r\n',b'\n')).hexdigest()
return d
for n in sorted(x for x in os.listdir(L) if os.path.isdir(os.path.join(L,x))):
a,b=t(os.path.join(L,n)),t(os.path.join(H,n))
bad=[k for k in set(a)&set(b) if a[k]!=b[k]]
print(("✅" if not bad and set(a)==set(b) else "⚠️"),n,len(bad))
PY
3.3 技能内容本身也过时 2 条(与改名无关,顺手一起收敛)
| 位置 | 现写 | 应为(判据 = 实测 sessions.cwd) |
|---|---|---|
dsh-auto-handoff-chain/SKILL.md §⑤ |
「⛔ 只写反斜杠+大写盘符」 | 09-24 代码级实测:去重键 = path.trim().toLowerCase()(只小写、不统一斜杠)⇒ 正解 = E:/ProgramData/AIProject/aliyun-dsh-server(正斜杠) |
| 同文件 §⑤ 判据行 | python "E:/ProgramData/AI技能/aliyun-dsh-server/state.py" |
旧路径,且与本文件上一行「反斜杠」自相矛盾 ⇒ 一并改 |
⚠️ 本条与工作区 MEMORY.md 状态层已一致(MEMORY 已是新口径)⇒ 要改的是技能,不是 MEMORY。
§4 只报告不动(本棒不改)
- 工作区根 4 条接续入口 + 2 份接续包的内容质量(是否有过时结论)—— 只登记,不改。
05-交接单/**04-调整方案/**内旧路径 —— 按「正文不回改」纪律,只统计不回改。- 服务器
/opt/dsh/docs侧:本棒不动服务器(双端对账保持 289/289 即可);若 §5-B 改了库而需要推镜像,只报不改,另排一棒。
§5 动作序列(本棒唯一要做的)
A. 工作区侧(不占文档库锁,可先做)
- A1 旧路径 —— 对 §3.1 表中标 🔴 的工作区条目(约 15 件)做
AI技能→AIProject: ⚠️ 只替换路径字面;同文件里若出现「AI技能」是目录名连字符化示例(如extract-user-voice.py注释里的e-ProgramData-AI技能-…)要一并对齐到新名(转录目录名会随工作区改名而变)。 ⚠️ 逐文件落盘后立刻回读(grep -c "AI技能"应为 0)。 - A2 单点验证再推广 —— 先取 1 个对象(建议
README.md)改完 → 回读 → 确认无副作用,再批量。 - A3 收口回读 ——
grep -rl "AI技能" <工作区>应只剩 §3.1 标 ⛔ 的位置。
B. 文档库侧(先抢到锁)
- B1 引用纠偏(必改档 15 件) —— 用 §3.1 清单,同 A1 的替换与回读纪律。
⚠️ 改
08-skills/dsh-opensource-release/**时注意:其工作根E:\ProgramData\AIProject\dsh-ai1net-github\被 5 个工具脚本常量引用(_build_export.py:13OUT/_verify_tsc.mjs:5EX/_sop_check.mjs:5_upload_audit.mjs:5_verify_all.mjs:5W)⇒ 改文档前先核实这 5 处常量现状,若它们仍指旧路径则一并对齐(那属于别的线,只报不动)。 - B2 过度替换回改(§2 判据 B) —— 对 §3.2 的 16 个文件,逐条判定:
- 目标属文档库 ⇒ 库侧正确 ⇒ 记入「需同步到本机」清单
- 目标属平台仓 / 用户级技能目录 / 技能自身 / API ⇒ 库侧错 ⇒ 回改成原字面
取证方式 = 存在性探针(
ls目标路径)+git log -p看 09-24 06:0x 那次改动的原文:
cd D:/github/dsh_shenxian/dsh-server-docs && git log --oneline -8 -- 08-skills - B3 技能三处同步 —— B2 定完方向后:库 → 本机(
E:\ProgramData\.workbuddy\skills)→ 服务器(/opt/dsh/docs/08-skills)。 ⚠️ 服务器侧本棒只报不改(见 §4);若要同步,先确认是否已有他线在推。 - B4 技能内容过时 2 条 —— 按 §3.3 改
dsh-auto-handoff-chain/SKILL.md。
C. 收口(必做)
grep -rc "AI技能"复核 → 必改档残留 0。- 技能复算(§3.2 命令)→ 12/12 且 0 差异。
- 文档库自检四件套 + 对账:
期望:四个 rc=0 + 双端 289/289。
cd D:/github/dsh_shenxian/dsh-server-docs for s in docs-consistency.py docs-audit.py docs-archive-index.py handoff-status.py; do "E:/ProgramData/.workbuddy/binaries/python/versions/3.13.12/python.exe" "07-scripts/$s" >/dev/null 2>&1; echo "$s rc=$?"; done bash 07-scripts/docs-sync-check.sh | tail -6 - 释放锁:
handoff-guard.sh --release-exec - 追加本包 §6 执行记录;工作区侧改动可 commit(文档库侧 ⛔ 未获授权不 commit / 不 push)。
§6 执行记录(各棒追加)
- 2026-09-24 08:2x|建包棒(会话
整理收官1) —— 只做体检与建包,不落修复。产出:交付物/引用技能规则-体检报告-20260924.md本包。规则已绿(四件套 rc=0 + 对账 289/289);引用与技能各 1 类缺陷已定位到判据与逐文件清单。 - 2026-09-24 08:1x–08:5x|执行棒(会话
引用纠偏1) —— §5 全做完,锁已释放。 ① 开工四步:state.py✅|本包 md5 =ab17bde7bb65782d10be7d122546a8c5相符 ✅|抢锁成功(4 域:08-skills/01-规范/07-scripts/INDEX.md)✅|库内CODEBUDDY.md「文档库结构与命名规则」章已读 ✅。 ② A 工作区侧(16 件,逐文件):CODEBUDDY.md|README.md|接续入口_IM线(12 处)|接续入口_技能重组线(2)|接续入口_插件投放与分库线(1)|接续包_文档库治理_20260923.md(2)|.workbuddy/tools/{find-session-by-title,guard-replay,sess-credit-report}.py + relay-transfer.sh(含连字符化转录目录名e-ProgramData-AI技能-…一并对齐)|.workbuddy/待落地/{verify-stop-hook.py,重启后待办.md}|docs/覆盖网络/{参数表,设备登录接入方案}|交付物/{插件建库权限-一次性执行.sh, DB修复-workbuddy.db损坏诊断与方案}.md⇒ 该 16 件grep -c "AI技能"全 = 0;单点验证先做README.md再推广。 ⚠️ 口径与 §3.1 的两处差异(以实测为准):ⓐ 工作区「必改档」实测 16 件(§3.1 写 12 件,未含docs/覆盖网络2 +交付物2);ⓑ交付物/**实测 9 件含旧路径(非 7),按「含可执行命令者改」判 2 件改 / 7 件不改(不改的含体检报告本身)。 ③ B 文档库侧:- B1 引用纠偏:
08-skills8 +07-scripts4 +01-规范2(01-规划与架构.md改到现真源D:/github/dsh_shenxian/dsh-server-docs/;06-工作台UI规范.md3 处)+INDEX.md+BRIEF.md= 16 件落地。 - B2 过度替换回改:逐条按「目标属谁」判 + 存在性探针。库侧错 ⇒ 回改 12 件:
/api/skills/{shared,mine}、~/.workbuddy/08-skills/、DSH_HOME的skills/、presets/<p>/skills/、技能自身scripts/(短视频工作台/split_skill.py/chain_report.py/resident-rules.py)、官方仓native/system/scripts/+apps/desktop/scripts/、平台仓scripts/(探针:install-egress-guard.sh/install-python-runtime.sh/install-shared-tools.sh/runtime-baseline.cjs/verify-inject.cjs/verify-dsh-install.mjs全部只在D:\github\dsh_shenxian\scripts\)。库侧对 ⇒ 补到本机 4 件:05-交接单/、01-规范/06-工作台UI规范、bash 07-scripts/handoff-guard.sh、07-scripts/extract-user-voice.py(探针:handoff-guard.sh只在文档库07-scripts/)。 - B3 三处同步:本机
~/.workbuddy/skills↔ 库08-skills12/12 md5 全同 · 0 差异(方向 = 本机为工作副本 ⇒ 推库,符合库内 README 的「单向推进 本机 → 此处」口径;库侧 06:0x 那批改动内容上仅「改名」一处,未丢内容;dsh-auto-handoff-chain库侧为 09-21 旧版 ⇒ 以本机 09-23 新版为准)。服务器/opt/dsh/docs/08-skills按 §4 只报不改。 - B4 技能内容 2 条:
dsh-auto-handoff-chain/SKILL.md律⑤ 改为「只写与手动开会话 cwd 逐字同形;判据 = 实测sessions.cwd;当前正解 =E:/ProgramData/AIProject/aliyun-dsh-server(正斜杠)」+ 标题行/判据行/自查行 + 🔴 frontmatterdescription同步改(依据该文件自身「教训二:改路径字面必须枚举全部复制面,漏description⇒ 曝光度最高」);§⑤ 判据行命令路径同步AI技能→AIProject。version未动(仍 1.7.2)。 ④ C 收口:四件套 rc=0 ×4 ✅|技能复算 12/12 · 0 差异 ✅|旧路径「活路径」残留 0;保留 12 处历史叙述(dsh-auto-handoff-chain6:污染源/迁移对照/连字符化示例|dsh-opensource-release/SKILL.md2:frontmatter 版本历史 + 用户原话引用|dsh-change-workflow/references/00-平台速查.md1:勘误引述旧文|01-规范/03-路线图与待办.md3:历史迁移条目)—— 判据 = 「照着做会失败的活路径」改、「记录当时事实」不改。🔴 对账 = 文件数 289/289 一致,但内容 263/289(26 件不一致 = 本次改库而按 §4 未推服务器的必然结果)。锁已--release-exec释放。 ⚠️ 本棒不改、只报(§4):ⓐ 推镜像 26 件到/opt/dsh/docs(清单见对账输出)ⓑE:\ProgramData\AIProject\dsh-ai1net-github\5 常量 + 1 命令模板仍指旧根(_build_export.py:14,763|_verify_tsc.mjs:5|_sop_check.mjs:5|_upload_audit.mjs:5|_verify_all.mjs:5)⇒ 旧根已 GONE、这些脚本现已失效,属别的线 ⓒ 服务器08-skills落后本机一版。 🔧 工具教训(可复用):改同一文件的多处字符串时,必须先把所有替换聚合到内存再一次写盘 —— 逐条open(...,"wb")会让后一条覆盖前一条(本轮首跑即踩,52 项写入只生效每文件最后一项,靠12/12复算才发现)。配套:命中数断言 + 幂等(count==0 且新串已在⇒ 跳过重跑)。
- B1 引用纠偏: