Files
dsh_ai1net_server/交付物/引用技能规则-体检报告-20260924.md
T
admin 75c661226b docs(体检): 引用/技能/规则体检报告 + 引用与技能纠偏接续包
- 规则正常:文档库自检四件套 rc=0,双端对账 289/289
- 引用不正常:工作区 09-23 改名 AI技能→AIProject,153 文件仍写旧路径(工作区 107 / 文档库 46)
- 技能不正常:库↔本机 12 技能中 8 个不一致(16 文件),根因=09-24 06:0x 批量改名在 08-skills 内过度替换
- 已注册执行棒 automation 8117f930(08:15)
2026-09-24 08:08:21 +08:00

141 lines
9.6 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.
# 引用 / 技能 / 规则 —— 全面体检报告
> **体检时间**: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`(工作区根)