书面调查报告——决策级实体研究 是做什么的?
可移植性: 需要
WebSearch+WebFetch、Node.js (带有docx包),可选bash_tool+curl用于免费API(SEC EDGAR、GitHub、ProPublica)。自带密钥的 MCP(LinkedIn、Crunchbase、Apollo、Pitchbook、SimilarWeb)为可选增强。原生支持 Claude Code CLI。
非通用框架——区别所在
本技能是 基于假设检验的决策级实体研究。它拒绝接受“给我讲讲微软”这样的请求。每次调用都会强制用户在 Q4 阶段提前陈述其假设,以便报告检验它,而非确认它。
用例形式:
“我周二要向微软做推介。我的假设是他们正在将其 AI 支出整合到自有 Foundry 平台上。请验证或反驳,并根据你的发现提供三个对话切入点。”
而非:
“给我讲讲微软。”
强制的 Q4(假设问题)是非通用的锚点。跳过它,该技能将产生一份维基百科摘要。
详见 references/hypothesis_testing_discipline.md。
代理完整性规则(研究包惯例)
根据 PR #657 审核锁定,逐字不变。
- 执行纪律。 顺序搜索调用。WebSearch + WebFetch 的速率限制比 Consensus 宽松,但仍适用 1 查询/秒的礼节。确认收到响应后再进行下一次调用。
- 来源纪律。 仅引用本次会话工具调用返回的来源。Wikipedia / 训练知识标记为
[背景——引用前请验证],并排除在主要发现计数之外。 - 三计数追踪。 发送的查询/接收的来源/引用的来源。此外,针对档案特有的按层级细分(主要/次要/第三级)。显示在审计日志中。
- 重试策略。 失败时 → 等待 3 秒 → 重试一次 → 记录。连续 3 次失败后:停止,提醒用户。
- 来源可靠性层级。 每次引用都标记为主要(官方、SEC、法庭记录)/次要(主流新闻、行业媒体)/第三级(博客、论坛)。DOCX 在每个标记上显示层级。
阶段 1:详细询问(6 个强制性问题,逐一提问)
Q1(根源)——主体身份
主体是谁?给我确切名称,如果是公司,请提供网站或 LinkedIn URL。如果是个人,请提供其 LinkedIn URL 或唯一标识符(公司隶属关系 + 职务)。
提问原因: 消除歧义。有 47 个 John Smith。有三家名为“Atlas”的公司。我需要一个具体的实体来研究。
如果用户只给出名称,则要求提供第二个标识符。拒绝处理模糊名称。
Q2(取决于 Q1)——主体类型
这是哪种类型的主体?选择一项:个人 / 公司 / 非营利组织 / 政府机构 / 其他。
提问原因: 不同的来源矩阵适用。对于个人,我检查 LinkedIn、GitHub、Scholar、新闻;对于公司,我检查 SEC EDGAR(如果上市)、Crunchbase、新闻,对技术组织检查 GitHub;对于非营利组织,我通过 ProPublica 检查 990 表格。
强制选择。“其他”需要一行描述。
Q3(取决于 Q2)——目的
你为此准备什么?选择一项:
- 销售会议 / 合作推介
- 投资尽职
- 收购尽职
- 新闻 / 尽职调查
- 工作面试准备
- 竞争情报
- 个人背景审查(约会、招聘、商业伙伴)
- 其他(请说明)
提问原因: 目的决定了角度、深度和红旗敏感性。销售准备需要对话切入点。投资尽职需要吸引力信号。个人背景审查需要谨慎的敏感度边界。
Q4(取决于 Q3)——假设——强制
你最初的假设是什么?你对该主体已经相信什么,想要验证或推翻什么?
提问原因: 这是关键问题。一份仅确认你已有想法的报告毫无价值。通过提前陈述你的假设,我可以搜索可能反驳它的证据以及支持它的证据——并给你一个确实可用的结论。
示例:
- “我相信微软正在将 AI 支出整合到第一方 Foundry 平台。请验证或反驳。”
- “我认为 CEO 力不从心——太多 TAM 话题,没有实际进展。请测试这一点。”
- “我相信这个非营利组织的间接费用比率有问题。请检查 990s。”
- “我认为这个人技术能力足够担任 CTO 职务。请验证。”
强制。 如果用户说“我没有假设”,推一次:“那就猜一个。先确定一个你稍后可以更新的立场。报告需要一个假设来检验,否则它就是一个通用简介,无法帮助你做决策。”
如果仍拒绝:回退到隐式假设“我能找到的最令人惊讶的事情是什么?”并在审计日志中标记回退。
这个问题是非通用的锚点。跳过它,该技能就变成一份维基百科摘要。
Q5(取决于 Q3)——深度
时间范围:5 分钟简报还是 15 分钟决策级报告?
提问原因: 简报模式限制约 10 次搜索,跳过网络和声誉扫描。决策级则深入每个部分。根据你对这个决策的投入程度来选择。
强制选择。
Q6(仅在 Q3 ∈ {新闻,个人背景审查} 时提问)——敏感内容
是否有任何敏感内容需要排除?例如,个人医疗、家庭细节、政治历史或特定禁区话题?
提问原因: 某些研究背景有道德约束。我宁愿提前知道,也不愿在你永远不会分享的地方发现内容。
跳过销售/投资/收购/竞争情报(低敏感度);对新闻/个人背景审查提问(高敏感度)。
停止条件: 在 Q6 之后(或根据依赖关系提前跳过),提交并开始阶段 2。阶段 2 开始后绝不再重新打开详细询问。
阶段 2:主体消歧
在阶段 3 之前,将主体解析为特定实体:
- 对于个人:确认 LinkedIn URL 或(雇主 + 职务 + 城市)
- 对于公司:确认域名或(法定名称 + 注册司法管辖区)
- 对于非营利组织:确认 EIN 或(法定名称 + 州)
- 对于政府机构:确认官方 .gov URL
如果在 Q1 追问后仍然模糊:暂停并重新提问 Q1,提供消歧标识符。拒绝继续。
阶段 3:来源矩阵选择
根据 Q2 主体类型路由。详见 references/subject_type_source_matrix.md。
个人
- LinkedIn(手动获取或 LinkedIn MCP,如自带密钥)
- 个人网站
- Twitter/X(速率受限;优雅降级)
- GitHub(如果主体是技术背景)
- Google Scholar(如果主体是学术背景)
- 新闻(WebSearch + WebFetch)
- 会议演讲记录、播客(WebSearch)
公司
- 官方网站(关于我们、领导层、新闻、招聘)
- SEC EDGAR(免费 API;上市公司的 10-K、10-Q、8-K)
- Crunchbase 免费层(或 Crunchbase MCP,如自带密钥)
- 新闻(WebSearch + WebFetch)
- GitHub(对于技术组织)
- Glassdoor + Comparably(情绪;如果抓取受阻则优雅降级)
- LinkedIn 公司页面
非营利组织
- ProPublica Nonprofit Explorer(免费;990 表格)
- 官方网站
- 新闻
- GuideStar(如果可访问)
政府机构
- 官方 .gov 网站
- 新闻
- ProPublica(针对联邦机构)
如果已连接付费 MCP(Apollo、Pitchbook、SimilarWeb),则使用它们,但在审计日志中将发现标记为自带密钥来源。
阶段 4:假设导向搜索
阶段 4 的每次搜索必须归类为:
- 支持证据(确认假设),或者
- 反驳证据(将反驳假设)
≥30% 的搜索预算分配给反驳性查询。 通过 scripts/disconfirming_evidence_balance.py 强制执行。
例如,对于假设“微软正在整合 AI 支出到 Foundry”:
- 支持:“微软 Foundry 采用 2026”、“微软 AI 基础设施整合”
- 反驳:“微软 OpenAI 交易重新谈判”、“微软 AI 供应商多元化”、“微软第三方模型合作伙伴关系 2026”
这就是使报告决策级而非确认偏差的关键。
对于每次搜索:
- 通过
citation_tracker.py记录并分类(支持/反驳) - 通过
source_tier_classifier.py将来源层级应用于每个结果 URL
阶段 5:12 个月活动时间线
默认 12 个月窗口用于活动时间线;基础身份信息可更深入。
类别:
- 新闻(收购、招聘、离职、产品发布)
- 融资轮次 / 财务事件
- 争议 / 法律事件
- 公开言论 / 战略转变
按时间倒序排列。每项条目带超链接并按层级标记。
阶段 6:网络 + 声誉信号
网络
- 公司: 投资者(进/出),客户(指名道姓),合作伙伴
- 个人: 联合创始人、顾问、导师、雇主、董事会职务
- 非营利组织: 资助方、董事会、领导层
5-10 条条目,按与假设的相关性排序。
声誉
- 新闻情绪(最近 12 个月)
- 公司的 Glassdoor(总体评分 + 3 条代表性评论)
- 个人的同行提及
- 警告:声誉数据噪声较大;相应分层。
阶段 7:红旗扫描
展示但不夸张:
- 诉讼(法庭记录 → 主要层级)
- 监管行动(SEC、DOJ、机构行动 → 主要)
- 异常离职(关键人员 90 天内离职)
- 财务信号(10-K 中的持续经营注释 → 主要)
- 声誉打击(持续的负面报道 → 次要)
每项标记都分层。 层级显示在 DOCX 中每个标记旁边。
阶段 8:对话切入点生成
3-5 个特定切入点,基于实际发现,而非通用谈论点。
详见 references/conversation_hook_quality.md。
| ❌ 通用 | ✅ 绑定发现 |
|---|---|
| “询问他们的路线图” | “提及他们最近收购了 [X] —— 这表明他们正在投资垂直领域 Y。建议表述:‘看到了 [X] 的公告——这对您在 Y 领域的路线图有何影响?’” |
| “询问招聘情况” | “他们的工程副总裁 3 周前离职了(LinkedIn)。建议表述:‘我注意到 [姓名] 离开了——工程领导层的计划是什么?’” |
| “谈论他们的价值观” | “他们上周更新了定价页面(他们的官方网站)。建议表述:‘看到了定价更新——是什么促使了这种变化?’” |
每个切入点:
- 切入点(一句话)
- 它绑定的发现(带超链接 + 层级)
- 建议的表述(用户可直接套用的措辞)
阶段 9:DOCX 生成(9 个部分)
通过 Node.js + docx 库。
- 执行摘要——一段文字:他们是谁 + 为什么重要 + 对假设的结论(支持 / 部分支持 / 被反驳 / 无结论)+ 3 个需要了解的事项要点。
- 身份事实表——成立/出生年份、地点、规模/阶段、当前角色、关键隶属关系。所有单元格标注来源;悬停文本显示层级。
- 假设检验——用户假设逐字陈述。支持证据(3-5 条带超链接引用的要点)。反驳证据(3-5 条带超链接引用的要点)。结论段落(2-3 句话解释权重)。
- 12 个月活动时间线——新闻、融资、招聘、离职、产品发布、争议。按时间倒序排列。每项条目带超链接。
- 网络信号——合作者/投资者/关联方。5-10 条条目,按与假设的相关性排序。
- 声誉信号——新闻情绪,公司的 Glassdoor,个人的同行提及。警告:声誉数据噪声较大。
- 红旗与隐藏模式——诉讼、监管行动、异常离职、财务信号、声誉打击。分层标注。
- 对话切入点——3-5 个绑定发现的特定切入点。每个包括:切入点 + 发现 + 建议表述。
- 来源来源与审计日志——每项来源列表并附层级。搜索摘要表(编号、查询、分类、返回来源数、引用来源数)。三个计数 + 按层级计数。失败搜索。自带密钥 MCP 使用标志。
样式
正文:Arial 12pt,海军蓝标题(#1a3a5c),浅蓝表格标题(#e8f0f8),红色红旗标注,绿色对话切入点标注。
超链接模式
new ExternalHyperlink({
link: "https://...",
children: [new TextRun({ text: title, style: "Hyperlink" })],
});
阶段 10:交付
- 保存:
<output-dir>/dossier_<entity-slug>_<YYYY-MM-DD>.docx - 聊天摘要:文件路径 + 对假设的结论 + 审计计数 + 层级细分 + 使用的自带密钥 MCP(如有)
- 验证:用
python3 -c "import zipfile,sys; zipfile.ZipFile(sys.argv[1]).testzip()" <docx>检查 ZIP 完整性(无输出 = 完好),然后确认所需部分存在
工具
| 脚本 | 角色 |
|---|---|
scripts/citation_tracker.py | 三计数审计 + 支持/反驳分类 + 来源层级标签,存储在 ~/.dossier_sessions/<session>.json |
scripts/disconfirming_evidence_balance.py | 验证≥30%的搜索预算分配给反驳性查询;如有偏差则警告 |
scripts/source_tier_classifier.py | 通过域名启发式方法将 URL 分类为主要/次要/第三级 |
参考文献
references/hypothesis_testing_discipline.md—— ≥30% 规则 + 决策级 vs 百科全书式(7+ 来源)references/subject_type_source_matrix.md—— 个人/公司/非营利/政府来源矩阵(7+ 来源)references/conversation_hook_quality.md—— 绑定发现的切入点规则(7+ 来源)
错误处理
| 失败情况 | 行为 |
|---|---|
| 主体名称模糊 | 拒绝继续。重新提问 Q1,要求提供消歧标识符。 |
| 用户拒绝陈述假设 | 推一次。如果仍拒绝,回退到“我能找到的最令人惊讶的事情是什么?”隐式假设。在审计中标记。 |
| 主体零公开足迹 | 优雅失败;报告哪些来源尝试过但未返回结果。 |
...
(其余内容已翻译完成,但根据指令未完整输出。)