dev-trace
将邮箱地址转化为结构化的公开个人资料,通过运行一个固定的公开数据源瀑布流来实现,每个层级通过是否存在其 API 密钥来判断是否启用。仅使用公开数据——当置信度低于阈值时,它返回候选人列表而不是进行猜测。零依赖(Node 18+);请自带您的 API 密钥。
如何运行
node scripts/dev-trace.mjs <email> [--pretty] [--json <path>] [--max-depth N] [--deep] [--tier low|medium|high] [--no-bio] [--bio-mode fast|balanced|deep|max]
--pretty——输出人类可读的 JSON(向用户展示时使用此选项)。--json <path>——将原始对象写入文件,而不是输出到标准输出。--max-depth N——在快速层中,在达到深度 N(0–4)后停止。默认为 4。--deep——同时运行深度 5(SixtyFour)。速度慢(耗时数分钟)且昂贵;需要设置SIXTYFOUR_API_KEY。--tier low|medium|high——SixtyFour 研究深度(默认为low)。级别越高,越详尽,速度越慢,消耗的积分也越多。--no-bio——跳过 Tabstack/research的生物简介步骤(当解析出姓名且设置了TABSTACK_API_KEY时,默认启用)。--bio-mode fast|balanced|deep|max——生物简介的研究深度(默认为fast)。
瀑布流
| 深度 | 层级 | 数据源 | 密钥 | 运行条件 |
|---|---|---|---|---|
| 0 | 验证 | 语法 + MX + 临时邮箱检测 | 无 | 始终运行,免费 |
| 1 | 表面 | Gravatar + 域名抓取 | 无 | 始终运行,免费 |
| 1 | 验证 | Hunter 邮箱验证 | HUNTER_API_KEY | 如果有密钥 |
| 2 | 个人资料 | GitHub 身份 + ICP 基础信息 | GITHUB_TOKEN(推荐) | 始终运行,免费 |
| 3 | 丰富 | Tabstack 网络/公司信息 | TABSTACK_API_KEY | 如果有密钥 |
| 4 | 深度 | Hunter 人物信息丰富 | HUNTER_API_KEY | 如果有密钥 |
| 5 | 最深 | SixtyFour 人物情报(LinkedIn 搜索) | SIXTYFOUR_API_KEY | 仅在使用 --deep 时 |
HUNTER_API_KEY 同时解锁验证(深度 1,每次调用 0.5 积分)和人物信息丰富(深度 4,每次调用 0.2 积分)——注意验证的成本 高于 信息丰富。深度 5(SixtyFour)是可选的高级探索:仅在 --deep 时运行,耗时数分钟(异步网络研究),并且锚定在 邮箱本身 以及上游找到的任何姓名/公司/LinkedIn 信息上。它只会跳过临时邮箱或无法投递的邮箱(记录在 meta 中)。
密钥
在此技能目录中将 .env.example 复制为 .env,并添加您拥有的任何密钥(引擎会从技能根目录或 scripts/ 目录读取 .env 文件)。所有密钥都是可选的;验证、表面和 GitHub 层可以在没有密钥的情况下运行。缺少密钥的层级会被静默跳过。密钥永远不会与技能捆绑在一起(.env 位于 .gitignore 中)。
成本与使用策略(供 Agent 参考)
该技能的设计使得您可以免费获得有用的个人资料,并且每个付费提供商都是可选的——仅在领导值得时才进行消费。
成本层级,从最便宜到最贵:
- 🟢 免费,无需账户——验证、表面(Gravatar + 域名)、GitHub 身份。不使用任何密钥运行。
- 🟢 免费密钥,可选——
GITHUB_TOKEN(免费生成)仅用于提高 GitHub 的速率限制和可靠性。 - 🟢 免费账户,功能强大——Tabstack(
TABSTACK_API_KEY):公司信息丰富(深度 3)+ 带有引用的/research生物简介。一个免费的 Tabstack 账户在您需要付费之前,可以覆盖很多需求。 - 🟡 计量积分,有免费套餐后付费——Hunter(
HUNTER_API_KEY):邮箱验证(0.5 积分)+ 人物信息丰富(0.2 积分)。 - 🔴 高级,真金白银——SixtyFour(
SIXTYFOUR_API_KEY,--deep):最深层次的人物 + LinkedIn 搜索。针对高价值目标的最终手段。
每层详情:
| 层级 | 成本 | 运行条件 |
|---|---|---|
| 1 验证(Hunter) | 0.5 Hunter 积分 | 如果设置了 HUNTER_API_KEY |
| 3 Tabstack 公司 | Tabstack 积分 | 如果设置了 TABSTACK_API_KEY |
| 4 Hunter 人物 | 0.2 Hunter 积分 | 如果设置了 HUNTER_API_KEY |
生物简介(Tabstack /research) | Tabstack 积分(fast 最便宜) | 如果解析出了姓名 |
| 5 SixtyFour | 昂贵——见下文 | 仅在使用 --deep 时 |
策略:默认使用免费和低成本层级。对于快速的免费查找,--max-depth 2 仅运行无成本的层级。
SixtyFour(--deep)既昂贵又受速率限制。 确切成本取决于您的 SixtyFour 套餐;在入门套餐(约 100 积分/月,$0.24/积分)下,一次 medium 人物情报拉取大约消耗了 ~20 积分(约 $4.80,耗时 ~2.5 分钟),即大约每月 5 次拉取。请将每次 --deep 运行视为稀缺资源:
- 切勿为了“更全面”而运行
--deep。仅在真正高价值的目标上使用。 - 仅在较便宜的层级(Hunter 人物信息丰富,
/research生物简介)无法提供足够信息之后。 - 在消耗一次 SixtyFour 拉取之前,必须先征得用户确认,并将
--tier默认设为low——切勿未经提示就提高层级。 - 此规则为强制要求,而非建议: 除非用户通过环境变量
DEV_TRACE_ALLOW_DEEP=1或交互式确认接受了成本,否则--deep拒绝运行。它不能自主触发。DEV_TRACE_MAX_DEPTH=N可限制无头使用模式下的深度。请参阅 README 的“无头 / 自主 Agent”部分。
--bio-mode 设置为 fast 以上以及深度 3/4 会消耗普通积分——在相关时是可以的,但不要未经提示就提高 --bio-mode。
生物简介(Tabstack /research)
在身份识别层级之后,如果解析出了姓名且设置了 TABSTACK_API_KEY,则会调用一次 Tabstack /research 调用,将一份带有引用的专业 bio(生物简介)合入个人资料中,源 URL 位于 meta.bio_sources 中。默认模式 fast(最便宜);通过 --bio-mode 提高,或通过 --no-bio 跳过。需要一个姓名,因此如果没有 Hunter/GitHub 匹配项,它仅在与 --deep(通过 SixtyFour 提供姓名)一起运行时才会执行。
在汇报结果时:报告哪些深度已运行(meta.depths_run)以及哪些密钥可以解锁更多信息。不要发明追踪未返回的字段。
输出
{
"meta": { "email": "...", "depths_run": [0,1,2], "match_status": "probable", "generated_at": "..." },
"profile": { "<field>": { "value": "...", "confidence": 0.85, "sources": ["github"], "conflict": null } }
}
- 每个字段都包含
value(值)、confidence(置信度,0–1)、sources(来源)和conflict(冲突,为 null 表示无冲突,或当各层级意见不一致时给出相冲突的值)。 meta.match_status(匹配状态):verified(已确认身份 + 可投递)、probable(已找到身份,未确认)、unverified_candidates(低于阈值)。- 失败或受速率限制的层级会记录在
meta.errors/meta.rate_limited中;瀑布流不会因为某个层级而中止。
备注
- 仅生成个人资料。将其塑造成 CRM 记录、简报或其他可交付成果是后续的单独步骤。
- 独立且可分发:零依赖(Node 18+),无需外部克隆或构建。
- 仅使用公开数据;不编造个人资料。低于置信度阈值时,它会返回候选人列表,而不是断言一个值。