AI 编程助手架构拆解:以 WCode 为例
AI 编程助手架构拆解:以 WCode 为例
前面几篇讲的是“通用原理”。这一篇落地——以我自己做的桌面 AI 编程助手 WCode 为例,看一个真实 Agent 产品是怎么搭起来的。
一、为什么需要编程助手 Agent
IDE 里的代码补全只是“写下一行”。而真正的开发是多步任务:读代码→定位 bug→改文件→跑测试→看报错→再改。这需要 Agent:能读能写能执行,还要有规划。
二、分层架构
WCode 刻意做了端口隔离,避免“逻辑”和“副作用”缠在一起:
┌─────────────┐ ┌─────────────┐ ┌──────────┐
│ CLI(TUI) │ │ Desktop │ │ Shared │
│ │ │ (Electron) │ │ (reducer)│
└──────┬──────┘ └──────┬──────┘ └────┬─────┘
│ │ │
└───────┬────────┴──────────────┘
▼
┌──────────┐ 依赖倒置 ┌──────────────┐
│ Core │ ◀──────────── │ Adapters │
│ 纯逻辑 │ 定义端口接口 │ fs/exec/model│
└──────────┘ └──────────────┘
- core:纯逻辑、零 DOM、零 IO,定义“端口(Port)“接口(如
FileSystem、Exec、Model)。 - adapters:端口的真实实现(读文件、跑 shell、调大模型)。
- cli / desktop / shared:交互层,可替换。
好处:核心逻辑可单测、可在 CLI 和桌面版共用,换模型/换平台只改 adapter。
三、Agent Loop + 计划模式
WCode 的主循环就是前面讲的 Agent Loop。但加了一道关键闸——计划模式:
用户需求 → 设计阶段(只出方案,不动代码)
│
▼
是否需要确认? ──是──▶ 暂停,等用户 approve
│否
▼
开发 → 自测(编译/测试) → 完成
“先给方案、用户 review 后再改文件”——既尊重人的掌控感,也避免 Agent 自作主张乱改代码。这正是我把“不可逆动作需人类确认”原则产品化的例子。
四、工具集
WCode 暴露给模型的工具:
| 工具 | 作用 | 安全约束 |
|---|---|---|
| read_file | 读文件 | 限定工作目录 |
| write_file | 写文件 | 备份 + 确认 |
| run_command | 执行命令 | 白名单、超时 |
| model | 调大模型 | 必须支持 function calling |
硬约束:模型必须支持 tools/function calling,否则 Agent 退化成纯聊天。WCode 默认接腾讯混元 hy3(实测 tools ✅)。
五、Token 压缩
长会话里历史对话会无限增长。WCode 做了历史摘要压缩:把早期轮次提炼成几条摘要,既保留上下文又控制成本与延迟。这也是长上下文那篇讲过的“压缩历史”的工程落地。
六、一个真实踩坑
接混元时曾排查半天 401,最后发现端点必须与 Key 同源:tokenhub 的 key 在老 api.hunyuan.cloud.tencent.com 端点永远 401,两者 key 不通用。排障第一步永远是 curl 用同源端点直接验证。这条已写进项目记忆,下次不再踩。
WCode 的设计哲学就一句:最小必要改动 + 人类在环 + 端口隔离。原理不新,难在把每一条工程纪律都落到产品里。
下一篇聊安全——LLM 的软肋与防御。