PitchFlow 是一个帮助外贸团队筛选潜在客户、生成个性化开发信并管理跟进节奏的 AI 获客助手,把「客户挖掘 -> AI 调研评分 -> 个性化发信 -> 自动跟进 -> 消息追踪」压到同一条工作流里。
当前版本同时引入 Hemera 云端数字员工平台雏形:PitchFlow 作为第一阶段深度业务 Toolkit,被 Agent 用来完成配置体检、产品资料整理、ICP 创建、精准挖掘、客户/活动总结和后续飞书/企微/MCP 扩展。
- 客户挖掘:统一通过异步 Discovery Job 执行;不选择 ICP 画像时就是快速挖掘,选择画像后进入精准筛选
- 搜索编排与来源评分:基于 ICP 自动扩展 product / brand / DTC / official_site / platform 等意图查询,并记录来源质量分
- 官网识别引擎:Cheerio 抓取 + 5 维度评分,筛出更像真实客户官网的站点
- ICP 精准发现:用户可用自然语言创建客户画像,系统解析 must-have / must-not-have / 正负关键词 / 产品分类 / 销售模式,并异步产出候选池
- 候选池审核:先进入 discovery candidates,再做接受、拒绝、拉黑、入库,避免搜索结果直接污染 prospects
- AI 调研评分:抽取公司规模、类型、主要产品、目标市场、决策人,并结合 ICP 与搜索来源质量生成五维评分、等级和推荐动作
- 双评分客户分层:同时保留搜索评分与调研评分,区分“值得入库”和“值得优先联系”
- Golden Set 挖掘评测:后台支持人工标注样本 A/B 规则评测、真实搜索源 metadata 抽样和真实搜索 Top 结果规则判定
- 流式 AI 体验:模板 AI 生成支持流式回填,客户调研支持阶段式进度反馈,活动启动支持批量邮件生成进度
- 活动与自动跟进:按评分筛选客户进入活动,支持默认 3 / 7 / 14 天自动跟进与停止跟进天数控制
- 用户自有邮箱接入:通过 EmailEngine 连接用户自己的 IMAP / SMTP 邮箱,实现发信与回复读取
- 消息追踪:客户回复后可触发邮件、飞书、企微消息追踪,并携带回复摘要
- 活动状态闭环:客户回复后停止后续跟进;活动内客户都回复或达到停止条件后,活动自动完成
- 云端数字员工:Hemera Agent 支持租户级启用、套餐策略、Credits 记录、工作流权限、审批恢复执行、飞书/企微私聊绑定和后台监控
Hemera 不是 PitchFlow 里的一个普通聊天框,而是团队级云端数字员工平台。PitchFlow 是第一个内置 Toolkit。
当前已落地:
- Agent Core:
agents / agent_conversations / agent_messages / agent_runs / agent_tool_calls / agent_action_approvals / agent_usage_records - Tool Registry:统一注册 PitchFlow setup、product profile、ICP、discovery、prospect、campaign、email reply 等工具
- Goal Planner:模型只识别业务目标和抽取 slots,不直接选择后端工具
- Workflow Runtime:将“设置产品资料 / 创建 ICP / 挖掘客户 / 创建活动”等动作转成多轮业务工作流
- 产品层策略:
Free / Pro / Business / EnterpriseAgent plan policy、Channel policy、Workflow policy - Credits 与上下文:先校验团队是否启用 Agent,再做套餐 / 渠道 / credits 检查;上下文从服务端
agent_messages按conversationId读取并按套餐裁剪,不依赖前端传入 messages - 团队启用:
设置 -> 数字员工支持 team_admin 启用/停用 Hemera Agent、改名、生成飞书/企微绑定码 - Workflow 目标驱动:挖掘任务会从自然语言自动拆关键词;活动草稿和邮件策略草稿不再强行追问表单字段,执行前返回业务摘要
- 审批恢复执行:高风险工具进入 approval flow,team_admin 确认后恢复执行原工具并写入 audit / usage
- Channel 私聊:飞书 / 企业微信 webhook 签名校验、私聊绑定、external user 映射、Business+ 私聊进入 Agent runtime、主动文本回复
- Admin 监控:Agent 工具、套餐策略、运行记录、Tool Calls、Usage、审批记录、Channel Bindings、MCP Gateway 状态页;用户 / 租户列表展示本月 Agent Credits 用量和套餐额度
当前边界:
- 飞书/企微群聊只用于通知,不允许执行 Agent 写操作
- 敏感密钥仍必须走后台配置,不允许在聊天里收集
- MCP Gateway 和 Custom Skill 仍保留为 Enterprise 后续能力
详细方案见:Hemera Agent Platform 完整落地方案。
行业 / 关键词搜索
-> 官网识别与去重
-> 客户入库
-> 或创建 ICP Discovery Job
-> 候选池审核 / 拉黑 / 入库
-> AI 调研与五维评分
-> 按 A/B/C/D 分层筛选
-> 创建营销活动
-> 使用当前登录账号注册邮箱对应的已连接邮箱账号发信
-> 自动跟进与消息追踪
- 客户挖掘结果演示:展示搜索结果如何带搜索评分进入列表,以及为什么某些官网更值得入库
- AI 调研结果演示:展示结构化画像、五维评分、综合评分和推荐动作,而不是一段难复用的摘要文本
- 当前重点表达:PitchFlow 不只是搜公司名,而是围绕 ICP 画像筛选更像目标客户、且更可能回复的潜在线索
- Agent 平台表达:PitchFlow 后续会作为 Hemera 数字员工的外贸获客 Toolkit,用户可通过站内 Agent、飞书/企微或未来 MCP 入口完成业务动作
| 层 | 技术 |
|---|---|
| 前端 | Next.js 14 (App Router) + React + Tailwind CSS + shadcn/ui |
| 后端 | Next.js API Routes + Drizzle ORM |
| 数据库 | PostgreSQL |
| 认证 | NextAuth.js |
| 搜索引擎 | SearXNG(自部署,无配额限制) |
| 页面抓取 | Cheerio(Playwright 可选兜底) |
| 邮件发送 / 收信 | EmailEngine |
| AI | OpenAI 兼容接口(Claude / 自定义) |
npm installcp .env.example .env.local编辑 .env.local,至少填入数据库和认证配置:
DATABASE_URL=postgresql://user:pass@localhost:5432/pitchflow
NEXTAUTH_URL=http://localhost:3000
AUTH_TRUST_HOST=true
NEXTAUTH_SECRET=your-secret-here如果要启用完整能力,还需要配置:
CUSTOM_AI_BASE_URLCUSTOM_AI_API_KEYCUSTOM_AI_MODELEMAILENGINE_URLEMAILENGINE_ACCESS_TOKENEMAILENGINE_WEBHOOK_BASE_URLSEARXNG_URLSEARCH_PROVIDERS=searxngDISCOVERY_RULE_VARIANT=BAGENT_BINDING_SECRETFEISHU_APP_IDFEISHU_APP_SECRETFEISHU_WEBHOOK_SECRETWECOM_CORP_IDWECOM_AGENT_IDWECOM_APP_SECRETWECOM_WEBHOOK_SECRET
docker run -d --name searxng -p 8888:8080 \
-v $(pwd)/searxng/settings.yml:/etc/searxng/settings.yml \
searxng/searxng验证:
curl http://localhost:8888/search?q=test&format=jsonnpm run db:pushnpx tsx scripts/seed-detector.tsnpm run dev适用于没有域名、直接通过服务器 IP 首次部署:
- Ubuntu 22.04
- 已开放端口:
22 / 3000 / 3001 / 8888 - 安装 Docker 与 Docker Compose Plugin
git clone https://github.com/hooper-lee/pitchflow.git
cd pitchflow
cp .env.production.example .env.production至少需要确认这些值:
NEXTAUTH_URLAUTH_TRUST_HOST=trueNEXT_PUBLIC_APP_URLNEXTAUTH_SECRETCRON_SECRETEMAILENGINE_WEBHOOK_BASE_URLEMAILENGINE_INTERNAL_SECRETEENGINE_SECRET(与EMAILENGINE_INTERNAL_SECRET保持一致)EMAILENGINE_ACCESS_TOKENEMAILENGINE_PREPARED_TOKENEENGINE_PREPARED_TOKEN(与EMAILENGINE_PREPARED_TOKEN保持一致)CUSTOM_AI_BASE_URLCUSTOM_AI_API_KEYCUSTOM_AI_MODEL
首次生成 EmailEngine token:
docker run -d --name pitchflow-redis-bootstrap redis:7
docker run --rm --network host \
-e EENGINE_REDIS=redis://127.0.0.1:6379/2 \
postalsys/emailengine:v2 \
emailengine tokens issue --scope api把输出的明文 token 填进 EMAILENGINE_ACCESS_TOKEN,再执行:
docker run --rm --network host \
-e EENGINE_REDIS=redis://127.0.0.1:6379/2 \
postalsys/emailengine:v2 \
emailengine tokens export --scope api把输出内容同时填进 EMAILENGINE_PREPARED_TOKEN 和 EENGINE_PREPARED_TOKEN。EMAILENGINE_INTERNAL_SECRET 和 EENGINE_SECRET 也保持一致:前者给 PitchFlow 应用读取,后者由 EmailEngine 容器直接读取。
然后正常启动:
docker compose --env-file .env.production -f docker-compose.prod.yml up -d --build默认会启动:
- Next.js 应用:
3000 - EmailEngine:
3001 - SearXNG:
8888 - PostgreSQL
- Redis
- Queue workers
docker compose --env-file .env.production -f docker-compose.prod.yml ps
docker compose --env-file .env.production -f docker-compose.prod.yml logs -f app
docker compose --env-file .env.production -f docker-compose.prod.yml logs -f workers访问:
- 主应用:
http://YOUR_SERVER_IP:3000 - EmailEngine:
http://YOUR_SERVER_IP:3001
访问 http://localhost:3000/register 注册第一个账号,自动成为超级管理员。
访问 /admin 进入管理后台:
- 系统配置
(/admin/configs):AI 模型、EmailEngine、搜索引擎地址、调研 Prompt、评分 Prompt、邮件生成 Prompt、评分权重 - 用户管理
(/admin/users):用户列表、角色、租户和本月 Agent Credits 用量 - 租户管理
(/admin/tenants):租户套餐、API 配额、本月 Agent Credits 用量 / 套餐额度 - Agent 工具
(/admin/agent-tools):Agent 套餐策略、工具权限、风险等级、Credits,以及当前团队 Agent 启用 / 停用入口 - Agent 运行
(/admin/agent-runs):Agent Runs、Tool Calls、Usage 记录 - Agent 审批
(/admin/agent-approvals):高风险操作确认 / 拒绝 - Agent Channel
(/admin/agent-channels):飞书 / 企微外部用户绑定记录 - 网站检测器
(/admin/detector):域名黑名单、TLD 黑名单、评分权重、Playwright 开关 - 挖掘评测
(/admin/discovery-evals):Golden Set 人工标注 A/B 评测、真实搜索源 metadata 抽样、真实搜索 Top 结果 A/B 判定 - 定时任务
(/admin/tasks):队列、自动跟进扫描和消息追踪任务状态
用户侧还需要先到 设置 -> 邮箱账号 连接自己的邮箱,活动发送、回复读取和消息追踪都依赖这里的账号。
Hemera Agent 用户侧入口:
设置 -> 数字员工:启用/停用团队 Agent、修改名称、生成飞书/企微绑定码- 右下角 Agent 浮窗:站内对话入口;未启用时普通成员会看到启用提示,team_admin 可直接启用
- 飞书私聊:团队管理员在
设置 -> 数字员工填写飞书 App ID / App Secret,飞书后台事件订阅选择「长连接」并订阅「接收消息」事件;成员生成绑定码后,私聊机器人发送bind <绑定码>完成绑定 - 企微私聊:成员生成绑定码后,私聊机器人发送
bind <绑定码>完成绑定;Business+ 套餐可通过私聊查询状态和推进允许的工作流
Agent 平台闭环测试:
npm run test:agent-platform
npx tsc --noEmit
npm run lint
npm run build测试覆盖 Free 写操作拦截、Pro 创建挖掘任务、Business 飞书/企微渠道、未启用 Agent 提示、usage credits 基础记录和目标驱动 workflow。
行业 / 关键词 / ICP 画像输入
↓
Query Expander 生成多意图查询
↓
SearXNG 搜索编排与去重
↓
记录 sourceProvider / queryIntent / sourceQualityScore / searchSources
↓
URL 黑名单过滤(域名 + TLD 后缀)
↓
Cheerio 批量抓取页面(Playwright 可选兜底)
↓
官网识别与 5 维度信号提取
↓
规则过滤 + AI 分类 + 历史反馈
↓
候选池审核或自动入库
↓
入库并保留搜索评分、来源质量和 ICP 上下文
自然语言定义 ICP 画像
-> AI 解析为可复用规则
-> 创建 Discovery Job
-> BullMQ Worker 异步执行搜索编排 / 抓取 / 规则过滤 / AI 分类
-> 进入候选池(lead_discovery_candidates)
-> 接受 / 拒绝 / 拉黑 / 入库
-> 反馈沉淀到 blocklist 与 feedback history
- ICP 画像支持:
mustHave / mustNotHavepositiveKeywords / negativeKeywordsproductCategoriessalesModel- 系统默认评分权重
promptTemplate
- Discovery Job 执行中会记录:
- 搜索进度
- 抓取进度
- 候选数
- 接受 / 拒绝 / 入库统计
- 候选不会直接进入 prospects,只有显式
save_to_prospect或达到自动入库阈值才会落主表 - 自动入库后会把
sourceProvider / queryIntent / sourceQualityScore / searchSources / discoveryDecision写入 prospect metadata,后续 AI 调研和评分会继续使用这些上下文
后台路径:/admin/discovery-evals
- Golden Set 人工标注 A/B 评测:读取
data/eval/icp-golden-set.example.json,比较 A/B 规则与人工标签的匹配情况 - 真实搜索源 Metadata 抽样:直接请求 SearXNG,检查真实结果是否产出来源、意图、质量分和命中查询数
- 真实搜索 Top 结果规则 A/B 判定:对同一批真实搜索结果分别套用 A/B 规则,观察判定差异
- 查询扩展与 Intent 编排:展示系统根据 ICP 生成的查询词、意图和优先级
命令行验证:
npm run eval:icp-ab
npm run eval:discovery-search
npm run eval:email-template-ab
npm run eval:all-local说明:Golden Set 才能计算准确率 / 召回率;真实搜索抽样没有人工标签,只能用于检查搜索源和规则差异。data/eval 和 output 属于本地评测资产,已在 .dockerignore 中排除,不进入生产 Docker 镜像。
- 客户列表同时显示两套分数:
搜索评分:判断官网候选是否值得入库调研评分:判断客户是否值得优先联系
- 客户列表筛选规则:
- 主状态只保留
新线索 / 已联系 / 已回复 / 已转化 - 调研状态独立筛选
待调研 / 调研中 / 已完成 / 调研失败 待调研包含没有调研记录和pending两种情况
- 主状态只保留
- 调研完成后会生成:
- 公司画像
- 五维评分
- A/B/C/D 等级
- 推荐动作
- 调研评分会参考:
- ICP 画像
- 搜索评分
- 搜索来源质量
- 真实官网内容
- 规则命中和拒绝信号
- 邮件发送规则:
- 模板不再单独配置发件邮箱
- 活动发送统一使用当前登录账号注册邮箱对应的已连接邮箱账号
- 活动启动后会把实际发件邮箱固化到活动上,后续跟进保持一致
- 邮件生成 Prompt:
- 冷启动首封开发信
- 冷启动未回复自动跟进
- 已回复客户推进
- 三类 Prompt 都在后台系统配置中维护,运行时缺失会报错,不再静默走代码兜底
- 消息追踪规则:
- 只在客户直接回复邮件时触发
- 支持邮件、飞书、企业微信三种通知方式
- 通知内容包含联系人、公司、活动、回复主题、回复时间、回复摘要
- AI 交互规则:
- 模板 AI 生成走流式输出
- 客户调研显示阶段式进度
- 活动启动显示批量邮件生成进度
- 单封失败邮件重新同步支持局部流式进度
├── app/
│ ├── (dashboard)/ # 工作台页面
│ │ ├── prospects/ # 客户管理 + 挖掘 + 调研
│ │ │ ├── icp-profiles/ # ICP 画像配置
│ │ │ └── discovery-jobs/ # 精准挖掘任务与候选审核
│ │ ├── campaigns/ # 营销活动
│ │ ├── templates/ # 邮件模板
│ │ └── settings/ # 用户设置与消息追踪
│ ├── admin/ # 管理后台
│ │ ├── configs/ # 系统配置
│ │ ├── detector/ # 网站检测器配置
│ │ └── agent-* # Agent 工具、运行、审批、MCP 状态页
│ └── api/v1/ # REST API
├── components/
│ ├── agent/ # 站内 Agent Panel
│ ├── landing/ # Landing 页面展示组件
│ ├── prospects/ # 客户与挖掘相关组件
│ ├── campaigns/ # 活动与跟进组件
│ └── templates/ # 模板编辑组件
├── lib/
│ ├── agent/ # Hemera Agent runtime / planner / workflow / toolkits
│ ├── detector/ # 官网识别引擎(过滤 / 抓取 / 评分 / 提取)
│ ├── discovery/ # ICP 精准发现流水线(搜索编排 / 规则 / AI / 评分 / pipeline / eval)
│ ├── integrations/ # 外部服务(SearXNG / EmailEngine / Hunter / Snov)
│ ├── services/ # 业务逻辑层
│ ├── db/ # 数据库 Schema + 连接 + migration
│ └── utils/ # 工具函数
└── scripts/ # 种子数据脚本