尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

VT Code:带人工审核WebMCP编辑器的终端编码Agent,让AI修改网页不瞎改

VT Code:带人工审核WebMCP编辑器的终端编码Agent,让AI修改网页不瞎改 1. 为什么说“终端里的编码 Agent”和“WebMCP 编辑器”是两件必须组合的事最近在 Hacker News 上看到一个很有意思的项目VT Code。官方定位很简短——一个带人工审核 WebMCP 编辑器的终端编码 Agent。如果你做过 AI 辅助前端开发大概率踩过这样一个坑让 Claude、ChatGPT 或本地模型帮你改一个网页模型通过文字描述理解了需求生成了一段看起来完全正确的代码结果你把它粘贴到浏览器里一看——布局塌了字体没了交互压根没生效。问题出在哪模型根本没看过真实页面。传统 LLM 编程工具的工作方式是“代码进代码出”。它看到的只有你的本地文件最多加上你在提示词里贴上的报错信息。但在真实的前端开发流程里页面最终长什么样CSS 文件加载顺序、外部字体、响应式断点、JS 运行时渲染这些都不是静态代码能完全表达的。很多 bug 只会在浏览器里以“肉眼可见”的方式呈现。VT Code 的切入点就在这个地方。它不是又一个“让 AI 帮你写代码”的终端工具而是试图解决 AI 改网页时“看不见页面”的盲区。它的做法是把一个带浏览器上下文的编辑器WebMCP editor接入终端 Agent 的工作流并且在这个编辑器里保留一层人工审核——AI 生成的修改不会直接落到代码里而是先以可视化的方式呈现给你由你确认后再应用。这篇文章我会从基础概念、安装配置、核心流程、完整示例、排查思路和最佳实践几个角度把 VT Code 做的事情拆开讲清楚。如果你想判断“它到底值不值得用”我会在开头先给一个结论VT Code 真正降低的不是“写代码”的成本而是“让 AI 改网页”这件事里最昂贵的沟通成本——你向 AI 描述页面问题、AI 向你展示修改效果的反复试错成本。它适合的并不是所有开发者而是那些经常做前端修改、被“AI 改完页面还是不对”折磨过的人。2. 基础概念与核心原理CLI Agent、WebMCP 和人工审核编辑器分别是什么要理解 VT Code先要把标题里的三个词拆开terminal coding agent、WebMCP、human-reviewed editor。这三个词单独看都很常见组合在一起才构成 VT Code 的独特方案。2.1 Terminal coding agent终端里的编码代理“编码代理”coding agent并不是简单的“代码补全工具”它更像一个能理解任务、调用工具、读取文件、执行命令并持续迭代的 AI 助手。和 IDE 里的补全插件不同terminal coding agent 通常跑在终端环境里通过 CLI 交互你给它一个任务描述它自己会决定读哪些文件、改哪些文件、跑什么命令。它的优势是和 Git、构建工具、测试框架的天然亲和。终端是开发者的控制中心Agent 在终端里能做的事情边界比 IDE 插件更宽它可以真的去执行测试、真的去启动构建、真的去检查输出而不是只在编辑器里生成一段代码就结束。但终端 Agent 也有一个天然短板——它没有眼睛。它看不到浏览器渲染结果看不到设计稿的间距是不是对齐了看不到交互反馈是不是自然。它的“感知”只能依靠文件内容、命令行输出的文本信息。2.2 WebMCP让编辑器成为 Agent 的“眼睛”MCPModel Context Protocol是一个让 AI 模型获取外部上下文信息的开放协议。在 AI 编程工具中通过 MCP模型可以访问文件系统、数据库、Git 仓库甚至外部 API。它本质上是一个标准化的“插槽”让各种工具都能把上下文喂给模型。VT Code 做的事情是把编辑器本身也变成一个“上下文提供方”。WebMCP editor从命名上推测是一个专门面向 Web 开发场景的 MCP 编辑器——它能在浏览器环境中捕获真实页面的状态把这些状态DOM、样式、控制台报错、网络请求等通过协议提供给模型。举个例子。传统方式下你对 AI 说“按钮点击没反应”AI 只能猜。它可能需要你贴 HTML 代码、贴 JS 代码、贴 console 报错然后自己进行逻辑推理。但有了 WebMCP 编辑器AI 可以直接拿到页面的运行时状态——按钮当前的样式类名、绑定了什么事件、控制台抛了什么错——这些信息是它自己“看”到的不需要你一点点描述。这个设计的核心价值在于把“用户描述问题”变成“AI 观察问题”。人类描述软件 bug 的时候经常失真要么漏掉关键信息要么把因果关系说反。AI 能自己观察时整个排错链路会短很多。2.3 Human-reviewedAI 生成之后人来把关“Human-reviewed”是 VT Code 最值得注意的一个设计决策。它在 AI 生成修改和最终应用修改之间加入了一道人工审核环节。这个设计不是保守而是务实。AI 生成代码的准确率永远不可能是 100%尤其在视觉还原、交互细节、性能边界这些维度上。如果 AI 直接改动代码文件一旦出错你需要自己去 diff 里找问题比你自己动手改还要痛苦。而“人工审核”的方式是AI 先把修改以可视化形式呈现你可以看到改动前后的对比确认无误后再一键应用。这个流程的体验类似于代码审查Code Review只不过审查对象从“团队其他成员提交的代码”变成了“AI 生成的修改”。这个设计其实透露了一个重要的产品判断AI 编程工具的未来不在于让 AI 完全替代开发者而在于让 AI 先做“拟稿人”让人做“终审人”。在需要视觉判断的 Web 开发场景里这个判断尤其准确。2.4 容易混淆的概念WebMCP 和 MCP 是什么关系简要梳理一下避免概念混淆概念范围作用MCP通用协议标准化 AI 模型与外部数据/工具之间的交互方式WebMCP面向 Web 场景的 MCP 扩展推测定义让模型能获取并操作浏览器/编辑器中的 Web 上下文Terminal coding agent工具形态在终端里运行、能主动执行多步任务的 AI 代理Human-reviewed editor交互设计AI 修改需经过人工可视化审核后再应用WebMCP 本质上是 MCP 协议在 Web 开发场景下的一种落地形态。它解决的还是同一个问题——给 AI 模型提供更丰富、更准确的上下文只不过它提供的上下文来自运行中的网页而不是文件系统或数据库。3. VT Code 与传统 AI 编程工具的差异与适用边界如果你用过 Claude Code、Codex、Aider 或者 Cursor 这类工具再看 VT Code 会有一个明显的感受它并不是在“代码生成”层面追求更强而是在“修改网页”这个垂直场景里做深。3.1 差异对比VT Code 变化的环节维度传统 AI 编程工具VT Code上下文来源本地代码、提示词、终端输出本地代码 浏览器运行时状态修改对象代码文件先可视化呈现再由人工确认后应用沟通方式用户描述问题AI 猜问题AI 观察页面状态用户确认方向出错反馈周期改完代码自己切到浏览器看效果在编辑器里直接看到改动预览适合的开发者对 AI 生成质量容忍度较高的开发者重视效果可控、需要人工把关的开发者这个对比里最关键的变化是反馈周期的缩短。在过去AI 改完代码以后你需要完成“切到浏览器→刷新→找问题→回终端描述给 AI→AI 再改”这一整条循环。VT Code 的思路是把这个循环压缩到编辑器内部AI 观察到页面状态生成修改你审核修改确认后应用整个闭环不需要跳出工具。3.2 适用场景分析从 VT Code 的设计思路看它最适用的场景有这几个局部页面修改比如调整组件样式、修复布局塌陷、修改某个交互行为。这些任务需要“看到页面”才能做好典型的 AI 盲区。UI 问题复盘控制台报错、元素遮挡、响应式适配异常这类问题靠读代码很难定位但浏览器上下文里有直接的线索。需要审美判断的任务AI 对“好不好看”没有感觉但人可以。通过人工审核AI 提供方案人做审美决策。不太适合的场景包括大规模重构如果要把整个项目的状态管理从 Redux 迁移到 ZustandAI 能参与但 VT Code 的“页面可视化”优势发挥不出来。纯后端逻辑开发不涉及浏览器页面WebMCP 编辑器无法提供额外帮助此时它和普通终端 Agent 的差异不大。对效率要求高于可控性的场景如果你希望 AI 一口气自动完成多个文件修改人工审核反而会成为流程瓶颈。这些分析是基于 VT Code 的设计定位做的合理推断具体使用感受会因为版本迭代而变化。但对大多数开发者来说它值得关注的原因在于它代表了一个新的产品方向——让 AI 在“看得见”的前提下修改网页并且把人的判断力放在最终出口。4. 环境准备与安装本地路径与依赖检查看完概念下面进入实操环节。由于 VT Code 是一个终端工具你需要准备一个类 Unix 环境macOS 或 LinuxWindows 用户建议使用 WSL2 或 Git Bash 作为运行环境。4.1 安装前检查清单在安装之前先确认你的环境满足以下条件操作系统macOS 12 / Linux / Windows配合 WSL2终端建议使用支持 ANSI 色彩输出的现代终端比如 iTerm2、Windows Terminal、GNOME Terminal版本工具Node.js 或 Git以项目实际安装要求为准本文演示通用思路浏览器需要一个当前版本的 Chrome / Edge / Chromium 内核浏览器用于 WebMCP 编辑器的页面捕获Git用于代码仓库管理和修改回滚安装命令以项目 README 为准这里给出一个通用的终端工具安装检查流程# 检查 Node.js 版本 node -v # 检查 npm 或 pnpm npm -v # 检查 Git git --version # 检查是否已有浏览器可用macOS 示例 ls /Applications/ | grep -i Chrome\|Edge这些命令能帮你在安装前确认环境没有明显缺失。如果 Node.js 版本过旧建议先升级到项目支持的范围如果 Git 未安装先通过系统包管理器安装。4.2 安装 VT Code通用方式假设 VT Code 可以通过 npm 全局安装安装命令通常长这样# 以 npm 全局安装方式为例具体包名请以项目 README 为准 npm install -g vt-code如果你更习惯使用 Git 克隆源码运行也可以采用源码方式# 克隆项目仓库 git clone https://github.com/your-project/vt-code.git # 进入目录 cd vt-code # 安装依赖 npm install # 以开发模式启动 npm run dev安装完成后你可以通过以下命令验证命令行入口是否能正常识别vt-code --help # 或 vt-code --version如果输出正常说明安装路径已经生效。4.3 初始化工作区VT Code 的工作方式是“把一个代码仓库作为工作区”让 Agent 在仓库内读取文件、调浏览器工具、生成修改。初始化流程一般是# 进入你的项目目录 cd ~/projects/my-web-app # 初始化 VT Code 工作区 vt-code init初始化命令通常会在项目里生成一个配置文件例如.vtrc.json或.vt-code/config.json。这个文件记录了 Agent 的权限范围、WebMCP 编辑器的连接方式、浏览器调试端口的配置。这里要特别提醒生成后先打开看一眼确认配置项没有超出你预期的权限。一个典型的配置文件结构具体字段以实际版本为准{ workspace: ./, mcpServers: { webmcp-editor: { command: webmcp-editor, args: [--browser, chrome], env: { DEBUG_PORT: 9222 } } }, agent: { model: your-model-name, maxSteps: 12 }, review: { mode: manual, confirmBeforeApply: true } }这段配置表达的意思很明确Agent 通过 WebMCP 编辑器连接本地浏览器调试端口 9222模型名称由你配置并且在应用修改前必须经过人工确认。如果你在配置里看到confirmBeforeApply为false建议改成true这对应了 VT Code 的核心设计理念——人工审核。5. 核心使用流程从启动到完成一次页面修改安装配置完成后进入核心使用环节。我会按真实使用顺序拆解流程并说明每一步的意图和容易踩坑的地方。5.1 第一步启动 WebMCP 编辑器WebMCP 编辑器是整个工具的“眼睛”必须先启动。它通常在本地起一个服务并通过调试端口连接到浏览器。# 启动 WebMCP 编辑器监听本地端口 vt-code editor --port 8080 --browser chrome启动成功后终端会输出类似WebMCP editor is running at http://localhost:8080的信息。此时在 Chrome 里打开这个地址会看到一个附加了调试能力的编辑器界面。这一步的常见坑浏览器调试端口可能因为安全策略拒绝连接。如果你遇到WebSocket connection failed或Cannot connect to browser需要检查浏览器是否以调试模式启动。Chrome 需要带--remote-debugging-port9222参数启动# macOS 示例 /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port92225.2 第二步用自然语言描述任务编辑器启动后在 VT Code 终端里用自然语言给 Agent 布置任务。任务描述的颗粒度比传统 AI 编程要粗一些因为 Agent 现在能看到页面。你不需要把代码细节全部描述出来只需要说清楚目标和判断标准。vt-code 导航栏移动端布局有遮挡品牌 Logo 在 375px 宽度下被菜单按钮覆盖。请检查页面修复布局问题并保持桌面端样式不变。这个描述包含了三个关键信息问题现象遮挡、发生条件375px 宽度、限制条件桌面端不变。Agent 收到任务后会通过 WebMCP 编辑器在真实浏览器里打开页面切换到移动端模拟观察实际的 DOM 结构和样式计算值。5.3 第三步Agent 分析并生成修改Agent 进入分析循环。它可能会做这些事情读取网页当前的 HTML、CSS 源文件在浏览器控制台里执行getComputedStyle获取元素的实际计算样式检查网络请求、控制台报错定位可能导致遮挡的 CSS 规则生成修改方案这个环节非常依赖你配置的模型能力。从材料看VT Code 并不绑定某个特定模型这意味着你可以按任务复杂度选择模型——简单布局问题用轻量模型复杂交互问题用强模型。5.4 第四步人工审核与确认Agent 生成修改后不会直接写入文件而是在 WebMCP 编辑器里展示一个“修改预览”。你需要检查改动是否完整解决了问题是否引入了新的样式副作用是否符合项目的代码风格和约定确认没问题后点击“应用修改”按钮改动才会真正落盘。如果觉得不满意可以直接在编辑器里修改 AI 生成的方案或者让 AI 重新生成。这个环节是 VT Code 和多数 AI 编程工具的显著差异点也是它最值得借鉴的设计。5.5 第五步命令行验证与收尾应用修改后回到终端执行验证命令。由于 Agent 在终端环境里运行你可以直接让它跑测试、构建或者打开页面做最终检查# 运行测试 npm test # 构建项目 npm run build # 或者让 Agent 重新打开页面验证 vt-code 重新打开页面在 375px 宽度下检查导航栏是否已正常如果验证通过提交代码。如果发现问题整个流程回到第二步继续迭代。6. 完整示例修改一个网页并让 Agent 看到真实页面下面用一个完整的例子演示 VT Code 的工作过程。假设项目是一个简单的响应式导航页面!-- 文件路径index.html -- !DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 titleDemo Navigation/title link relstylesheet hrefstyles.css /head body header classnavbar div classbrandBrand Logo/div nav classmenu a href#首页/a a href#产品/a a href#文档/a a href#关于/a /nav button classmenu-toggle idmenuToggle菜单/button /header main p页面主体内容/p /main /body /html对应 CSS/* 文件路径styles.css */ * { margin: 0; padding: 0; box-sizing: border-box; } .navbar { display: flex; justify-content: space-between; align-items: center; padding: 8px 16px; background: #333; color: white; } .menu { display: flex; gap: 16px; } .menu a { color: white; text-decoration: none; } .menu-toggle { display: none; } media (max-width: 768px) { .menu { position: absolute; top: 48px; left: 0; right: 0; background: #333; display: none; flex-direction: column; padding: 8px; } .menu.open { display: flex; } .menu-toggle { display: inline-block; } }注意这段 CSS 里有一个问题当.menu在移动端使用position: absolute时它的定位上下文是body而不是.navbar因为.navbar没有设置position: relative。这可能导致菜单遮住主体内容或者在滚动时出现在错误位置。这类问题靠读代码也能发现但如果你没有告诉 Agent 具体位置它需要花时间排查。用 VT Code 的方式处理这个问题vt-code 打开页面在 375px 宽度下检查移动端菜单是否正常显示。点开菜单时菜单应该出现在导航栏下方而不是遮住页面正文。Agent 的执行路径大致如下通过 WebMCP 编辑器打开index.html在 Chrome DevTools 协议层切换到 iPhone 视口375px 宽点击“菜单”按钮观察菜单展开后的布局在控制台执行document.querySelector(.menu).getBoundingClientRect()获取菜单位置发现菜单遮挡了主内容区域定位到定位上下文问题生成修复方案修复方案可能是给.navbar加上position: relative再调整菜单的top值/* 修复后的样式文件路径styles.css */ .navbar { position: relative; /* 新增建立定位上下文 */ display: flex; justify-content: space-between; align-items: center; padding: 8px 16px; background: #333; color: white; } media (max-width: 768px) { .menu { position: absolute; top: 100%; /* 修改从 48px 改为 100%紧贴导航栏底部 */ left: 0; right: 0; background: #333; display: none; flex-direction: column; padding: 8px; } .menu.open { display: flex; } .menu-toggle { display: inline-block; } }在传统流程中这段修复需要你先向 AI 描述“菜单位置不对”AI 给出方案你再切到浏览器验证。而在 VT Code 中菜单遮挡的问题是 Agent 自己在运行时上下文里观察到的修复方案的适用性也能在同一个编辑器里预览确认。两者的信息质量完全不同。7. 运行结果与效果验证如何判断修改是正确的很多人用 AI 编程工具改完代码就算完事但真正负责任的做法是用一套验证流程确认修改没有引入新问题。VT Code 的终端 Agent 形态让验证可以自动化执行。7.1 运行命令与预期输出修改完成后可以在终端执行# 启动本地静态服务如果还没有 npx serve . # 用 Headless Chrome 做移动端截图检查 npx capture-website http://localhost:3000 --viewport 375x812 --output /tmp/mobile-shot.png如果本地服务已经启动比如 Vite 或 Next.js 开发服务器可以直接在浏览器里验证。更理想的方式是让 Agent 自己打开页面检查一次vt-code 用 375px 宽度打开页面确认 1. 菜单按钮可见2. 点击菜单后下拉列表在导航栏下方3. 页面正文没有被遮挡。Agent 通过 WebMCP 编辑器执行这个检查后会返回一个结构化的结论比如检查结果 1. 通过菜单按钮在 375px 宽度下可见。 2. 通过点击后下拉列表出现在导航栏正下方top 值为 100%。 3. 通过主内容区域 top 值仍为导航栏高度未被遮挡。7.2 成功判断标准对于这类页面布局修改判断成功有三个层次功能层交互行为符合预期没有 JS 报错。视觉层在目标视口下布局符合设计意图元素位置正确。回归层其他视口宽度如桌面端 1280px没有被影响。尤其是第三层容易被忽略。AI 修改移动端布局时经常会把桌面端的 flex 布局也改坏。所以建议你在最终确认时在编辑器里切换多个视口宽度检查一遍。7.3 验证失败时怎么排查如果验证发现菜单依然遮挡正文按以下顺序排查查浏览器控制台有没有 CSS 加载失败或 JS 执行报错。检查修改后的 CSS 是否真正被浏览器加载常见原因是缓存先强制刷新。用开发者工具检查.menu元素的定位上下文确认position: relative是否应用到了.navbar上。确认媒体查询条件是否被正确触发——375px 宽度是否真的落在max-width: 768px范围内。如果都没问题很可能是代码和页面状态不一致比如有旧的 service worker 缓存。清理缓存再试一次。8. 常见问题与排查思路基于 VT Code 这类终端 Agent 浏览器调试工具组合的普遍问题整理一张常用排查表问题现象可能原因排查方式解决方案WebMCP 编辑器启动后浏览器无法连接浏览器未以调试端口模式启动检查浏览器是否带--remote-debugging-port启动用调试模式重新启动浏览器或配置编辑器自动启动Agent 看不到页面最新状态编辑器缓存了旧 DOM在编辑器里强制刷新页面点击编辑器的刷新按钮或关闭重开生成的修改无法应用到实际代码文件路径映射错误检查工作区路径配置确认配置文件中的workspace路径与实际项目一致人工审核界面异常卡顿页面包含大量 DOM 节点或复杂动画用任务管理器检查浏览器 CPU 占用简化预览页面或用更稳定的浏览器内核修改应用后页面样式错乱AI 修改了不该修改的全局样式在人工审核阶段检查 diff回滚文件重新生成更保守的修改方案模型生成的代码不符合项目规范Agent 缺少项目规范上下文检查系统提示词或项目说明文件在项目根目录添加README或规范说明让 Agent 有据可依同类修改总是反复出错提示词没有给出明确验收标准检查任务描述是否明确任务中增加“不要改动桌面端样式”等边界约束这里最有价值的一条经验是给 Agent 的任务描述一定要包含“验收标准”和“禁止修改项”。很多读者把 AI 编程工具当成搜索引擎来用描述问题时只给现象不给边界。但在 VT Code 这类工具里Agent 是主动执行者如果你不声明“不要改动桌面端样式”它可能为了修复移动端问题顺手把全局样式也改了。9. 最佳实践与工程建议最后是实战经验部分。这部分不针对 VT Code 的某一个功能而是从“在真实项目里用好这类工具”的角度给出建议。9.1 学习成本与人机协作模式VT Code 的使用方式和传统 AI 编程工具有一个本质区别它不是一个“生成代码”的工具而是一个“修改网页”的工具。这意味着你的角色从“代码写着”转变成“代码审查者”。这个转变对部分开发者来说并不容易。如果之前习惯了“AI 生成代码 → 粘贴 → 改两处 → 收工”的工作流使用 VT Code 时需要调整预期它的核心价值在于减少“定位问题”的时间而不是减少“写代码”的时间。你需要对页面的预期效果有明确认知才能在人工审核阶段快速判断 AI 的方案是否合格。9.2 提示词工程边界声明比功能描述更重要给 Agent 写任务描述时按这个结构组织问题现象明确但不冗长描述发生了什么触发条件什么环境、什么操作下发生验收标准怎么算修好了禁止修改项哪些代码不能动例如vt-code 移动端菜单点击后下拉列表位置异常距离导航栏太远。触发条件视口宽度 375px点击菜单按钮后。验收标准下拉列表紧贴导航栏底部不遮住正文关闭后再打开正常。禁止修改不要改动品牌 Logo 的样式不要改动桌面端的任何样式。边界声明减少的不只是返工次数更是 AI “自由发挥”带来的不可控风险。9.3 版本管理与回滚策略在使用 VT Code 之前建议先确认当前 Git 工作区是干净的。AI 修改文件后即使有人工审核仍然可能出现你审核时没注意到的问题。养成习惯# 修改前查看当前状态 git status # 修改后查看具体改动 git diff # 不满意时一键回滚 git checkout -- index.html styles.css凡是涉及 AI 生成修改的场景都建议以“小步提交”的方式工作一次任务提交一次代码配一个清晰的 commit message。这样出问题时回滚的成本是最低的。9.4 权限控制与命令安全终端 Agent 的能力非常强它可以读取文件、执行构建命令、安装依赖甚至通过 WebMCP 操作浏览器。这些能力如果被滥用风险不小。建议在生产环境中遵循最小权限原则不要让 Agent 拥有生产服务器的 SSH 权限不要让 Agent 直接执行数据库迁移命令在配置文件中明确限制 Agent 可以读取和修改的目录范围涉及远程操作时先用--dry-run或模拟模式验证在处理生产项目时务必在测试分支上让 Agent 完成任务经过代码审查后在本地手动合并到主分支。AI 工具的便利性不应该以牺牲安全性为代价。9.5 何时不应该使用 VT Code合适的边界是需要视觉反馈的网页修改任务并且你有时间做人工审核。换句话说边界也很清晰如果只是让 AI 写一个独立函数、算法片段直接在对话式 AI 里写就行不需要启动一整套终端 Agent 流程如果页面修改工作量巨大且涉及整体架构调整人工审核的成本会超过自己动手的成本如果项目里有大量程序化生成的内容比如渲染出的 Canvas 应用WebMCP 编辑器的 DOM 上下文帮助有限任何工具都有它的能力边界。VT Code 作为一个新兴项目它的边界还会随着版本迭代而变化但“让 AI 看得见页面”和“人工在最终出口把关”这两个理念很可能会成为未来一段时间 AI 编程工具设计的重要方向。总的来说VT Code 值得前端开发者和全栈开发者保持关注。它解决的不是“AI 能不能写代码”的问题而是“AI 改网页时怎么不瞎改”的问题。安装配置、例子里展示的修复流程都可以直接作为参考。建议把文章里提到的配置文件模板、任务描述结构和验证命令收藏起来等实际使用时直接对照执行。
返回列表