# 2026-07-29 工作日志

## AHKB-CPS Skill 全面检查

对 `ahkb-cps` 技能进行了全面检查，覆盖 SKILL.md、5 个模块 .md 文件、所有 Python 脚本、配置文件、模板文件。

### 检查结果概要
- 总分: 82/100
- P0 严重: 2 项（md2docx.py 硬编码路径、inline-fulldecks.py 硬编码 Claude Code 路径）
- P1 重要: 5 项（__pycache__ 残留[已修复]、kb2slides.py 重复、.claude/settings.json 矛盾、动画数量不一致、welcome 命令矛盾）
- P2 轻微: 4 项
- 亮点: 11 项（架构清晰、命令完整、安全设计好等）

### 已自动修复
1. 删除了 `kb/scripts/__pycache__/` 和 `ppt/scripts/__pycache__/`（共 12 个 .pyc 文件）
2. 创建了 `.gitignore` 文件

### 报告文件
`C:\Users\wang\.workbuddy\skills\ahkb-cps\检查报告.html`

---

## maintain 阶段 crosslink 衔接问题修复（重点）

### 问题诊断
maintain 阶段（crosslink 知识元关联）在长时间运行时与前后阶段衔接出问题：
1. **前端衔接**：知识元尚未全部抽取完毕（Phase 1 A→F 未完成），crosslink 提前启动
2. **后端衔接**：crosslink 尚未完成关联，build-graph（根节点 md 生成）提前开始

根因：三道防线全部是"提示词级"规则，无代码级硬关口。长时间运行时 LLM 可能跳过。

### 实施的修复（4 项）

#### A: maintain 硬检查（ahkb.py）
- 新增 `_check_phase1_complete()` 函数（~130 行），完整扫描工作空间检查是否有未处理文件
- `cmd_cross_link` detached 分支中插入强制检查：Phase 1 未完 → 拒绝执行，返回 `status: "phase1_incomplete"`
- 无法绕过——代码级硬关卡

#### B: check-maintain-status 子命令（ahkb.py）
- 新增 `@command("check-maintain-status")`（~120 行）
- 统一状态查询逻辑，6 种状态码：not_started/starting/running/complete/cancelled/error/stale
- 自动清理过期状态文件，complete 时写入 `_maintain_completed.marker`
- 返回 JSON 含 `_display` 字段方便 LLM 直接展示

#### C: maintain 自动概念索引（ahkb.py）
- `cmd_cross_link` detached 分支中，启动子进程前自动调用 `save_concept_index()`
- 消除 `update-concept-index` 与 `maintain` 之间的时序耦合

#### D: kb.md 轮询指令强化
- 7 处内联 Python 轮询脚本 → 统一替换为 `check-maintain-status` 命令
- Phase 1/Phase 2 分界线增加脚本级硬关卡说明
- 所有 `update-concept-index` 步骤标注为可选

### 改动的文件
1. `ahkb-cps/kb/scripts/ahkb.py` — +205 行（方案 A + B + C）
2. `ahkb-cps/kb/kb.md` — ~50 行删除、~45 行新增（方案 D）

---

## 检查报告遗留问题修复（第二波）

针对上一轮检查报告中未修复的全部问题进行了清理：

### P0 严重
- **P0-1** `write/scripts/md2docx.py`: 删除硬编码的桌面路径和"钱学森"文档名，改为接受命令行参数 (`<input.md> <output.docx> [--title TITLE] [--subtitle SUBTITLE]`)
- **P0-2** `ppt/scripts/inline-fulldecks.py`: `~/.claude/skills/` 硬编码路径 → `os.path.dirname(__file__)` 动态解析

### P1 重要
- **P1-1** __pycache__ 残留: 已在第一轮修复
- **P1-2** `ppt/scripts/kb2slides.py` 重复: 文件已不存在（之前可能已移除），`core/kb2slides.py` 完好
- **P1-3** `.claude/settings.json`: 整个 `.claude/` 目录已删除（WorkBuddy 不使用 Claude Code 配置）
- **P1-4** 动画数量 47→48: SKILL.md + README.md 中英文 4 处全部修正
- **P1-5** `ahkb.py welcome` 命令: 已删除命令及其 docstring 条目

### P2 轻微
- **P2-1** README.md 安装说明: 中英文均补充 WorkBuddy 安装方式
- **P2-2** `.clawscan-allow`: 保留（影响不大）
- **P2-3** `ahkb_purge.py` chcp: `os.system("chcp 65001 >nul")` → `subprocess.run(["chcp", "65001"], capture_output=True)`
- **P2-4** `guide.md` 开场白: "话说刚才那篇……还满意吗？" → 专业导引模板

### 验证
- 4 个修改的 .py 文件全部通过 ast.parse 语法检查

---

## 菜单 3 互动添加铁律：禁止自动 maintain/crosslink

### 问题
互动添加文档（菜单 3）时 LLM 可能自动触发 maintain/crosslink，违背了用户选择"互动"模式的本意——用户就是要手动控制每一步。

### 修复（3 层防线）

1. **绝对禁止规则新增**（kb.md 第 38 行）：
   > 互动添加（菜单 3）严禁自动执行 maintain / crosslink

2. **菜单 3 头部铁律**：标注"手工驱动模式"，明确严禁在任何环节自动触发 maintain/crosslink/build-graph

3. **Step 4 重写**：从"询问是否继续整理"改为"询问是否继续添加"，附带 6 条明确禁止行为清单

4. **主菜单描述更新**：菜单 3 标注"手工模式：逐步挑选、不自动关联"

