DeepSeek Harness 编写 Skill:自定义技能教程
2026-08-16 14:38:59阅读 3
Skill 是零代码的扩展方式——上一篇 Skill 技能 讲了概念,这一篇手把手写一个。全程只需要一个 Markdown 文件。
第一步:确定触发场景
写之前先回答一个问题:agent 什么时候应该用这个技能? 这个答案要写进 frontmatter 的 description——它决定 agent 能否在合适的时机 "想起" 你的技能。
反例(太抽象):
description: 一个处理数据的技能。
正例(写明触发条件):
description: 当用户要求处理或分析 CSV 文件时使用。涵盖读取、清洗、统计与导出流程。
第二步:创建文件
技能就是目录里的 SKILL.md。选一个位置(位置决定了生效范围,见 Skill 技能 的 "三个来源"):
my-project/.dsh/skills/csv-helper/SKILL.md
完整内容示例:
name: csv-helper
description: 当用户要求处理或分析 CSV 文件时使用。
CSV 处理流程
读取
1. 优先用 Python 的 csv 模块,不用手写解析
2. 先打印前 3 行确认分隔符与表头
清洗
- 空值统一填 "N/A"
- 日期列格式化为 YYYY-MM-DD
统计
- 数值列输出:行数、均值、最大/最小值
导出
- 结果写到 processed/ 目录,文件名加时间戳
第三步:正文写作要点
- 写流程,不写原理。agent 不需要知道为什么,需要知道 "第 1 步做什么、第 2 步做什么"
- 给具体约定。能定死的都定死:用哪个工具、输出放哪、命名规则——减少 agent 自由发挥导致的不一致
- 短而聚焦。一个技能解决一类任务。别写 "万能技能",agent 判断 "用不用" 的成本会变高
第四步:验证
写完后开个新会话,给一个触发性任务:
帮我把 sales.csv 清洗一下并统计数值列
观察 agent 是否:
- 自动加载了技能(加载动作在界面轨迹里可见)
- 按技能里的流程执行(用 Python csv 模块、空值填 "N/A"、结果进 processed/)
如果没加载:检查技能目录是否被扫描、description 是否写清了触发场景。
进阶技巧
| 技巧 | 说明 |
|---|---|
| 引用其他技能 | 正文里写 "遵循 XXX 技能的第 2 步",agent 会按名查找 |
| 分层组织 | 通用流程写全局技能,项目特化再写项目技能覆盖 |
| 附资源文件 | 技能目录里可以放模板、示例文件,正文里指路径 |
常见问题
| 问题 | 解答 |
|---|---|
| 技能放项目里还是全局? | 团队共用放项目(进 git);个人习惯放 $DSH_HOME/skills |
| 能改官方技能吗? | 别直接改随部署分发的技能,复制到自己目录再改 |
| 两个技能同名? | 就近层生效:项目技能覆盖全局技能 |
接下来读什么
- 带代码的新能力 → 插件开发:从零编写第一个插件
- 把技能随插件分发 → 发布插件:npm 生态与发布流程
← 上一篇:5.1 插件机制与 Cordis 入门 | 下一篇:5.3 插件开发:从零编写第一个插件 →
↑ 返回 教程总目录




