Skip to main content
一个 skill 就是一份写好的能力包:一个目录里放一份 SKILL.md(说明用途、给 agent 看的指令),可以再带一些参考文档、脚本或样例。写好后丢给 agent,它会在合适的时候自己用。 harness 让你从两个地方装 skill:
  • 接 skill 市场:Git 仓库、Nacos、MySQL、classpath、或者自己写的后端
  • 放在工作区:项目里 workspace/skills/ 下的就所有人共用;放在 <userId>/skills/ 下的只有那个用户看得到
两类来源同时生效,不需要二选一。
关于 skill 自身的结构、SKILL.md 写法、资源加载、tool 绑定、代码执行这些通用概念,见 Agent Skill。本文只讲 harness 这一层的用法。

一个例子

把团队的 skill 仓库接进来,agent 立刻就能用:
没了。后续推理时,agent 看得到这个仓库里的 skill,需要用哪个就调 load_skill_through_path 加载详情。

接 skill 市场

skillRepository(...) 是统一入口,传什么后端都可以。

Git

默认每次读取都会做轻量化的远端检查,HEAD 变了才 pull。仓库里如果有 skills/ 子目录会优先读它,否则读根目录。想自己控制同步节奏:new GitSkillRepository(url, false),然后手动 repo.sync()

Nacos

适合需要在线下发、变更订阅的场景。NacosSkillRepository 实现了 AutoCloseable,应用退出时记得关掉以释放订阅。

MySQL

平台侧统一管理 skill 时常用。writeable(true) 之后可以从 agent 侧写回;只读分发就传 false

Classpath

把 skill 跟 JAR 一起发:
兼容标准 JAR 和 Spring Boot Fat JAR。

接多个

skillRepository(...) 可以重复调用:
或者一次性传一组:
注意 skillRepositories(list) 会把之前用 skillRepository(...) 加的全部清掉,再用传入的列表替换。

把 skill 放到工作区

工作区里的 skill 不用任何注册,把目录放好就生效。

大家共用

这个 agent 接到的任何请求都能看到 code-reviewer。适合放项目特有的规范、内部约定这类东西。

单个用户用

如果想给某个用户单独装一个 skill,或者给他覆盖一个共用版本,放在以他 userId 命名的子目录下:
  • Alice 调用时:拿到自己的覆盖版
  • Bob 调用时:还是用共用版,看不到 Alice 那份
  • Alice 在自己目录下放了一个 notes-taker:只有她能用
这一层的目录前缀是 RuntimeContext.userId 决定的,所以前提是调用方把 userId 传进了 RuntimeContext。具体怎么按用户切目录见 文件系统 · NamespaceFactory

同名 skill 谁说了算

四个来源都可能给出同名 skill。优先级从低到高: 下层独有的 skill 仍然保留,只在重名时被上层覆盖。 举例:团队 Git 上有一份通用 code-reviewer,项目里 workspace/skills/code-reviewer/ 写了项目专属版本,那 agent 看到的就是项目版;Alice 又在自己目录下覆盖了一份,那 Alice 调用时拿到的是她自己的版本,其他用户还是项目版。

Builder API

子 agent 会自动继承父 agent 的市场列表和项目全局目录,不用再配一遍。 什么时候用 disableDynamicSkills()
  • 单次任务、跑完就退出,不需要 skill 在运行中热更新
  • 接的市场后端比较慢,不想每轮推理都拉一次
平时不用动这个开关。

一些建议

description 决定 agent 会不会用这个 skill。 agent 一开始只看得到每个 skill 的 name 和 description,看到觉得相关才会 load 详情。写「这是一个数据分析工具」远不如写「当用户要算统计、出报表、做趋势图时使用」有效。 SKILL.md 保持精简。 控制在 2k tokens 上下,详细参考资料放 references/,脚本放 scripts/。agent 需要时会自己读。 通用能力放市场,项目特有的写工作区。 代码评审、表格分析这种放团队 Git 上集中维护;公司内部 RPC 规范、本项目的命名约定写到 workspace/skills/ 里跟着代码走。 用户目录用来「覆盖+补充」,不要拿来当主存放。 关键能力请放在所有用户都能看到的层。 多市场同名时约定一个前缀(acme/code-review vs community/code-review),避免不知道谁覆盖了谁。

相关文档

  • Agent SkillSKILL.md 字段、资源结构、tool 绑定、代码执行
  • 工作区 — 工作区目录的整体布局
  • 文件系统 — 多租户与按用户隔离怎么配
  • 工具load_skill_through_path 等内置工具