跳到主要内容
AI教程

如何使用 Viserys 构建一致的 AI 编码工作流

了解如何安装 Viserys、启用其 OpenCode 代理、选择生命周期技能、使用评审者角色,并验证工作流包。本教程将展示 Viserys 如何为 AI 辅助的软件开发引入结构化的 DEFINE、PLAN、BUILD、VERIFY、REVIEW 和 SHIP 流程。

如何使用 Viserys 构建一致的 AI 编码工作流

Viserys 是什么?

Viserys 是一套面向 AI 编码代理的自包含工程工作流集合。它不让代理为每个请求自行发明流程,而是提供可复用的 Markdown 指令、审查者角色、共享参考资料、生命周期命令、评估固件和验证脚本。

该项目将软件工作组织为六个阶段:

DEFINE -> PLAN -> BUILD -> VERIFY -> REVIEW -> SHIP

每个工作流都位于一个 SKILL.md 文件中,并包含操作步骤、退出标准和反合理化指导。由于这些技能采用纯 Markdown 编写,因此既可由支持技能的编码代理加载,也可直接作为独立指令阅读。

主要功能

  • 覆盖完整生命周期:工作流涵盖需求、规划、实现、测试、审查和发布准备。
  • 26 个打包技能:skills/ 目录包含可复用的工程工作流。
  • 审查者角色:专用代理负责评估代码质量、测试、安全性和 Web 性能。
  • OpenCode 集成:项目包含一个主模式 Viserys 代理,无需全局配置即可加载这些技能。
  • 共享参考资料:检查清单可按需加载,无需永久放入代理上下文。
  • 验证与评估:Node.js 脚本会检查技能、命令、产物路径、参考链接、版本和评估用例。

了解仓库结构

  • skills/ 包含技能工作流。
  • agents/ 包含四个专业审查者角色。
  • references/ 提供共享的按需检查清单。
  • commands/ 定义生命周期命令。
  • evals/ 包含技能评估用例和固件。
  • scripts/ 包含验证器和评估运行器。
  • hooks/ 提供会话生命周期钩子。
  • docs/ 包含内部文档。
  • .opencode/agent/viserys.md 定义 OpenCode 代理。
  • .opencode/opencode.json 为 OpenCode 注册技能路径。

安装与设置

选项 1:在 OpenCode 中激活 Viserys

  1. 使用 Git 克隆 Viserys 仓库。
  2. 在 OpenCode 中打开克隆后的仓库文件夹。
  3. 按 Tab 打开代理选择器。
  4. 选择 viserys。

随附的 Viserys 代理以主模式运行,因此会显示在 OpenCode 的代理列表中。它的提示词会在处理请求前检查是否有适用的技能,并通过项目生命周期来安排工作。仓库级 OpenCode 配置会注册所有已打包的技能,因此无需全局配置。

选项 2:将 Viserys 与其他支持技能的代理结合使用

对于 Claude Code、Cursor 或其他支持可复用技能的代理,请将代理指向仓库的 skills/ 目录。也可以将该目录复制到工具的原生技能目录中。

具体目标位置取决于所使用的编码代理。Viserys 不要求将其 Markdown 工作流转换为其他格式,但宿主工具必须知道在哪里发现这些工作流。

选项 3:将技能作为纯上下文使用

如果代理没有原生技能系统,请打开相关的 SKILL.md 文件,并将其内容作为上下文提供。每项技能都设计为可独立使用,因此你可以手动执行其中的步骤,也可以指示代理遵循这些步骤。

选择正确的工作流

如果不确定适用哪个工作流,请从元技能 using-agent-skills 开始。否则,请根据当前所处的生命周期阶段选择技能。

DEFINE:明确工作内容

  • 当概念模糊、需要结构化探索时,使用 idea-refine。
  • 当需要一次提出一个问题来收集需求时,使用 interview-me。
  • 在没有规格说明的情况下启动项目、功能或重大变更前,使用 spec-driven-development。
  • 当不存在质量标准,或仅为让构建通过而压制检查时,使用 constraint-driven-development。

PLAN:将规格说明转化为任务

需求稳定后,使用 planning-and-task-breakdown。它会将规格说明转换为按顺序排列、可验证且带有验收标准的任务。

BUILD:有计划地实现

  • incremental-implementation 帮助跨多个文件的变更以小步迭代方式落地。
  • 在实现逻辑、修复缺陷或变更行为时,使用 test-driven-development。
  • context-engineering 可帮助初始化会话、切换任务,或在输出质量下降时恢复状态。
  • 当正确性依赖最新的官方文档时,适合使用 source-driven-development。
  • doubt-driven-development 鼓励在风险较高且立即检查的成本低于之后调试成本时进行验证。
  • frontend-ui-engineering 指导面向用户的界面开发。
  • api-and-interface-design 支持 API、模块边界和公共接口设计。

VERIFY:证明变更有效

  • 对于基于浏览器的实现或调试,使用 browser-testing-with-devtools。
  • 当测试失败、构建中断或运行时行为异常时,使用 debugging-and-error-recovery。

REVIEW:评估质量与风险

  • 合并更改前应使用 code-review-and-quality。
  • 当可运行的代码仍然难以理解或维护时,code-simplification 很有用。
  • security-and-hardening 适用于用户输入、身份验证、数据存储和外部集成。
  • 当存在性能要求或怀疑发生回归时,适用 performance-optimization。

SHIP:准备投入生产

  • git-workflow-and-versioning 指导代码更改和版本控制。
  • ci-cd-and-automation 支持构建和部署流水线的更改。
  • deprecation-and-migration 帮助移除旧系统或迁移用户。
  • documentation-and-adrs 记录架构决策和公共 API 更改。
  • observability-and-instrumentation 涵盖日志、指标、追踪和告警。
  • shipping-and-launch 指导最终的生产部署准备工作。

基本用法示例

假设你要求 AI 编程代理添加一个新的、需要身份验证的 API 端点。不要直接开始实现,而应按顺序执行以下生命周期。

  1. 定义:如果身份验证规则、输入或响应不明确,请运行 interview-me。然后使用 spec-driven-development 明确预期行为。
  2. 规划:应用 planning-and-task-breakdown 生成有序任务和验收标准。
  3. 构建:使用 api-and-interface-design 设计端点契约,并使用 test-driven-development 实现行为。如果必须修改多个文件,还应使用 incremental-implementation。
  4. 验证:如果测试失败或端点行为异常,请遵循 debugging-and-error-recovery。
  5. 审查:由于该功能处理身份验证和输入,应应用 code-review-and-quality 及 security-and-hardening。
  6. 发布:在部署到生产环境前,使用适当的 Git、文档、可观测性和发布流程。

启用 OpenCode 集成后,Viserys 代理会先检查匹配的技能。在纯上下文设置中,你需要自行完成选择,并要求代理遵循每个选定的 Markdown 工作流。

使用审查者角色

Viserys 在 agents/ 中包含四个审查者角色,为生命周期技能提供互补的专注视角。

  • agents/code-reviewer.md 按五个维度进行审查,并采用资深工程师的批准标准。
  • agents/test-engineer.md 使用“证明它”模式检查测试策略和覆盖率。
  • agents/security-auditor.md 涵盖漏洞检测、威胁建模和 OWASP 评估。
  • agents/web-performance-auditor.md 以快速或深入模式审查核心网页指标。

根据更改的风险选择角色。例如,在身份验证工作中,将安全审计员与 security-and-hardening 搭配使用;修改面向用户的界面后,则可使用网页性能审计员。

验证工作流包

更改技能、命令、引用、版本或评估固件后,运行随附的 Node.js 脚本:

node scripts/validate-skills.js
node scripts/validate-commands.js
node scripts/validate-artifact-paths.js
node scripts/validate-reference-links.js
node scripts/validate-versions.js
node scripts/run-evals.js

这些命令会验证工作流包的内部结构并运行其评估套件。当你扩展 Viserys,而不仅仅是使用其现有工作流时,这些命令尤其重要。

高级技巧

组合技能,但不要跳过生命周期关卡

一项任务可能需要多个技能。例如,浏览器功能可以组合使用 frontend-ui-engineering、test-driven-development 和 browser-testing-with-devtools。确保每项技能的退出标准清晰可见,避免新增工作流变成无结构的提示。

仅在需要时加载引用

references/ 目录用于存放按需加载的共享检查清单。这有助于让代理的活动上下文保持专注,同时保留对详细指导的访问权限。

对依赖版本的工作使用官方来源

当实现细节依赖最新文档时,应用 source-driven-development。如果一个看似合理但错误的假设可能造成高昂代价,请将其与 doubt-driven-development 搭配使用。

代理质量下降时进行恢复

如果长时间会话变得不一致,请使用 context-engineering。它专门用于会话设置、任务切换以及输出质量下降的情况。

查阅随附文档

  • docs/README.md 介绍工作流包及其生命周期映射。
  • docs/skill-anatomy.md 定义 SKILL.md 格式。
  • evals/README.md 介绍技能评估的工作方式。

在添加或重构工作流之前,先阅读技能结构规范,然后运行验证器和评估程序检查结果。

结论

Viserys 将 AI 辅助开发转变为可重复的工程流程。首先,将 skills/ 目录连接到兼容的代理,或在 OpenCode 中选择捆绑的 Viserys 代理。然后有条不紊地完成 DEFINE、PLAN、BUILD、VERIFY、REVIEW 和 SHIP,并在专业角色和验证脚本有帮助时使用它们。