# i+1 阅读推荐上下文诊断 ## 诊断流程样例 ### 入口 ```bash cd /Users/bytedance/Documents/learning-bu python3 tools/i_plus_one_context_diagnostic.py \ --date 2026-05-10 \ --odyssey-dir "$HOME/Library/Mobile Documents/com~apple~CloudDocs/odyssey" \ --anki "$HOME/Library/Application Support/Anki2/User 1/collection.anki2" \ --browser-history "$HOME/Library/Application Support/Google/Chrome/Default/History" \ --out out/i_plus_one_context_report_2026-05-10.json ``` ### 输入来源 | source | 检查内容 | 成功信号 | 失败/降级信号 | |---|---|---|---| | Odyssey/日更 | 昨日笔记、项目关键词、学习轨迹 | 命中昨日时间窗且有 3+ 条可引用证据 | `stale_odyssey_snapshot` 或无昨日记录 | | 本地活动 | Night Gym、近期项目、shell/日志摘要 | 能定位到昨日主题和 cwd | 只能读到单个复盘文件 | | 浏览历史 | 昨日网页主题、已读文章、站点频次 | 可读 history/export 且有 URL 列表 | `missing_browser_history` | | Anki | collection/deck/card 状态、成熟词覆盖 | 能输出已知词、未知词、新概念差集 | `missing_anki_collection` 或字段不可解析 | | 网页检索 | 今日候选文章 URL 和正文 | 候选文章可访问并能抽正文 | URL 404、paywall、正文过短 | ### 核心检查 1. 先生成 source coverage:哪些上下文源可读、各自更新时间、记录数、是否覆盖昨日。 2. 再对候选文章跑正文抽取和词汇/概念差分:文章术语是否已在 Anki 成熟卡中出现,哪些概念是新增。 3. 给每篇文章打推荐等级:`ready` 表示多源上下文齐全且新增概念可复算;`degraded` 表示上下文缺源但仍可推荐;`blocked` 表示 Anki 或正文不可读导致 i+1 无法判断。 4. 最后把诊断摘要写入推荐回答:推荐前先说本次依据了哪些源,哪些数字是实测,哪些只是估算。 ### 输出样例 ```json { "date": "2026-05-10", "overall_status": "degraded", "source_status": { "odyssey": "ok", "local_activity": "ok", "browser_history": "missing", "anki_collection": "ok", "web_search": "ok" }, "recommendation_rules": [ "可以推荐文章,但必须标注缺少浏览历史", "新增概念数只允许来自 anki_vocab_delta.py 的 diff;否则显示为区间" ] } ``` ### 推荐落地变化 Before:`这篇文章大约有 7 个新概念,适合你当前 14,678 词汇量。` After:`诊断状态:degraded,Odyssey/本地活动/Anki 可用,浏览历史不可用。本文基于 Anki diff 有 5 个未见术语、2 个可能新概念;因为缺少昨日浏览历史,不把它称为完全个性化推荐。`