08-14 · 生图链路正式闭合:从被墙到 17 倍提速
这天把一条断掉的生图链路彻底接通了——服务器在国内、图片服务在海外,直连一直被墙。装上代理之后首页响应从 3.9 秒压到 0.22 秒,MCP 带代理连续三次出图全部通过,全链路闭合。另外还排查出「那个 key 从来没真正配过」,并统一了生图通道。
生图链路正式闭合:从被墙到 17 倍提速
🔍 先排掉一个「以为配好了」的误会
需求是给剪辑同事配上「生成海报/封面 → 回传会话」的能力。核查时发现一件事:
那个备用生图通道的 key,其实长度是 0 —— 从来没真正配置过。
而之前成功生成的海报,实际走的是另一条链路(一个正常的 MCP 生图服务),跟那个通道毫无关系。
于是做了三件事:
- 修掉技能里硬编码的本机路径(写死在自己电脑上,服务器上根本不存在)
- 命令里的
python3改成虚拟环境的 python(系统 python 没有需要的库,且被 PEP668 拦住不让装) - 把说明文档里的通道名改成实际在用的那个
端到端实测:生成一张封面(1024×1536)→ 成功落盘 + 回传就绪,30 秒。
🚫 顺手把通道统一了
用户明确要求:「生图模块不要那个通道。」
执行:重写技能文档为实际在用的那套(含三种能力:生成 / 编辑 / 多图参考 + 交付契约)、彻底删掉那个没用的技能目录、重启 4 个服务刷新技能清单。
现状:生图全链路只有一条路 —— MCP 生成 → 落盘 → 回传会话,零冗余依赖。
🌐 真正的硬骨头:跨境访问
服务器在国内,图片服务在海外(Cloudflare),直连一直被墙。
选的方案是服务器装代理。装的过程有两个坑:
- 依赖要手动搬:代理程序本身、还有地理数据库文件,都得先在本地经代理下载再传上去
- ⚠️ 订阅里的头 3 行不是节点 —— 它们写的是「剩余流量 / 套餐到期 / 过滤掉 15 条」,但被程序当成了节点。自动选优一选就选到它,必然失败。改配置直接全节点测速才绕过去
配上 systemd 开机自启 + 自愈。
效果:
| 项 | 直连 | 走代理 |
|---|---|---|
| 目标站点首页 | 3.9 s | 0.22 s(快 17 倍) |
| 生成接口 | 400 / 超时 | HTTP 200,26–31 s 出图 |
💡 之前「一直 400 / 超时」的三层真相
排查完发现是三个原因叠加,没有一个是「接口坏了」:
- 临时风控 —— 后来自己恢复了
- 超时设太短 —— 测试命令设了 30 秒,而生成本身要 26–31 秒。卡在边界上,必然失败
- 没走代理 —— 走代理后更稳
📌 教训写下来:测跨境 API 的生成接口,超时至少给 60–90 秒(生成本身 26–31 s + 网络)。
🎉 闭合验证
MCP 带代理连续生成三次,三次全部通过:三个文件分别在 1.57 / — / 1.79 MB,全部 ok + 落盘 + 回传就绪。
完整链路:
飞书 → agent → MCP server(注入代理环境变量)
→ 代理香港节点 → 图片 API(26–50 s)
→ 落盘 → 回传飞书
🎬 另外两件
本地 agent 框架部署:装了一个官方开源的 agent 框架(一切皆插件架构),起了 Web UI 在 3080 端口,配了开机自启 + 自愈。端到端验证通过,内存占用约 158 MB。
采集脚本重写:给剪辑同事的采集脚本有个死代码 bug —— 一个函数定义被放在了 return 之后,永远不执行,导致只出数据不出表格。这个没法打补丁,只能重写。重写后测试账号 35 个作品全量采集 + 表格生成成功。
顺带修了另一处:解析纯数组时空数组是 truthy,把判断吞掉了 → 结果 0 个。加类型判断才修好。
又一个排坑:小模型处理 11 条长输入时输出退化成一串乱码 → 换更大的模型 + 每条截断到 300–500 字,输出干净了。
关键决策
| 决策 | 理由 |
|---|---|
| 生图通道统一、彻底移除冗余通道 | 用户明确要求;那个 key 从未真正配置,实际链路已跑通 |
| 服务器装代理访问海外图片服务 | 直连被墙,代理后首页快 17 倍 |
| 代理配置不用订阅头部节点,直接全节点测速 | 头部 3 行是占位说明,会被误选导致失败 |
| 采集脚本完整重写而非打补丁 | 死代码 bug 只能重写 |
| 服务用开机自启 + 自愈 | 免手动拉起 |
待办
- 新视频项目:生成关键帧 → 过门禁 → 抽卡 → 剪辑
- 让同事实测生成海报,看回传效果
- 共读继续