Files
dsh_ai1net_server/接续包_引用与技能纠偏_20260924.md
T

213 lines
19 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 接续包 · 引用与技能纠偏
> **工作区**:`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 | ⛔ 不改(过程档案不回改) |
| 本包 + `交付物/引用技能规则-体检报告-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`
**复算命令**(一行,勿手写替代):
```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 类缺陷已定位到判据与逐文件清单。
- **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-skills` 8 + `07-scripts` 4 + `01-规范` 2(`01-规划与架构.md` 改到现真源 `D:/github/dsh_shenxian/dsh-server-docs/`;`06-工作台UI规范.md` 3 处)+ `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-skills` **12/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`(正斜杠)**」+ 标题行/判据行/自查行 + 🔴 **frontmatter `description` 同步改**(依据该文件自身「教训二:改路径字面必须枚举全部复制面,漏 `description` ⇒ 曝光度最高」);§⑤ 判据行命令路径同步 `AI技能`→`AIProject`。`version` 未动(仍 1.7.2)。
**④ C 收口**:四件套 **rc=0 ×4** ✅|技能复算 **12/12 · 0 差异** ✅|旧路径「活路径」残留 **0**;**保留 12 处历史叙述**(`dsh-auto-handoff-chain` 6:污染源/迁移对照/连字符化示例|`dsh-opensource-release/SKILL.md` 2:frontmatter 版本历史 + 用户原话引用|`dsh-change-workflow/references/00-平台速查.md` 1:勘误引述旧文|`01-规范/03-路线图与待办.md` 3:历史迁移条目)—— 判据 = 「照着做会失败的活路径」改、「记录当时事实」不改。🔴 **对账 = 文件数 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 且新串已在` ⇒ 跳过重跑)。
- **2026-09-24 08:35–08:5x|执行棒补修(同会话 `引用纠偏1`;用户令「需要修改的地方都修改」⇒ 上一轮标「只报不改」的两项解禁)**
- **① 推镜像到服务器**(原 §4「服务器只报不改」):26 件(`08-skills` 20 + `07-scripts` 4 + `01-规范` 2 + `INDEX.md`/`BRIEF.md`)用 **`ssh bt-server "cat > <目标>"`**(不动服务器侧属性)推送 ⇒ **对账 289/289 · 双端一致 ✅**(原 263/289、26 件不一致);**服务器侧权限经实证保持 `root:root 600`**(`ls -l` = `-rw------- 1 root root`)。
- **② `dsh-ai1net-github` 开源工作根旧根常量**(原标「属别的线,只报不动」):`AI技能`→`AIProject`,**范围判据 = 可执行脚本 + json 配置**(`.py/.mjs/.js/.cjs/.sh/.json`)⇒ 落地 **54 文件 / 57 处**,含 5 个工作根常量(`_build_export.py:14` `OUT`|`_verify_tsc.mjs:5` `EX`|`_sop_check.mjs:5` / `_upload_audit.mjs:5` / `_verify_all.mjs:5` `W`)+ `_build_export.py` 命令模板;`.md`(台账 / 评估 / README)与该根 `.workbuddy/memory/**` **按叙述件纪律不动**。复核:该根脚本/json 内 `AI技能` 残留 **0**,六个关键常量全部指向 `E:\ProgramData\AIProject\dsh-ai1net-github`。
- ⚠️ **副作用披露**:上述扫描覆盖到该根 `_中间产物_待清理/**`(临时脚本)与 `_archify/evidence/*.visual-check.json`(取证 json,属待清理件)—— 已一并改;该根 `.md` 里仍有旧根字面(未动),留该线自理。
- **三处同步闭合**:本机 `~/.workbuddy/skills` → 库 `08-skills` → 服务器 `/opt/dsh/docs/08-skills` 逐字一致(服务器残留复核 = 与库同 9 处历史叙述)。