diff --git a/交付物/引用技能规则-体检报告-20260924.md b/交付物/引用技能规则-体检报告-20260924.md new file mode 100644 index 0000000..f92adc0 --- /dev/null +++ b/交付物/引用技能规则-体检报告-20260924.md @@ -0,0 +1,140 @@ +# 引用 / 技能 / 规则 —— 全面体检报告 + +> **体检时间**:2026-09-24 08:0x–08:2x **体检人**:会话 `整理收官1` +> **范围**:本工作区 `E:\ProgramData\AIProject\aliyun-dsh-server` + 文档库 `D:\github\dsh_shenxian\dsh-server-docs` + 用户级技能 `E:\ProgramData\.workbuddy\skills` +> **结论一句话**:**规则正常;引用与技能各有 1 类系统性缺陷,根因都是 09-23/09-24 的两次改名。** + +--- + +## 判定(首屏) + +| 维度 | 判定 | 依据 | +|---|---|---| +| **规则** | ✅ **正常** | 文档库自检四件套 rc=0/0/0/0;双端对账 289/289 一致 | +| **引用** | ❌ **不正常** | 工作区 09-23 20:12 由 `AI技能\` 改名为 `AIProject\`,**153 个文件仍写旧路径**(工作区 107 + 文档库 46) | +| **技能** | ❌ **不正常** | 库 ↔ 本机 12 个技能中 **8 个不一致(16 文件)**;根因 = 09-24 06:0x 批量改名**在 `08-skills/**` 内过度替换** | + +两处缺陷的共同特征:**都不是"少改",而是"改错了地方"** —— 静默生效、不做体检发现不了。 + +--- + +## 一、规则 —— ✅ 正常 + +| 检查 | 命令 | 结果 | +|---|---|---| +| 写死取值 / 跨页一致性 | `07-scripts/docs-consistency.py` | rc=0 · 承诺值与现行值一致 | +| 档案审计(8 项) | `07-scripts/docs-audit.py` | rc=0 · 无 P0;悬空档案号 0;无近重复 | +| 档案索引 | `07-scripts/docs-archive-index.py` | rc=0 · 档案 146 篇,表与 `INDEX.md` 一致 | +| 交接单状态 | `07-scripts/handoff-status.py` | rc=0 · 39 个单子,**无状态 0 个** | +| 双端对账(本地 ↔ 服务器 `/opt/dsh/docs`) | `07-scripts/docs-sync-check.sh` | rc=0 · **289 / 289 一致,不一致 0** | +| 常驻规则文件(`CODEBUDDY.md` / `.codebuddy/rules/*.md`) | 人工核对 | 结构完整;1 处旧路径(见 §2.1) | + +--- + +## 二、引用 —— ❌ 不正常 + +### 2.1 旧工作区路径残留(`E:\ProgramData\AI技能\` → `E:\ProgramData\AIProject\`) + +**事实**:`E:\ProgramData\AI技能\` 已于 **09-23 20:12 整体改名为 `E:\ProgramData\AIProject\`**(`ls` 实测旧目录 GONE、新目录 EXIST)。兄弟目录同步改名:`_tools` / `dsh-ai1net-github` / `dsh-ai1net-capability` / `_skill_归档_去AI味_20260920`。 + +**影响面:153 个文件**(`grep -rl "AI技能"`): + +| 位置 | 文件数 | 性质 | +|---|---|---| +| 工作区 `.workbuddy/memory/**` | 45 | 历史日志(append-only,**不改**) | +| 工作区 `归档/**` | 32 | 已归档过程件(**不改**) | +| 工作区 `docs/**` | 7 | 09-16 会话复盘副本(证据件,**不改**) | +| 工作区 `交付物/**` | 7 | 交付物档案(历史件) | +| 工作区 `.workbuddy/tools/**` | 4 | 🔴 **可执行脚本,硬编码旧路径 ⇒ 必改** | +| 工作区 `.workbuddy/待落地/**` | 2 | 🔴 脚本 + 命令 ⇒ **必改** | +| 工作区根(`CODEBUDDY.md` `README.md` + 3 接续入口 + 1 接续包) | 6 | 🔴 **每会话加载/开工依据 ⇒ 必改** | +| 工作区 `.workbuddy/session-sync/**` | 2 | 09-13 历史同步包(不改) | +| 工作区 `.workbuddy/*.log` `backups/*.db` | 2 | 日志 / DB 备份(不改) | +| 文档库 `05-交接单/**` | 21 | 历史单子(沿用「正文不回改」) | +| 文档库 `04-调整方案/**` | 8 | 过程档案(同上) | +| **文档库 `08-skills/**`** | **8** | 🔴 **命令模板 / 脚本常量 ⇒ 必改** | +| **文档库 `01-规范/**`** | **3** | 🔴 **规范正文 ⇒ 必改** | +| 文档库 `07-scripts/**` | 4 | 注释与 docstring(低危,但应对齐) | +| 文档库 `INDEX.md` `BRIEF.md` | 2 | 索引正文 ⇒ 应改 | + +**P0(功能引用,照着会失败)逐条**: + +| # | 文件 | 性质 | +|---|---|---| +| 1 | 工作区 `CODEBUDDY.md:61` | §2 指针里写死的 `state.py` 调用路径 | +| 2 | 工作区 `README.md:3,98` | 落位规则首行给的工作区自述路径 | +| 3 | 工作区 `.workbuddy/tools/find-session-by-title.py:58` | 转录目录名常量 `e-ProgramData-AI技能-…` | +| 4 | 工作区 `.workbuddy/tools/guard-replay.py:14` | `PROJ` 常量 | +| 5 | 工作区 `.workbuddy/tools/sess-credit-report.py:16` | `PROJ` 常量 | +| 6 | 工作区 `.workbuddy/tools/relay-transfer.sh:8` | 中转目录常量 | +| 7 | 工作区 `.workbuddy/待落地/verify-stop-hook.py:15` | `WS` 常量 | +| 8 | 工作区 `接续入口_IM线:377,585` / `接续入口_技能重组线:51,53` | 新会话口令与命令模板(会被逐字复制执行) | +| 9 | 文档库 `08-skills/dsh-auto-handoff-chain/SKILL.md:77` | 交接棒开工命令模板 | +| 10 | 文档库 `08-skills/dsh-env-bootstrap/scripts/resident-rules.py:45,70` | `DEFAULT_GOAL` / 工作区根常量 | +| 11 | 文档库 `08-skills/dsh-opensource-release/**`(SKILL.md 7 处 + 2 references) | 开源工作根 `E:\…\dsh-ai1net-github\`(被 5 个工具脚本常量引用) | +| 12 | 文档库 `01-规范/01-规划与架构.md` `03-路线图与待办.md` `06-工作台UI规范.md` | 规范正文里的工作区路径 | + +### 2.2 技能文档内的「过度替换」(09-24 06:0x 批量改名副作用) + +09-24 06:0x 那次「给文档库目录加序号前缀」(`scripts/`→`07-scripts/`、`skills/`→`08-skills/`、`规范/`→`01-规范/`、`交接单/`→`05-交接单/` …)**是纯子串替换,且跑遍了 `08-skills/**`** ⇒ 把**不属于文档库**的通用目录名一起改了。 + +**决定性证据**(存在性探针): + +| 库侧(错) | 本机侧(对) | 实测 | +|---|---|---| +| `bash 07-scripts/install-egress-guard.sh` | `bash scripts/install-egress-guard.sh` | 该脚本**在平台代码仓** `D:\github\dsh_shenxian\scripts\`;文档库 `07-scripts/` 下**没有** | +| `~/.workbuddy/08-skills/` | `~/.workbuddy/skills/` | 实测真实目录 = `E:\ProgramData\.workbuddy\skills\` | +| `/api/08-skills/shared` | `/api/skills/shared` | API 路径不含序号前缀(09-24 06:4x 已修过 1 处同类,是同一 bug 的漏网) | + +⇒ 判据:**「这条路径的目标到底属谁」** —— 属文档库 ⇒ 加前缀正确;属平台仓 / 技能自身 / 用户级技能目录 ⇒ **加前缀 = 改错了**。 + +--- + +## 三、技能 —— ❌ 不正常 + +**库 ↔ 本机 12 个技能,8 个不一致(16 个文件)**(归一化 md5,`\r\n`→`\n`): + +| 技能 | 异文件 | 库 mtime | 本机 mtime | +|---|---|---|---| +| `agent-operating-rules` | 3 | 09-24 06:05 | 09-22 06:46 | +| `dsh-auto-handoff-chain` | 1 | 09-24 06:03 | 09-23 22:02 | +| `dsh-change-workflow` | 4 | 09-24 06:03/05 | 09-22 07:32 | +| `dsh-decision-method` | 2 | 09-24 06:01 | 09-24 05:56 / 09-15 | +| `dsh-desktop-dev-shell` | 1 | 09-24 06:03 | 09-22 06:46 | +| `dsh-env-bootstrap` | 2 | 09-24 06:01/03 | 09-22 06:46 / 09-19 | +| `dsh-knowledge-upkeep` | 1 | 09-24 06:05 | 09-22 07:48 | +| `dsh-opensource-release` | 2 | 09-24 06:01 | 09-24 05:56 / 09-22 | +| 其余 4 个(`dsh-architecture-lifecycle` `dsh-feature-first` `dsh-instance-diagnose` `dsh-plugin-diagnose`) | 0 | — | ✅ 全同 | + +**方向判定**:16 个文件**全部是库侧较新**(09-24 06:0x),本机侧多为 09-22 ⇒ **不是"本机有新内容没回库",而是库侧 06:0x 那次改名改出了 §2.2 的过度替换**。 + +**因此这一类的修法不是"整体同步",而是逐文件判**: + +① 库侧重命名**正确**的行 ⇒ 同步到本机(把本机 09-22 的旧目录名更新) +② 库侧**过度替换**的行(§2.2)⇒ **回改成原字面**,⛔ 不许同步到本机 +③ 本机侧**新增内容**(如 `dsh-auto-handoff-chain` 本机虽旧但 §⑤ cwds 口径已过时——见下)⇒ 按现行事实对齐 + +**顺带发现 2 条技能内容本身已过时**(与改名无关): + +| 位置 | 现写 | 应为 | +|---|---|---| +| `dsh-auto-handoff-chain/SKILL.md` §⑤ | 「⛔ 只写反斜杠+大写盘符 `E:\ProgramData\AI技能\…`」 | 09-24 代码级实测推翻:去重键 = `path.trim().toLowerCase()`,**只小写、不统一斜杠** ⇒ 正解 = `E:/ProgramData/AIProject/aliyun-dsh-server`(**正斜杠**) | +| 同文件 §⑤ 判据行 | `python "E:/ProgramData/AI技能/aliyun-dsh-server/state.py"` | 旧路径,且与上面的「反斜杠」自相矛盾 | + +⚠️ 本条与工作区 `MEMORY.md` 状态层**打架** ⇒ 修技能时必须一并收敛到「判据 = 实测 `sessions.cwd`」。 + +--- + +## 四、处理(已定,交下一棒执行) + +**为什么不在本棒做完**:两处修复合计 **>160 个文件**,命中「批量改动 >10 文件」红线 + 其中技能一类**必须逐条判定**(不可机械替换)⇒ 超出本棒上下文预算。 + +**已定的处置口径**(下一棒照此执行,不需再问): + +1. **旧路径**:`E:\ProgramData\AI技能\` → `E:\ProgramData\AIProject\`,**只改 §2.1 表中的「必改」档**(工作区 12 件 + 文档库 15 件);`memory/` `归档/` `session-sync/` `05-交接单/` `04-调整方案/` **一律不回改**(历史件与已归档正文按既有纪律不动)。 +2. **过度替换**:**逐条按「目标属谁」判**(§2.2 判据),错的回改成原字面,对的同步到本机;**先跑 `07-scripts/docs-audit.py` 与存在性探针取证,再落盘**。 +3. **技能三处同步**:库 → 本机 → 服务器(`/opt/dsh/docs/08-skills`),三处归一化 md5 必须 12/12 全同后才算完;同时把 `dsh-auto-handoff-chain` §⑤ 的 cwds 口径改成实测正解。 +4. **验证**:文档库自检四件套 rc=0 + `docs-sync-check.sh` 双端 289/289 + 技能 12/12 全同。 +5. **纪律**:动文档库先抢锁(`--claim-exec`,域 = `05-交接单` `07-scripts` `08-skills` `01-规范`);⛔ 未获授权不 commit / 不 push。 + +**接续包**:`接续包_引用与技能纠偏_20260924.md`(工作区根) diff --git a/接续包_引用与技能纠偏_20260924.md b/接续包_引用与技能纠偏_20260924.md new file mode 100644 index 0000000..7a9e479 --- /dev/null +++ b/接续包_引用与技能纠偏_20260924.md @@ -0,0 +1,190 @@ +# 接续包 · 引用与技能纠偏 + +> **工作区**:`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 开工四步(顺序不可换) + +1. **跑状态**:`"E:/ProgramData/.workbuddy/binaries/python/versions/3.13.12/python.exe" "E:/ProgramData/AIProject/aliyun-dsh-server/state.py"` + ⇒ 只读**本线**那段;跑完之前 ⛔ 不许 Glob/Grep 全库摸底。 +2. **校验本包口径**:`md5sum 接续包_引用与技能纠偏_20260924.md` 必须 = **automation prompt 里给出的那个值**(本包**不自述 md5** —— 自述即自指,写进去就变;校验值一律放 prompt 与 automation 记忆)。 + 不符 ⇒ 停手报告「口径已更新,需重新接续」。 +3. **抢锁**(先判定再抢): + ``` + 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" + ``` + ⚠️ 动文档库**与走哪个工具无关** —— 即使只用 Edit / Write 也要先抢到锁。 + 💡 若判定当日已有会话在同域开工而抢不到 ⇒ **先做 §5-A(工作区侧,不占文档库锁)**,把不冲突的部分做完,最后一次性报告。 +4. **读库内 `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/会话与接续|插件与平台|调研与审计/**` | 5 | ⛔ 不改(09-16/09-10 证据件,改了等于伪造证据) | +| 工作区 `.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 | ⛔ 不改(过程档案不回改) | + +### 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` + +**复算命令**(一行,勿手写替代): +```bash +"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. 工作区侧(不占文档库锁,可先做) + +1. **A1 旧路径** —— 对 §3.1 表中标 🔴 的**工作区**条目(约 15 件)做 `AI技能` → `AIProject`: + ⚠️ 只替换**路径字面**;同文件里若出现「AI技能」是**目录名连字符化示例**(如 `extract-user-voice.py` 注释里的 `e-ProgramData-AI技能-…`)要**一并对齐**到新名(转录目录名会随工作区改名而变)。 + ⚠️ **逐文件落盘后立刻回读**(`grep -c "AI技能"` 应为 0)。 +2. **A2 单点验证再推广** —— 先取 **1 个**对象(建议 `README.md`)改完 → 回读 → 确认无副作用,再批量。 +3. **A3 收口回读** —— `grep -rl "AI技能" <工作区>` 应只剩 §3.1 标 ⛔ 的位置。 + +### B. 文档库侧(**先抢到锁**) + +1. **B1 引用纠偏(必改档 15 件)** —— 用 §3.1 清单,同 A1 的替换与回读纪律。 + ⚠️ 改 `08-skills/dsh-opensource-release/**` 时注意:其工作根 `E:\ProgramData\AIProject\dsh-ai1net-github\` 被 **5 个工具脚本常量**引用(`_build_export.py:13` `OUT` / `_verify_tsc.mjs:5` `EX` / `_sop_check.mjs:5` `_upload_audit.mjs:5` `_verify_all.mjs:5` `W`)⇒ 改文档前**先核实这 5 处常量现状**,若它们仍指旧路径则一并对齐(那属于别的线,**只报不动**)。 +2. **B2 过度替换回改(§2 判据 B)** —— 对 §3.2 的 16 个文件,**逐条**判定: + - 目标属文档库 ⇒ **库侧正确** ⇒ 记入「需同步到本机」清单 + - 目标属平台仓 / 用户级技能目录 / 技能自身 / API ⇒ **库侧错** ⇒ **回改成原字面** + 取证方式 = **存在性探针**(`ls` 目标路径)+ `git log -p` 看 09-24 06:0x 那次改动的原文: + ```bash + cd D:/github/dsh_shenxian/dsh-server-docs && git log --oneline -8 -- 08-skills + ``` +3. **B3 技能三处同步** —— B2 定完方向后:库 → 本机(`E:\ProgramData\.workbuddy\skills`)→ 服务器(`/opt/dsh/docs/08-skills`)。 + ⚠️ 服务器侧**本棒只报不改**(见 §4);若要同步,先确认是否已有他线在推。 +4. **B4 技能内容过时 2 条** —— 按 §3.3 改 `dsh-auto-handoff-chain/SKILL.md`。 + +### C. 收口(必做) + +1. `grep -rc "AI技能"` 复核 → 必改档残留 **0**。 +2. 技能复算(§3.2 命令)→ **12/12 且 0 差异**。 +3. 文档库自检四件套 + 对账: + ```bash + 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 + ``` + 期望:四个 rc=0 + 双端 289/289。 +4. **释放锁**:`handoff-guard.sh --release-exec` +5. 追加本包 §6 执行记录;工作区侧改动可 commit(**文档库侧 ⛔ 未获授权不 commit / 不 push**)。 + +--- + +## §6 执行记录(各棒追加) + +- **2026-09-24 08:2x|建包棒(会话 `整理收官1`)** —— 只做体检与建包,不落修复。产出:`交付物/引用技能规则-体检报告-20260924.md` 本包。规则已绿(四件套 rc=0 + 对账 289/289);引用与技能各 1 类缺陷已定位到判据与逐文件清单。