排查找不到的技能和没有生效的修改
同名技能、工作区根目录和浏览器菜单缓存,会让一个明明存在的文件看起来没有加载。按文件路径、名称、刷新顺序检查,能定位问题落在哪一层。
本篇目录 4 节
01
先定位当前项目的根
Harness 从当前工作目录向上找到最近含 .git 的目录,以它作为项目根。找不到 .git 时,使用当前工作目录本身。若把练习目录放进已有 Git 仓库,Harness 可能从外层仓库的 .dsh/skills 读取;把练习目录放到仓库外就能按上一页的路径操作。
每个技能根目录只扫描直接子项。支持 meeting-brief/SKILL.md,也支持单文件 meeting-brief.md。把目录写成 skills/办公/meeting-brief/SKILL.md 会多套一层。名称只接受小写字母、数字和分隔用的单连字符,例如 meeting-brief。
02
同名时读哪一份
同一作用域里,本地文件提供方按下表从上到下查找同名候选。想把规则分享给项目成员,放在项目根;只想在自己的不同项目间复用,放在个人根。~ 代表运行 Harness 的主机用户目录。
| 优先顺序 | 扫描目录 | 用途 |
|---|---|---|
| 100 | <项目根>/.dsh/skills | 本项目专用 |
| 200 | <项目根>/.agents/skills | 项目中的通用 agent 目录 |
| 300 | customSkillDirs 配置的目录 | 额外指定的技能来源 |
| 400 | <dshHome>/skills | 个人 Harness 技能,默认 ~/.dsh/skills |
| 500 | <agentsHome>/skills | 个人共享技能,默认 ~/.agents/skills |
| 600 | bundledSkillDir | 部署配置的随包技能 |
03
区分自动选择和手动选择
希望每次由人点名,就把 disable-model-invocation: true 加在文件头的结束标记 --- 之前,也就是 name 和 description 所在区域的结尾。希望模型自己按场景选择,就把 description 写成具体的适用条件。两项同时禁止会关闭这两种调用入口。
| 文件头的设置 | 模型可主动选择 | 用户可输入 /name |
|---|---|---|
| 未写以下两项 | 可以 | 可以 |
| disable-model-invocation: true | 不可以 | 可以 |
| user-invocable: false | 可以 | 不可以 |
04
新文件没有出现在 / 菜单
- 直接写完整名称,例如 /meeting-brief 请整理 meeting.txt。确保命令两侧由空白或消息边界隔开;与宿主命令重名时,宿主命令优先。
- 确认文件第一行只有 ---,name 和 description 都有值,调用名符合规则。YAML 或名称无效时,提供方会跳过该文件。
- 默认开启的文件监视器会跟踪新增、删除、改名和文件头变动,宿主在下一次模型步骤更新技能目录。每次加载会重新读取正文。仅更改 references、scripts、assets 内的附件不会触发目录更新。
- RC5 已打开的 Web 会话可能继续展示之前缓存的 / 菜单。切换预设或重置连接会刷新菜单;旧对话记录里的已完成 Instructions 卡片保留当时的正文。
来源与延伸阅读
TAKE IT WITH YOU
把手册和练习材料带走
知识库方便查阅和备课,演示素材可用于跟做站内示例。