# 2026-05-17 Agent健身房复盘
一句话概括:**这次发现的不是已经自动修复的问题,而是 4 类以后会反复浪费时间的操作摩擦 / 工具缺口。**
| 优先级 | 发现的问题 | 真实含义 | 计划怎么解决 |
| --- | --- | --- | --- |
| 1 | 歌词 Anki 反复错在音频和 LRC 对齐 | 错位卡会直接污染学习;问题通常发生在导入前,而不是导入后才靠试听发现。 | 做 `lyrics_alignment_gate.py`:校验权威 MP3、LRC 中段同步点、试听预览和 Anki 媒体缓存,未通过就不导入。 |
| 2 | 浏览器扩展上架靠人工清单兜底 | 密钥、商标素材、商店语言、截图和发布权限任何一项漏掉,都会把上架拖成半天表单排障。 | 做 Edge release preflight:扫描 zip/manifest/素材/文案/GitHub auth,输出可提交或阻塞原因。 |
| 3 | 自动化任务缺少启动前预检和运行中看门狗 | 配置缺失、`CODEX_HOME` 为空、进程无 stdout 但产物已生成,会让 agent 靠临场排查完成任务。 | 做 automation preflight/watchdog:启动前查配置和路径,运行中看 stdout、产物 mtime、pid,结束后清理残留。 |
| 4 | Anki 删除后复活缺少证据链 | 用户问“之前不是删了吗”时,当前流程只能推断同步/恢复/导入回流,不能稳定归因。 | 做 Anki resurrection audit:比对当前卡、历史删除报告、mod 时间和备份,分类说明是漏删、新增还是状态回流。 |
## 一、下一步
| 顺序 | 先做什么 | 为什么 |
| --- | --- | --- |
| 1 | 先做歌词 Anki 对齐闸门 | 昨天同一项目连续出现错 MP3、错 LRC、错位导入和下线删除;收益最大,且成功判据最清楚。 |
| 2 | 把 Edge 上架前检查沉淀成脚本 | 这条链路以后每个浏览器插件都会重复,越早脚本化越能避免密钥/商标/素材类高成本返工。 |
| 3 | 给自动化任务补统一 preflight/watchdog | 实现成本低,能减少定时任务在缺配置、无 stdout、残留进程上的临场判断。 |
| 4 | 把 Anki 删除审计接入学习卡维护规则 | 不是每天都会发生,但一旦发生会直接损害对卡片状态的信任,适合做成按需工具。 |
## 二、候选详情
### 2.1 歌词 Anki 音频对齐闸门
- 候选 id:`lyrics-anki-alignment-gate`
- 类型:`diagnostic-tool`
- 风险:`medium`
- 价值:`high`
- 摘要:多个失败案例都指向同一个问题:歌词卡包导入 Anki 前缺少音频版本、LRC 版本、同步点和媒体缓存的统一验收。
- 示例:`out/examples/lyrics-anki-alignment-gate.md`
| 证据 | 片段 |
| --- | --- |
| `019e311d` / `~/Documents/learning-bu` | 用户指出 Heat Waves 整体错位:音乐还是前一句,卡片是后一句。随后生成逻辑改成音频整体后移一格,并改媒体文件名避免 Anki 复用旧缓存。 |
| `019e311d` / `~/Documents/learning-bu` | Beauty and a Beat 根因是用了错误 MP3:用户指定目录里的 Beauty MP3 是约 230 秒完整音频,之前那版 summary.json 写着用了 34 秒短视频片段。 |
| `019e311d` / `~/Documents/learning-bu` | Last Christmas 的 L07 不同步。先按总时长最接近选到结构错位版 LRC,之后改成抽查中段同步点;新版仍被用户反馈错位,最后从 Anki 删除并标记下线。 |
### 2.2 浏览器扩展上架前检查链
- 候选 id:`edge-store-release-preflight`
- 类型:`diagnostic-tool`
- 风险:`medium`
- 价值:`high`
- 摘要:Edge 扩展上架不是单纯打包,而是密钥、第三方品牌素材、商店多语言 listing、截图、认证说明和 GitHub release 授权共同组成的发布链路。
- 示例:`out/examples/edge-store-release-preflight.md`
| 证据 | 片段 |
| --- | --- |
| `019e3517` / `~/Documents/product-bu` | 先把商店包和说明准备到符合 Edge Add-ons 的状态,确保不会带本机 OpenRouter key;模型做成用户自己的 OpenRouter key 配置,而不是内置任何 key。 |
| `019e3517` / `~/Documents/product-bu` | 上架前必须处理:fork 代码是 MIT,但官方 README 明确说商标、图标和营销素材不在 MIT 里。当前 Edge 素材和扩展图标还是 Obsidian 紫色 logo,需要改成独立品牌和自有图标。 |
| `019e3517` / `~/Documents/product-bu` | Edge 包现在已经干净:zip 里没扫到 OpenRouter key,也没扫到官方 Web Clipper 名称、官方 logo SVG 或 official extension 文案。 |
### 2.3 自动化任务预检与看门狗
- 候选 id:`automation-preflight-watchdog`
- 类型:`diagnostic-tool`
- 风险:`low`
- 价值:`high`
- 摘要:这是一组自动化运行前、中、后的可靠性问题:配置/目录缺失、环境变量错位、长时间无 stdout 但产物已生成、残留进程未收尾。
- 示例:`out/examples/automation-preflight-watchdog.md`
| 证据 | 片段 |
| --- | --- |
| `019e3374` / `~/Documents/Codex/2026-04-21-https-github-com-haopenglau-skills/repo` | 文档引用 skills/twitter-fetcher,但当前仓库里这个目录不存在;现有 .claude/skills/config.json 也没有 skills.twitter-fetcher.users。 |
| `019e3374` / `~/Documents/Codex/2026-04-21-https-github-com-haopenglau-skills/repo` | 账号列表从历史本地抓取产物恢复:最近原始文件里有 17 个账号,脚本在配置缺失时从 .codex_tmp/twitter_fetcher_*.json 回补 roster。 |
| `019e3374` / `~/Documents/Codex/2026-04-21-https-github-com-haopenglau-skills/repo` | 接口响应慢,进程长时间无 stdout;后来发现成品已写出,但原始进程没有正常回传 stdout,需要检查临时文件和进程状态来判断是否假死。 |
### 2.4 Anki 删除复活审计
- 候选 id:`anki-delete-resurrection-audit`
- 类型:`diagnostic-tool`
- 风险:`medium`
- 价值:`high`
- 摘要:同一批 Anki 红旗卡出现过“删除后当时复核为 0”,但后续又在 deck 中出现,时间线指向同步、撤销、恢复或导入回流。
- 示例:`out/examples/anki-delete-resurrection-audit.md`
| 证据 | 片段 |
| --- | --- |
| `019e345b` / `~/Documents/learning-bu` | 用户问 deck:英语概念卡 中 flag1 红色的卡有多少;实时查到 deck:英语概念卡 flag:1 当前红色 flag 卡片共 25 张,其中后面几张像 URL/query 参数或随机路径片段。 |
| `019e345b` / `~/Documents/learning-bu` | 用户追问之前不是让删除吗,agent 复核当前红旗卡 mod 时间、card 创建时间和之前删除报告,判断是删后又新增/又打红旗,还是之前删除没有覆盖。 |
| `019e345b` / `~/Documents/learning-bu` | 关键证据:这 25 张的红旗修改时间大多是 2026-05-16 01:xx-13:xx,不是今天刚产生;当前批次删除后,全局 flag:1 复核为 0。 |
## 三、产物
| 文件 | 用途 |
| --- | --- |
| `out/manifest.json` | 候选清单,供审批脚本更新 approval 状态 |
| `out/examples/` | 每个候选的 before/after 或诊断流程样例 |
| `out/sub/` | 子分析上下文、日志和结构化结果 |
| `out/approve.sh` | `./out/approve.sh <candidate-id>` 标记通过 |