摘要: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 助手对话打磨。

验证体系:不信”看起来对了”

整个冲刺期所有交付都过了三道闸,任何一道不过就不算完成:

验证体系

  1. API 级 curl 链:每个新端点先裸测(挂载→状态→公开页→视频流字节数→分发返回 postId→清理还原),共 11 步一条脚本跑完;
  2. Playwright E2E:真实浏览器操作 UI 断言,最终版 23 项检查全绿(含真实大模型调用的”提炼方案→对话打磨→导入配文”链)。特别升级了断言方式——图表类必须用 getComputedStyle 读真实渲染高度,不接受”HTML 里有这个字符串”;
  3. 视觉目检:关键页面截图逐张过 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 项自动化断言全绿。几条心得值得带走:

真实踩坑录

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