阅读材料: 第14部分:通过Qwen Code技能掌握自有流程

模块「第14部分:通过Qwen Code技能掌握自有流程」中第 1 / 5 节课
您正在未登录状态下查看课程。 请登录,以保存进度并参加测试。

第14部分. 通过 Qwen Code 技能构建自己的工作流程

当你多次重复某个功能规格说明的提示词后,就该将其自动化了。在 Qwen Code 中,代理技能(agent skills)非常适合这一用途。技能是一个包含 SKILL.md 文件的目录,其中描述了代理应在何时以及如何应用特定流程。技能可以是个人技能或项目技能。

个人技能:

~/.qwen/skills/feature-spec/SKILL.md

项目技能:

.qwen/skills/feature-spec/SKILL.md

对于团队来说,项目技能更好:它可以进入 Git,成为工程流程的一部分。

如果你的项目同时使用多个不同的代理,可以用仓库根目录下的 AGENTS.md 文件来补充技能——这是一个跨代理的规则标准,不仅 Qwen Code 可以读取,其他兼容工具也能读取。关于 AGENTS.mdQWEN.md 的更多内容,请参阅第15部分

创建技能

mkdir -p .qwen/skills/feature-spec

SKILL.md

---
name: feature-spec

description: 从路线图的下一个未完成阶段创建新的 SDD 功能规格说明。在开始下一个功能、编写规格说明或为实施准备新阶段之前使用。
---

# 功能规格说明

## 流程

1. 阅读 specs/roadmap.md。
2. 找到第一个未完成的阶段。
3. 创建名为 phase-N-kebab-name 的分支。
4. 在写入文件之前,向用户提出恰好三组问题:
   - 边界;
   - 决策;
   - 上下文。
5. 阅读 specs/mission.md 和 specs/tech-stack.md。
6. 创建 specs/YYYY-MM-DD-feature-name/ 目录。
7. 写入:
   - requirements.md
   - plan.md
   - validation.md
8. 不要实现代码。

## 文件 requirements.md

包含边界、边界外的事项、决策、上下文和未解决的问题。

## 文件 plan.md

使用编号任务组。每个任务组应可单独验证。

## 文件 validation.md

包含自动检查、手动验证、偏差检查和就绪标准。

## 限制

- 遵守 specs/tech-stack.md。
- 未经明确批准不得添加依赖。
- 保持阶段可独立交付。
- 不编辑无关文件。

验证技能

启动 Qwen Code:

qwen

查看列表:

/skills

明确要求:

使用 feature-spec 技能,从路线图开始下一个功能。
不要实现代码。

如果技能未生效,请检查:

  • 文件是否位于 .qwen/skills/feature-spec/SKILL.md
  • YAML 头部是否以 --- 开头和结尾;
  • name 是否不含空格;
  • description 是否明确说明了何时使用该技能;
  • 创建技能后是否重新启动了 Qwen Code。

技能与斜杠命令

技能由模型调用或通过 /skills 调用;它描述的是一种能力。斜杠命令由用户显式调用。对于 SDD 中的功能规格说明,技能更方便:当用户说"开始下一个功能"时,代理可以自行判断需要使用该技能。

如果你的团队需要严格的界面,可以额外创建用户命令,但开始时技能就足够了。

辅助文件

当流程增长时,将模板提取出来:

.qwen/skills/feature-spec/
  SKILL.md
  templates/
    requirements.md
    plan.md
    validation.md

SKILL.md 中:

使用 templates/requirements.md 作为初始结构。

不要将模板中的注释复制到最终规格说明中。

变更日志技能

第二个有用的技能:

.qwen/skills/changelog/SKILL.md

示例:

---
name: changelog
description: 根据 Git 历史和当前分支的变更,在功能分支合并前更新 CHANGELOG.md。
---

# 变更日志

1. 查看 git log 和相对于 main 的 git diff。
2. 创建或更新 CHANGELOG.md。
3. 使用带日期的标题。
4. 撰写简洁的要点,让利益相关者易于理解。
5. 不包含嘈杂的内部细节。

升级规则:代理何时必须停止

好代理与坏代理的区别不在于更聪明,而在于知道何时停止并询问。默认情况下,大多数 CLI 代理不惜一切代价完成任务:如果上下文不足,它们就会猜测。这对短任务是有用的特性,但对 SDD 工作来说是有害的。

为了防止代理猜测,可以在 QWEN.md(或技能中)设置明确的升级规则:

在以下情况下停止并询问用户,不要采取行动:

- 如果功能规格说明中的某个要求存在不同解读;

- 如果你要更改当前规格说明边界之外的文件;
- 如果你要添加 tech-stack.md 中未指定的新依赖;
- 如果你要更改 tech-stack.md、mission.md 或 roadmap.md;
- 如果需要执行影响范围非平凡的迁移、drop、delete 或 rm;
- 如果你找不到用户引用的文件;
- 如果结果与 validation.md 中的事实不符,且该事实未标记为"延后";
- 如果用户的请求与 QWEN.md 中先前接受的规则相矛盾。

在每种情况下,输出简短说明,指出具体哪里不明确,
并提供 2-3 个具体选项供选择。不要替用户做决定。

这不是"礼貌"。这是契约:一旦遇到列表中的条件,代理必须将控制权交还给人类。同样的规则还可以通过 Stop 钩子进一步强化(参见第17部分),防止代理在默默做出有争议的决定后完成任务。

上下文卫生与成本

每个长会话都有双重代价:token 和质量。会话越长,代理积累的旧上下文越多,越容易意外将相邻任务的解决方案带入当前任务。在长会话中,研究论文中称之为"上下文退化"(context rot)的现象很明显:聚焦的短输入比大量不相关的输入效果更好。同样的原则也适用于代理的受控内存——更多内容请参阅第19部分

几条简单的卫生规则:

  • 在角色切换之间使用 /clear(访谈 → 实现 → 验证 → 重新规划);
  • 限制单个会话的时长;如果会话超过一小时,很可能该结束它并开启一个干净的会话;
  • 如果可以提供具体文件,就不要给代理整个文件夹;
  • 对于长任务,显式使用 @file,而不是"让它自己找";
  • 如果怀疑有混淆——使用 /clear,重新阅读 QWEN.md 和活动规格说明。

如果 Qwen Code 启用了自动上下文压缩选项,它有帮助,但不能替代 /clear。压缩保留历史摘要——这对长连续任务有用,但正是摘要常常成为下一个任务的错误提示来源。/clear 确保在新角色中,代理只使用仓库中记录的内容。

实践

  1. 创建 .qwen/skills/feature-spec/SKILL.md
  2. 重新启动 Qwen Code。
  3. 调用 /skills
  4. 通过技能创建新的功能规格说明。
  5. 创建变更日志技能。
  6. 在合并前使用变更日志技能。

检查问题

  1. 可重复的请求何时应该成为技能?
  2. 为什么项目技能比个人技能更适合团队流程?
  3. description 中应该包含什么,以便代理能正确找到技能?
我的笔记
0 / 10000

笔记保存在当前浏览器中。在其他设备上将不会显示。

课程菜单

课程

基于 Qwen Code CLI 的规范驱动开发
进度 0 / 135