三模型编码能力对比评测报告
①② 纯能力并列 8.44,分水岭在交付可信度;②③ 之间 Kimi 短板(前端零真机自测)可修复。三口径下 Opus 都是第一或并列第一——唯一没有明显短板的模型。
评测对象 · 项目与技术栈
claude_web —— 把本机 claude CLI(与 VSCode Claude Code 插件同一引擎)通过 Web UI 暴露,让你从手机或任意浏览器远程聊天。Web 端是"远程键盘 + 屏幕":默认透明 inject 到本机 VSCode 的 chat tab,桌面侧和手机上看到的是同一个 session。
coding.dreamyouxi.com / codingpn.dreamyouxi.com …,各自 PWA/cookie/push,割裂)改造成「单域名多机聚合」——一个域名、一次登录、一个聚合会话列表、新对话可选机器、公网 VPS 承担部分角色。三个模型接到的是完全相同的这个任务。单文件
server.py ~10700 行依赖:brotli-asgi / websockets / aiohttp / aiofiles / orjson / pywebpush
认证:cookie + Basic Auth + IP 限流(单层)
单文件
index.html ~9900–10300 行iOS 风格响应式 PWA(Service Worker + manifest)
Markdown:CDN marked + DOMPurify
SSH 反向隧道(家用机 → VPS 端口)
Web Push(VAPID,经 VPS relay)
VPS 还跑轻量探针
vps_status_probe
三份方案、三家代码都围绕这个真实项目展开,因此技术栈、代码风格、历史包袱完全一致,只比较模型在这同一约束下的表现。
0一句话结论
三个模型接到完全相同的任务:把 claude_web 从"每台机器一个子域名"改造成"单域名多机聚合"。都从同一份原始代码(svn r102,server.py 10692 行 / index.html 9890 行)出发,可比。人类启动指令都是同一句「plan_X.md 按文档执行吧,我同意」。
| 模型 | 架构路线 | 最终交付状态 | 完成度 | 👤 owner 反馈 |
|---|---|---|---|---|
| Opus-4.8 | 前端扇出 + /m/<机器>/ + VPS 无状态 |
✓ 真上线双机 人类验收"效果最好" | ~82% | 交付物最满意 |
| Kimi-K3 | 前端扇出 + Caddy 路径前缀 /mN/ |
⚠ 3 个 UI/路由 bug 漏网 前端零真机自测 | ~90%*自身范围 | 体验中 bug 最多、最扎眼 |
| GLM-5.2 | VPS 重型 FastAPI 聚合网关(服务端聚合) | ✓ 真上线双机 收尾仍在修 bug | ~80% | 方案 / 架构最认可 |
排名基于统一口径评分(§4)+ 实测证据(§3、§6),不是先后顺序红利——已逐条核对 bug 根因归属,证实不存在"GLM 趟雷、后人乘凉"(§6)。AI 评分与 owner 反馈作为两条并行结论,互不覆盖(§4.4)。
2量化指标 确定性统计,非模型判断
2.1 代码规模(相对 r102 公共基线)
后端总量 = server.py + 新建后端文件。基线 server.py 10692 行。GLM 蓝条深色段 = 它从零建的网关(gateway.py + gateway_push.py)。
| 文件(总行数) | 基线 r102 | GLM | Kimi | Opus |
|---|---|---|---|---|
| server.py | 10692 | 10770 | 10749 | 10721 |
| index.html | 9890 | 9922 | 10340 | 10235 |
| 新建后端文件 | 0 | 1882 | 0 | 0 |
| 后端代码总量 | 10692 | 12652 | 10749 | 10721 |
| 测试代码总量 | ~9500 | 12856 | 12005 | 11975 |
| 净新增业务代码 | — | +1992 后端为主 | +507 前端为主 | +374 前端为主 |
GLM 净增业务代码最多(+1992),且几乎全在后端——它从零建了 1882 行网关,前端只动 32 行("前端零改"属实)。Kimi/Opus 的量压在前端(index.html 做到 10340 / 10235 行)。GLM 代码体量最大,是因为选了"服务端重型网关"这条最重的架构路线,非效率低。
各文件的新增行数。GLM 压在新建网关(~1882 行新文件),前端几乎不动;Kimi/Opus 压在前端改造。
2.2 对话 / 成本指标 仅任务相关会话 · GLM 已剔除树莓派
输出 tokens(越低越省)。GLM 剔除树莓派后仍是 Kimi 的 ~5.2×、Opus 的 ~2.1×。
| 指标 | GLM(剔树莓派) | Kimi | Opus |
|---|---|---|---|
| 活跃时长(剔除挂机空闲) | 4.1 h | 1.8 h | 2.7 h |
| 人类轮次 | 20 | 6 | 14 |
| assistant 消息数 | 657 | 566 | 564 |
| 工具调用数 | 260 | 281 | 281 |
| 输出 tokens | 1,558,877 | 301,295 | 729,150 |
| 子代理(sidechain) | 0 | 0 | 0 |
Kimi 效率最高(1.8h、30 万 token、6 个人类轮跑完 6 步)。GLM 成本最高(部分是重网关的天然复杂度,部分是 THINKING 冗长)。三者均未用子代理,单线程推进。Opus 的 input_tokens 被供应商记入 cache_read,跨模型只有 output_tokens 可比。
3代码与方案质量 统一口径 + 真实运行测试验证
以下"绿 / 崩"结论均经实际运行验证,非采信各自宣称。每条结论带可复现证据(文件:行 / 命令输出 / 转录行号)。
3.2 代码落地度 —— 方案承诺 vs 代码现实
GLM-5.2
- ✓ 单域名反代 / X-Gateway-Token 旁路 / 跨机聚合 / /poll 拆解 / push 上移 全真接通
- ✓ "前端零改"属实:
fetch(= 57=57,_api/apiFetch= 0 - ✓ 测试真绿:
52 passed(gateway+push) + 9 worker 断言 - ✗ 部署硬伤(判定级):deploy.sh 漏拷
gateway_push.py,而 gateway.py:1383 硬 import → 全新部署即ModuleNotFoundError(已实测复现) - △ 离线心跳只写不读 / standalone push 静默失效 / 机器选择靠项目名后缀隐式
Opus-4.8
- ✓ 共享 token / 全局 fetch 猴补丁路由 / allSettled 扇出 / 离线回填 / 徽章 / 两级选择 全接通
- ✓ 点开会话时 activeMachine 同步归属机(index.html:6485),路由自洽
- ✓ 测试真绿:
5 passed+ 38 node 断言;自建 mock-caddy 双后端 e2e - ★ 唯一拿到人类真机验收"效果最好" + 真公网双机验证
- △ refreshSessions 塌陷 bug(自愈 ~1.5s)/ 57 处 fetch 用猴补丁兜底而非逐处替换
Kimi-K3
- ✓
_api()封装 64 处调用点全接上(裸 fetch 仅剩 6 处有意)/ 四路扇出 / 一次性迁移 - ✓ 测试真绿:
5 passed(fleet);draft/sticky 键做了 machine-scoped(比 Opus 全) - ✗ 前端零真机自测(判定级):3 个 bug 带病上线(移动端弹窗超框 / 项目名重叠 / 点 PN 机"加载历史失败")
- 公道之处:它想测但没浏览器在线,debug JS 排队两次 60s 超时(转录:2174)
- △ 承诺的"共享 token 互认"pytest 没写;方案头部与 CLAUDE.md 自相矛盾
3.1 方案质量 · 3.3 安全 · 3.4 测试(速览)
| 维度 | GLM | Kimi | Opus |
|---|---|---|---|
| 方案调研深度 | ★★★★★ 派 3 代理核对锚点、专列文档漂移 | ★★★★☆ 5 路并行探查 | ★★★★☆ 逐个核对、指出行数漂移 |
| 安全实现 | 11 处 compare_digest,探针 == 升级常量时间(最扎实) | 不引入新比较代码,复用常量时间 | compare_digest 未削弱,rotate 409 带 audit |
| 测试(真断言) | 61 个(gateway 41+push 11+worker 9),覆盖最广 | 5 个(后端);前端零自动化测试 | 5 pytest + 38 node 断言(能防前端漂移) |
三者方案质量都很高(都先读代码、标行号、识别文档漂移、规避历史否决),差距主要在实施与验证环节。三者都诚实指出:集成/UI bug(brotli、工程重名、前端路由)单测覆盖不到,必须真机才暴露。
4综合评分与选型建议
4.1 分维度评分 0–10,评审口径统一
越靠外越强。GLM 强在方案/安全/测试/自主;Kimi 强在代码质量/成本效率;Opus 各维均衡靠前。
| 维度 | GLM | Kimi | Opus |
|---|---|---|---|
| 方案质量 | 9.5 | 8.5 | 8.5 |
| 架构判断 | 8.0 | 8.0 | 9.0 |
| 代码正确性(能跑通) | 7.5 | 7.5 | 8.5 |
| 完成度(绝对) | 8.0 | 7.5 | 8.5 |
| 代码质量(复用/命名/风格) | 8.5 | 9.0 | 8.5 |
| 安全 | 9.0 | 8.5 | 8.5 |
| 测试严谨度 | 9.0 | 6.5 | 8.5 |
| 自主性 | 9.0 | 8.5 | 8.5 |
| 协作 / 少救火 | 7.5 | 8.0 | 7.5 |
| 单位成本效率 | 6.0 | 9.5 | 8.0 |
GLM 各项得分均基于核心双机任务证据,与树莓派无关;剔除树莓派不改变能力分,只改善"单位成本效率"(成本降 27%,但仍最贵,维持 6.0)。
4.1b 综合能力排名 三口径聚合
纯能力=前 9 维均值;含成本=10 维均值;产品体验=最终交付真人一用(定性映射为分数)。
- ①② 极接近(纯能力并列 8.44),分水岭是"交付可信度":Opus 唯一拿正面验收 + 自测最全;GLM 有"全新部署会崩"的活雷。
- ②③ 之间 Kimi 短板可修复:后端+代码质量不弱于任何一家(成本效率甚至第一),唯一致命伤是前端零真机自测。配一道真机 QA 可能反超。
4.3 面向选型的建议 换场景会翻盘
| 若任务是… | 建议第一 | 理由 |
|---|---|---|
| 交出去要放心、少翻车(多数场景) | Opus | 能力 + 可信双不掉队,唯一无明显短板 |
| 纯后端 / 大批量机械改造 + 卡成本 | Kimi | 性价比碾压,补一道真机 QA 即可 |
| 啃最复杂架构、要自建新组件、成本不敏感 | GLM | 能力天花板最高;重网关方案最贴合原始诉求"公网服务器承担一些"(Opus/Kimi 把 VPS 做成了无状态哑路由) |
能力天花板 GLM≈Opus>Kimi;交付可信度 Opus>GLM>Kimi;性价比 Kimi>Opus>GLM。
4.4人类反馈 owner 视角,与 AI 评分并行、互不覆盖
结论分两层,方向不同——这正是要并行列出的原因:
| 层面 | owner 排名 | 理由 |
|---|---|---|
| 方案 / 架构 | GLM > Opus ≈ Kimi | GLM 的 VPS 聚合网关统一管理最合心意:一个入口统一鉴权/聚合/路由/推送,稳定性与扩展性上限最高——加机器只需注册进网关,不必每台改前端/配前缀。也最贴合原始诉求"公网服务器承担一些"(Opus/Kimi 把 VPS 做成无状态哑路由,更轻但把复杂度推给前端)。 |
| 最终交付物 | Opus ≳ GLM > Kimi = AI 排名 | 就"现在交到手上的东西能不能放心用",owner 与 AI 一致:Opus 真机"效果最好"、零已知 bug;GLM 可用但有部署硬伤、收尾在修;Kimi 体验时 bug 最多最扎眼。 |
- GLM 的价值在"选对了方向":网关聚合是三者里唯一为"未来 N 台机器"设计的架构,天花板最高;扣分(deploy 漏文件、成本高)都是可修的工程细节,不是路线错误。
- Opus 的价值在"这一版最靠谱":交付即用、自测最全、唯一拿到验收;但轻量无状态路线在 owner 眼里扩展性上限不如网关。
- 两个结论并存不矛盾:押长期架构 → 认 GLM 网关;现在就上线少操心 → 用 Opus 交付物。综合到"这次交付谁最好",owner 和 AI 都给 Opus。
5评测局限 客观性披露,必须知悉
- 顺序效应(最大混杂变量):任务顺序执行 GLM(7/22)→Kimi(7/23)→Opus(7/24)。GLM 是"开荒者",首次踩遍部署坑;后两者环境更成熟、人类驱动更老练。对 GLM 不利、对 Opus 有利,不能简单归因于模型能力(已在 §6 逐条核对)。
- 树莓派已剔除:GLM 会话里的树莓派接入系人类误操作,其成本(约 27% 输出 token)与产物已从 GLM 账上剔除。
- 架构复杂度不对等(非范围):同为双机,GLM 选服务端重网关(自建 ~1882 行),Kimi/Opus 选前端扇出。GLM 高成本主要来自路线的天然复杂度——中性看待。
- 供应商 token 口径差异:Opus input_tokens 几乎全记为 cache_read,跨模型只有 output_tokens 严格可比。
- "完成度"是相对判断:Kimi 90% 是相对自身范围,横向不能直接比百分数,要看 §3.2 的具体缺口。
6bug 根因逐条归属 回应"先行者税",全部带可复现证据
grep 三家转录的命中数(bash verify_evidence.sh 可复跑)。仅作量级趋势,不作精确比较。
| 坑类型 | GLM | Kimi | Opus | 判定 |
|---|---|---|---|---|
| 登录锁定 / 日锁 | 60 | 0 | 1 | 几乎只 GLM(网关 cutover 特有) |
| 加载历史 / brotli 压缩 | 89 | 9 | 2 | 几乎只 GLM(网关代理层特有) |
| CodeHive / 5000 端口 / 提权 | 23 | 55 | 118 | 三家都踩,Opus 最狠 |
| 目录名 / 隔离副本坑 | 1 | 238 | 308 | 后发者远高于 GLM |
逐坑根因判定
- ① GLM 日锁 非能力问题 — 转录 GLM_0:3058 坐实:外部监控每 ~2min 用旧密码打 /healthz,10 次触发日锁。根因 = owner 环境已有监控 + 网关 cutover 换密码。GLM 还做了根本修复(/healthz 错凭证不计锁)。
- ② GLM brotli 网关路线自带 — worker 压 br、网关 httpx 解不开且剥了 content-encoding 头。前端扇出路线(Kimi/Opus)浏览器直连 worker,天生没有。
- ③ Opus 改错目录空转数小时 ⭐ 反向先行者税 — 转录 OPUS_0:1881 坐实:"这是两个不同的目录!线上服务跑的是隔壁 claude_web"。评测环境给每模型分配隔离副本、线上跑主目录;GLM 第一个就在主目录 → 天然没这坑;后发 Opus 在隔离副本改 → 空转 + 误触发 3 次 rotate 踢 cookie。后发者反而独踩了先行者没有的坑。
- ④ Kimi 3 个前端 bug 验证缺口,与先后无关 — 不是偷懒(想测但没浏览器在线,转录:2174);但暴露差距:同样没真环境,Opus 自建 mock-caddy、GLM 跑真公网,Kimi 只做静态检查就宣称"已验证"。