DeepSeek Harness 的 Skills 和 AGENTS.md 怎么用、注入到哪
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.md 或 CLAUDE.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,可选 whenToUse、disable-model-invocation、user-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 的习惯预期
更多推荐


所有评论(0)