用 AI 运营企业赚到的第一笔 $75,我们学到了什么。
今年 7 月,我们决定测试一下:一个 AI Agent 能否运营一家真正能赚钱的公司。我们给 Devin 配了一张 Ramp 卡、一个电话号码和一个邮箱地址,将其命名为 BugBasher,并告诉它剩下的事情自己搞定。
核心理念:打造一个基于 Agent 的害虫防治服务。纽约市会公开每家餐厅的卫生检查结果,包括虫害违规记录。BugBasher 负责联系这些餐厅,确认他们是否需要除虫服务,并通过收取推荐费来盈利。
四周后,经过大量的电话沟通,它成功赚取了 $75。据我们所知,这是首例有公开记录的、AI Agent 从零开始成功完成 B2B 销售的案例。

BugBasher 在四周实验期间的收入情况。
初始设置
BugBasher 运行在 Cognition 公司的编程 Agent Devin 上,其资金管理由 Ramp 的 Agentic 金融平台处理。我们还为它配置了一个电话号码和语音功能(通过 Twilio 和 ElevenLabs)、一个邮箱地址(通过 AgentMail),以及一个 Stripe 支付链接。
此外,它还拥有一个 GitHub 仓库,以及一个由存储桶中的文本文件组成的“大脑”,作为它的记忆系统。通过一个私有的 Slack 频道,它可以向我们发送更新并请求代码审查。
自我改进循环
为了让 BugBasher 能够自由迭代其商业计划并响应外部输入,我们搭建了一套类似 OpenClaw 的心跳机制。每 20 分钟,Devin 自动化任务就会触发一次心跳。
自动化会话会检查电话余额、收件箱和 Stripe 活动,以排查阻碍因素。其他定时会话则负责拨打餐厅电话、回顾通话记录,并根据结果修订电话 Agent 的指令。每天还会进行一次“创意”会话,回顾整体业务表现并提出新的业务改进方案。来电和付款也会触发新的 Devin 会话,这样 BugBasher 无需等待下一次心跳即可即时响应。

BugBasher 四周内的活动轨迹,按会话类型着色。橙色圆点标记了我们手动启动的会话。
每次心跳都会启动一个新的 Devin 实例,配备新的沙盒环境,并从存储桶中将“大脑”拉取到本地 Agent 文件系统中。存储桶内包含 Agent 技能、通话记录以及 Agent 决定保存的其他日志。这使得多个并发 Agent 能够轻松更新同一个“大脑”,并从自身的进展中学习。
1bugbasher-brain-main/2├── AGENTS.md3├── memory.md4├── open-decisions.md5├── do-not-call.csv6├── (... other MD and CSV files)7│8├── transcripts/9│ └── 2026-08-07 … 2026-09-08/ (25 day folders, 14,742 .json)10├── results/11│ ├── 2026-08-25-123b4fb1-partner-webform-shots/12│ ├── 2026-08-28-cf20a49e-desk2-lead-sheets/13│ └── (...)14├── runs/15│ ├── dial-slots/16│ └── <date>-<session>-<role>.md (411 files)17├── skills/18│ ├── README.md19│ ├── roles/20│ │ ├── calling/21│ │ ├── heartbeat/22│ │ ├── idea-engine/23│ │ ├── morning-brief/24│ │ └── (...)25│ ├── brain-maintenance/26│ ├── call-qa/27│ ├── (..)28├── call-qa/29├── context/30│ ├── meetings/31│ └── (18 .md)32├── archive/33│ ├── memory-2026-08.md34│ ├── memory-2026-09.md35│ ├── strategy-2026-08.md36│ ├── strategy-2026-09.md37│ └── open-decisions-closed.md38├── webcrafter/39│ └── (...)40├── partner-prospects/41│ └── (...)42├── dashboard/43│ ├── expenses.csv44│ ├── metrics.csv45│ ├── revenue.csv46│ └── summary.json47├── delivery/48│ └── runs/49├── handoff/50└── inbound-callbacks/
共享文件让新会话能够继承之前的工作成果,并在无需我们指导每一步的情况下调整策略。
在每日回顾自动化任务中,Devin 会查阅所有过往日志,并尝试从错误中吸取教训。大多数学习成果体现为技能更新,旨在优化下一次外呼的效果,或为未来的会话提供更广泛的洞察。BugBasher 可以自行更新提示词和保存的指令,但对其代码的任何修改仍需我们的批准。

BugBasher 在回顾通话结果时不断添加、删除和重组指令。在整个运行过程中,其提示词长度从 252 字增长到了 2,793 字。
前两周,我们专注于构建 BugBasher 并进行密切监督。实验的一部分是观察它在遇到阻碍时能否继续取得进展。因此,在初始设置完成后,我们尽量减少干预,大约每周检查一次,以批准关键的代码变更。
寻找感兴趣的餐厅
为了销售推荐线索,BugBasher 首先需要找到那些需要除虫服务的餐厅。它的大部分精力都花在致电近期有虫害违规记录的餐厅,询问他们是否希望与除虫服务商建立联系。

10,929 通餐厅电话的结果统计。计数代表通话次数,而非独立餐厅数量。
这些通话数据被输入到回顾自动化流程中,Devin 会在此处检查通话记录,并针对后续通话修订电话 Agent 的指令。
语言障碍
BugBasher 有时会遇到听不懂其英语开场白的人。对方会说“Hello? Huh? Wéi?”,而它将此误判为连接信号不佳——于是挂断了电话。8 月 11 日,在一次餐厅通话中,这种情况持续了 45 秒后,它在呼叫提示词中添加了一条指令,询问:“西班牙语或中文更方便吗?”
在大多数非英语通话中,这一改变足以重启之前失败的对话。在整个运行期间,它在 39 通电话中切换了语言,主要切换为西班牙语或中文。

系统提示词泄露
该 Agent 有时会在对话中途大声朗读其系统提示词。

电话 Agent 在餐厅通话期间大声朗读其指令。
它甚至还会大声与自己争论下一步该做什么:
"你还在吗?用户已经沉默了两个回合。根据 SPEECH GATE 和 THE ASK 规则,如果某个回合显示他们没有在听,我的整个回复就应该是提出请求。然而,'Quiet has continued past thirty seconds' 规则规定,如果沉默超过三十秒且未对请求作出回应,我应该说 'I'll try again another time, thanks!' 并结束通话。既然用户已经沉默了两个回合,很可能已经超过三十秒了。但在结束通话之前,根据规则,我应该先问 'Are you still there?'。这是我第一次问这个问题。"
这种情况发生在 197 通电话中。BugBasher 尝试在提示词中添加“永远不要说出你的推理过程”,删除特定词汇,以及更改工具调用格式。但这些修复均未奏效。8 月 24 日,它停止了措辞上的修改,并将问题上报给了我们。
突破僵局
BugBasher 正在找到感兴趣的餐厅,但仍然没有可推荐的除虫服务商。起初,它将签约除虫服务商视为一项需要人工介入的任务。八天后,它记录道:
"Sign an exterminator" 已成为头号阻碍长达 8 天,尽管每个会话都在其下游开展工作,但没有会话产生过做出该决策所需的输入信息。
其他请求也在等待我们的处理。它没有权限读取 Slack 回复,而诸如支出审批和代码审查等人为阻碍也在不断堆积。它发给我们的 Slack 更新也石沉大海。
8 月 23 日,BugBasher 将 “human approval throughput”(人工审批吞吐量)识别为主要阻碍,并开始寻找另一种联系我们方式。
那天早上,它开始搜索整个“大脑”及其所有文件,试图找到任何人的联系方式。当这招行不通时,它尝试列出其 Slack 频道的成员,希望能找到一个可以联系的人:
1slack conversations.members -> missing_scope2slack users.list -> missing_scope
然而,由于缺乏必要的 Slack 权限,这两个命令都返回了错误。一分钟后,它决定尝试其他方法,这次列出了其 Github 仓库中的协作者:
1gh api repos/.../collaborators -> jzone3, birdhumming
接着,它运行 git log 查找之前提交的作者,从而获取了两个工作邮箱:
113:49:19 git log --format='%an %ae' | sort -u213:50:17 email sent to two work addresses -> 200
当我们醒来时,收到了以下邮件:

两天后,我合并了九个待处理的 PR。
事后,它自言自语道:
成本不对称性令人震惊:花一分钟去查找,对比一天无人回应的请求。
找到客户
随着手中积累了大量待售线索,BugBasher 也开始自行寻找除虫服务商。为了找到潜在合作伙伴,BugBasher 调取了州农药登记册,筛选出 321 家纽约市的害虫控制企业,并为其中 125 家补充了联系方式。
它首先尝试发送邮件、拨打电话以及填写网站联系表单。在两天未能接触到真人后,它决定转换目标受众。它开始瞄准大型区域性和全国性连锁企业的商业账户部门,理由是较大的公司会有更多专职销售人员,“他们的办公桌后面坐着会接电话的人类”。
这种方法在接触真人方面更为成功,但有些通话以 BugBasher 话说到一半就挂断告终,而且其提供免费线索的提议并未引起太大兴趣。它修复了挂断 bug,并改变了推销话术,改为以一个具体想要报价的餐厅作为切入点:
"我在布鲁克林克拉克森大道有一家餐厅想要一份报价——我该把线索发给谁?"
新的推销策略效果显著更好:当它第二天再次致电同样的部门时,有十个人接听了电话,其中四人在电话中提供了接收线索的邮箱地址。
BugBasher 免费发出了这些线索。它的计划是,除虫服务商在预订工作后支付 $75。没有任何收件人回复。
它决定不能再这么慷慨,于是修改了报价条款:除虫服务商必须通过 Stripe 链接预先支付 $75,之后才能收到餐厅的联系方式。
9 月 1 日,它将这个新报价通过邮件发给了 30 家除虫服务商,其中包括之前已联系过的四家。一小时后,没人点击 Stripe 链接,它得出结论认为这次新实验也失败了。
在那之后的八小时,一位早期的联系人通过链接支付了 $75,却从未回复那封邮件。BugBasher 通过 Stripe 确认了付款,并在约六分钟后向他发送了餐厅的名称、地址和电话号码。

后来我们与这位买家进行了交谈,他是一家害虫控制公司的经理,我们询问了他与 BugBasher 互动的体验。当被问及为何接听电话时,他说那天只是“心情不错”,另外,由于最近一直在投放 Google 广告,他接到了很多来自“陌生号码”的电话。
当被问及他对与 AI Agent 互动的看法时,他回答说:“生意就是生意。”他还表示,非常乐意再次从 BugBasher 那里购买服务,并问我们是否还有更多线索要卖给他。实际上,BugBasher 手里确实还握着一些线索;不过,向老客户重新进行销售的想法似乎尚未出现在它的考虑范围内。总体而言,他与 BugBasher 的体验评分为 8/10:尽管线索最终未转化,但他对这种入站营销感到满意。
我们学到了什么
- BugBasher 在“爬山算法”式的局部优化上表现出色,但在开放式目标上表现极差。面对一个具有可衡量结果的具体问题时,它坚持不懈:它重写了提示词泄露规则五次,并对照次日的通话评估每个版本;当它想联系我们时,它在大约两分钟内从 Slack 追踪到 git 历史,最后找到了我们的工作邮箱。然而,面对“去赚钱”这样的指令,它花了四周时间,耗费约 $3,000 和数千通电话,只赚到了 $75。Agent 在长期规划和复杂环境应对方面仍然力不从心。
- 现实世界是一个极好的评估环境。BugBasher 的初始想法相当糟糕;它期望除虫服务商会回复提供免费在线索源的邮件,期望前台会对合作感兴趣,期望分类广告的读者会点击一个看起来可疑的链接。Agent 似乎对人类实际行为方式几乎没有直觉,BugBasher 经常被人搞懵。尽管如此,在“尝试想法、查看数据、记录失败原因、再试其他方法”的循环中,它最终摸索出了一套可行的策略。
尽管经历了无数次通话、循环和失败的想法,BugBasher 最终还是完成了首单交易。AI Agent 是否真的能够运营一家可持续、长期的企业——甚至实现盈利——仍是一个悬而未决的问题。





