Files

140 lines
9.6 KiB
Markdown
Raw Permalink Normal View History

# 引用 / 技能 / 规则 —— 全面体检报告
> **体检时间**: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\AIProject\` → `E:\ProgramData\AIProject\`)
**事实**:`E:\ProgramData\AIProject\` 已于 **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\AIProject\…`」 | 09-24 代码级实测推翻:去重键 = `path.trim().toLowerCase()`,**只小写、不统一斜杠** ⇒ 正解 = `E:/ProgramData/AIProject/aliyun-dsh-server`(**正斜杠**) |
| 同文件 §⑤ 判据行 | `python "E:/ProgramData/AIProject/ai1net-dsh-server/state.py"` | 旧路径,且与上面的「反斜杠」自相矛盾 |
⚠️ 本条与工作区 `MEMORY.md` 状态层**打架** ⇒ 修技能时必须一并收敛到「判据 = 实测 `sessions.cwd`」。
---
## 四、处理(已定,交下一棒执行)
**为什么不在本棒做完**:两处修复合计 **>160 个文件**,命中「批量改动 >10 文件」红线 + 其中技能一类**必须逐条判定**(不可机械替换)⇒ 超出本棒上下文预算。
**已定的处置口径**(下一棒照此执行,不需再问):
1. **旧路径**:`E:\ProgramData\AIProject\` → `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`(工作区根)