# 2026-05-10 Agent健身房复盘 一句话概括:**这次发现的不是已经自动修复的问题,而是 3 类以后会反复浪费时间的操作摩擦 / 工具缺口。** | 优先级 | 发现的问题 | 真实含义 | 计划怎么解决 | | --- | --- | --- | --- | | 1 | 推文日报抓取链路没有稳定预检 | 配置、runner、provider、输出目录任一环节缺失时,agent 会先花时间在仓库历史和临时产物里自救,真实抓取被延后。 | 做 `twitter_fetcher_preflight.py`,先输出 ready/fail JSON,再允许进入真实抓取;fallback roster 必须显式开启。 | | 2 | Odyssey 周快照依赖人工式暂存护栏 | 这次成功只提交了 `.md`,但靠 agent 临场检查;以后 iCloud 附件、图片删除、缓存文件仍可能被误带进提交。 | 沉淀 `weekly_snapshot_md_guard.sh`:分桶 dirty files、只 stage `.md`、提交前验证 staged 列表。 | | 3 | i+1 阅读推荐的上下文和新概念数缺少诊断层 | 推荐本应依据 Odyssey、本地活动、浏览历史、Anki 和网页正文,但这次浏览历史不可用,新概念数也主要是估算。 | 做 `i_plus_one_context_diagnostic.py`,先给 source coverage 和 Anki diff;缺源时标记 degraded,不给伪精确数字。 | ## 下一步 | 顺序 | 先做什么 | 为什么 | | --- | --- | --- | | 1 | 先实现推文日报抓取预检器 | 它把配置缺失、脚本缺失、provider 不通和目录不可写提前暴露,是昨天最明显的重复排障成本。 | | 2 | 把 Odyssey Markdown-only 提交护栏脚本化 | 这是低风险、高确定性的流程固化,可以直接复用昨天已经验证过的 staged diff 检查。 | | 3 | 给 i+1 阅读推荐补 source coverage 和 Anki diff | 它能把个性化推荐从启发式估算推进到可解释、可降级的推荐流程。 | ## 一、候选详情 ### 1.1 推文日报抓取预检器 - 类型:`diagnostic-tool`;风险:`medium`;价值:`high`。 - 摘要:这个主题有明确价值:一次推文日报任务里同时暴露了配置缺失、skill 目录消失、正式 runner 不存在、provider 可达性和输出目录权限等多个前置风险。预检器可以把这些失败点前移,在真正调用 socialdata.tools 或 fallback roster 前给出可解释的 ready/fail 信号。 - 第一落地点:新增工具入口:在 twitter-fetcher 所在仓库添加 `scripts/twitter_fetcher_preflight.py`,命令形态为 `python scripts/twitter_fetcher_preflight.py --config .claude/skills/config.json --output-dir <daily_output_dir>`;输入来源包括 `.claude/skills/config.json` 的 `skills.twitter-fetcher.users`、环境变量 `SOCIALDATA_API_KEY`/`TWITTERAPI_IO_KEY`、provider 域名、Odyssey 目标目录和可选的上一份成功 JSON。 - 示例文件:`out/examples/twitter-fetcher-preflight.md` - 证据:`019e0f67-645f-72c1-9950-8ab1cc7b5238`,cwd `~/Documents/Codex/2026-04-21-https-github-com-haopenglau-skills/repo`:用户要求使用当前工作区仓库里的 twitter-fetcher 流程,抓取 .claude/skills/config.json 中 twitter-fetcher.users 的账号列表,并用 SOCIALDATA_API_KEY 或 TWITTERAPI_IO_KEY 访问 socialdata.tools。 - 证据:`019e0f67-645f-72c1-9950-8ab1cc7b5238`,cwd `~/Documents/Codex/2026-04-21-https-github-com-haopenglau-skills/repo`:assistant 发现 skills/twitter-fetcher 已经不在,转而用 git show HEAD 回看 canonical 脚本接口;仓库没有正式日报脚本,只能复用 .codex_tmp 里的 socialdata 临时 runner 和历史成功 JSON。 ### 1.2 Odyssey 周快照提交护栏 - 类型:`workflow-pattern`;风险:`low`;价值:`high`。 - 摘要:这个主题不是噪音:片段里有明确用户约束、实际脏工作区场景,以及最终用 staged diff 防护成功落地的闭环。它的价值在于把“周复盘只提交 Markdown”从一次性谨慎操作沉淀成 Odyssey 自动化的强约束,避免 iCloud/附件/缓存类非 Markdown 变更被误带进历史。 - 第一落地点:在 `/Users/bytedance/Library/Mobile Documents/com~apple~CloudDocs/odyssey/AGENTS.md` 增加“周快照 Markdown-only 护栏”:周复盘 automation 必须先读 `git status --porcelain`、`git diff --name-only`、`git diff --cached --name-only`,把 `.md` 与非 `.md` 变更分桶;只允许 stage/commit `.md`。 - 示例文件:`out/examples/odyssey-md-only-snapshot-guard.md` - 证据:`019e11f9-b3f8-75f1-8ccc-36aac9d3df63`,cwd `~/Library/Mobile Documents/com~apple~CloudDocs/odyssey`:用户明确要求周复盘 automation inspect git status/diff/history,创建或更新周复盘,并且 staging/committing 时只操作 .md 文件,不添加、不暂存、不修改、不提交任何非 Markdown 文件。 - 证据:`019e11f9-b3f8-75f1-8ccc-36aac9d3df63`,cwd `~/Library/Mobile Documents/com~apple~CloudDocs/odyssey`:assistant 发现当前仓库有一批未提交 Markdown 改动,也有少量非 Markdown 删除;决定把非 Markdown 变更排除在本次暂存和提交之外。 ### 1.3 i+1 阅读推荐上下文诊断 - 类型:`diagnostic-tool`;风险:`medium`;价值:`high`。 - 摘要:这个主题有价值:用户要的是基于昨日活动、Odyssey、浏览历史、近期项目、网页检索和 Anki 词汇量的 i+1 推荐,但实际执行只覆盖了其中一小部分上下文。缺口不只是信息源缺失,还包括推荐中的“新增概念数”没有和 Anki collection 或浏览器扩展状态做真实比对,因此需要一个推荐前诊断工具来判断本次推荐能否被信任、应如何降级。 - 第一落地点:新增工具入口:在 `/Users/bytedance/Documents/learning-bu/tools/i_plus_one_context_diagnostic.py` 添加命令 `python3 tools/i_plus_one_context_diagnostic.py --date YYYY-MM-DD --out out/i_plus_one_context_report.json`。输入来源包括 Odyssey markdown/日更、昨日本地活动摘要、可读取的浏览器 history/export、近期项目目录索引、网页检索候选 URL、Anki `collection.anki2` 或导出的 deck/card 表。核心检查步骤:逐源检查存在性、更新时间、可读权限、记录数量、昨日时间窗覆盖率、候选文章可访问性、文章词汇与 Anki 已知词/成熟卡的交集和差集。成功信号是输出 `source_status=ok`、每个推荐都有 evidence source 和可复算的新词/新概念计数;失败信号是 `missing_browser_history`、`missing_anki_collection`、`stale_odyssey_snapshot`、`concept_count_estimated_only`。落地路径:先作为每日推荐脚本的 preflight,后续再接入自动推荐 pipeline。 - 示例文件:`out/examples/i-plus-one-context-diagnostic.md` - 证据:`019e0f66-0e97-74f3-ab15-514f885082ca`,cwd `~`:用户要求每日 i+1 英语阅读推荐基于昨天本地活动、Odyssey、本地浏览历史、近期项目上下文和当前网页搜索;还要求结合 Anki 阅读词汇量 14,678 张卡,估计每天新增概念数。 - 证据:`019e0f66-0e97-74f3-ab15-514f885082ca`,cwd `~`:assistant 实际只读到了昨日日更和 Agent健身房复盘,未找到可直接读取的浏览器历史导出或可用本地浏览数据,因此以昨日主题加今日网页检索选题。