技能系统
技能(Skill)是 Agent 的知识增强包——一份结构化的 Markdown 文件,告诉 Agent "遇到这类任务应该怎么做"。它不是代码插件,不改变工具集,但能显著提升 Agent 在特定领域的表现。
什么是技能
一个技能就是一个 .wesskill 包,核心是一份 SKILL.md 文件:
SKILL.md # 名字、描述、指令(必需)
scripts/ # 辅助脚本(可选)
templates/ # 代码模板(可选)
references/ # 参考资料(可选)
manifest.json # 依赖声明(可选)
当 Agent 加载一个技能时,SKILL.md 的内容会被注入到对话上下文中,指导 Agent 的行为模式。
两级技能
| 级别 | 来源 | 生命周期 | 典型内容 |
|---|---|---|---|
| Tier E(引擎) | wesgine 编译时内置 | 随引擎版本 | agentic-retrieval、plan、delegation、memory-strategy 等 |
| Tier C(Cell) | 安装到 workspace Cell | 随工作区 | code-review、test-engineering、项目特定技能 |
Tier E 是引擎的"认知操作系统"——所有 workspace 默认可用,wescode 不覆盖也不同名替代。
Tier C 是编程场景专属的——通过 cell.Skills().Install() 安装到当前 workspace 的 Cell 中,跟着工作区走。
预装技能
wescode 预装了 26 个 Tier C 编程技能,涵盖常见编程场景:
| 类别 | 示例技能 |
|---|---|
| 代码审查 | code-review:系统化的代码审查流程 |
| 测试工程 | test-engineering:测试策略与用例设计 |
| 重构 | refactoring:安全的代码重构方法 |
| 调试 | debugging:系统化的问题定位 |
| 文档 | documentation:代码文档编写规范 |
这些技能在首次打开工作区时自动安装到 workspace Cell,无需手动操作。
技能如何生效
技能不会无条件加载——那样会浪费宝贵的上下文窗口。wescode 使用按需激活:
- 用户显式调用:通过
/skills命令安装或切换技能 - Agent 判断相关性:Agent 根据当前任务上下文决定是否加载某个技能
- Prompt 注入:选中的技能内容作为用户消息注入(不是系统提示词),保护 prompt cache
缓存感知
技能加载遵循 prompt cache 纪律:
- 技能变更默认在下次会话生效(不破坏当前会话的 cache)
- 使用
--now标志可强制立即生效(代价是 cache 失效)
技能与记忆的区别
| 技能 | 记忆 | |
|---|---|---|
| 内容 | 结构化的操作指南 | 零散的事实、偏好、修正 |
| 来源 | 人工编写 / 社区贡献 | Agent 在对话中学习 |
| 粒度 | 一整套工作流程 | 一条一条的知识点 |
| 更新 | 版本化安装 | 自动积累、自动衰减 |
两者互补:技能提供"如何做"的框架,记忆提供"你的偏好是什么"的定制。
自定义技能
你可以为项目创建自己的技能。最简形式只需一个 SKILL.md:
---
name: my-project-conventions
description: 项目编码规范。
version: 1.0.0
---
# 项目编码规范
## 命名规则
- Go 文件使用 snake_case
- TypeScript 文件使用 camelCase
- 数据库表名使用复数形式
## 错误处理
- 所有 repository 方法返回 error
- handler 层统一使用 ErrorResponse 格式
- 禁止在 service 层 panic
通过 cell.Skills().Install() 或管理界面安装到 workspace Cell。
下一步
- Chat 与 Agent 模式 — 技能在对话中的激活
- 跨会话记忆 — 记忆与技能的协作
- 工具全景 — 技能中引用的工具