GLM-5.1 写程序:别只让它“写代码”,让 Agent 带你把项目做完
你是不是也遇到过这种场景:
- 产品丢来一份 PRD,说“下周要上线”。
- 你盯着需求发呆,心里想:能不能让模型直接给我把活干了?
- 结果模型一会儿写得像个高级工程师,一会儿又像断网了一样“卡球”。
我做过一次很直白的实测:同一份产品开发文档,让 GLM-5.1 和另一款常用大模型各自把软件从 0 做出来。实际效果差异没你想的那么大。
要让 GLM-5.1 真正好用,关键不在“问一句给一段代码”,而在 把它当成 Agent 来跑一个可控的开发流程。下面这套你照着做,项目能明显更稳。😄
你该准备什么:一份“能喂给模型”的产品文档
很多 PRD 对人类友好,对模型不友好。
你要做的是把需求整理成模型能执行的格式。建议把文档拆成 6 块(复制到一个 SPEC.md):
- 目标:一句话讲清要做什么
- 用户故事:谁在什么场景要完成什么
- 功能清单:按模块列出(不要长篇散文)
- 数据结构:核心实体 + 字段 + 约束
- 接口契约:请求/响应示例,错误码
- 验收标准:一条条可勾选
你会发现:文档越“像合同”,模型越不敢乱写。
GLM-5.1 的正确打开方式:让 Agent 承包“拆解 + 方案 + 交付”
我推荐的节奏是:
1)让 Agent 先当“产品经理”,把需求拆成任务树
把 SPEC.md 丢给它,然后只提一个要求:
- 输出 任务树(模块 → 子任务 → 产出物)
- 每个任务标注:依赖关系、文件位置、验收方式
可直接用的提示词:
你是资深全栈 Tech Lead。
输入是一份 SPEC.md。
请输出一棵任务树(模块/子任务/产出物)。
每个子任务必须包含:
- 依赖(前置任务)
- 需要创建/修改的文件路径
- 验收方式(如何验证对不对)
不要写代码。
你会得到一份“能照着走”的施工计划。到这一步,很多人会忍不住让它立刻开写。
别急。
2)让 Agent 当“架构师”,先锁技术栈和目录结构
你只需要它给出:
- 技术栈选择(前后端/数据库/鉴权方式)
- 项目目录结构
- 关键设计决策(为什么这么选,用一句话)
提示词模板:
基于任务树,给出项目的技术栈与目录结构。
要求:
- 目录结构必须可落地(给到具体文件夹)
- 关键决策用要点说明
- 同时列出未来可能踩的坑(3~8条)
不要写业务代码。
这一步的意义是:减少后面“写到一半推倒重来”。
3)再让 Agent 当“工程师”,按任务树逐个交付
真正写代码的时候,你要控制它的输出粒度。
我自己的经验:
- 一次只让它做 一个子任务
- 要求它给出 变更清单(新增/修改了哪些文件)
- 每段代码配一个 本地验证命令
提示词模板:
现在执行任务:{任务名}
约束:
- 只完成这一个任务,不要顺手做别的
- 输出必须包含:
1) 变更文件清单(路径 + 作用)
2) 代码(按文件分块)
3) 本地验证步骤(命令/请求示例)
如果信息不足,先问我3个以内的澄清问题。
你会明显感觉到“卡球”的概率下降。
一个最实用的玩法:用同一份文档做“双模型验收”
如果你也想对比两边效果,别让它们自由发挥。
你要做的是:
- 给两边喂 同一份
SPEC.md - 要求输出格式一致(任务树/接口表/文件清单)
- 用同一套验收清单去打分
验收清单(直接抄走)✅
- 需求覆盖率:功能点是否漏了
- 一致性:字段命名、状态枚举、错误码是否统一
- 可运行:能不能一键启动
- 可维护:目录结构是否清晰,有没有“写死常量满天飞”
- 可扩展:后续加一个字段/接口要改几处
把验收变成“打勾”,你就不会被模型的长篇输出带跑偏。
“卡球”怎么办:GLM-5.1 Lite 也能救回来
卡球常见表现:
- 写着写着绕圈子,重复解释
- 代码断片,漏 import、漏路由、漏字段
- 接口和数据库对不上
我用过最有效的 4 个解法:
解法 A:把它从“写代码”切回“出计划”
你直接说:
你刚刚卡住了。
暂停写代码。
请用要点列出:你已经完成了什么、缺什么信息、接下来3步要做什么。
很多时候不是不会写,是上下文跑丢了。
解法 B:要求它输出“差异清单”而不是继续生成
对照 SPEC.md,列出当前实现的差异清单:
- 缺失的功能点
- 不一致的数据字段
- 可能的 bug
不要写新代码。
它会立刻变成“审计员”,比继续写更靠谱。
解法 C:强制收敛输出长度
Lite 订阅最怕“输出太长然后崩”。你可以加这句:
输出限制:不超过120行。超过就分两次输出,先给文件清单与关键片段。
解法 D:把问题缩小到一个“最小复现”
不要说“接口不通”。说:
- 请求是什么
- 期望响应是什么
- 实际响应是什么
- 日志/报错贴出来
模型会更像一个会排查的同事,而不是“瞎猜的写手”。
你可以直接套用的 Agent 提示词组合(复制即用)
把下面三段存成你自己的“快捷指令”。
1)需求澄清(防止做偏)
阅读 SPEC.md。
请提出你必须确认的澄清问题(<=3个)。
问题要能影响架构或数据设计,不要问无关细节。
2)接口契约生成(让前后端不扯皮)
基于 SPEC.md 输出接口契约:
- 路径/方法/鉴权
- 请求 JSON 示例
- 响应 JSON 示例
- 错误码
用 Markdown 表格输出。
3)交付模式(按文件输出代码)
按文件输出代码,每个文件用:
### path/to/file
```lang
...
并给出本地验证方式。
---
## 避坑清单:别把“模型写得快”当成“项目能上线”
- **不锁字段命名**:`userId / uid / id` 三套体系,后面必炸。
- **不写验收标准**:你以为做完了,产品一句“不是这个意思”。
- **一次让它写太多**:输出越长,越容易漏依赖、漏文件。
- **没有接口示例**:前端拿不到稳定契约,只能靠猜。
- **不做差异审计**:模型很会“自圆其说”,漏需求还特别淡定。
---
## 我对 GLM-5.1 的一句话评价(按开发者视角)
把它当 Agent 用,给它任务树、文件清单、验收方式,它能交付得很像回事。
偶尔卡球也正常,Lite 订阅更明显。别生气,换“计划/审计/最小复现”三板斧,基本都能拉回来。
你要是愿意,把你的 PRD(删敏后)贴一段,我可以按上面的流程帮你把“任务树 + 技术栈 + 目录结构 + 第一批子任务”直接生成出来。