--- title: Gem 是什么 description: Gem 的目录结构、生命周期,以及它和会话、Agent 的关系。 section: dev order: 10 updated: 2026-11-05 --- # Gem 是什么 一个 gem 就是一个文件夹:一份清单(`notochord.json`),加上可选的工具(`tools/`)、agent(`agents/`,每个一份带头部的提示词文件)、SOP(`workflows/`)、页面(`pages/`)、一份给 AI 看的 skill(`skill/`)、一份给人看的介绍文档(`docs/`)、数据声明和事件订阅。 - **安装**:从商店或 Gem Studio 安装,先经过签名、完整性和声明的检查(见[打包与发布](/zh/dev/publishing.md)),通过才会装上。装好后,gem 的页面上列出它能做什么。 - **默认什么都碰不到**:需要用户配置的(账号、邮箱、知识库)在用户打开之前都是关着的(见[权限模型](/zh/dev/permissions.md))。 - **隔离**:每个 gem 有自己的数据文件夹和自己的运行进程,别的 gem 读不到。 - **使用**:用户在聊天里让 AI 用它,或者它自己的 SOP 按触发规则自动运行(见[事件与触发](/zh/dev/events.md))。 ## AI 怎么用到你的 gem 用户聊天时面对的是 Chat agent。它默认带着两个工具:`read_skill` 和 `tool_search`。用户可以在「设置 › AI 设置 › Agent」里去掉它们,也可以给别的 agent 加上。 - **AI 知道用户装了哪些 gem,以及每个 gem 对外提供什么。** 工具里有 `read_skill` 的 agent,系统提示里列着每个已安装的 gem,一个占一行:名字、id 和清单里的 `description`(写法见[清单参考](/zh/dev/manifest.md#描述));下面每个对外提供的项(标了 `expose: true` 的工具、SOP、agent)各占一行,写它的描述,SOP 标 (SOP),agent 标 (agent)。gem 没有对外提供的工具,AI 不知道它们存在。 - **要用某个 gem,就用 `read_skill` 读它的 id。** 结果里有:它的 skill(`skill/SKILL.md` 的全文、`skill/references/` 下每个文件的名字),以及这个 gem 对外提供的项。从下一步起,这些项都在 AI 的工具列表上,直到这次对话结束。没有 skill 的 gem 也这样打开,结果里只是没有 skill。 - **对外提供的 agent 就是一个工具。** AI 调用 `gem.<id>.<agent 名>({ task })`,把任务用一段话交给它;它在自己的会话里、用自己声明的工具、用用户给它选的模型完成,最后一条回复就是工具的结果。它只看到这段任务。怎么决定对外提供工具还是 agent,见[清单参考](/zh/dev/manifest.md#对外提供expose)。 - **参考资料按需再读。** AI 用 `read_skill` 加结果里列出的名字(`<gem id>/skill/references/…`)读一个文件。读的同时这个 gem 的工具也会出现。写法见[清单参考](/zh/dev/manifest.md#skill)。 - **也可以按关键词找。** `tool_search` 在已安装的 gem(名字、描述,以及对外提供的项的名字和描述)和 Notochord 自带的工具里找,找到的(最多 5 项)也会出现在工具列表上。 - **读和找都不问用户。** 它们只是让 AI 看到 gem 提供了什么,AI 看过以后不一定会用。 - **第一次调用时问一次。** AI 第一次调用这个 gem 对外提供的某一项时,应用会弹窗请用户同意,问的是整个 gem;同意以后,这次对话里调用它对外提供的任何一项都不再问。同意只对这次对话有效,新对话里要再问一次。用户拒绝时,这次调用不执行,AI 会收到被拒绝的结果。 - **对外提供的项只能整个 gem 一起出现**,不能单独拿到其中的某一个。SOP 对 AI 来说就是一个工具,只是可能要等(等审批、等定时),这时它先返回一个运行编号。 - **没有对外提供的工具只有 gem 自己能调用**:它的 SOP、agent 和页面。别的会话调用它,不管工具列表上有没有,都会被拒绝,也不会问用户。 - 出现在 gem 列表里的是:至少对外提供一项的 gem,以及**什么都不对外提供但有 skill** 的 gem(有 `skill/SKILL.md`)——后者读了只有文字,没有要用户同意的东西。既不对外提供任何东西又没有 skill 的 gem 不会出现(它只靠自己的页面和定时 SOP 工作)。gem 自己的 agent 不受这些影响:它能用哪些工具由它的文件头部决定(见[清单参考](/zh/dev/manifest.md#agents)),也看不到这份 gem 列表。
Notochord
简体中文English