DeepSeek Harness 的 Skills 和 AGENTS.md 怎么用、注入到哪

版本:deepseek-harness 0.1.0-rc.5,源码部署。全部实测过,不是抄文档。

一句话结论

dsh 支持 AGENTS.md 和 skills,开箱即用(web 默认 standard 预设已挂载)。注意:和 opencode 不一样,这些内容不是塞进系统提示词的,全是"用户角色消息"

文件放哪

AGENTS.md / CLAUDE.md

位置 生效范围
~/.dsh/AGENTS.md 全局,所有会话
<项目根>/AGENTS.mdCLAUDE.md 整个项目(项目根 = 往上找第一个 .git
<子目录>/AGENTS.md / CLAUDE.md 只在该子目录下生效
AGENTS.local.md / CLAUDE.local.md 同目录的本地覆盖层,基础文件之后加载

同目录多个候选全加载,AGENTS.md 优先于 CLAUDE.md。预算:渲染上限 64KB,单文件超过 1MB 直接忽略,超预算截断不报错。

Skills

按优先级从高到低:

目录 说明
<项目根>/.dsh/skills/ 项目专属,最高优先
<项目根>/.agents/skills/ 项目共享(deepseek-harness 仓库自己的技能就在这)
~/.dsh/skills/ 个人全局
~/.agents/skills/ 全局共享

格式两种:<技能名>/SKILL.md(目录式)或 <技能名>.md(扁平式)。frontmatter 必填 name + description,可选 whenToUsedisable-model-invocationuser-invocable。缺 frontmatter 或缺 name/description 的文件直接忽略(日志有警告)。文件改动自动热更新,不用重启。

注入到哪(重点)

内容 注入位置
AGENTS.md / CLAUDE.md 用户角色消息,消息序列前缀
技能目录 用户角色消息<available_skills>
模型调 skill 工具拿到的正文 工具调用结果(用户侧)
用户发 /技能名 触发的正文 用户角色消息,追加在最后

AGENTS.md 注入细节

每次模型请求前(pre-step 钩子)检查,首次把完整指令集作为用户消息前缀注入,之后只在文件变化时增量替换。每段带 Instructions from: <路径> 标记。模型看到的效果就是对话开头多一条用户消息,内容是你的仓库规则。

技能目录注入细节

每步请求前注入摘要目录,格式:

<system-reminder>
A skill is a reusable set of task-specific instructions. The following skills are available in this session:

<available_skills>
- name: dsh-code-review: Use when reviewing a pull request...
</available_skills>

If the user names a skill, or the task clearly matches a skill's description,
call the `skill` tool with the exact skill name before taking task actions.
</system-reminder>

目录只含摘要,不含正文。模型觉得任务匹配就调 skill 工具(参数=技能名),工具返回完整正文,包装成 <skill_content> 块作为工具结果进会话。目录消息里明确要求"先加载再执行"。

用户直接发 /技能名 也能触发,正文作为用户消息追加在注入链最后。disable-model-invocation: true 的技能只能走这条路。

实测

对运行中的服务(http://127.0.0.1:3080):

POST /api/session.create  {"cwd":"E:\\deepseek-harness"}
→ preset=standard

POST /api/skill.list  {"sessionId":"..."}
→ 11 个技能,全是仓库 .agents/skills/ 下的 dsh-* 技能

在 deepseek-harness 仓库里干活,现有技能零配置直接生效。

  • minimal 预设没有这些插件,只有 standard(和自建预设)有
  • 项目根识别靠 .git,非 git 目录不会被当项目根
  • 技能目录描述截断 500 字符,正文不受限
  • 和 opencode 的差异:opencode 把 AGENTS.md 塞系统提示词,dsh 全走用户消息——感知强度不一样,别按 opencode 的习惯预期

更多推荐