QoderWake怎么给Waker添加Skill?
想把QoderWake的Waker变成你的专属助手——自动写周报、校验订单字段、生成面试题——但卡在第一步:怎么把自定义Skill装进去?这件事其实不难,但有个前提:必须完成技能注册与上下文绑定,否则Waker只会响应内置指令,你写的任何业务逻辑它都不会理。

先别急着写代码,花30秒确认一下底座是否稳固。
确认Waker运行状态与权限基线
Waker不是独立进程,它依附于QoderWake主服务运行。主服务如果没就绪,Skill注册必定失败,而且系统不会给你任何像样的错误提示——这是最容易被忽略的坑。
打开终端,敲下 qoderwake status,看输出中 service_state 是不是 running,worker_count 是否 ≥1。如果看到 offline 或 0 workers,先跑 qoderwake start 再说。要是提示 permission denied,说明当前用户没加入 qoder 用户组,执行 sudo usermod -aG qoder $USER 并重启终端,搞定。
方法一:通过SKILL.md快速加载轻量级Skill
这个方法适合通用型辅助任务——比如文档摘要、日志归类、代码风格检查——不需要外部依赖或API调用,写个Markdown文件就能搞定。
第一步:在项目根目录下创建 .qoder/skills/weekly-report/SKILL.md(路径一个字母都不能错)。
第二步:写入以下内容(注意 name 字段必须全小写、无空格、唯一):
name: weekly-report
description: 根据本周Git提交记录生成技术周报
input_schema:
type: object
properties:
branch:
type: string
default: "main"
output_schema:
type: object
properties:
report:
type: string
examples:
- input: {branch: "dev"}
output: {report: "【周报】共提交12次..."}
第三步:保存文件后,在Qoder IDE中输入 / → 回车 → 打开Skills Catalog,搜索 weekly-report,确认卡片右上角显示“已启用”。
如果没出现,请检查文件路径是否严格为 .project-root/.qoder/skills/weekly-report/SKILL.md,多一级或少一级都会导致扫描失败,这个坑踩过的人不少。
方法二:用YAML注册需对接外部服务的Skill
当你要调用内部ERP接口、发钉钉审批、或执行Shell命令时,必须用YAML定义完整执行链路与容错策略。轻量Markdown搞不定这些。
创建 order-validate.yaml 文件,填入以下结构:
name: order-validate
version: 1.0.0
description: 校验订单履约字段完整性
input_schema:
type: object
required: [order_id]
properties:
order_id:
type: string
output_schema:
type: object
properties:
valid:
type: boolean
steps:
- action: http.get
params:
url: "https://erp.internal/api/order/{input.order_id}"
timeout: 5000
on_failure: return_fallback
- action: python.run
params:
code: |
if response.status_code == 200:
return {"valid": "delivery_date" in response.json()}
else:
return {"valid": false}
执行注册命令:qoder skill register --file order-validate.yaml
成功后返回类似 skill_id: qw-skill-7f3a9d2e 的字符串,这个ID就是Waker调用此Skill的唯一凭证,一定要记好。
验证Skill是否被Waker识别并可调用
注册完别急着走,先验证一下。在任意QoderWake聊天窗口中输入自然语言指令:“我已经装了哪些 Skill?”
等待3~5秒,查看返回清单中是否包含你刚注册的Skill名称及版本号。如果返回为空或没列出新Skill,执行 qoder skill list --format=table,检查 status 列是否为 active。若显示 pending,说明YAML校验未通过,最常见的原因是 steps 中 action 值拼写错误——比如 http.get 写成了 http_get,这个细节值得多看一眼。
确认可见后,直接输入:“用order-validate校验order_id=ORD-20260730-001”,Waker会立即触发该Skill执行。如果一切顺利,你就能看到返回的校验结果了。