尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何为 Jan Agent 编写 SKILL.md 可复用技能?

如何为 Jan Agent 编写 SKILL.md 可复用技能? 如何为 Jan Agent 编写 SKILL.md 可复用技能【免费下载链接】janJan is an open source alternative to ChatGPT that runs 100% offline on your computer.项目地址: https://gitcode.com/GitHub_Trending/ja/jan如果你在 Jan Agent 里反复粘贴同一段流程说明——比如怎么打 release怎么加一条 migration新 endpoint 应该怎么接线——可以把这类固定流程写成一个skillagent 在任务需要时才加载的一段书面 procedure。这篇文章说明如何在一个项目里写好一个SKILL.md、决定由谁来触发它、在agent.toml里控制它是否生效并在控制台里验证它能被调用。前提Jan Agent 已安装并配置了至少一个模型 provider它没有本地推理引擎调用远程 provider安装步骤见 QuickStart可用jan --version确认。以下所有操作都在你要工作的项目目录里进行。先确认这件事该写成 skill 而不是别的文档给出的判断标准是——对每个任务都成立的规则写在AGENT.md里只对某一类任务成立的流程才写成 skill。技能文件放在哪里每个项目的 agent 配置都在.jan/agent/目录里skill 位于project是你的项目根目录下面是文档中的目录示例project/.jan/agent/skills/ ├── release/ │ └── SKILL.md # folder form, can bundle scripts alongside └── add-migration.md # flat form两种形态folder formrelease/SKILL.md和flat formadd-migration.md。新写和导入的 skill 都用 folder form因为它可以把辅助脚本或模板放在SKILL.md旁边这个格式与更广泛的 SKILL.md 生态一致别处写好的 skill 一般可以直接用。.jan/agent/目录会在首次使用时自动创建。如果想在不开会话前就先把目录架起来可以在项目根目录运行jan cli agent status --project .编写 SKILL.md一个 skill 就是带name和descriptionfrontmatter 的 markdown 文件。下面是一个文档示例release 流程--- name: release description: Cut and publish a release --- # Cutting a release 1. Confirm main is green in CI. 2. Bump the version in Cargo.toml and package.json - they must match. 3. Update CHANGELOG.md; group by feat/fix/chore. 4. Tag vversion and push the tag. CI does the rest. Never publish from a dirty working tree.示例正文里的vversion是打 tag 时的占位写法执行时替换为实际版本号。文档对正文的要求只有一条但很关键保持简洁——skill 与 prompt 里的其他内容竞争同一份注意力。也可以让 agent 自己写在控制台里直接说Write a skill for how we cut releases, based on what you see in CHANGELOG.md and the CI configagent 用skill_write写文件这个工具需要审批对照之下skill_list和skill_read不需要审批。用skill_write写出的 skill 默认两侧都可调用之后再补 frontmatter 键来关闭某一侧。决定谁来触发两个 frontmatter 键一个 skill 有两个调用侧默认两侧都开着User-invoked你在控制台输入/release或/skill:release或从/弹层里选中它Model-invokedagent 在自己的目录里看到该 skill 的name和description任务匹配时自己用skill_read加载全文并执行。两个 frontmatter 键分别关闭一侧Frontmatter你可以调用agent 可以调用都不写是是user-invocable: false否是disable-model-invocation: true是否两个都写否否私有适合未完成的草稿两侧付出的成本不同model-invoked 的 skill 要在整个会话期间把description放在 agent 的目录里这是它被发现的代价user-invoked 不占上下文但你自己就是索引——不记得它存在就永远不会用。description的写法取决于主要触发方主要靠 agent 触发时把description写成给模型看的指针写明该 skill 适用哪些情况、会启动哪些动作而不是概括文件内容。description与触发场景不匹配skill 就会无法被发现——agent 触发不了它看不见的东西。文档示例user-invocable: false只由 agent 触发--- name: security-review description: Run a security pass before merging: scan dependencies, check for leaked secrets, review auth paths. Use after significant changes. user-invocable: false --- # Security review 1. Scan Cargo.lock for known vulnerabilities. 2. Grep for hardcoded secrets in src/. 3. Review auth and permission changes for bypasses. Report findings as a list, or no issues found.加上disable-model-invocation: true后agent 的目录、skill_list和skill_read都看不到这个 skilldescription的上下文成本为零此时它变成给人看的一句话说明。适合个人手动执行的流程或任何你不想让 agent 自行启动的操作。在 agent.toml 里控制哪些技能生效.jan/agent/agent.toml的[skills]段控制技能的可用性[skills] enabled [] # empty means all skills are enabled inject always # always | relevanceenabled是白名单空列表表示全部启用inject决定 skill 如何到达模型always把每个 skill 的名称和用途都放进 system promptrelevance按任务挑选。注意白名单与 frontmatter 是正交的一个 skill 必须同时被enabled允许、且在某一侧开放才会出现在那一侧。被白名单禁用的 skill 文件仍留在磁盘上可以通过文件工具访问只是不再向任何一侧提供。在控制台验证技能在项目根目录运行jan打开控制台agent 工作在启动它的目录里。验证分两侧。用户侧。在输入框敲/内置命令、插件命令和 skill 出现在同一个弹层里skill 是 magenta 行Tab补全Enter执行。调用有两种形式/release staging—— 短形式名称后的参数传给 skill若名称与内置命令冲突命令优先/skill:release staging—— 显式形式永不与内置命令冲突还能嵌在句子中间例如fix the auth flow /skill:deploy harden周围的文字作为参数传入。两种形式都会把 skill 全文一次性注入对话agent 不需要再去取一次transcript 里显示一行紧凑的[skill:release]而不是正文。如果 skill 目录里在SKILL.md旁边放了文件消息里会宣告该文件夹相对路径因此可以解析。若某个 skill 没有出现在弹层里文档给出的原因只有两种它被[skills].enabled白名单禁用或它标了user-invocable: false后者只能由 agent 触发。模型侧。model-invoked skill 的name加一行用途进入 agent 的 system prompt全文不进入任务匹配时 agent 用skill_read加载全文并照做。验证方式是给 agent 一个与该 skilldescription匹配的任务比如上面security-review的例子一次大改动后请求合并前安全审查agent 运行时每个工具调用都会实时显示观察它是否自行发起了skill_read并按 skill 正文执行。可选分支router skill当 user-invoked skill 多到记不过来时可以写一个 user-invoked 的router skill作为个人索引列出其他 skill 和各自用途让你只记一个名字--- name: go description: What do you want to do? (personal index) disable-model-invocation: true --- # Routers - /go release - cut and publish a release - /go migrate - add a new migration - /go deploy - ship to staging or productionrouter 只能提示、不能代为触发user-invoked skill 的 description 不在 agent 视野内只有你能启动它们。把技能交给团队文档建议把agent.toml、AGENT.md、skills/和subagents/提交进版本库让整个团队得到同一个 agentthreads/是个人会话记录应加入.gitignore。另外两点边界技能与 Jan Desktop 共享——同一份项目文件、同一个目录在一边写好的 skill 另一边也会出现。需要整组技能时可以从 git 仓库或 marketplace 安装为 plugin以plugin:skill形式调用走的是同一套调用机制和[skills].enabled白名单。延伸阅读Skills技能位置、写法与[skills]控制的完整说明Skill Invocation两种触发方式的取舍Project Configagent.toml的完整配置Slash Commands控制台完整命令面【免费下载链接】janJan is an open source alternative to ChatGPT that runs 100% offline on your computer.项目地址: https://gitcode.com/GitHub_Trending/ja/jan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表