# 2026-05-20 Agent健身房复盘 一句话概括:**这次发现的不是已经自动修复的问题,而是 4 类以后会反复浪费时间的操作摩擦 / 工具缺口。** | 优先级 | 发现的问题 | 真实含义 | 计划怎么解决 | | --- | --- | --- | --- | | 1 | UI 原型源文件与导出图一致性检查 | 同一个 HTML 原型反复改文案/样式,但旧 PNG、未重导状态和 file:// 验证失败会让用户继续看到旧图。 | 做 `tools/mockup_artifact_check.py`:从 manifest 读取 source/state/PNG,起本地 HTTP 渲染、检查必含/禁含词、对比截图 hash/像素差,并一次性重导所有状态图。 | | 2 | 推文自动化限流自检与复用 | 长轮询和限流退避会把自动化拖成等待题,甚至在同日报告已存在时继续重复消耗 API 配额。 | 在 `twitter-fetcher` 前置 `scripts/twitter_fetch_guard.py`:先查同日 raw/md、活跃账号覆盖和重复进程,再决定复用、重建报告或安全抓取。 | | 3 | 商品意图PE拆分后的准召验证缺口 | PE 能写出来并通过 JSON 校验,但没跑准召验证就无法判断拆分后是否真的压住混淆和误召。 | 在 `data-analysis-workspace/tools/product_intent_eval/` 加 Ark 评估 harness,固定 gold/PE/负例输入,输出 precision/recall、混淆矩阵和失败样本 CSV。 | | 4 | 每日阅读推荐缺少稳定的本地信号源采集层 | 每日阅读推荐依赖临时上下文搜集,缺源时只能在结果里写“未使用”,没有稳定的采集与失败信号。 | 新增 `daily-reading-local-signals` skill:推荐前统一采集 Odyssey、工作区变更、Anki、浏览器历史可用性,输出可追溯 JSON 和 missing_sources。 | ## 下一步 | 顺序 | 先做什么 | 为什么 | | --- | --- | --- | | 1 | 先做 UI 原型一致性检查 | 这是昨天重复最多、风险最低、能最快减少返工的点。 | | 2 | 再做推文自动化限流 guard | 它能直接避免长时间等待、重复进程和 API 配额浪费。 | | 3 | 补商品意图 PE 准召验证 | 这是质量门槛,避免 PE 只停留在文案正确。 | | 4 | 最后沉淀每日阅读本地信号采集 | 价值在长期稳定推荐,但不是当天最急的交付卡点。 | # 一、候选详情 ## 1.1 UI 原型源文件与导出图一致性检查 - 类型:`diagnostic-tool` - 风险:`low` - 候选 id:`ui-mockup-source-artifact-check` - 概要:这个主题有效:多轮片段都围绕同一个 HTML mockup 与多张 PNG 导出图之间的版本漂移、旧产物残留和截图验证缺失展开。问题不是单次 CSS 修改,而是缺少一个交付前的源文件-截图产物一致性诊断流程,导致用户可能打开旧图、误判样式或继续基于错误产物反馈。 - 证据: - `019e4515-ba5c-7a70-b5ed-f2fe57fa3541`:你截的是旧版里残留的那张卡片。我会把容易误用的旧输出删掉,并只保留现在这版:主页面没有“开通辅营类目”,表单只在底部半浮层里出现。 - `019e45f0-f362-7d53-a2ba-c30620cf4858`:当前打开的 `flower_category_open_mockups.html` 和截图不完全一致:源码里缺少截图里的“开通辅营类目”卡片和 FAQ 列表。 - `019e45f0-f362-7d53-a2ba-c30620cf4858`:本地现有 PNG 里确实有这个下划线,但对应 HTML 现在已经是 `text-decoration: none`,而且内容版本不一样。 - 建议改动: - 新增诊断工具入口:`~/Documents/job-bu/tools/mockup_artifact_check.py`,CLI 形态为 `python tools/mockup_artifact_check.py --source inbox/flower_category_open_mockups.html --artifacts 'inbox/鲜花绿植类目开通_*_2026-05-20.png' --manifest inbox/mockup_artifacts.manifest.json`。输入来源包括 HTML/CSS 源文件、manifest 中声明的 state/selectors/output PNG、现存 PNG 产物和必含/禁含文案。 - 核心检查步骤:1) 只在页面/脚本/原型目录内定位文案,避开原始数据噪音;2) 用本地 HTTP server 打开 HTML,避免 `file://` 被内嵌浏览器拒绝;3) 逐个 state 重新渲染截图到临时目录;4) 对比 PNG 的 mtime/hash/像素 diff;5) 用 OCR 或 Playwright DOM 文本检查必含/禁含词,例如 `点击下方`、`点击此处`、`开通辅营类目`;6) 输出 stale/missing/mismatched/artifact-only/source-only 四类结果。 - 成功/失败信号:成功时打印 `SOURCE_ARTIFACT_SYNC_OK`,列出源文件、产物文件、state 数量、截图 hash 和 0 个 forbidden text;失败时打印 `SOURCE_ARTIFACT_SYNC_FAIL`,明确指出旧 PNG 残留、HTML 与 PNG 文案不一致、某 state 未重新导出或浏览器验证未完成。失败默认不覆盖原 PNG,只生成 `out/mockup-check/<timestamp>/` 诊断包。 ## 2.1 推文自动化限流自检与复用 - 类型:`diagnostic-tool` - 风险:`medium` - 候选 id:`tweet-automation-rate-limit-guard` - 概要:这个主题有明确价值:片段显示每日推文自动化会在 socialdata.tools 限流退避中长时间阻塞,并且同日产物已存在时仍可能重复抓取。应补一个启动前和运行中的限流自检守卫,优先复用已生成的 raw 与 markdown,再决定是否继续请求外部 API。 - 证据: - `019e42e7-1ca4-7071-b65f-2e8033139f14`:使用当前工作区仓库里的 twitter-fetcher 流程抓取配置文件 .claude/skills/config.json 中 twitter-fetcher.users 的账号列表,使用其中的 SOCIALDATA_API_KEY 或 TWITTERAPI_IO_KEY 访问 socialdata.tools。 - `019e42e7-1ca4-7071-b65f-2e8033139f14`:这轮等待时间已经偏长,我再给它一次窗口;如果还没有返回,我会旁路检查进程状态和最近生成文件,确认是不是在限流退避而不是卡死。 - `019e42e7-1ca4-7071-b65f-2e8033139f14`:仓库内脚本这次对 17 个账号逐个抓取,明显在限流退避里拖住了;同时目标目录已有一份今天生成的 `2026-05-19` 日报。 - 建议改动: - 在仓库新增 `scripts/twitter_fetch_guard.py` 作为工具入口;输入来源包括 `.claude/skills/config.json` 的账号/API key、`~/Downloads/twitter_output/每日推文总结_raw_YYYY-MM-DD.json`、iCloud research 目录的 `推文总结_YYYY-MM-DD.md`、当前进程列表和自动化 memory。 - 核心检查步骤:先计算目标日期和账号数,再检查同日 raw 是否存在且 JSON 可解析、tweet 总数是否大于 0、活跃账号是否覆盖配置账号;再检查 markdown 是否存在且包含总推文数/活跃账号/关键链接;最后扫描是否已有 `daily_tweet_summary.py` 或 twitter-fetcher 进程处于长时间运行。 - 成功/失败信号:成功返回 `reuse_raw_and_markdown`、`reuse_raw_rebuild_markdown` 或 `safe_to_fetch`,并打印可复核文件路径;失败返回 `rate_limited_or_stuck`、`partial_raw_only`、`missing_outputs`、`duplicate_process_running`,同时给出是否停止重复进程、是否跳过回复链补全、是否只重建报告的建议。 ## 3.1 商品意图PE拆分后的准召验证缺口 - 类型:`skill-gap` - 风险:`medium` - 候选 id:`product-intent-pe-eval-harness` - 概要:这个主题不是噪音:片段显示商品类目合并意图已经被拆成三个独立意图,并产出了 PE 独立稿、完整替换版和 diff,但验证只停在结构可解析和旧 skill 移除。真正缺口是没有用 v31 标注样本和 Ark 跑准召/混淆验证,无法判断拆分后是否提升或引入新误判。 - 证据: - `019e4485-c473-7fc1-81f0-0bdb743c0752`:我之前打标到v31还是多少了商评领域的智能对话,我想把这三中的意图识别的PE单独拆开,要包括判断规则和fewshot - `019e4485-c473-7fc1-81f0-0bdb743c0752`:v31 明细里三类分别对应 `商品创建||商品类目||商品类目怎么选 / 商品类目选不了 / 定邀/报白/白名单准入`。 - `019e4485-c473-7fc1-81f0-0bdb743c0752`:完整 PE 变体和 diff 都生成好了。最后我会做一个轻量校验:确认新 PE 里已经没有旧的合并 skill,并检查 `Skill信息` 这一段能按 JSON 解析 - 建议改动: - 在 `/Users/bytedance/Documents/job-bu/data-analysis-workspace/tools/product_intent_eval/` 新增可复用评估脚本 `run_product_intent_eval.py`:输入 v31 明细表、待测 PE markdown、目标意图列表和 Ark 模型配置;输出每条 session 的 gold/pred/topN/raw_response、overall precision/recall、三类混淆矩阵和失败样本 CSV。 - 在 `/Users/bytedance/Documents/job-bu/data-analysis-workspace/adhoc/2026-05-20_商品类目三意图PE/` 补一份 `eval_config.yaml`:绑定 `线上商服意图识别PE_0.0.51_商品类目三意图_2026-05-20_v1.md`、v31 标注源、三个拆分意图、对照旧合并意图版本,并固定抽样策略为全量三类加相邻负例。 - 新增一个 `商品意图PE准召验证` workflow/skill 文档,写清入口、输入来源、核心检查步骤、成功/失败信号和落地路径:入口是 `python tools/product_intent_eval/run_product_intent_eval.py --config ...`;输入是 v31 gold、PE 版本和 Ark secret;检查 JSON 可解析、目标 skill 是否存在、旧 skill 是否移除、准召指标和误召来源;成功信号是三类 recall 达标且定邀报白误召受控;失败信号是 top1 混淆集中或 raw_response 不可解析;落地到 `out/eval/<date>_<pe_version>/`。 ## 4.1 每日阅读推荐缺少稳定的本地信号源采集层 - 类型:`skill-gap` - 风险:`medium` - 候选 id:`daily-reading-local-signal-source` - 概要:这个主题有价值:每日 i+1 阅读推荐明确依赖用户昨天行为、近期关注点和英语学习状态,但当前执行只拿到了少量本地信号,并明确放弃了浏览器历史入口。缺口不在推荐写作本身,而在推荐前置的“本地信号发现、抽取、归一化、置信度标注”能力没有沉淀成可复用 skill,导致每天都要临时判断信号是否可用。 - 证据: - `019e42e5-a302-7581-a306-7697b771b993`:Goal: Recommend 3-4 authentic English articles for today's reading. The list should be based on what the user did yesterday, what the user appears to care about recently, and the user's current English level. - `019e42e5-a302-7581-a306-7697b771b993`:The user is building a local English vocabulary/reading workflow around Anki and a browser extension. - `019e42e5-a302-7581-a306-7697b771b993`:昨日(2026-05-19)本地信号:你在做「意图识别测试 skill」的小规模评测/对比结论(append vs isolated、precision/recall、误召/漏召样例),以及「Question Coach」从“阅读理解题”升级为“认知杠杆三问” - 建议改动: - 新增 skill:`~/.codex/skills/daily-reading-local-signals/SKILL.md`,职责只做推荐前的信号采集与评分;入口命令定义为“给定日期,输出 yesterday/recent/learning 三类信号 JSON”,避免把采集逻辑混进每日推荐 prompt。 - 新增采集脚本:`~/.codex/skills/daily-reading-local-signals/scripts/collect_signals.py`,输入来源包括 Odyssey 日记/收集箱、Anki `collection.anki2` 的目标 deck 状态、最近 workspace 文件变更摘要,以及浏览器历史 SQLite/导出文件的自动发现;每条信号输出 `source/date/title/summary/evidence_path/confidence`。 - 更新每日 i+1 阅读生成流程文件或 prompt:在推荐前强制读取 `out/daily_reading_signals_YYYY-MM-DD.json`;若缺少浏览器历史、Anki 或 Odyssey 任一关键源,必须在 `Context used` 中标明 `missing_sources` 和原因,而不是静默降级。 # 二、跳过项 飞书流程图画板插入工具链的子分析超时,未生成 `out/sub/lark-whiteboard-insertion-harness.json`,按流程未纳入候选清单。原始片段已保留在 `out/sub/lark-whiteboard-insertion-harness.context.json`,后续可单独重跑。