技能
带版本的技能:所有接入的 Agent 在会话开始时即可看到,并按需加载。
技能(Skill)是 Loremem 云服务为 Agent 提供的可复用指令包。Loremem 是技能的唯一事实来源:每个 Agent 的 Lore 插件会在会话开始时把该 Agent 可用的技能同步到宿主自己的技能目录,Agent 像对待自己安装的技能一样发现、列出并加载它们。技能仅在 Loremem 云服务中可用,开源服务器没有技能功能。
技能是什么
技能是一个带版本的包。它唯一必需的文件是 SKILL.md。你还可以添加辅助文件,例如脚本、参考文档或模板。每次保存都会创建该包的一个新版本。
SKILL.md 以 YAML 前置元数据(frontmatter)开头,其中给出技能的 name 和 description。前置元数据之后的文本是具体指令:
---
name: release-notes
description: Write release notes for checkout-api from merged pull requests. Use when the user asks for release notes or a changelog.
---
# Release notes
1. List pull requests merged since the last tag.
2. Group them under Added, Changed, and Fixed.这些字段的规则如下:
- 名称只能使用小写字母、数字和连字符,长度为 1 到 64 个字符,且不能以连字符开头或结尾。
- 前置元数据中的
name就是技能名称,创建之后不能修改。 - 描述最多 1,024 个字符。Agent 依据它来判断何时加载该技能。
Agent 如何找到并加载技能
- 会话开始时,该 Agent 的 Lore 插件会拉取对它可见、已启用的技能清单,并把这些技能同步到宿主自己的技能目录。
- 宿主把这个目录当作自己的一个技能来源,Agent 读到的
name、description和SKILL.md与手工安装的技能完全一样。提示词里不再有 Lore 专属的清单,也没有单独的加载步骤。 - 当任务与某个技能的描述匹配时,Agent 通过宿主自己的技能机制加载它。
同步在后台运行,会话不会等它:当前会话看到的是上一次同步的结果,新增和修改的技能从下一个会话开始生效。宿主重载能提前看到它们:Pi 的 /reload、Hermes 的 /reload-skills、ZCode 在 设置 → 技能 里刷新,OpenClaw 会监听该目录并热更新。每次同步的结果记录在同步目录下的 .lore-sync-status.json。
用 Lore CLI 安装或更新时,会对它安装的每个渠道各跑一次同样的同步,所以第一个会话就能看到清单。
自己调用技能
没有 Lore 专属的前缀。每个 Agent 用它自己的方式触发技能,见运行时:Claude Code 输入 /lore:release-notes,Codex 输入 $release-notes 或从 /skills 里选,Pi 输入 /skill:release-notes,OpenClaw 和 Hermes 输入 /release-notes。设置为 仅用户触发 的技能也能用这种方式运行。
可见范围与调用方式
每个技能有三项设置:
| 设置 | 选项 | 作用 |
|---|---|---|
| 启用 | 开或关 | 关闭后,Agent 不会看到或加载该技能。 |
| 可见范围 | 所有 Agent,或勾选的若干运行时 | 限定了运行时的技能,只对勾选的运行时可见。 |
| 调用方式 | Agent 与用户(默认),或仅用户触发 | 仅用户触发 不让模型自行运行该技能,你仍然可以用 Agent 自己的触发方式调用它。它等同于在 SKILL.md 中设置 disable-model-invocation: true。 |
仅用户触发 会按宿主能理解的形式传给 Agent:Claude Code、Pi、OpenClaw 原生支持 disable-model-invocation;Codex 会生成 agents/openai.yaml,写入 policy.allow_implicit_invocation: false;dsh 把它映射到自己的调用开关。Hermes 和 OpenCode 没有等价机制,在那里模型仍然可以自动调用这类技能。
本地副本与文件权限
副本放在每个宿主自己的技能系统会读取的位置:Claude Code、Codex、OpenClaw、ZCode 在插件的 skills/ 目录;Pi、Hermes、dsh 在 ~/.lore/skills/<project-id>/(如果设置了 LORE_HOME,则用该目录代替 ~/.lore);OpenCode 在 ~/.config/opencode/skills/。Hermes 只有在 ~/.hermes/config.yaml 的 skills.external_dirs 里列出该目录后才能看到它。
Lore 写入的每个技能目录里都有一个 .lore-skill-marker.json,记录这份副本的来源。Lore 只读取、更新和删除带这个标记的目录:你自己建的同名目录不会被碰,只会被报告为冲突;你放在其他目录里的技能,Lore 不读、不传、也不删。
托管目录里有两类文件:
- 托管文件来自服务器。Lore 会把它们和标记设为只读(在 Linux 和 macOS 上为
0444)。如果你编辑了其中一个文件,下一次同步会把它恢复。 - 制品是技能目录中的其他所有文件,例如技能运行时写下的缓存和中间文件。该目录保持可写。Lore 从不检查、也从不上传制品,它们在更新后会保留。
交给你的成果(例如图片、文档)由 Agent 保存到你指定的位置或当前工作目录,不放进技能目录。
有新版本到达时,Lore 只更新托管文件。归档、停用某个技能,或把它限定到其他运行时后,下一次同步会删掉它的托管文件和标记,你的制品保留。如果新版本里的托管文件和你自己放在技能目录里的文件撞上,同步会让该技能保持不变,并把这次失败记进状态文件,而不是覆盖你的文件。
每次同步结束后,同一目录下的 .lore-sync-status.json 会记录完成时间、使用的项目和清单版本、哪些技能被创建、更新、未变或删除,以及冲突和错误。
Lore 不会为脚本设置可执行权限,因此请通过解释器运行脚本,例如 python3 scripts/convert.py。
注意
每个加载技能的 Agent 都会下载完整的技能包,包括所有文件。不要在技能中放入密钥、令牌或私有主机名。
从 GitHub 导入
你也可以直接从公开的 GitHub 仓库导入技能,而不必手写。Loremem 控制台的技能页为此提供了导入对话框;在 Agent 里则使用 lore_skill_import。两者都只在 Loremem 上可用——开源服务器没有技能功能。
来源可以是 owner/repo、GitHub 仓库 URL、指向某个技能的 tree URL(https://github.com/owner/repo/tree/<ref>/<path>),或者直接粘贴一条 npx skills add … 命令。先用控制台对话框的预览,或给工具传 dry_run: true,列出将要导入的技能以及哪些已经存在。导入从不覆盖:同名技能会报告为 exists 并保持不变。
把已有的技能迁到 Loremem
Loremem 不会替你自动迁移本地技能。有些技能只能在某一个 Agent 里用:它们依赖这个 Agent 自己的工具、钩子或扩展,或者有插件在运行时读取技能文件。这类技能一迁就坏,所以哪些该迁要靠判断。请让你的 Agent 来做,并在它删除任何东西之前先看它的计划。
只有通用技能适合放进 Loremem,也就是任何 Agent 都能用的说明、参考资料和脚本。和特定 Agent 绑定的技能留在原处。
把下面这段提示词发给你的 Agent:
把我本机的 Agent 技能迁移到 Loremem。
1. 找出这台机器上我用的每个 Agent 的全部技能,例如 ~/.agents/skills、
~/.claude/skills、~/.codex/skills、~/.pi/agent/skills、
~/.config/opencode/skills、~/.zcode/skills、~/.dsh/skills、
~/.hermes/skills、~/.openclaw/skills,以及已安装的插件或扩展
自带的技能。列成表格,写明每个技能的来源,并标出重复项。
2. 分成两组。通用技能是任何 Agent 都能用的说明、参考资料或脚本。
专属技能依赖某个 Agent 自己的工具、钩子或扩展,或者有代码在运行时
读取技能文件;Agent 自带的技能(比如 Codex 的 .system)也算专属。
只有通用技能迁到 Loremem。
3. 先调用 lore_skill_list,已存在的同名技能跳过。不要上传缓存、
node_modules、.git 和其他生成文件。每个技能最多 1,024 个文件、
单个文件不超过 5 MiB,放不下的告诉我。把写死的 Agent 技能目录路径
改成相对技能目录的路径。不要上传密钥或令牌,放在技能目录之外的
本地配置文件里。
4. 先给我看迁移计划,等我确认。确认后用 lore_skill_create 逐个创建
通用技能,备份本地技能目录,只删除已经上传的那些本地副本。
本地副本必须删掉:每个 Agent 会在会话开始时把 Lore 里的副本同步到
自己的技能目录,留下本地副本就会出现两份。Claude Code 里会同时有
tdd 和 lore:tdd,Pi、Hermes、OpenCode 则只挑其中一个。
插件或扩展自带的通用技能,保留插件本身;只有在 Agent 支持时才单独
关掉它的技能。
5. 最后给我一份报告:已上传、已跳过及原因、已删除、留在本地的。迁移完成后,Loremem 会在每个 Agent 下一次会话开始时把技能同步过去,不要再在本地重装。
如果想让迁过去的技能只能手动触发,在它的 SKILL.md 里加上 disable-model-invocation: true,或在控制台选择 仅用户触发。
技能工具
| 工具 | 用途 |
|---|---|
lore_skill_list | 列出当前项目中的技能。 |
lore_skill_search | 按查询词搜索技能。 |
lore_skill_create | 用名称和文件列表创建技能。技能会在每个 Agent 下一次会话开始时同步过去。 |
lore_skill_update | 更新技能。需要 expected_version。修改会在每个 Agent 下一次会话开始时同步。 |
lore_skill_delete | 归档技能。下一次同步会从每个 Agent 删掉它的托管文件。 |
lore_skill_import | 从公开的 GitHub 仓库导入技能。支持 dry_run。 |
有关控制台以及创建、更新和归档的操作,请参见 创建与管理技能。
运行时
| 宿主 | 副本位置 | 如何调用技能 |
|---|---|---|
| Claude Code | Lore 插件内的 skills/ | /lore:<名称>;模型也会按描述自动调用 |
| Codex | Lore 插件内的 skills/ | $<名称>,或从 /skills 里选 |
| Pi | ~/.lore/skills/<project-id>/,注册为 Pi 的技能目录 | /skill:<名称> |
| OpenClaw | Lore 插件内的 skills/ | /<名称> |
| ZCode | Lore 插件内的 skills/ | 输入 $ 选择,或用 / 菜单里的技能分组 |
| Hermes | ~/.lore/skills/<project-id>/,需要在 ~/.hermes/config.yaml 的 skills.external_dirs 里列出 | /<名称> |
| DeepSeek Harness | ~/.lore/skills/<project-id>/,由插件自己的 skills provider 提供 | 按宿主的用户可调用入口 |
| OpenCode | ~/.config/opencode/skills/<名称>/ | 宿主自己的技能工具 |
OpenCode 是唯一没有插件专属技能目录的宿主,所以 Lore 直接写入 OpenCode 自己的全局技能目录。Lore 只会创建、更新、删除带 Lore 标记的条目,目录里其他东西一律不碰。
通过通用 MCP(client_type=mcp)连接的客户端不会获得技能。开源服务器没有技能,也不会同步任何技能。