
最近我刷 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 容器看项目安装文档内存4GB8GB 以上抓取网页和调用模型时内存波动大磁盘空间5GB20GB 以上缓存、日志、输出文件会持续增长网络能访问目标数据源稳定、低延迟按目标网站正常规则访问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 导入前提是数据质量已经稳定。踩过几次之后你会发现这类工具最有价值的地方不是替你“拍脑袋”出名单而是把公开信息按逻辑整理成一份可以继续加工的数据集。真正决定线索质量的还是你的筛选规则和人工判断。