我见过不少“ChatGPT 架构复刻”项目,白天演示都很顺,晚上一上真实流量就开始报警:
工具重复调用、上下文漂移、动作越权、故障定位要靠猜。
问题通常不在模型智商,而在系统纪律。
ChatGPT 真正值得学的,也不是页面长什么样,而是它怎样把“强能力”装进“可运营”的工程边界里。
下面不聊 UI,不聊话术,只聊四个会决定生死的架构问题:
入口怎么控、执行怎么裁、风险怎么拦、故障怎么追。
一、第一条:把“对话产品”做成“能力平台”
很多团队一上来按业务场景散装拼接:客服一套工具、投研一套工具、运营又一套工具。
短期交付很快,长期会变成维护噩梦。
ChatGPT 这类系统给的启发是:
先把通用能力平台化(检索、代码执行、文件处理、外部调用),再让场景层编排。
怎么做(最小入口) :
- 先定义统一工具注册表(工具名、输入 schema、权限级别、超时策略)
- 再定义统一回执结构(成功/失败、错误码、可回放字段)
- 最后才让各业务场景去编排流程
微场景:
投研和排障都要“查数据 + 算结果”。
如果各自维护一套工具链,半年后同一个 bug 你要修两次。
工程代价:
平台化前期会慢,接口治理和权限模型都要先补齐。
但这笔成本是前置投入,不是后期事故税。
二、第二条:模型可以换,执行契约不能飘
模型会升级、会切档、会换供应商。
真正不能漂的是执行契约:输入结构、工具回执、终态语义、审计字段。
这里“终态语义”指的是任务最终状态的统一定义(如完成/失败/中止),“审计字段”指的是后续追责和回放必须保留的关键字段。
很多“换模型翻车”,不是模型差,而是系统把模型输出当内部协议用了。
一旦输出风格变化,整条链路一起抖。
微场景:
今天用模型 A,明天切模型 B。
如果工具调用回执格式没做硬约束,前端、任务编排、审计系统都会一起断。
工程代价:
契约治理会增加版本管理和兼容层负担。
但没有契约层,任何模型升级都会变成事故窗口。
怎么做(最小入口) :
- 对工具输入输出使用
JSON Schema(或Protobuf)做强格式约束 - 对外只暴露版本化契约(如
v1/v2),禁止隐式字段漂移
三、第三条:权限不是“弹窗”,而是风险分层
“每一步都人工审批”听起来安全,实际很容易变成审批疲劳。
“全部放开”更快,但风险不可控。
可运营系统的做法是风险分层:
- 低风险动作走快速路径
- 中风险动作走规则约束
- 高风险动作走强审查与可回滚
这不是折中,是把安全预算花在真正危险的地方。
微场景:
用户说“清理一下分支”。
如果系统默认把它理解成“删远端分支”,就从效率问题直接升级成事故问题。
改进后对比:
同一句“清理一下分支”,系统先降级为“列出候选 + 请求确认”,而不是直接执行破坏动作。
工程代价:
分层策略需要持续校准,误拦会拖效率,漏拦会出事故。
但这总比“全靠运气”强得多。
四、第四条:把边界写进运行时,而不是写在文档里
权限通过,不代表动作就安全。
真正的边界要体现在运行时:能访问哪些目录、能连哪些外部域名、哪些动作必须留痕。
换句话说,安全不是“写了规则”,而是“规则在执行时真的生效”。
微场景:
被污染的指令试图让 Agent 上传本地凭据。
如果没有运行时边界,这就是直接外流;有边界时,要么读不到,要么发不出去。
工程代价:
运行时隔离会增加配置和调试成本。
但不做隔离,系统每次“聪明越权”都是一次不可控赌博。
五、第五条:把长任务当“接力赛”,不是“单轮问答”
真实工作不是一轮回答结束,而是跨多轮、跨上下文持续推进。
这时候最怕“上一轮干了什么没人说得清”。
可持续的做法是接力棒式交接:
- 每轮只做可验证增量
- 每轮留下结构化进展
- 每轮结束时可直接交接给下一轮
交接工件(示例) :
turn_id: 42
goal: "修复工具超时导致的重复调用"
changed_files:
- "src/tools/runner.ts"
validation:
- "integration test: tool_timeout_retry passed"
next_step: "补充错误码映射与审计字段透传"
risk_note: "高并发下仍可能触发队列堆积"
微场景:
没有交接工件时,下一轮先花半小时复盘和猜测。
有交接工件时,下一轮直接进入新增量工作。
工程代价:
单轮看更“啰嗦”,但长期返工成本会显著下降。
六、第六条:观测必须前置,别把排障留到线上事故后
很多系统日志很多,但链路不通。
出问题时你能看到大量信息,却无法对齐同一次请求的完整路径。
最小可用观测至少要有:
- 请求级唯一链路 ID
- 工具调用级调用 ID
- 策略命中与拒绝原因
- 关键动作的回放能力
没有这套基础,优化靠猜,复盘靠吵。
怎么做(最小入口) :
- 在网关层注入
TraceID,透传到模型调用、工具调用、日志与审计事件 - 所有子调用统一携带
parent_trace_id,确保一键串起完整链路
七、常见反模式(比“不会做”更危险)
| 优秀做法 | 常见反模式 | 长期代价 |
|---|---|---|
| 能力平台化 | 场景散装拼接 | 重复建设,维护成本指数上升 |
| 契约稳定 | 模型输出即内部协议 | 升级时全链路抖动 |
| 风险分层 | 全部同级审批/放行 | 审批疲劳或高风险漏拦 |
| 运行时边界 | 规则只写在文档里 | 越权动作无法硬拦截 |
| 接力式交接 | 无工件硬切下一轮 | 状态失真、反复返工 |
八、适用边界:什么时候该重学,什么时候别硬抄
更适合重投入的阶段:
- 已从 Demo 进入持续交付
- 有外部调用、写操作、合规约束
- 已出现“能跑但不稳”的运营问题
不适合重型照搬的阶段:
- 还在做 MVP 快速验证
- 任务低风险、生命周期短
- 团队暂无治理与运维投入能力
一句话:
先别问“能不能做更多”,先问“出了错能不能稳住”。
结语
ChatGPT 给工程团队最大的启发,不是“对话体验有多丝滑”,而是这套系统级自律:
该快的地方快,该慢的地方慢;该放的地方放,该拦的地方硬拦。
真正的成熟度,不体现在系统被允许做什么,
而体现在系统被明确禁止做什么,以及禁止后如何继续交付。