# 推文日报抓取预检诊断工具 类型:`diagnostic-tool` 风险:`low` ## 诊断流程样例 ### 输入 - repo: `/Users/bytedance/Documents/Codex/2026-04-21-https-github-com-haopenglau-skills/repo` - target_date: `2026-05-03` - expected_output_dir: `/Users/bytedance/Library/Mobile Documents/com~apple~CloudDocs/odyssey/0 收集箱/research` ### 运行 ```bash python scripts/twitter_fetcher_preflight_doctor.py \ --repo /Users/bytedance/Documents/Codex/2026-04-21-https-github-com-haopenglau-skills/repo \ --target-date 2026-05-03 \ --json-out .codex_tmp/twitter_fetcher_preflight_20260503.json \ --markdown-out .codex_tmp/twitter_fetcher_preflight_20260503.md ``` ### 检查矩阵 | 阶段 | 检查 | 通过信号 | 失败信号 | 建议动作 | |---|---|---|---|---| | 仓库 | `skills/twitter-fetcher` 工作树和 HEAD | 文件存在,或 HEAD 可读 canonical 脚本 | 工作树删除且 HEAD 也不可读 | 先修仓库/确认删除意图 | | 配置 | `.claude/skills/config.json` | `skills.twitter-fetcher.users` 非空 | roster 缺失或为空 | 先补账号名单,不开抓 | | provider | env key + DNS | 至少一个 provider 可解析且有 key | 两个 host 都 DNS fail | 判定环境级网络阻塞 | | 输出 | Downloads、Odyssey、`.codex_tmp` 写入 | 目标目录可写 | 目标不可写但 `.codex_tmp` 可写 | 只写 fallback trace | | 自动化 | `CODEX_HOME` 展开 | memory 路径在用户目录 | 命中 `/automations` | 修复环境变量展开 | ### 示例输出摘要 ```text overall_status: fail blocking_reasons: - missing_roster: .claude/skills/config.json 缺 skills.twitter-fetcher.users - provider_dns_failed: api.socialdata.tools 与 api.twitterapi.io 均无法解析 - target_not_writable: Odyssey research 目录 Operation not permitted next_action: 不运行 daily_tweet_summary.py;先补 roster、修 DNS/网络和目录权限;诊断产物写入 .codex_tmp。 ``` ### 判定 这类失败不应被日报脚本解释成“没有推文”或“回复链补全失败”。preflight 直接阻断抓取,并输出可复查的根因清单。