QZcode
作者:QZzwj
在编辑器里跑一条四角色接力的流水线,把一句话目标做成真正的改动:
L 管全程(派活 · 盯进度 · 打回返工)
└→ A 写任务书(提示词 + 验收标准)
└→ B 带工具实现(读/写/改文件、跑命令、开浏览器验证)
└→ C 只读核验(跑测试、看截图、给结论)
└→ 不通过就退回 A 重写任务书,最多 3 轮
装好就能用:扩展自带后端,不需要额外安装任何东西,也不需要准备仓库。
装
方式一:在 VS Code 里装
扩展面板搜 QZcode → Install → Ctrl+Shift+P → Developer: Reload Window。
方式二:从 vsix 装
code --install-extension qzcode.vsix --force
# 卸载:code --uninstall-extension qzcode.qzcode
前置条件:机器上要有 Node。 扩展会用它来跑自带的本地服务;qzcode.nodePath 可以指定别的 node。
第一次用:先看流程,再填 key
Ctrl+Shift+P → QZcode: 设置(模型 / 技能)
- 三个模型卡片(A 写任务书 / B 实现 / C 核验)各选一个供应商、填 API key
- 关掉设置,在侧栏输入框里写目标,回车
不想先填 key? 打开设置里的「用脚本化模型」(qzcode.mock),可以完整看一遍 L→A→B→C 的接力、工具调用、diff、核验结论,再切真模型。
界面:右侧栏一个聊天
装好后 VS Code 右侧(辅助侧边栏)出现 QZcode 图标。第一次没看到就 Ctrl+Shift+P → QZcode: 打开侧栏聊天。

A 的结论、B 的工具调用与文件改动、结论条、输入框、两个开关——都在一个侧栏里。
| 控件 |
作用 |
| 供应商 chip |
当前 provider · model,点一下弹选择器,没有 key 会顺便问你要;下一轮生效,不用重启 |
| + |
清空当前对话,开新任务 |
| ↑ / ■ |
同一个按钮:空闲=发送(Enter),运行中=停止(也是 Esc)。停止是硬中断,正在跑的 shell 命令会被掐掉 |
| 先看任务书 |
计划模式:只跑到 A 出任务书就停,等你点「按这个做」才动手 |
| 每次改动自动 git 提交 |
只提交这次真改过的文件;工作区没有仓库时会先建一个 |
| 底部状态行 |
跟着流水线走:第 1 轮 · B 实现 → ✔ 完成 · 1 轮 · 18.4s · 6997 tok |
发出消息到第一个字之间会显示 正在思考中 ···。网络断了会自动续上:先问后端"这次运行还在吗",在跑就补齐丢的事件,跑完就直接收尾,后端重启过就明确告诉你进度没了并给「重新发送 / 重启后端」。
命令(Ctrl+Shift+P)
| 命令 |
作用 |
QZcode: 打开侧栏聊天 |
聚焦右侧对话视图 |
QZcode: 新建任务… |
输入目标直接开跑 |
QZcode: 用选中代码当目标… |
右键选中代码也能用 |
QZcode: 设置(模型 / 技能) |
模型 / 技能 / 成本三个页签 |
QZcode: 更换 AI 供应商… |
快速切换(四个角色一起换) |
QZcode: 打开配置(插件在这里开关) |
打开 qzcode.json,没有会问你要不要生成模板 |
QZcode: 强制停止当前运行 |
同侧栏那个 ■ |
QZcode: 查看本次改动(diff) |
原生 diff:左快照、右现状 |
QZcode: 回滚本次运行的文件改动 |
确认后整轮还原(新建的文件会删掉) |
QZcode: 打开运行记录 |
挑一轮 .qzcode/runN.md 打开 |
QZcode: 体检(环境自检) |
检查 node / 配置 / 写权限 / shell / 四个角色 / 网络 |
QZcode: 显示日志 |
本地服务的输出 |
QZcode: 重启服务 / 停止服务 |
改完配置后用 |
QZcode: 诊断侧栏图标(为什么有两个) |
排查图标重复 |
用起来有用的功能
计划模式(省钱)
勾「先看任务书」→ 只花 A 的钱出任务书,你看完不满意可以直接改目标重跑;点「按这个做」时才花 B/C 的钱(这一轮跳过 L 和 A)。
多轮上下文(不用重复交代)
下一轮自动带上一轮的目标、结论、改动文件、验收标准。所以做完「倒计时页面」,直接说「改成深色 + 加暂停」就行。
@文件
目标里写 @src/utils.ts,它会把那个文件的原文一起给 A。最多 4 个、每个 6000 字,超长会截断;路径越界或二进制会拒绝并告诉你原因。
预算硬闸
设置 → 成本里设一个日预算,超了会直接拒绝启动,不让你跑到一半才停。改完预算要 QZcode: 重启服务。
视觉模型(让 C 能"看"画面)
设置 → 模型 → C 卡片最下面勾「挂一个视觉模型」,填一个能看图的模型名。之后 C 每次截图都会先让视觉模型看一遍,把文字描述塞进工具输出——纯文本的 C 也能看画面。默认关闭,每次运行最多看几张图可设上限。
成本与速度
设置 → 成本按步骤列出 A/B/C 各自的「最快 / 平均 tok/s、用时、调用次数」,只算输出 token、只算模型时间(不含跑命令的时间)。
技能
设置 → 技能,可以按角色启用内置技能(实现纪律 / 核验纪律 / 任务书写作),也能导入自己的(本地路径、https 链接、直接粘贴 markdown)。
插件
在 qzcode.json 的 plugins[] 里写路径,QZcode: 重启服务 后生效。支持 pi 格式(registerTool / registerCommand / on('tool_call'))和 cordis 格式({ name, inject, apply })。自带两个例子:一个会拦住 rm -rf 这类命令、把 API_KEY= 打码,并给模型多一个 count_lines 工具。
设置项
| 设置 |
默认 |
说明 |
qzcode.mock |
false |
用脚本化模型,不联网、不需要 key |
qzcode.exec |
true |
允许 B/C 执行 shell 命令 |
qzcode.rounds |
0 |
最大轮次(默认 3 轮:C 不通过 → A 重写 → 重做,最多来回 3 次)。0 = 用配置文件里的值 |
qzcode.configFile |
空 |
qzcode.json 路径,留空用工作区里的 |
qzcode.nodePath |
node |
跑本地服务的 node |
qzcode.autoStart |
false |
打开编辑器就把服务拉起来 |
qzcode.log |
false |
诊断日志写进 .qzcode/debug.log |
qzcode.cliPath |
空 |
一般不用填(只有想用别的后端时才填) |
配置放在哪
| 位置 |
何时用 |
<工作区>/qzcode.json(或旧名 pi-trio.json) |
有就用它 |
%APPDATA%\Code\User\globalStorage\qzcode.qzcode\qzcode.json |
工作区没有就用全局的,不污染你的项目 |
| 都没有 |
自动以 mock 起来,先用;在设置里选供应商会把配置写出来 |
供应商:内置 16 家平台的清单(Astron Coding Plan / Baidu Qianfan / BaiLing / BytePlus / DeepSeek / 火山 Agent Plan / Kimi / Longcat / MiniMax / 千问AI平台 / QwenCloud / StepFun / 腾讯云 / Xiaomi MiMo / Zhipu GLM / OpenAI)+「自定义(手动填写全部字段)」。选中会带出接口地址和模型,key 还是要自己填。
少数平台的兼容地址没有实测,选中后如果测试连接报 401/404,按官方文档改一下「接口地址」即可。
每次运行会留下什么
<工作区>/.qzcode/
run1.md ← 这一轮 L / A / B / C 各自干了什么
run2.md (决策、任务书、工具调用、改动、结论、各步速度)
snapshots/<runId>/ ← 改之前的原件,回滚用
shots/ ← 浏览器验证的截图
debug.log ← 开了 qzcode.log 才有
- 运行记录:每轮一份,编号往后排。结束后侧栏有「查看本轮记录」。
- 快照 / 回滚:B 第一次改某个文件前先存原件。结束后可以整轮回滚,也可以「回滚某个文件」逐个挑;新建的文件回滚时删掉。
- git:开了自动提交就只提交这次改过的路径,不会把你自己的未提交改动卷进去;工作区不是仓库会先建一个。
已知限制
- 计划模式那一轮不改任何文件,也不会做 git 提交(记录文件照写)。
- 「运行中切文件夹会中断任务」的确认只在切文件夹时弹。
- 断线恢复靠本地服务内存里的运行对象:服务重启过,那次运行的实时进度就找不回来了(已改的文件和
runN.md 还在)。
- 预算硬闸读的是启动时的配置,改完要重启服务。
- 视觉模型要填一个真的能看图的模型名,填文本模型会报错。
注意
- 设置面板保存时会把配置写进
qzcode.json;插件、模型、key 都在那个文件里。
- 本地服务是扩展的子进程:「停止服务」或关掉编辑器会杀掉它;端口随机,不占固定端口。
- 需要机器上装 Node;装好后不需要任何额外安装或配置就能用。