最近我刷 GitHub 快报第350期时,被一个项目标题吸引住了:无需自备列表:开源 AI 代理自动找 B2B 潜客。乍一看有点反直觉,找客户哪有不准备名单的?但实际上它想解决的问题很直接:让销售、外贸、SaaS 增长团队不再花一整天整理目标公司列表,而是把这件事交给一个开源 AI 智能体,由它自己去公开渠道发现和理解“哪家公司可能是潜在客户”。
这不是什么玄学。AI 代理并不会凭空捏造客户信息,而是按你给的行业、地区、公司规模、业务信号等条件,去搜索公开数据源,再把结果整理成一批可筛选的线索。对中小企业、独立开发者、外贸业务员来说,这个方向最大的价值是可控:数据源你自己定,参数你自己调,结果还能人工再审。最值得先想清楚的,不是它能给你多少条线索,而是它从哪里找数据、数据是否真实、批量跑起来之后怎么筛出有用的那部分。
1. 先弄明白:这个开源 AI 代理到底在做什么
1.1 传统找潜客的方式为什么又慢又乱
过去找 B2B 潜客,一般是两条路。
第一条路是买名单或找人买名单。这些名单看着字段齐全,里面却经常混着过期的邮箱、错误的行业标签,甚至同一个联系人出现在十几个不同来源里。等你打电话过去,很多公司早就转型或者关停了。
第二条路是手动搜索。登录企业信息平台、招聘网站、行业新闻、技术博客,逐个看公司主页,判断这家公司是不是目标客户,再记下联系方式和业务特点。这个工作不是不能做,但非常耗时。一个外贸业务员一上午能认真筛选出 20 家有效目标公司,已经算效率很高。
问题不只是慢,还在于判断标准不统一。同样一家公司,经验丰富的人会从招聘岗位判断它有近期扩张计划,新人可能只看公司名称和规模,结果两版线索质量差很多。
1.2 “无需自备列表”背后的逻辑
这类开源 AI 代理做的事情,就是把上面第二条路“自动化”。它不需要你预先准备一张客户名单,而是要求你给出一段目标客户描述,比如:
- 面向东南亚市场的跨境电商 SaaS 服务商
- 公司人数在 50 到 200 人之间
- 近期有销售、市场或技术招聘需求
- 总部位于新加坡、马来西亚或泰国
AI 代理拿到这个描述后,会自己去访问公开数据源,包括目标公司官网、招聘信息、技术动态、行业媒体等。它会尝试判断:这家公司符不符合条件?近期有没有扩张信号?公开页面里能不能找到联系人、公司简介、业务关键词?最后把判断结果输出成一张线索表。
所以“无需自备列表”的真正含义,不是跳过数据收集,而是把收集和初筛的工作交给程序。你还是需要定义客户画像是谁,只是不用一条条亲手找。
1.3 适合谁用,不适合谁用
适合的人很清楚:做外贸拓客、SaaS 销售线索收集、本地商户筛查、行业研究、招聘候选公司挖掘,或者就是单纯想研究 AI Agent 自动化流程的开发者。
不适合的人也有几类:以为装完就能立刻拿到 1000 条精准客户数据的;完全不做人工审核,想直接用机器对外发邮件的;以及连目标客户描述都写不清楚,指望 AI 替自己猜的用户。
这类工具本质上是“搜索加信息提取”的自动化,不是销售预测器。它能帮你扩大线索覆盖面,但代替不了你对行业的理解。
2. 运行前需要准备什么:硬件、软件、数据源和权限
2.1 本地跑还是用服务器跑
这类项目一般以 Python 为主,常见运行方式是命令行加配置文件。本地跑和学习用完全够,配置普通一点的笔记本也能跑,因为主要开销不在模型本身,而在网络请求、HTML 解析和结果结构化。如果只是测试 10 到 20 个目标,CPU 环境完全能处理。
如果要做批量任务,比如每天跑几千家目标公司,我更建议丢到 Linux 服务器或 Docker 容器里。原因有三个:
- 批量任务执行时间长,本地电脑不能一直开着。
- 服务器网络更稳定,不容易因为断网导致任务中断。
- 日志、输出文件、缓存目录集中管理,比散在个人电脑里好排查。
低配置能跑不代表适合批量跑。跑完一次之后,你自然会看到内存和磁盘占用。
2.2 需要哪些 API Key 和数据源
不同项目差异很大,但常见的依赖有几类:
- 搜索引擎类接口,用来做初始候选发现。
- 企业信息数据库接口,用来补公司规模、成立时间、所属行业。
- 网页抓取工具,用来访问目标公司官网和招聘页。
- 大模型接口,用来做语义判断和字段抽取。
有些项目支持完全本地模型,但成本会转移到显卡和内存上。显存不足时,可以考虑用接口版模型。接口版的好处是响应稳定,缺点是会消耗额度,批量任务要考虑预算。
需要特别提醒的是:很多免费接口都有调用频率限制。按一个普通免费额度算,每秒几次请求已经算不错。不要一上来就把并发数调高,否则很容易触发限流或封禁。
2.3 最小环境清单
以下是一个比较通用的环境准备清单。具体要以项目 README 为准,不要照着我的清单硬来。
| 项目 | 最低要求 | 建议要求 | 说明 |
|---|---|---|---|
| 运行方式 | Python 3.9+ 命令行 | Docker 容器 | 看项目安装文档 |
| 内存 | 4GB | 8GB 以上 | 抓取网页和调用模型时内存波动大 |
| 磁盘空间 | 5GB | 20GB 以上 | 缓存、日志、输出文件会持续增长 |
| 网络 | 能访问目标数据源 | 稳定、低延迟 | 按目标网站正常规则访问 |
| API Key | 按数据源准备 | 预留测试额度 | 先跑通,再算批量成本 |
| 模型接口 | 有公共模型接口或本地模型路径 | 设置好超时和重试 | 每次请求都可能失败 |
注意:先跑单条任务,不要一上来就配置完整数据源和模型参数。等一条线索能正常产出,再逐步扩展。
3. 第一次跑通:从空列表到第一批潜在客户
3.1 配置目标客户画像
这是整个流程里最影响结果的一步。目标客户画像写得太宽,比如“做软件的公司”,AI 代理会给你找出一堆完全不相关的企业。写得太窄,比如“上海市浦东新区张江高科技园区内 2023 年成立、做跨境电商 ERP、最近融资 1000 万的软件公司”,可能一条都搜不到。
更合理的做法是拆成几个维度:
- 行业:最好给具体细分方向,不只写“科技”,可以写“跨境电商 SaaS”“外贸物流服务”。
- 地区:国家或城市,范围从大到小试几次。
- 公司规模:按人数或融资阶段写,容易从公开数据里判断。
- 业务信号:近期招聘人数变多、更新官网、发布新产品、参加行业展会等。
- 排除条件:哪些行业不做、哪些规模不要、哪些地区暂时不拓展。
这类项目通常使用 JSON 或 YAML 配置。下面是一个通用示意,不是某个具体项目标准格式:
{ "target_profile": "服务跨境电商卖家的SaaS工具提供商,东南亚市场优先", "filters": { "industry": ["SaaS", "跨境支付", "物流软件"], "region": ["SG", "MY", "TH"], "employee_count": "50-200", "signals": ["hiring", "product_launch", "office_expansion"] }, "sources": ["company_site", "job_board", "tech_news"], "limit": 50, "output_file": "leads_first_run.csv" }这个配置的含义是:让智能体在东南亚的几个国家里找 50 家符合行业和规模描述的公司,主要从官网、招聘网站和技术新闻里收集线索,结果写入 CSV 文件。
3.2 配置数据来源和范围
数据来源决定了线索上限。如果只从一个来源找,结果会明显偏向某一个平台上的公司;如果多设几个来源,又会带来重复和字段不一致的问题。
第一次测试时,建议先只开两个来源。一个用来发现候选公司,一个用来补全联系方式。不要把所有来源都打开,否则输出里会混入大量重复记录,不方便定位问题。
很多项目会把“搜索来源”封装成独立的执行器。你可以在配置里打开或关闭某些来源。测试阶段优先选择响应快、字段稳定的来源,不要先追求全面。
3.3 从启动到输出的三步验证
我一般会把第一次运行拆成三步。
第一步,先跑一条目标,确认程序能启动、能访问数据源、能输出一行结果。这一步主要验证环境。此时不要把 limit 设置成 500,先设置成 5。
第二步,检查输出字段。看它是不是真的抓到了公司名称、行业、地区、联系人、来源链接这些关键信息。如果字段为空,别急着换模型,先看日志里对应来源是否请求成功。
第三步,人工核实两三条结果。随便挑几个网页链接,看看 AI 代理找到的公司是否真的符合画像。这一步很关键,因为输出格式正常不等于判断准确。
命令行运行的方式大致如下,具体命令以项目 README 为准:
git clone <项目地址> cd <项目目录> python -m pip install -r requirements.txt cp config.example.json config.json # 编辑 config.json,配置你的目标画像和 API Key python run.py --config config.json如果你已经用 Docker 打包好了,也可以直接构建镜像运行。第一次跑的时候不要跳过依赖安装,更不要直接拿生产配置去测试。
4. 批量找客户时的参数和结果治理
4.1 并发和超时不要直接拉满
单条任务跑通之后,你自然想跑 1000 家。这时候最容易犯的错,就是直接开大并发,比如同时请求几十个来源。结果往往不是速度变快,而是请求返回一堆超时错误,或者被目标网站临时限制。
我更建议按这个顺序调:
- 先用单并发跑一个 20 条的样本。
- 看平均耗时和失败率。
- 再逐步提高到 2、3、5 个并发。
- 每次提高后都观察日志,确认没有大量失败。
并发高不代表效率高。很多开源项目默认的并发值是为了兼容保守场景,不是性能上限。生产环境需要根据你的网络、接口额度和数据源稳定性单独调。
下面是一个通用参数表:
| 参数 | 作用 | 新手建议 | 说明 |
|---|---|---|---|
| batch_size | 每批处理多少目标 | 5-10 | 太大容易出现中途失败 |
| concurrency | 同时请求数量 | 1-2 | 先稳定,再谈速度 |
| timeout | 单次请求超时 | 30 秒 | 某些网站响应慢,超时太短会漏数据 |
| retries | 失败重试次数 | 2-3 | 设置 0 会让任务容易中断 |
| delay | 请求间隔 | 可以默认 | 批量任务建议保留最小间隔 |
| output_file | 输出文件路径 | 带日期后缀 | 避免覆盖上次结果 |
注意:批量任务不能只看“能不能跑”,还要看任务中断后能否断点续跑。有些项目支持跳过已完成记录,有些不支持;跑之前先确认这一点。
4.2 结果去重和评分比数量更重要
批量跑完之后,最常见的问题不是线索太少,而是重复太多。同一个集团下面有多家公司,同一个站点被多个来源收录,同一个联系人在不同公司资料里出现,都会导致重复。
去重不能只看公司名称,还要看域名。域名通常比名称更稳定。如果项目输出里没有域名字段,建议你在配置里加上“source_url”或“website”,后续去重会方便很多。
有些项目会做评分,比如“完全匹配”“部分匹配”“低匹配”。第一次跑的时候,不要急着把所有低匹配都删掉。低匹配里往往有一批可用线索,只是字段不够完整。更合理的做法是:
- 高匹配线索:直接进入下一步人工确认。
- 部分匹配线索:人工再补一轮关键词搜索。
- 低匹配线索:先保留,但不要优先处理。
批量找潜客时,真正有价值的不是“总数量”,而是“高匹配数量占总数量比例”。如果你跑了 500 家,只有 10 家匹配度还不错,说明目标画像或来源配置有问题,需要回去调,而不是继续加量。
4.3 输出格式、命名和失败重试
输出文件建议使用 CSV 或 JSON。CSV 方便用表格软件打开,JSON 方便后续程序处理。第一次测试时用 CSV,因为人工审核最方便。
文件名尽量带上日期和批次,例如leads_20250614_batch1.csv。不要直接写成leads.csv,否则重新跑任务时很容易覆盖掉上一轮结果。很多项目支持配置输出路径,建议一次性设置好。
还要注意失败重试。批量任务跑挂一次很正常,原因可能是某个数据源接口超时、网络临时波动、或者某个网页结构发生变化。如果程序没有失败重试,结果会留下一堆空行,影响准确性。
我建议把输出分成两个目录:一个是成功结果目录,一个是失败记录目录。失败的请求和数据源记录单独保存,方便你判断是哪一步出问题。这也是排查时最直接的依据。
5. 结果不理想时,按这个顺序排查
5.1 先看输入条件是否明确
很多使用者遇到“没找到合适潜客”,第一反应是换模型或换工具。但更常见的原因是目标画像写得太模糊。
比如你写“跨境电商公司”,AI 代理可能理解为跨境电商卖家,也可能理解为跨境电商服务商。卖家和服务商是完全不同的群体。建议把目标描述改成更明确的业务方向,比如“为跨境电商卖家提供海外仓储或物流服务的公司”。
另一个容易忽略的是地区范围。地区太大,结果杂;地区太小,结果少。可以先从城市级或国家级的描述开始,跑出结果后再逐步扩大。
5.2 再看来源和抓取状态
输入没问题后,打开日志,看每个数据源的请求是否成功。如果某个来源一直返回超时,或者抓取内容为空,这个来源就是瓶颈。
遇到这种情况,先确认:
- 目标网站是否需要登录才能看到完整内容。
- 网站是否对自动请求有频率限制。
- 页面结构是否在最近有变化。
- 请求头里是否缺少必要的浏览器标识。
在合规前提下,程序对公开页面做普通抓取是常见操作。但如果目标网站明确禁止自动抓取,或者需要绕过登录验证,就不应该继续。尊重网站的访问规则,是这类工具能长期使用的前提。
5.3 再看解析和评分逻辑
如果源请求正常,但输出字段缺失,问题大多出在解析规则上。网页结构一改,原来的选择器就会失效,结果就是字段空白。
这种情况不是项目“坏了”,而是解析逻辑需要更新。你可以看项目是否支持自定义解析规则,或者配置 XPath、CSS 选择器。对大多数使用者来说,最简单的方法是先更新到最新版本,再看项目 Issues 是否有人反馈同类问题。
评分逻辑同理。如果你的线索全是“部分匹配”,可能是评分阈值太高,也可能是判断条件太多。你可以把 filters 里的条件拆开,一次只启用一两个,看看哪个条件把有效线索过滤掉了。
5.4 常见问题排查对照
| 现象 | 优先检查 | 可能原因 |
|---|---|---|
| 输出完全没有结果 | 目标画像描述 | 条件太宽泛或太特殊 |
| 线索数量偏少 | 数据源配置 | 来源没有抓到合适内容 |
| 公司名称有但联系方式为空 | 解析规则/页面结构 | 网站结构调整 |
| 重复线索过多 | 去重逻辑 | 缺少域名去重字段 |
| 运行速度很慢 | 并发和超时 | 请求等待时间过长 |
| 任务中途停止 | 失败重试设置 | 网络波动或接口限流 |
| 结果匹配度低 | 过滤条件 | 行业和地区范围没对齐 |
排查顺序记住一条:先看输入,再看来源,再改解析和参数。不要一上来就怀疑模型能力不够。
6. 开源项目延伸:如何把它接到真实业务里
6.1 导出和接口对接
这类项目最常用的落地方式是把线索导出到 CRM、邮件营销工具或外呼系统。导出文件如果是标准化 CSV,很多 CRM 都支持批量导入。
如果要更自动化,可以看项目是否提供 API。一般可能有几种形式:
- 直接调用 Python 函数或命令行。
- 返回 JSON 结果的 HTTP 接口。
- 写入数据库或消息队列。
我建议先从 CSV 导出开始。原因很简单:你可以在导入 CRM 之前先人工检查一轮。数据质量不可靠时,直接对接自动化流程会放大错误。
等到你确认线索准确率稳定,再考虑 API 对接。对接时要注意每次请求的批量大小、超时时间和错误处理。如果 CRM 接口一次只支持 100 条,就不要把一次 5000 条的结果直接往里面塞。
6.2 扩展时要保留人工审核环节
即使 AI 代理能在几分钟内找到几百个潜在客户,也不要把它变成全自动发邮件系统。原因有几个:
- 客户画像再准,也不能保证每一家都对你的产品有真实需求。
- 邮件或电话外呼前,需要有最新的联系人信息和合理的触达理由。
- 自动化发送容易触发垃圾过滤,也会影响品牌形象。
更稳妥的做法是把线索分成三个状态:待审核、已确认、无效。AI 代理负责生成候选,人工负责确认关键信号,比如公司业务是否匹配、近期是否有招聘、官网是否在正常运营。最后再进入外呼或触达。
这一步看起来增加成本,但长期收益更高。你在积累的不仅是线索,还有一套更准确的筛选标准。
6.3 长期使用要关注数据质量,而不是只看报价单
开源项目不会因为用的人多就自动变精确。真正决定线索质量的,是你的维护频率和行业判断。
长期使用时,我建议定期做这几件事:
- 每周抽验 10 到 20 条线索,确认数据是否准确。
- 记录哪些数据源产出高匹配线索最多,关闭低效来源。
- 维护一个“有效客户”名单,反向优化目标画像。
- 定期更新项目依赖,避免解析页面时因为版本问题出错。
- 关注项目仓库的 Issue,确认没有大规模数据源失败问题。
数据库和网页结构一直在变。某个来源失效、某个页面改版、某个接口关闭,都会影响线索产出。不用指望配置一次就能永久使用。
7. 最后说几个容易被忽略的边界问题
7.1 数据合规和隐私
找 B2B 客户线索不是“拿到联系方式就能发邮件”。不同地区对商业联系人的数据保护要求不同,比如欧洲的 GDPR、国内的个人信息保护法,以及美国市场对商务邮件的限制。
使用这类开源 AI 代理时,至少要确认:
- 数据来源是否公开、合法。
- 收集到的联系人信息是否用于合理商业联系。
- 触达邮件是否包含真实身份和退订方式。
- 是否在收集前了解目标市场的合规要求。
不是所有公开数据都能随意商用。判断标准不要只盯着“网上能搜到”,还要看来源条款和数据用途。合规问题一旦出问题,比线索不准麻烦得多。
7.2 目标网站访问限制
很多目标网站有登录墙、验证码和访问频率限制。AI 代理能访问一部分公开页面,但访问不了所有页面。
不要为了获取数据去专门绕过网站的访问限制。这类操作不仅不稳定,还可能带来法律风险。更合理的方向是换用有授权接口的数据源,或者扩大搜索范围,找到同样能证明业务特征的其他公开信号。
边界感很重要:开源工具能访问什么数据,你就用哪些数据。访问不到的信息,可以通过人工渠道补全,或者作为线索拓展的方向。
7.3 开源维护的不确定性
开源项目也分成熟度和活跃度。有的项目有稳定的社区维护,文档齐全,Issue 响应快;有的项目可能只是作者业余时间维护的 Demo,遇到数据源接口变动,可能半年没有更新。
在使用之前,先看项目仓库的 README、提交记录和 Issues。重点确认两件事:
- 最近一次提交是什么时候,是不是已经长期不活跃。
- 是否有人反馈数据源失效、配置方式变更,以及是否有解决方案。
如果项目本身很理想但维护不活跃,你需要评估自己是否有能力维护解析规则。没有这个能力,就选择更稳定的方案,或者只在实验场景中使用。
7.4 我的建议落地顺序
如果你想实际用起来,我会建议按这个顺序推进:
- 先看项目 README,跑通一条 demo,不追求线索数量。
- 用小样本验证目标画像和数据源,把输出字段看清楚。
- 加入人工审核流程,先积累 100 条有效线索,再谈批量。
- 批量时从小批量开始,调并发、去重、超时和输出命名。
- 最后再考虑 API 对接和 CRM 导入,前提是数据质量已经稳定。
踩过几次之后你会发现,这类工具最有价值的地方,不是替你“拍脑袋”出名单,而是把公开信息按逻辑整理成一份可以继续加工的数据集。真正决定线索质量的,还是你的筛选规则和人工判断。