关于 res-deep
res-deep 是一款多轮研究技能,可检索网络、社交、开发者及金融媒体来源。它面向需要整理研究结果的用户,按比较、全景、深度分析或决策框架组织发现,并支持 xAI 搜索及仅网络搜索模式。
主要功能
- 01跨多类来源进行多轮搜索
- 02分析信息缺口并定向追查
- 03深度模式下核验主张
- 04合并并去重多源结果
- 05按结构化框架组织研究输出
适用场景
- 01比较产品或方案
- 02梳理市场或生态
- 03深入调查某个主题
- 04评估决策选项
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ molechowski/ claude-skills --skill res-deep安装后在 Claude Code 中输入/res-deep确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/iterative-research.mdoutput-frameworks.mdsearch-patterns.mdscripts/xai_search.py详细介绍
深度研究
围绕 Web、Reddit、X/Twitter、GitHub、Hacker News、Substack、财经媒体、LinkedIn 等开展多轮迭代研究,并使用结构化输出框架(比较、全景分析、深入研究、决策)。
架构
| 来源 | 工具 | 成本 |
|---|---|---|
| Web | Claude Code WebSearch + xAI web_search | 免费 + $0.005/次调用 |
Claude Code WebSearch (site:reddit.com) + xAI web_search | 免费 + $0.005/次调用 | |
| X/Twitter | 仅使用 xAI x_search | $0.005/次调用 |
| GitHub | Claude Code WebSearch (site:github.com) + xAI web_search | 免费 + $0.005/次调用 |
| Hacker News | Claude Code WebSearch (site:news.ycombinator.com) + xAI web_search | 免费 + $0.005/次调用 |
| Substack | Claude Code WebSearch (site:substack.com) + xAI web_search | 免费 + $0.005/次调用 |
| 财经媒体 | Claude Code WebSearch (site-specific) + xAI web_search | 免费 + $0.005/次调用 |
| Wall Street Oasis | Claude Code WebSearch (site:wallstreetoasis.com) | 免费 |
Claude Code WebSearch (site:linkedin.com) + xAI web_search | 免费 + $0.005/次调用 | |
| Crunchbase | Claude Code WebSearch (site:crunchbase.com) | 免费 |
| YouTube | Claude Code WebSearch (site:youtube.com) | 免费 |
| 科技博客 | Claude Code WebSearch (site-specific) | 免费 |
来自多个来源的结果会合并并去重,以实现全面覆盖。
先决条件
必需工具
| 工具 | 用途 | 安装 |
|---|---|---|
| uv | Python 包管理器(处理依赖项) | curl -LsSf https://astral.sh/uv/install.sh | sh |
可选工具
| 工具 | 用途 | 安装 |
|---|---|---|
| scrapling | 无头浏览器备用方案,用于访问屏蔽 WebFetch 的网站(403、验证码、空响应) | uv tool install 'scrapling[all]' |
API 密钥
| 服务 | 用途 | 必需 | 获取密钥 |
|---|---|---|---|
| xAI | X/Twitter 搜索 + 补充 Web/GitHub/HN 搜索 | 建议使用 | https://console.x.ai |
注意: 不配置 xAI 密钥也可以使用此技能(通过 Claude Code 进入仅 Web 模式),但 X/Twitter 数据和更广泛的覆盖范围需要 xAI。
钥匙串设置(一次性,用于 xAI)
# 1. Create a dedicated keychain
security create-keychain -p 'YourPassword' ~/Library/Keychains/claude-keys.keychain-db
# 2. Add keychain to search list
security list-keychains -s ~/Library/Keychains/claude-keys.keychain-db ~/Library/Keychains/login.keychain-db /Library/Keychains/System.keychain
# 3. Store your xAI API key
echo -n "Enter xAI API key: " && read -s key && security add-generic-password -s "xai-api" -a "$USER" -w "$key" ~/Library/Keychains/claude-keys.keychain-db && unset key && echo
使用前运行:security unlock-keychain ~/Library/Keychains/claude-keys.keychain-db
工作流概览
| 步骤 | 操作 | 目的 |
|---|---|---|
| 0 | 检测 xAI 密钥 | 确定完整模式还是仅 Web 模式 |
| 1 | 解析查询 | 提取 TOPIC、FRAMEWORK、DEPTH |
| 2 | 第 1 轮:广泛搜索 | 发现实体、主题和初步结果 |
| 3 | 差距分析 | 找出缺失的观点和未经核实的主张 |
| 4 | 第 2 轮:针对性跟进 | 弥补差距、核实主张、深入覆盖 |
| 5 | 第 3 轮:核实 | (深度模式)核实一手来源 |
| 6 | 综合整理 | 将研究结果整理到框架模板中 |
| 7 | 专家模式 | 根据缓存结果回答后续问题 |
步骤 0:检测 xAI 密钥
必须在每次研究开始前运行。
security find-generic-password -s "xai-api" -w ~/Library/Keychains/claude-keys.keychain-db 2>/dev/null && echo "XAI_AVAILABLE=true" || echo "XAI_AVAILABLE=false"
- XAI_AVAILABLE=true:使用完整模式——并行运行 Claude WebSearch 和 xAI 脚本。
- XAI_AVAILABLE=false:使用仅 Web 模式——仅运行 Claude WebSearch。附加一条建议配置 xAI 的说明。
此步骤不可省略。开始研究前务必先检查。
步骤 1:解析查询
从用户输入中提取:
1a. TOPIC
正在研究的主题。移除框架标识和深度修饰词。
1b. 框架
根据查询模式判断输出框架:
| 框架 | 判断模式 | 示例 |
|---|---|---|
| COMPARISON | “X vs Y”、“compare X and Y”、“X or Y”、“which is better” | “面向企业应用的 React vs Vue” |
| LANDSCAPE | “landscape”、“ecosystem”、“market”、“what's out there”、“overview of” | “AI Agent 框架概览” |
| DEEP_DIVE | “deep dive”、“how does X work”、“explain”、“tell me about”、“what is” | “深入了解 WebAssembly” |
| DECISION | “should I/we”、“evaluate”、“which should we use”、“recommend” | “我们应该使用 Kafka 还是 RabbitMQ?” |
显式覆盖:用户可在查询中的任意位置使用 [comparison]、[landscape]、[deep-dive] 或 [decision] 强制指定框架。
默认值:如果未检测到框架,则使用 DEEP_DIVE。
1c. 深度
| 深度 | 触发词 | 轮数 | 目标来源数 |
|---|---|---|---|
| quick | “quick”、“brief”、“overview” | 1 | 10-15 |
| default | (无) | 2 | 25-40 |
| deep | “deep”、“comprehensive”、“thorough” | 3 | 60-90 |
第 2 步:第 1 轮——广泛搜索
生成查询
生成 6-9 个查询,涵盖主题的不同角度:
- 直接查询:
"{TOPIC}"—— 按原样表述的主题 - 时间查询:
"{TOPIC} 2026"或"{TOPIC} latest" - Reddit 查询:
site:reddit.com "{TOPIC}" - GitHub 查询:
site:github.com "{TOPIC}" - HN 查询:
site:news.ycombinator.com "{TOPIC}" - 特定框架的查询:
- COMPARISON:
"{Alt A} vs {Alt B}" - LANDSCAPE:
"{TOPIC} ecosystem" OR "{TOPIC} landscape" - DEEP_DIVE:
"how {TOPIC} works" OR "{TOPIC} explained" - DECISION:
"{TOPIC}" experience OR recommendation
- COMPARISON:
- Substack 查询:
site:substack.com "{TOPIC}" - 财经媒体查询:
site:tradingview.com OR site:benzinga.com OR site:seekingalpha.com "{TOPIC}"(适用于金融/经济类主题) - LinkedIn 查询:
site:linkedin.com "{TOPIC}"(主题涉及个人或公司时)
并行执行
同时运行搜索:
Claude Code(免费):
WebSearch:直接查询WebSearch:时间查询WebSearch:针对 Reddit 的查询WebSearch:针对 GitHub 的查询WebSearch:针对 HN 的查询WebSearch:针对 Substack 的查询WebSearch:针对财经媒体的查询(适用于金融/经济类主题)WebSearch:针对 LinkedIn 的查询(主题涉及个人/公司时)WebSearch:针对 YouTube 的查询WebSearch:针对 WSO 的查询(适用于金融主题)WebSearch:针对 Crunchbase 的查询(适用于公司/初创公司主题)
xAI 脚本(如果可用,以后台 Bash 任务运行):
uv run scripts/xai_search.py web "{TOPIC}" --json &
uv run scripts/xai_search.py reddit "{TOPIC}" --json &
uv run scripts/xai_search.py x "{TOPIC}" --json &
uv run scripts/xai_search.py github "{TOPIC}" --json &
uv run scripts/xai_search.py hn "{TOPIC}" --json &
uv run scripts/xai_search.py substack "{TOPIC}" --json &
uv run scripts/xai_search.py finance "{TOPIC}" --json &
uv run scripts/xai_search.py linkedin "{TOPIC}" --json &
合并与去重
MERGED_WEB = dedupe(claude_web + xai_web)
MERGED_REDDIT = dedupe(claude_reddit + xai_reddit)
MERGED_GITHUB = dedupe(claude_github + xai_github)
MERGED_HN = dedupe(claude_hn + xai_hn)
MERGED_SUBSTACK = dedupe(claude_substack + xai_substack)
MERGED_FINANCE = dedupe(claude_finance + xai_finance)
MERGED_LINKEDIN = dedupe(claude_linkedin + xai_linkedin)
X_RESULTS = xai_x_results (no Claude equivalent)
WSO_RESULTS = claude_wso (WebSearch only)
CRUNCHBASE_RESULTS = claude_crunchbase (WebSearch only)
YOUTUBE_RESULTS = claude_youtube (WebSearch only)
按 URL 去重,保留元数据更丰富的条目。
第 1 轮内部笔记
记录(仅供内部使用,不输出):
KEY_ENTITIES: [specific tools, companies, people discovered]
THEMES: [recurring themes across sources]
GAPS: [what's missing — feed into Step 3]
CONTRADICTIONS: [conflicting claims]
LEADS: [URLs worth deep-reading via WebFetch (or scrapling fallback) in Round 2]
第 3 步:差距分析
第 1 轮结束后,进行差距分析。完整检查清单见 references/iterative-research.md。
差距类别
| 差距 | 检查项 | 操作 |
|---|---|---|
| 缺少视角 | 是否涵盖开发者、运营人员和业务方的观点? | 针对缺失的视角搜索 |
| 未经验证的说法 | 是否有仅由 1 个来源支持的说法? | 寻求佐证 |
| 覆盖较浅 | 是否提到了某个实体,却未作解释? | 对该实体进行深入搜索 |
| 数据过时 | 关键事实是否超过 12 个月? | 搜索近期更新 |
| 缺少来源类型 | 是否缺少 Reddit / GitHub / HN / X / 博客? | 针对该平台搜索 |
| 缺少金融/业务背景 | 是否缺少 Substack / 财经媒体 / LinkedIn / Crunchbase? | 针对该平台搜索 |
规划第 2 轮
选出最重要的 4-6 个差距,并为每个差距生成有针对性的查询。多轮优化模式见 references/search-patterns.md。
如果深度为 quick(仅进行一轮),则跳至第 6 步。
第 4 步:第 2 轮——针对性后续搜索
查询规则
- 绝不重复第 1 轮的查询
- 针对特定实体的查询——以第 1 轮发现的目标名称/工具为目标
- 针对特定来源类型的查询——以第 1 轮中代表性不足的平台为目标
- 针对框架调整查询——参见
references/iterative-research.md中的目标选择表
执行
采用与第 1 轮相同的并行模式,但使用有针对性的查询。
此外,对第 1 轮发现的高价值 URL 使用 WebFetch:
- 官方文档页面
- 基准测试结果页面
- 工程博客文章
- 附有方法说明的比较文章
第 2 轮最多调用 4-6 次 WebFetch。
Scrapling 回退方案:如果 WebFetch 返回 403、空内容、验证码页面或被拦截的响应,则使用 cli-web-scrape 中的自动升级协议重试:
scrapling extract get "URL" /tmp/scrapling-fallback.md→ 读取 → 验证内容- 如果内容较少(仅含 JS 外壳、没有数据或大多是导航链接)→
scrapling extract fetch "URL" /tmp/scrapling-fallback.md --network-idle --disable-resources→ 读取 → 验证 - 如果仍被拦截 →
scrapling extract stealthy-fetch "URL" /tmp/scrapling-fallback.md --solve-cloudflare - 所有层级均失败 → 跳过该 URL,并注明“scrapling blocked”
置信度更新
第 2 轮结束后,重新评估所有论断:
| 之前 | 新证据 | 之后 |
|---|---|---|
| [LOW] | 找到第二个来源 | [MEDIUM] |
| [MEDIUM] | 找到第三个来源 | [HIGH] |
| 任意 | 出现矛盾 | 注明冲突,并呈现双方观点 |
如果深度为 default,则跳至第 6 步。
第 5 步:第 3 轮——验证(仅限深度模式)
第 3 轮仅用于验证,不进行新的发现。
预算
最多进行 6-10 次 WebFetch 查找,目标如下:
| 目标 | 用途 | 最多调用次数 |
|---|---|---|
| 关键论断的第一手来源 | 验证准确性 | 3-4 |
| 独立基准测试网站 | 验证性能论断 | 1-2 |
| 矛盾双方 | 解决冲突 | 1-2 |
| 版本/日期的官方网站 | 确认时效性 | 1-2 |
**Scrapling 回退方案:**与第 2 轮采用相同的自动升级协议——尝试 HTTP 层级并验证内容;若内容较少或遭到拦截,则升级到 Dynamic/Stealthy。
规则
- 验证,而非发现——不探索新主题
- 针对影响最大的论断——即可能改变建议的论断
- 检查第一手来源——查阅原始来源,而非摘要
- 更新置信度——根据调查结果提高或降低置信度
- 优先相信第一手来源——若第一手来源与第二手来源矛盾,则注明
第 6 步:综合分析
框架选择
加载 references/output-frameworks.md,并选择与检测到的 FRAMEWORK 匹配的模板。
填写模板
- 标题区块——框架类型、主题、深度、来源数量、日期
- 核心内容——根据研究发现填写框架各部分
- 置信度指标——为每项论断标注
[HIGH]、[MEDIUM]或[LOW] - 社区观点——综合 Reddit/X/HN/GitHub 上的情绪倾向
- 统计信息页脚——来源数量和互动指标
- 来源部分——按平台整理,并附上 URL 和指标
按互动量加权综合
根据来源的信号强度进行加权。完整的加权表请参见 references/iterative-research.md。
| 信号 | 阈值 | 权重 |
|---|---|---|
| Reddit 赞成票 | 100+ | 高 |
| X 互动量 | 50+ 个赞 | 高 |
| GitHub 星标 | 1000+ | 高 |
| HN 积分 | 100+ | 高 |
| Substack 赞 | 50+ | 高 |
| 多平台一致 | 3+ 个来源 | 高 |
| 双引擎匹配 | Claude + xAI | 高 |
| Seeking Alpha 评论 | 20+ | 中 |
| WSO 赞成票 | 10+ | 中 |
| YouTube 观看次数 | 10K+ | 中 |
| 近期(< 7 天) | 任意 | 中 |
| 仅有单一来源 | 任意 | 低 |
统计信息页脚格式
Research Statistics
├─ Reddit: {n} threads │ {upvotes} upvotes
├─ X: {n} posts │ {likes} likes │ {reposts} reposts
├─ GitHub: {n} repos │ {stars} total stars
├─ HN: {n} threads │ {points} total points
├─ Substack: {n} articles │ {likes} likes
├─ Financial: {n} articles │ {sources}
├─ LinkedIn: {n} profiles/articles
├─ YouTube: {n} videos
├─ WSO: {n} threads
├─ Crunchbase: {n} profiles
├─ Web: {n} pages │ {domains}
├─ Merged: {n} from Claude + {n} from xAI
└─ Top voices: r/{sub1} │ @{handle1} │ {blog1}
仅限网页模式的页脚:
Research Statistics
├─ Reddit: {n} threads (via Claude WebSearch)
├─ GitHub: {n} repos (via Claude WebSearch)
├─ HN: {n} threads (via Claude WebSearch)
├─ Substack: {n} articles (via Claude WebSearch)
├─ Financial: {n} articles (via Claude WebSearch)
├─ LinkedIn: {n} profiles/articles (via Claude WebSearch)
├─ YouTube: {n} videos (via Claude WebSearch)
├─ Web: {n} pages
└─ Top sources: {site1}, {site2}
Add X/Twitter + broader coverage: Set up xAI API key (see Prerequisites)
步骤 7:专家模式
交付研究结果后,进入专家模式:
- 根据缓存的结果回答后续问题
- 除非明确要求,否则不进行新的搜索
- 交叉比对不同来源
触发新搜索(退出专家模式):
- “再次搜索……”
- “查找更多关于……的信息”
- “更新研究……”
- “深入调查……”
运行模式
| 模式 | 来源 | 适用情况 |
|---|---|---|
| 完整 | Claude WebSearch + xAI(web + X + Reddit + GitHub + HN + Substack + Finance + LinkedIn) | 步骤 0 返回 XAI_AVAILABLE=true |
| 仅 Web | 仅 Claude WebSearch | 步骤 0 返回 XAI_AVAILABLE=false |
模式由步骤 0 决定——绝不能跳过或在未检查的情况下假设使用仅 Web 模式。
深度控制
| 深度 | 轮次 | 来源 | xAI 调用次数(完整模式) | 用例 |
|---|---|---|---|---|
| quick | 1 | 10-15 | 8 | 快速概览、时效性内容 |
| default | 2 | 25-40 | 13 | 均衡研究 |
| deep | 3 | 60-90 | 18 + 6-10 WebFetch | 全面分析、重要决策 |
成本说明
| 操作 | 成本 |
|---|---|
| Claude Code WebSearch | 免费(订阅内) |
| xAI 搜索调用(任意类型) | $0.005/次 |
| WebFetch(内置) | 免费 |
| scrapling 后备方案(可选) | 免费 |
每次研究会话的预估成本:
| 深度 | 完整模式 | 仅 Web |
|---|---|---|
| quick | ~$0.04(8 次 xAI 调用) | 免费 |
| default | ~$0.065(13 次 xAI 调用) | 免费 |
| deep | ~$0.09(18 次 xAI 调用) | 免费 |
节省成本的策略:
- Claude WebSearch 可满足大多数需求(免费)
- xAI 可搜索 X/Twitter(独特价值),并扩大各平台的覆盖范围
- 使用 WebFetch 深入阅读特定 URL(免费);遇到网站拦截时使用 scrapling 后备方案
关键约束
应做事项:
- 每次研究会话前都运行步骤 0(检测 xAI 密钥)
- 如果存在 xAI 密钥:并行运行 Claude WebSearch 和 xAI 脚本(完整模式)
- 如果缺少 xAI 密钥:仅使用 Claude WebSearch(仅 Web 模式)
- 在各轮之间进行差距分析——绝不能跳过
- 合并结果并按 URL 去重
- 从结果中排除已归档的 GitHub 仓库——这些仓库无人维护且为只读
- 为每项主张标注置信度:
[HIGH]、[MEDIUM]或[LOW] - 让综合结论以实际研究为依据,而非既有知识
- 引用带 URL 的具体来源
- 调用 xAI 脚本时使用
--json标志,以便进行程序化解析 - 从
references/output-frameworks.md加载框架模板
不应做事项:
- 不要跳过 Claude Code WebSearch(它是免费的)
- 可以并行时,不要按顺序执行搜索
- 不要展示来自不同搜索引擎的重复结果
- 引用任一来源时,不要摘录超过 125 个字符
- 不要在多轮搜索中重复查询——每轮都应针对上一轮发现的差距
- 对于 quick 或 default 深度,不要添加第 3 轮——仅 deep 深度需要
- 不要在第 3 轮发现新主题——仅进行验证
故障排除
未找到 xAI 密钥:
security find-generic-password -s "xai-api" ~/Library/Keychains/claude-keys.keychain-db
如果未找到,请运行上文中的钥匙串设置步骤。
钥匙串已锁定:
security unlock-keychain ~/Library/Keychains/claude-keys.keychain-db
没有 X/Twitter 结果: 需要有效的 xAI API 密钥。请在 https://console.x.ai 查看。
WebFetch 被拦截(403/验证码/内容为空): 安装 scrapling,并遵循 cli-web-scrape 的自动升级协议(HTTP → 验证 → Dynamic → Stealthy):
uv tool install 'scrapling[all]'
scrapling install # one-time: install browser engines for Dynamic/Stealthy tiers
脚本错误: 确保已安装 uv:which uv。如果缺少,请运行:curl -LsSf https://astral.sh/uv/install.sh | sh
参考资料
references/output-frameworks.md— 框架模板(比较、概览、深入分析、决策)references/search-patterns.md— 搜索运算符和多轮查询模式references/iterative-research.md— 差距分析、轮次流程、交叉比对方法