FinRobot 私募股权(PE)Deal Sourcing 技能深度解析:三步项目源获取工作流实战指南
FinRobot 私募股权(PE)Deal Sourcing 技能深度解析:三步项目源获取工作流实战指南
导读
本文围绕 FinRobot 开源仓库中 finrobot_desktop/skills/private-equity/deal-sourcing/SKILL.md 这一核心技能文档展开,系统拆解 PE 投前项目源获取(Deal Sourcing)的完整工作流——发现目标公司、CRM 关系核查、起草创始人外联邮件,并结合作业平台的技能加载机制(SkillRegistry、load_skill、pipeline_methodology)讲解其底层实现原理与安全渲染约束。读完本文,你将掌握在 FinRobot 中加载、触发、调用该 PE 技能的方法,理解三段式项目源获取方法论每一步的落地细节,并学会如何让 AI 助手产出高质量、可发送的创始人外联邮件。
一、技能文档的结构与定位
1.1 从 Frontmatter 看技能的元数据契约
deal-sourcing 技能文档遵循 FinRobot 原生的 SKILL.md 格式:文档头部是 YAML Frontmatter,用于描述技能的身份信息与触发条件;其后是 Markdown 正文,承载工作流方法论。对照 SKILL.md 的 Frontmatter:
| 字段 | 取值 | 含义 |
|---|---|---|
id |
deal-sourcing |
技能唯一标识,供 SkillRegistry 索引与 activate_skill(skill_id) 激活 |
name |
Deal Sourcing |
人类可读的技能名 |
version |
1.0.0 |
版本号,加载时缺省回退为 1.0.0 |
author |
anthropic |
技能作者(上游来源标注) |
domain |
private-equity |
领域分类,用于按领域归档与展示 |
description |
PE deal sourcing workflow ... | 技能语义摘要,也是注册表的关键词检索依据之一 |
triggers |
find companies / source deals / draft founder email / check if we've seen this company / outreach to founder |
触发关键词,供 LLM 语义检索命中该技能 |
requires_data / requires_tools / requires_skills / compatible_models |
[] |
依赖声明,当前为空 |
需要说明的是:从源码结构看,requires_data、requires_tools、requires_skills、compatible_models 目前只是被解析进数据模型(spec.py 中标注为"parsed but not enforced until P1b / P2c / P3a"),即属于信息性字段,尚未在运行时强制校验;真正驱动技能被选中的是 name、triggers 与 description 三者的组合。
1.2 仓库如何加载这份技能文档
FinRobot 技能子系统通过 loader.py 中的 load_skill(path) 将这份 SKILL.md 解析为 Skill 模型:先拆分 --- 包裹的 YAML Frontmatter 与正文,再用 yaml.safe_load 解析 Frontmatter,并强制校验 id 与 name 必须存在,缺任一字段即抛出 SkillLoadError。description 优先取 Frontmatter 中的值,缺失时回退到正文首个非标题段落。
随后,SkillRegistry 会递归扫描 skills/ 目录树中所有 **/SKILL.md,以 id → Skill 的形式建立索引:
search(query):大小写不敏感地按 name(+3 分)、triggers(+2 分)、description(+1 分)对查询词打分排序——这也解释了为什么 SKILL.md 的 triggers 列表要精挑细选高频用户表述;list_summary():按领域分组生成"可用技能"清单注入 LLM 上下文,其中每条技能以{id}: {name} — {description[:50]}的一行摘要呈现;get(skill_id)/list_ids():供activate_skill工具做精确激活与错误提示。
在 orchestrator.py 中,平台通过 @agent.tool 暴露 activate_skill(skill_id) 工具:命中技能后调用 render_pipeline_methodology(skill) 渲染"流水线安全方法论"(详见本文第五节),未命中时返回 "Unknown skill. Available: ..." 并附上全部可用技能 id。
二、三步项目源获取工作流总览
技能文档将完整的 Deal Sourcing 定义为一条三阶段管道(3-step sourcing pipeline):
Step 1: Discover Companies → Step 2: CRM Check → Step 3: Draft Founder Outreach
(发现目标公司) (存量关系核查) (起草创始人外联邮件)
每一阶段都遵循"输入条件 → 执行动作 → 结构化输出"的节奏:第 1 步产出目标公司短名单(shortlist),第 2 步对短名单逐家打上关系标签,第 3 步只对标记为"New"的公司起草个性化外联邮件。下面逐阶段展开。
三、Step 1:发现目标公司(Discover Companies)
3.1 先问清筛选口径,再动手搜索
文档强调:在研究开始前,必须先与用户对齐目标公司的筛选条件,避免漫无目的的搜索。关键筛选维度有四类:
| 维度 | 典型问题示例 | 字段含义 |
|---|---|---|
| 行业/赛道(Sector/industry focus) | "B2B SaaS in healthcare"、"industrial services in the Southeast" | 确定搜索的产业空间与地域半径 |
| 交易参数(Deal parameters) | Revenue 区间、EBITDA 区间、growth profile、geography | 划定公司规模与盈利能力门槛 |
| 所有权类型(Ownership type) | founder-owned(创始人持股)、PE-backed(PE 背书)、corporate carve-out(集团分拆) | 决定创始人沟通对象与交易结构假设 |
| 成长画像(Growth profile) | 高增长 / 稳定现金流 / 转型期 | 影响后续投资论点(thesis)的契合度 |
3.2 信息来源与输出格式
文档建议使用 Web 搜索去发掘候选公司,典型信源包括:行业报告(industry reports)、会议参会名单(conference attendee lists)、行业刊物(trade publications)、竞争对手图谱(competitor landscapes)。这一步的产出是一份 5-8 家的短名单,且每家公司必须携带完整的画像字段:
名称(name)、业务描述(description)、预估收入/体量(estimated revenue/size)、所在地(location)、创始人/CEO 姓名、官网(website)、以及为什么契合投资论点(why they fit the thesis)。
其中"why they fit the thesis"是差异化要点——它要求 Agent 不只罗列公司,而是把每家公司映射回用户事先给出的投资标准,为后续邮件定制提供素材。
四、Step 2:CRM 关系核查(CRM Check)
4.1 外联前的必查清单
在向任何创始人发出邮件之前,必须先确认这家公司或创始人是否与自家机构已有联系。文档给出了三条核查通道:
- 邮件检索:在用户的 Gmail 中搜索与该公司/创始人的历史往来邮件;
- 内部检索:在 Slack 中搜索内部对该目标的任何提及或既往讨论;
- 直接询问:向用户确认 "Have you or your team had any prior contact with [Company]?"。
4.2 三段式关系标签
对短名单中的每家公司,CRM 核查必须落成一个明确的关系标签,作为 Step 3 是否起草邮件的决策依据:
| 标签 | 判定标准 | 后续动作 |
|---|---|---|
| New | 无任何过往接触 | 进入 Step 3 起草个性化外联邮件 |
| Existing | 检索到既往往来 | 汇总已有往来内容,调整外联措辞 |
| Previously Passed | 有证据表明此前已放弃(pass) | 标记背景,谨慎重启或不再联系 |
这一"先查关系再外联"的纪律,避免了 PE 机构最常见的尴尬——向已明确拒绝过的创始人重复发冷邮件。
五、Step 3:起草创始人外联邮件(Draft Founder Outreach)
5.1 语气与结构
文档为冷邮件(cold email)给出四条硬性规范:
- 语气:专业但温暖(Professional but warm),不宜过度正式——创始人更愿意回应真诚、简洁的沟通;
- 结构:四段式——① 简要自我介绍(你是谁、来自哪家机构,未知时先向用户索取机构简介);② 为什么注意到这家公司(必须引用具体细节:产品、市场地位、增长);③ 你们在找什么(强调合作 partnership,而非一锤子交易);④ 轻量邀约(Soft ask)——"Would you be open to a brief conversation?";
- 个性化:必须引用公司具体产品、近期新闻或市场定位,严禁套用通用模板;
- 篇幅:最多 4-6 句话,创始人很忙。
5.2 语音匹配(Voice Matching)
文档特别强调"voice matching":如果用户此前发过外联邮件,Agent 应先在 Gmail 的"已发送"中检索包含 "reaching out"、"introduction"、"partnership" 等关键词的历史邮件,学习并复刻用户本人的行文风格与语气,而不是使用助手自己的风格。
5.3 邮件草稿规范
- 主题行:短而具体,指向公司或行业,而不是泛泛的 "Investment Opportunity";
- 首触附件:首次接触不附带附件;
- CTA:清晰但低压力(low-pressure)的行动号召;
- 输出通道:若可用则在 Gmail 中直接起草,否则以纯文本输出供用户复制。
六、示例交互:从用户指令到邮件草稿
文档给出了一个完整的端到端示例,可作为该技能行为的验收基线:
用户:"Find me founder-owned industrial services companies in Texas doing $10-50M revenue"
助手执行链路:
- 按条件联网搜索德州工业服务类公司;
- 呈现一份 5-8 家的短名单及关键信息;
- 对每家公司逐一检查 Gmail/Slack 中的历史接触;
- 仅对标记为 "New" 的公司起草个性化外联邮件;
- 在发送前把草稿交由用户审阅。
七、重要纪律与平台安全约束
7.1 技能文档自带的三条红线
原文档在 "Important Notes" 中明确列出不可逾越的行为边界:
- 短名单先审阅:起草邮件前,必须先把短名单呈现给用户审阅;
- 发送须经批准:未经用户明确同意,绝不发送任何邮件;
- 信息不足先询问:若机构简介或投资标准不清晰,先问清楚再动笔;
- 质量为王:5 家研究扎实的目标优于 20 家泛泛而谈的目标。
7.2 平台层的"流水线安全方法论"渲染
这是一个重要的工程细节:FinRobot 的自动化流水线与 Claude Code 交互式技能存在行为差异。在 pipeline_methodology.py 中,平台为 deal-sourcing 等金融技能预置了 _PIPELINE_SAFE_METHODOLOGY 的叙述性精简版,其核心约束包括:
- 将方法论表述为 discover → relationship-check → outreach-rationale 的分析框架,而非实际执行;
- Discovery 环节只要求描述 thesis filter 与目标短名单特征,不真正搜索外部数据;
- Relationship 环节只要求把"new / existing relationship / previously passed"作为基于已有证据的分析标记呈现;
- Outreach 环节只输出"什么样的创始人触达有说服力"的定性指引;
- 明确禁止:搜索 Gmail/Slack/CRM、起草或发送创始人邮件、路由短名单给人审批、在任何步骤前暂停等待人类确认。
该机制由 orchestrator.py 的 activate_skill 工具统一渲染:注释中说明,原始 SKILL.md 正文携带交互式检查点("wait for user approval"、"one task at a time"),若原样注入无人值守的报告流水线,会诱导 Agent 停下来等待人类,因此必须使用蒸馏后的叙述版本。这也解释了为什么交互式聊天场景与流水线场景会读到同一技能的两种形态——同一渲染路径,两种上下文。
八、技能来源与转换
根据 ATTRIBUTION.md 与 UPSTREAM_VERSION.txt 的元数据:本仓库的 56 个技能(29 个 Format A + 27 个 Format B)源自 Anthropic 的 financial-services-plugins 上游仓库,经 convert_skills.py 于 2026-03-31 自动转换为 FinRobot 原生 SKILL.md 格式,转换过程仅做格式适配、内容不变,共 56 个技能、0 错误。deal-sourcing 归属 private-equity(私募股权)领域,与同领域的 deal-screening、ic-memo、dd-checklist 等技能共同构成 PE 工作台能力集。
九、实战要点速查
- 触发方式:直接对 FinRobot 助手说 "find companies"、"source deals"、"draft founder email"、"check if we've seen this company"、"outreach to founder",即可命中该技能;
- 激活方式:在具备
skill_runtime的环境下通过activate_skill("deal-sourcing")工具精确激活(orchestrator.py); - 质量评判线:短名单必须含"why they fit the thesis"字段;每家公司必须有 New / Existing / Previously Passed 三态之一;只有 "New" 才起草邮件;邮件必须个性化、≤6 句、含低压力 CTA、无附件;
- 平台边界:无人值守流水线中,该技能以叙述性方法论呈现(pipeline_methodology.py),不做真实外联执行;交互式场景由用户明确批准后才会起草真实邮件。