摘要:48小时一人公司实验:AI智能体独立完成B2B获客控制台六环功能冲刺——目标发现模板、周报图表、素材管理、AI多渠道分发助手、大改版全量i18n,API+Playwright+视觉三道验证全绿,附真实踩坑复盘。
背景与目标
过去 48 小时,我们做了一次”一人公司”实验:由 AI 智能体担任技术执行,完成一个 B2B 获客控制台(对标海外同类 SaaS 产品)的功能冲刺——从线索发现、公司背调富集、邮件触达序列,到视频名片多渠道分发,再到界面大改版。本文把完整执行过程、验证方法和真实踩过的坑整理出来,供同路的技术人参考。
六环产品架构:市场罗盘(品类机会)→ 目标发现(ICP 画像找公司)→ 深度研究(背调+贸易数据)→ 触达序列(邮件多步跟进)→ 内容引擎(视频+社媒分发)→ CRM(轻量商机台账)。本轮重点是后四环全部跑通并做出差异化。
整体架构
生产环境是一个典型的”边缘节点 + 内网算力”拓扑:

- 边缘节点(公网侧):Nginx 反代 + Node.js 单文件后端 + SQLite 台账,前面套一层 Cloudflare 隧道暴露 HTTPS 域名;
- 内网服务器(算力侧):视频生成桥接服务(Hypit bridge)+ 社媒调度平台(Postiz)+ 一台常驻的 AI 助理网关;
- 发信链路:第三方邮件 API(443 端口走 REST,绕开部分机房对 587 出站端口的封锁);
- 管理界面:单 HTML 文件 SPA,令牌鉴权,全部功能免 SSH 操作。
部署通道是”本机 → 内网服务器 → 边缘节点”的双跳链路(边缘节点直连 SSH 已关死,只能嵌套跳板过去),所有大文件走 base64 管道 + 两端字节数对齐校验。
关键实现过程
1. 目标发现:不靠搜索引擎的找公司链路
原计划用搜索引擎抓取候选公司,实测家宽出口对主流引擎全部失效(DDG/Startpage 不可达、Bing 被地域降级)。最终方案:让大模型直接当”公司种子数据库”——按 ICP 条件生成候选域名清单 → 官网实抓 → 逐条回验(官网确实存在的才入库),每家附证据链与评分。被 CF 防护挡站的站点如实 skip,绝不为凑数编造。

2. 富集与 CRM:把”宁缺毋滥”写进代码
多页同域爬取(about/team/contact)后交 LLM 画像,关键是一道程序化 grounding 过滤:画像里的邮箱必须能在抓取的原始语料里找到(corpus.includes(email)),模型幻觉出来的联系人一律击杀;找不到公开姓名就如实标注”未公开”,不编造。CRM 端 7 阶段看板 + A/B/C 智能分层,富集完成自动同步成商机。
3. 触达序列:全自动跟到”分手信”
首封冷邮件(按人设语气生成)→ D+3 轻推 → D+7 价值点+分手信。任何回复/会议/赢单/退信/投诉信号出现即自动停序列。测试用了”时间机回溯法”:把已发邮件的 sent_at 往前改几天,10 分钟巡检定时器就会真实触发 F1/F2,实测全流程自动运转。
4. 回复收件箱 + 语气人设卡
客户回信录入后自动停序列、推进阶段、并由 AI 生成中文摘要/情感/意图分类(positive/meeting 等)。人设卡(persona + style 两行字)注入首封与跟进两套 prompt,所有对外文字从此”像同一个人写的”。
5. 多渠道剧本 + 视频名片 + 社媒分发(差异化能力)
每个商机关联一张”视频名片”:公开免登录播放页(URL token 即凭证)+ 跟进邮件自动附链接 + 一键把视频分发到已绑定的社媒账号(实测返回 postId 落库)。人工触点清单(如 LinkedIn 轻互动、WhatsApp 语音)只列 checklist 不自动发——红线:永不抓取 LinkedIn,宁可用笨办法。
6. 界面大改版与五点产品反馈
导航重构为 4 组 8 页(工作流/创作/探索/系统),新增视频工坊、频道分发、技能市场三个页面;约 200 键 i18n 做到中英彻底分离(英文界面零中文、中文界面零英文,连 JS 动态渲染都不放过);1600px 宽幅 + 全局字号放大。随后一轮产品反馈当天全部上线:ICP 预置模板、GitHub 开源技能货架、专业图表周报、素材库上传/分类/删除 + AI 反推标题卖点、分发页 AI 助手对话打磨。
验证体系:不信”看起来对了”
整个冲刺期所有交付都过了三道闸,任何一道不过就不算完成:

- API 级 curl 链:每个新端点先裸测(挂载→状态→公开页→视频流字节数→分发返回 postId→清理还原),共 11 步一条脚本跑完;
- Playwright E2E:真实浏览器操作 UI 断言,最终版 23 项检查全绿(含真实大模型调用的”提炼方案→对话打磨→导入配文”链)。特别升级了断言方式——图表类必须用
getComputedStyle读真实渲染高度,不接受”HTML 里有这个字符串”; - 视觉目检:关键页面截图逐张过 vision 模型,检查错位/溢出/配色/中文残留。
真实踩坑录(价值最高的一段)
前端与 CSS
- flex 容器里的百分比高度陷阱:
justify-content:flex-end的列向 flex 里,子元素height:50%会算出 0,柱状图全体隐身、只剩顶部数字漂浮。E2E 字符串匹配完全漏检,靠视觉目检抓出。修法:像素高度。 - CSS 变量拼接静默失效:
linear-gradient(180deg, var(--acc), var(--acc)99)想在变量色后拼透明度后缀,结果整条 background 非法直接失效,且浏览器不报错。拼 alpha 只能用字面 hex。 - i18n textContent 屠子节点(踩两次):
data-i18n标在含动态子元素(计数徽标、emoji 图标)的容器上,切换语言时textContent=把子节点整个抹掉。规则:翻译标记只打在内层纯文本 span。 - TDZ 白屏:脚本头部定义函数、尾部才
let声明的变量,函数在初始化期被调用时直接 ReferenceError。 - 空容器不可见断言陷阱:Playwright
is_visible对尚无内容的 0 高度 div 恒为 false,断言应该打在它的卡片容器上,否则永远误报。
部署与传输
- Windows 命令行 32KB 上限:把大 base64 塞进 ssh 命令行触发 WinError 206;必须走 stdin 字节管道。
- subprocess text=True 撕裂 base64:stdin 的
\n被转成\r\n,远端base64 -d直接报错。全程用 bytes 模式。 - 嵌套 SSH 吞 stdin:跳板机上再 ssh 会吃掉当前 shell 的输入,多层 ssh 命令必须加
-n或< /dev/null,否则整个管道挂死到超时。 - CDN WAF 拉黑 python UA:经 Cloudflare/EdgeOne 的接口测试一律带浏览器 UA。
- 字节对齐才算部署成功:嵌套通道
cat传文件可能静默截断,两端wc -c比对是廉价而可靠的完整性闸。
平台与第三方 API
- 先查 plan 再怀疑姿势:某邮件平台的发信 IP 白名单 API 怎么试都 404/405,查账户
plan字段才发现是 Enterprise 专属。低价账户上,plan-gating 优先于 payload 穷举。 - 云端视觉模型够不着内网 URL:把缩略图字节转 base64 data URI 再喂模型;同时做级联降级(视觉模型不可用 → 文件名文本推断兜底),并规定兜底结果不许覆盖人工打的分类标签。
- 平台侧无收件 API:某邮件服务免费档没有读信端点(404),退而求其次做人工录入 + 自动分析,表结构为未来自动拉取预留。
数据与安全纪律
- 密钥全程不落聊天记录、不落 shell 历史明文(env 文件 base64 注入),日志回显一律脱敏;
- 内网测试数据(演示视频、假回复)E2E 跑完必须还原现场,不留残余;
- 一切自动化对外动作(发邮件、发布社媒)保留人工确认闸;LinkedIn 类高风险抓取直接红线排除。
风险与待办
- 视频真实渲染依赖第三方额度(欠费 402),本地算力工作台可随时顶上,链路已验证;
- 收件箱自动拉取等待邮箱 IMAP 授权下发;
- 海外支付主体未落地,收款先走单一通道试跑;
- 边缘节点 SSH 服务长期离线待修(部署走跳板不受影响)。
小结
48 小时、两个工作日、13 个功能包、约 90 项自动化断言全绿。几条心得值得带走:

- “能跑”和”跑给你看”之间隔着一条 E2E 鸿沟——字符串匹配会放过渲染层 bug,计算样式和视觉模型才是硬证据;
- 产品红线要写进代码而不是写进口头——”不编造数据”落地成 grounding 过滤函数,”不碰 LinkedIn”落地成技能货架白名单;
- 降级路径是产品的一部分——视觉模型不可用就文本推断、自动拉取没凭据就人工录入,但接口和表结构先把未来的路留好;
- AI 做执行者的关键素质不是写代码快,而是自己给自己设闸:部署后字节校验、改完必重跑回归、跑完必清理现场。



