OpenOutreach
自托管的 B2B 潜客发现与邮件触达智能体。
README 对线索发现、付费邮箱解析、SMTP/IMAP、LLM、中央联系人存储、联盟链接以及以用户身份发送的项目推广邮件作了异常明确的披露,因此数据流透明度得满分,外部影响与来源归属也有较强依据。扣分在于首封邮件被测试明确规定为必须发送,未展示逐封确认机制;推广活动默认参与发送轮换且只能通过修改源码禁用,最小权限不足。密钥、邮箱凭据和个人数据虽声称本地持久化并由法律声明覆盖,但所给材料没有加密、访问控制、日志脱敏或保留删除机制。工作流使用按主版本标记的第三方 Actions,而运行命令拉取 latest 镜像,未提供依赖锁定或漏洞治理证据。状态机支持失败状态与恢复,但已发邮件和已消费的查询额度无法回滚。发布者身份仍未知。
README、流水线说明和代理测试在首封发送、回复动作、上下文构造及状态转换上大体一致,测试也覆盖缺失摘要和格式错误。扣分在于没有提供实现文件或更广泛测试,无法静态确认全部宣传行为;测试中的旧式个人资料 URN 与“无社交网络账户”的表述存在轻微历史痕迹。安装材料列出了 Python、Docker、LLM、BetterContact、SMTP/IMAP 等依赖并提供容器流程,但外部服务可用性、重试和降级策略证据有限。错误状态和 ValueError 信息可见,但缺少面向运营者的完整故障诊断与恢复说明。
目标用户、B2B 场景、所需输入、发送时间和典型活动示例非常清楚,故受众与场景得满分。系统支持自带模型、兼容端点、任意自有 SMTP 邮箱及 Django Admin 配置,但发现与邮箱解析绑定 BetterContact,核心渠道固定为邮件。触发顺序、工作日发送窗口、回复驱动后续及消费门控均有说明,不过首封自动发送且未展示预览、审批或细粒度触发策略。Docker 与本地 Python 路径适配普通自托管环境,但只展示 SQLite/单守护进程形态,部署扩展性和跨环境细节不足。
README 的结构、项目树、管线顺序和文档索引清晰完整,Docker 与本地安装说明具体,因此信息架构和安装说明得满分。命名和状态枚举较稳定,且提供多个示例及测试说明入口,但没有真正的 FAQ 内容。已明确学习循环尚未证明优于随机、法律责任和服务依赖等限制,不过对投递率、模型错误和规模边界讨论不足。README 声称 GPLv3 并指向 LICENCE.md,但元数据为 NOASSERTION,且许可证正文未提供,故不能确认。工作流支持 v* 标签和语义化镜像标签,但没有变更日志或发布政策。维护渠道、赞助和支持入口可见,却没有明确维护者身份、响应承诺或安全更新责任。
产品输出能够进入内置 CRM,以明确状态跟踪线索、交易与会话;代理提示测试还验证主题、消息和回复动作,说明结果具有普通业务可用性。扣分在于没有给出输出样例质量标准、人工审阅流程或可导出格式。自动发现、资格筛选、邮箱解析和多轮回复相对于手工外联具有明确增量价值,但效果未由结果证据支持。成本门控、每日发送容量和按成功解析计费的设计较具体,同时作者明确承认学习层尚未证明优于随机;LLM、数据供应商、邮箱基础设施和项目推广占用发送量的综合成本仍未量化。
README 将主要功能映射到具体状态、步骤、服务和项目目录,测试又佐证提示上下文、动作集合、首封约束和消息窗口,因此具备较好的声明可追踪性与跨来源印证。扣分在于许多安全、法律、成本和数据处理声明仅由 README 陈述,引用的法律、架构和配置文件未包含在材料中,无法交叉核验。事实与推断区分表现突出:材料明确把学习循环称为实验,说明未证明优于随机且不作相关效果主张,因此该项得满分。
- 该工具会从用户邮箱自动发送冷邮件;所给测试显示首封邮件必须发送,未见逐封预览或确认。
- 随附的推广活动会以用户身份向与用户线索无关的收件人发送 OpenOutreach 广告,并占用发送轮换;默认安装只能通过修改源码禁用。
- 用户承担反垃圾邮件和数据保护责任。静态材料未证明同意管理、法域合规、删除请求或数据保留控制。
- 运行需要提供 LLM、BetterContact 和邮箱凭据,但未展示静态加密、密钥隔离、日志脱敏或泄露响应机制。
- 推荐命令始终拉取 latest 容器镜像;在生产使用前应固定到经过审查的不可变摘要,并独立检查依赖与镜像内容。
- BetterContact 查询、LLM 调用、邮箱服务和推广流量均可能产生费用或声誉影响;材料没有量化总成本或投递风险。
这个 Agent 能做什么,适合哪些场景?
OpenOutreach 是一套自托管、邮件优先的 B2B 销售自动化系统:用户描述产品和目标市场后,它会发现、筛选并联系潜在客户。系统以 Django 应用和循环运行的守护进程为核心,使用 SQLite 保存 Lead、Deal、会话及流水线状态,并通过 Django Admin 提供本地 CRM 界面。潜客数据来自 BetterContact Lead Finder;FastEmbed、Gaussian Process Regressor 与 LLM 共同决定下一位评估对象,并控制何时购买工作邮箱查询。入选潜客会通过用户自有邮箱的 SMTP 收到个性化首封邮件,系统再通过 IMAP 读取回复并生成多轮跟进。它可以用预构建 Docker 镜像部署,也可以在 Python 3.12+ 环境中从源码运行;运行边界在用户自己的主机和数据目录,但发现、邮箱解析、模型调用及邮件收发均依赖外部网络服务。
系统先读取产品描述和 Campaign 目标,由 LLM 生成 ICP 过滤条件及初始搜索关键词,再调用 BetterContact Lead Finder 分页获取授权的企业与人员画像。画像会被 FastEmbed 转换为 384 维向量;Gaussian Process Regressor 根据预测资格概率或 BALD 分数选择候选人,所有资格判断仍由 LLM 完成,并回写模型形成探索/利用循环。守护进程按固定优先级处理工作:轮询邮箱查询任务、回答新回复、发送首封邮件、对候选池排序、购买工作邮箱地址、补充并筛选潜客。置信度门控将合适的 Deal 从 QUALIFIED 推进到 READY_TO_FIND_EMAIL,BetterContact 命中后进入 READY_TO_EMAIL;SMTP 发送个性化开场邮件,IMAP 获取回复,触达智能体随后回复、结束交易或处理退订。流水线状态和对话保存在本地 SQLite 数据库中,可在 Django Admin 查看;冷邮件限定为用户时区周一至周五 08:00–20:00 发送,并受每邮箱每日上限约束。
- 没有现成联系人名单的 B2B 创始人,可用产品描述和目标职位启动潜客发现及首轮邮件触达。
- 希望避免浏览器自动化、社交网络账号和抓取流程的销售团队,可改用授权画像数据和自有 SMTP 邮箱。
- 需要在自己的基础设施上保留 Lead、Deal 和完整会话记录的团队,可通过 Django Admin 管理本地 CRM。
- 控制邮箱解析费用的外联团队,可让评分与置信度门控优先为高匹配候选人购买工作邮箱。
- 管理多个客户触达项目的代理机构,可为不同 Campaign 配置产品、目标市场、发送容量和模型设置。
这个 Agent 有哪些优点和局限?
- 不要求预先准备联系人列表;系统能从产品与目标市场描述生成 ICP,并从授权数据源发现候选人。
- 不使用浏览器、社交网络账号或抓取,因此没有这类平台账号被封的操作面。
- 付费邮箱解析受模型置信度和每日发送容量控制,未进入发送能力范围的候选人不会提前消耗查询。
- Lead、Deal、流水线状态和会话保存在本地,并可通过 Django Admin 浏览。
- LLM 层支持 OpenAI、Anthropic 和 OpenAI 兼容端点,模型供应商选择相对灵活。
- 发现与邮箱解析都依赖 BetterContact;更换这一数据供应商没有已记录的即插即用路径。
- 必须提供并维护可用的 SMTP/IMAP 邮箱、LLM API 密钥和 BetterContact 密钥,外部调用及邮箱解析可能产生费用。
- 项目明确表示其 Gaussian Process 学习循环仍是实验,尚未证明优于随机挑选候选人。
- 免费模式会从用户邮箱轮换发送宣传 OpenOutreach 的邮件,收件人可能与用户自己的潜客无关;只能通过编辑 GPLv3 源码关闭。
- 所有外联及项目宣传邮件都以用户身份发送,反垃圾邮件和数据保护责任由操作者承担。
- 仓库元数据中的许可证状态为 NOASSERTION,而 README 声称使用 GNU GPLv3;采用前应核对实际 LICENCE.md。
如何安装或部署这个 Agent?
推荐使用 Docker。准备 LLM API 密钥、BetterContact API 密钥,以及支持 SMTP/IMAP 的自有邮箱和应用密码,然后运行:
docker run --pull always -it -v ~/.openoutreach/data:/app/data ghcr.io/eracle/openoutreach:latest首次启动的交互式向导会依次收集产品与目标、验证 LLM 密钥、检查 SMTP 身份验证、配置 BetterContact、邮箱地址、国家及法律/订阅选项;数据保存到 ~/.openoutreach/data。源码开发方式要求 Git 和 Python 3.12+:
git clone https://github.com/eracle/OpenOutreach.git
cd OpenOutreach
make setup
make run如何使用这个 Agent?
首次运行时输入产品说明和 Campaign 目标,例如面向 B 轮初创公司的工程副总裁推广 SaaS 分析平台;随后配置 OpenAI、Anthropic 或 OpenAI 兼容端点、BetterContact 密钥,以及自有邮箱的 SMTP/IMAP 凭据。完成向导后持续运行守护进程,它会自动发现画像、资格判定、按发送容量解析邮箱、发送首封邮件并处理回复。需要查看数据时,在源码目录运行 python manage.py createsuperuser 创建管理员,再运行 make admin,并访问 http://localhost:8000/admin/。可在 Django Admin 的 SiteConfig 和 Campaign 中调整行为;守护进程可停止和重启,流水线会从本地状态继续。