复利工作台阶段 2(经验切片 + 自动化)

今天做了什么

  • 经验切片工作流(人审闭环,对齐 stars 终审模式):
    • 新增 site/scripts/sync-slices.mjs:读取 session-log「已补摘要」的会话 → 在 memory/slices/ 生成候选卡(状态机 candidate → approved/promoted/discarded,同会话不重复生成)。
    • site-data/workbench/slices.json(仅数量,公开安全)+ slice-summary.md(Obsidian 嵌入);memory/slices/README.md 写明工作流。
    • 首个候选已生成:memory/slices/2026-08-06-复利工作台阶段-1.md(来源会话 #8d16f8),待人终审。
  • 日报/周报自动化:
    • analyze-sessions.mjs v2:日报草稿增强(会话摘要 + 经验切片统计);新增周报草稿 drafts/log/2026-W32-周报.md(近 7 天会话/项目/技能/切片/摘要,不存在才创建)。
    • 新增 pnpm analyze = sync-slices + analyze-sessions 一键跑。
  • skillUsage 自动化:site-data/workbench/skill-usage.json(近 14 天技能真实使用)→ generate-data 生成 skill-usage.data.ts → /workbench 新增「技能调用 · 近 14 天」;skills.ts 清理 }, 残留,改为「计数机器统计、叙事按周整理」。
  • /workbench 新增「经验切片 · 人审闭环」板块(候选/留用/已沉淀/弃用数量)+ 指标条;Obsidian 工作台.md 新增切片看板(dataview + slice-summary 嵌入)。
  • 构建 71 页通过;Playwright QA 通过(新板块渲染、无溢出、无控制台报错)。

过程与坑

  • PowerShell 5.1 的 stdin 管道会把中文按 GBK 转码,Node 脚本里的中文路径/字符串因此错乱;所有含中文的脚本改用临时 .cjs(UTF-8 无 BOM)执行,避免踩坑。
  • 文件行尾是 CRLF 时,字符串替换锚点要兼容 \r?\n(skills.ts 注释替换因此失败过一次)。
  • titleFrom 截断标题时,全角冒号在第 9 位、下一标点在 37 位,{10,32} 正则两头不靠 → 改为 {6,32} 后正确生成「复利工作台阶段 1」。
  • /workbench 用 GSAP reveal 动画,折叠区初始 visibility:hidden;QA 断言要先滚动触发 reveal,否则 innerText 为空误报。
  • 周报草稿首次运行显示「经验切片:尚未生成」,因为 analyze 先于 sync-slices 执行;pnpm analyze 已调整为先 slices 后 analyze。

下一步

  • 人审首个候选切片(memory/slices/2026-08-06-复利工作台阶段-1.md),决定 approved / promoted(整理进 publish/notes)。
  • 阶段 3(可选):CF 免费后台(图纸堆 12)——D1 存指标、Workers AI 摘要、Webhook 推送。
  • 观察 /workbench 经验切片与近 14 天技能数据,决定是否把 Stop hook 的「摘要待补」升级为自动抓「做了什么/下一步」草稿。