zai-org / zai-org/feedback

[建议/Feature] 同一模型(GLM-5.2)在 ZCode 与 Claude Code 下产出差距显著,疑似原生 Agent system prompt 缺失认知规范块

Open
#78 1 comment 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

priority: P2
Dominant language
No language data
Stars
22
Forks
1
PR merge metrics
No merged PRs in 30d

Description

问题概述

同一个模型(GLM-5.2)在 ZCode 原生 Agent 与 Claude Code CLI 两个宿主下,执行同一份提示词的相同任务时,产出质量出现显著且可量化的差距。经过对照实验,这个差距与模型本身无关,而指向两个宿主注入的 system prompt 不同——ZCode 的 system prompt 缺少一块"认知与行为规范",导致 GLM 在 ZCode 中更倾向于凭印象给出自洽但错误的结论,而不是先查证再下结论。

使用环境

  • 操作系统:macOS(Apple Silicon)
  • ZCode 版本:3.1.2 → 3.1.3 → 3.1.8(行为在多个版本一致复现)
  • 对比宿主:Claude Code CLI,后端同样接入 glm-coding-plan,模型 GLM-5.2
  • 模型:GLM-5.2(两个宿主完全相同)

复现步骤

用同一份提示词(见下方"附录 A"),分别在两个宿主中各开一个全新会话,要求复刻经典《超级玛丽》1-1 关卡网页游戏。提示词明确要求:联网搜索原版资料、做好 git 版本管理、不确定的数值先搜索确认。两个会话均不干预,让模型自主完成。

预期:相同模型 + 相同提示词,产出质量应接近。

实际:两个版本差距显著,且差距集中体现在"对原版事实的查证态度"上。

实际表现:可量化的差距

1. 版本管理纪律

提示词明确要求"每完成一个可验证阶段就 commit"。

宿主 commit 数 模式
Claude Code 18 按 Phase 分阶段提交(骨架→精灵→关卡→物理→敌人→砖块→蘑菇→HUD→音效→通关),完成后还有 8 个专项调整 commit
ZCode 3 骨架 → 渲染 → 把"移动/物理/碰撞/敌人/道具/HUD/音效/流程"7 个阶段打包成 1 个 commit

ZCode 版把多个阶段折叠成大 commit,过程不可回溯、不可分步验证。

2. 对"原版事实"的查证(核心差距)

两个版本都用了"字符像素图手绘"做精灵图(这点相同),但对待原版具体数值的态度完全不同。

物理参数——两者都在代码注释里写了来源,但可信度差异很大:

  • Claude Code 版注释:「smbdis.asm 反汇编(doppelganger 的 1wErt3r/4048722)+ Sonic Retro 论坛逐帧分析」,并写出换算公式 7²/(2·0.7)=35px≈2.2 tile
  • ZCode 版注释:「数值由反汇编派生数据等比换算 + 手感微调」——没指明是哪个反汇编、无可验证出处

关卡布局——查证与否直接体现在数据正确性上。以下对照公开的 1-1 拆解资料核实:

原版事实(公开拆解) Claude Code 版 ZCode 版
第一个蘑菇在 col 20 col 20 ✓ col 23 ✗
阶梯金字塔:两段各 4 级 staircase(…,4) placeStairsUp(…,8) 做成 8 级 ✗
坑后的高位砖平台(row 5) 80-88 列完整铺设 ✓ 完全缺失 ✗

Claude Code 版在 level.js 注释里列了 4 个出处(Mario Wiki、SMB1 反汇编 L_GroundArea6 字节流、Code Golf 坐标、NESMaps),甚至贴了反汇编字节 $07 $81 $47 $24。ZCode 版只写"NESMaps + MushROMs,部分凭记忆近似"——话是诚实的,但它把"记忆近似"直接当确定值用了,没有去核实。

3. 自我审视
  • Claude Code 版 README 有专门一节"已知与原版的差距",逐项列了哪些已调整、哪些没还原(走路动画原版 3 帧只做了 2 帧、BGM 不是完整主题等)
  • ZCode 版 README 的进度清单 9 项里 8 项还标着 [ ] 未完成,但代码实际已能运行——模型不清楚自己做到哪了,也没向用户暴露不确定性

这不是模型能力问题:关键对照

为排除"GLM 模型本身做不到"这个解释,有一个决定性的对照事实:

此前长期使用 Claude Code CLI + 后端 glm-coding-plan + GLM-5.1,在同类开放式排查任务中几乎不出现上述问题。

也就是说,同系列模型在 Claude Code 宿主下表现正常,在 ZCode 宿主下表现异常。这直接排除了"模型能力不足",指向差异来自宿主注入的 system prompt。

推测的根因(供参考)

为定位原因,阅读了 ZCode.app 内 Contents/Resources/glm/zcode.cjs 中主 Agent 的 system prompt 构造逻辑。ZCode 原生主 Agent 的 system prompt 极简,核心身份仅一句 "You are ZCode, an interactive coding agent",加上安全条款与工具说明,几乎没有"如何思考、何时查证、如何承认局限"的行为规范

对比之下,参考类工具(如 Claude Code)的 system prompt 在身份句之外,还包含一大块认知规范,例如:涉及自身产品细节时先查文档而非凭记忆作答;遇到不确定的具体数值必须先搜索确认;不确定时承认无知而非编造自洽结论。

ZCode 的 prompt 似乎在复用骨架时保留了安全条款和工具说明,却省略了这块认知规范。对 Claude 系模型这是训练时内化的隐含能力,省略影响不大;但对 GLM,这是必须显式给出的运行时约束。缺失后,模型倾向于用训练数据里最相似的工具经验去填补,于是出现"凭印象给值""不查证""不暴露不确定性"等行为。

期望表现 / 希望改进的地方

  1. 在原生 Agent 的 system prompt 中补足认知规范:明确要求"涉及具体数值/事实时优先查证,不凭记忆作答""不确定时承认局限并去验证,而非编造自洽结论""不把其他工具的行为经验套用到 ZCode"。
  2. 这正是"围绕 GLM-5.2 深度联调"在 prompt 层面最该落地的部分——模型能力已具备(同模型在 Claude Code 下表现可证明),差的是运行时的约束框架。
  3. 若已在 roadmap 内,感谢;若无,建议作为提升 GLM 在 ZCode 中一致性的优先项。

附录 A:两个宿主使用的完全相同提示词

请帮我用网页技术复刻经典《超级玛丽》1-1 关卡,做一个能在本地浏览器直接打开运行的网页游戏。还原要求:1-1 关卡完整布局(地形/砖块/问号砖/水管/阶梯/旗杆)、角色与敌人精灵、物理手感(奔跑惯性/跳跃抛物线/按住跳更高)、碰撞交互(踩死敌人/顶问号砖出金币蘑菇/吃蘑菇变大/撞碎砖块)、HUD(金币/分数/生命/计时)、通关流程。技术栈 HTML5 Canvas + 原生 JS。资源获取:联网搜索公开复刻资源;搜不到的用代码绘制像素图或 Web Audio 合成。要有 BGM 与音效。键盘控制。版本管理:先 git init,每完成一个可验证阶段就 commit。对原版任何具体数值(跳跃高度/重力/敌人速度/砖块位置)如果不确定,先搜索确认,不要凭印象猜。

(完整版提示词更长,核心约束一致,可按需补充。)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by inspecting Contents/Resources/glm/zcode.cjs and the main Agent system prompt construction described in the report. Compare the existing prompt with the requested cognition and verification guidance, then reproduce the GLM-5.2 comparison using the same Super Mario 1-1 task. Done means the prompt includes the requested uncertainty, fact-checking, and tool-behavior guidance and the observed behavior improves without weakening existing safety or tool instructions.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
ai, developer-experience
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.