在 VS Code 里结对:ZCode 的结对编程工作流搭建
在 VS Code 里结对ZCode 的结对编程工作流搭建【免费下载链接】ZCodeZCode 是 AI 编程工作台提供桌面应用、浏览器界面和终端 Agent。本仓库包含客户端、后端服务、共享 UI以及 Agent CLI 与运行时源码。项目地址: https://gitcode.com/zai-org/ZCode当 AI 编程助手从补全一行代码进化到自主改完一个仓库开发者面临的新问题不再是它能不能写代码而是我如何让它动手、又不让它乱动手。ZCode 给出的答案是一套可以精细分级的协作协议从只读的 plan 模式到需要逐次审批的 build 模式再到跳过确认的 yolo 模式——开发者可以像给结对伙伴交代分工一样把你只管提方案和你去动手改两种角色切给 AI而自己保留最终的审批权。ZCode 是智谱 AI 推出的开源 AI 编程工作台仓库同时承载桌面应用、浏览器界面和终端 Agent 三种形态。本文基于仓库源码apps/zcode-cli/ 与 packages/拆解如何在 VS Code 生态中搭建一套人审代码、AI 动手的结对工作流先讲清 CLI 与 IDE 工作台的形态差异再落到协作模式、权限审批、以及可以把结对协议固化成配置的 Hooks 与子代理机制。CLI 与 VS Code同一套运行时两种协作姿势很多实测文章把 ZCode 简单归类为终端 Agent这其实只讲对了一半。仓库根目录的 README.md 写得很明确ZCode 是 AI 编程工作台提供桌面应用、浏览器界面和终端 Agent而 Agent CLI 与运行时源码位于 apps/zcode-cli/。命令行发行包统一用zcode命令启动无参数进入 TUI第一个参数为--web时启动 Web 界面其他参数交给现有 Agent CLI 处理。也就是说同一套 Agent 内核被三种界面共享——TUI 只是它的一个皮肤Web 工作台是另一个Electron 桌面端又叠了一层 Host/Renderer 架构。这种内核一套、界面多端的设计让协作方式的选择键盘流、浏览器、还是 VS Code 侧边栏与执行内核解耦。在 VS Code 集成这件事上仓库给出了具体的协作触点。先看编辑器探测层packages/shared/src/platform.ts 定义了EditorInfo其中编辑器标识明确包含vscode这类取值再看工作区编辑器选择逻辑 packages/ui/src/lib/workspaceEditorSelection.ts对于 SSH 远程工作区只允许用vscode/vscode-insiders打开远端路径对于 WSL 工作区额外放行 Windows 资源管理器走 UNC 映射。这背后的工程判断是SSH 工作区路径只存在于远端本地的 Finder/Explorer/Terminal 无法消费/root/...这类路径只有 VS Code Remote-SSH 才能真正打开它。于是协作姿势就清晰了ZCode 的 Agent 负责在项目里读代码、执行命令、改文件这是它的运行时能力而 VS Code 负责给人类提供熟悉的编辑器上下文——看 diff、改建议、审代码。二者通过工作区文件搜索、编辑器打开、远程连接这些边界工具衔接而不是粗暴地让 Agent 去模拟一个 IDE。协作模式设置从 plan 到 yolo 的权限光谱结对编程的第一要务是约定这一轮谁来主导。ZCode 把这件事建模成了协作模式CollaborationMode定义在 apps/zcode-cli/packages/contracts/src/interfaces/session.port.tsexport type CollaborationMode plan | build | edit | yolo | auto;在 CLI 里通过/mode命令切换。命令处理器 apps/zcode-cli/packages/cli/src/command-center/handlers/mode.ts 的实现很直白不带参数时回显当前模式与可用列表plan, build, edit, yolo带参数时切换到目标模式。真正有信息量的是 apps/zcode-cli/packages/core/src/permission/service.ts 里checkPermission的分支顺序它把模式语义落成了可执行的决策规则yolo 模式直接放行注释原话是 Yolo mode bypasses permission prompts——适合你明确信任 AI 且改动风险可控的场景plan 模式checkPlanMode只放行只读且非破坏性的工具mode.plan.readOnly和非破坏性 MCP 工具其余一律拒绝mode.plan.nonReadOnly——AI 在这个模式下只能调研、规划、提问不能动文件edit 模式对文件编辑类工具直接放行其余回落到 build 语义build 模式默认按风险分级决定是否弹审批——critical风险的工具必须显式确认mode.build.criticalRiskhigh风险默认需要确认除非配置了自动放行低风险的会话内状态更新直接放行任何有副作用的工具都要问人。风险等级RiskLevel同样定义在 session.port.tslow | medium | high | critical。也就是说让 AI 动手不是一句空话而是被拆成了可配置、可分级、可追溯的决策链。对结对场景最有价值的组合是先用/mode plan让 AI 只读地读代码、出方案、列改动点人审完方案后/mode edit或/mode build放它动手遇到拿不准的高风险操作审批弹窗会把它拦下来等你拍板。这恰好对应人负责方向与裁决AI 负责执行与细节的分工协议。审批与分工人审代码、AI 动手的落点模式只是门槛真正的人审发生在审批环节。ZCode 把审批设计成了异步的 Permission Brokerapps/zcode-cli/packages/core/src/permission/broker.ts 定义了PermissionBrokerPort客户端TUI、Web、桌面各自实现自己的审批 UIManualPermissionBroker维护一张pending请求表支持超时与取消DenyPermissionBroker则在没有审批客户端时默认拒绝——宁可拒绝也不裸奔。审批请求携带了什么看 apps/zcode-cli/packages/contracts/src/interfaces/permission.port.tstoolName、riskLevel、input、mode、suggestedPermissionUpdates。这意味着弹窗里不仅能展示AI 想跑什么命令、改哪个文件还能顺带提议这次允许之后是否把它记成规则。审批的记忆能力分两层。一层是会话级PermissionService内部维护sessionRules注释明确说明Always allow in this session的授权只活在当前会话内存里/new或重启即失效防止一次大意的放行变成永久的后门。另一层是项目级持久规则PermissionRuleset由allow / deny / ask三组规则组成规则内容支持通配符匹配matchesRuleContent里prefix:*前缀匹配和*通配符转正则匹配的输入字段覆盖command、url、file_path、path、pattern、patch_text等——项目可以预先把只允许改动src/目录禁止执行rm -rf类命令这类结对边界写死。再往下是人审代码的最后一公里。Write工具的输出契约定义在 apps/zcode-cli/packages/contracts/src/tools/write.ts除了常规的写入结果还会返回structuredPatch结构化 diff hunk与可选的gitDiff含文件名、增删行数、patch 正文并且有一个专门的字段/** * True when the user edited the proposed content in the permission dialog before accepting */ userModified?: boolean;这意味着 ZCode 的审批对话框不只是同意/拒绝二选一人类可以在对话框里直接改写 AI 提议的内容改完再放行工具会如实标记userModified。这就是人审代码、AI 动手在实现层面的完整闭环——AI 产出改动草案人既是审批者也是最终内容的编辑者每一次人工介入都被记录进会话。配合 TUI 的审批面板apps/zcode-cli/packages/tui/src/app-approval-panel.tsx提供审批决策与授权范围选择以及/rewind、/fork、/compact等会话控制命令见 apps/zcode-cli/packages/cli/src/command-center/slash-command-types.ts结对双方人和 Agent随时可以回到过去的某个决策点重来——这比传统结对编程改错了只能手动回滚要优雅得多。把结对协议固化进仓库Hooks、子代理与 MCP如果每次结对都要口头重申规则协议早晚会漂移。ZCode 提供了把分工协议写进配置的机制首当其冲的是 Hooks。事件清单定义在 packages/shared/src/hooks.tsSessionStart | UserPromptSubmit | PreToolUse | PermissionRequest | PostToolUse | PostToolUseFailure | Stop其中PreToolUse钩子可以 deny / ask / allow、替换工具输入或附加模型可见上下文PermissionRequest在工具需要审批时触发可以代为批准、拒绝或修改待处理的输入。CLI 文档apps/zcode-cli/README.md给出了可直接落地的 JSON 配置对Bash|Write|Edit这类有副作用的工具挂PreToolUse钩子用退出码2表示显式阻断。举个典型用法团队约定任何会话都不允许执行破坏性 shell 命令就可以用一段钩子输出permissionDecision: deny让规则跟着仓库配置走而不是依赖每个人的自觉。第二层是子代理Subagent。apps/zcode-cli/packages/core/src/subagent/profile.ts 定义了AgentProfile其中有一个专门的AgentPermissionModeauto | plan。也就是说你可以给某个子代理预设权限姿态——一个只读的调研型子代理负责读代码出方案plan一个执行型子代理负责动手auto主 Agent 负责编排二者。这种不同角色不同权限的设计本质上就是把结对编程里导航者driver与驾驶员navigator的角色划分搬进了 Agent 拓扑。第三层是 MCP 与插件生态。ZCode 的 CLI 配置支持stdio/http/sse三类 MCP 服务器工具以mcp__server__tool的形式注册进会话并配套/mcp list、/mcp status、/mcp connect等管理命令插件 manifestapps/zcode-cli/README.md 的 Plugin Manifest 一节允许一个插件同时贡献skills、commands和mcpServers。仓库自带的 bundled skillsapps/zcode-cli/packages/bundled-skills/skills/dynamic-workflows/展示了把整套工作流封装成 Skill 的写法——结对协议本身也可以沉淀成一个 SKILL.md让 AI 每次开工前先读一遍分工章程。小结把 ZCode 当作结对伙伴时它的价值不在于自动到什么程度而在于把人与 AI 的分工变成了可配置、可审计、可编程的协议协作模式决定 AI 的权限光谱权限规则与风险分级决定哪些操作要人拍板Hooks 与子代理把约定固化进仓库Write工具的结构化 diff 与userModified标记则保证每一次人类介入都有迹可循。社区评测中反复出现的网络请求可审计讨论在源码里同样能找到对应所有工具调用、审批决策与会话事件都以结构化事件流沉淀在会话投影里。搭建结对工作流的要点其实就一句话——先想清楚哪些决策必须留给人再把其余的一切放心地交给 Agent。【免费下载链接】ZCodeZCode 是 AI 编程工作台提供桌面应用、浏览器界面和终端 Agent。本仓库包含客户端、后端服务、共享 UI以及 Agent CLI 与运行时源码。项目地址: https://gitcode.com/zai-org/ZCode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

MediaPipe+CNN手势识别控制鼠标:关键点提取到pyautogui实战

MediaPipe+CNN手势识别控制鼠标:关键点提取到pyautogui实战

简介:一套面向计算机视觉与深度学习初学者的手势识别控制鼠标完整项目,基于opencv完成图像采集与预处理,借助Mediapipe实现手部关键点检测与跟踪,再通过CNN模型对手势自动分类,进而映射为鼠标移动、左键点击、右键点击…

2026/10/11 19:56:48 阅读更多 →
YOLO-World 零样本检测实战:从开放词汇原理到微调部署

YOLO-World 零样本检测实战:从开放词汇原理到微调部署

简介:这是一份聚焦YOLO-World开放词汇目标检测技术的原理讲解型PDF,适合正在学习YOLO系列与多模态检测的算法工程师、科研人员及CV初学者。文档系统拆解了YOLO-World的实现方式:先是基于YOLOv8的图像编码器、CLIP预训练文本编码器与RepVL-PAN…

2026/10/11 19:56:48 阅读更多 →
用SQL直接开发Web应用:Oracle APEX实战指南

用SQL直接开发Web应用:Oracle APEX实战指南

简介:面向需要快速上手或系统进阶APEX的开发者,这份资料系统梳理了Oracle APEX从环境搭建、账户管理到页面开发、控件运用、报表图表、CSS/JS定制、文件上传下载以及与EBS集成的完整链路,适合企业级Web应用开发入门和日常实操参考。压缩包内共…

2026/10/11 19:56:48 阅读更多 →

最新新闻

YOLOv7火焰烟雾检测实战:从数据集标注到部署避坑全攻略

YOLOv7火焰烟雾检测实战:从数据集标注到部署避坑全攻略

简介:基于YOLOv7的火焰与烟雾检测方案,面向计算机视觉开发者、消防预警领域研究者、安全监控项目人员以及正在入门目标检测的学员,适合作为模型训练、推理验证和二次开发的参考基础。资源包含训练好的模型权重,下载后可直接加载推…

2026/10/11 22:24:10 阅读更多 →
Python akshare A股数据实战:从拉取清洗到本地存储的稳定链路

Python akshare A股数据实战:从拉取清洗到本地存储的稳定链路

简介:这是一份面向金融数据分析初学者与量化爱好者的Python股票数据处理源码包,基于akshare库实现股票数据的自动化抓取、清洗与分析,适合想用编程替代手工整理行情数据、搭建个人分析流程的开发者参考。压缩包共442个文件、约12.22MB&#x…

2026/10/11 22:24:09 阅读更多 →
连续相位调制CPM原理与MATLAB仿真实现

连续相位调制CPM原理与MATLAB仿真实现

简介:这份资源面向通信工程、电子信息类专业学生及数字通信初学者,聚焦连续相位调制(CPM)在MATLAB环境下的原理验证与仿真实现,帮助读者理解调制指数、符号速率与信息速率之间的关系,并掌握MSK、GMSK等典型…

2026/10/11 22:24:09 阅读更多 →
小龙虾OpenClaw一键部署U盘:把配置改到TaoToken的完整实操

小龙虾OpenClaw一键部署U盘:把配置改到TaoToken的完整实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 22:24:09 阅读更多 →
Pytorch实现DualGAN非配对图像去雾:原理与实战

Pytorch实现DualGAN非配对图像去雾:原理与实战

简介:基于Pytorch实现的对偶生成对抗网络图像去雾项目,包含完整Python源码、预训练模型与文档说明,面向计算机相关专业毕业设计、课程设计及需要项目实战的初学者。资源包共25个文件,涵盖10个py源码文件用于网络定义、训练、预测与…

2026/10/11 22:24:09 阅读更多 →
ROS2 Action通信机制详解:从接口定义到完整实战

ROS2 Action通信机制详解:从接口定义到完整实战

第一次看到ROS2里还有action这种通讯方式时,我一瞬间是有点懵的:topic我会用,service我也明白,action到底是什么鬼?直到我在导航小车上真跑了一次任务才发现,动作方式通讯解决的是"带反馈、可取消、有…

2026/10/11 22:23:08 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →