Files
dsh_ai1net_server/交付物/引用技能规则-体检报告-20260924.md
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

9.6 KiB
Raw Permalink Blame 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(工作区根)