@ framers/ agentos- extension- registry (英语)
AgentOS的扩展目录——元数据、查询帮助和 createCuratedManifest() 工厂.
这个包裹是什么
这是 目录和SDK 用于 AgentOS 扩展名。 它不包含扩展源代码——它规定:
- 静态元数据目录 (单位:千美元)
CHANNEL_CATALOG, (中文(简体) ),TOOL_CATALOG, (中文(简体) ),PROVIDER_CATALOG)描述每一个已知的扩展:它的名称,包,SDK,需要的秘密,和能力. - 查询助手 (单位:千美元)
getChannelEntry(), (中文(简体) ),getToolEntry(), (中文(简体) ),getProviderEntry())用于在运行时查找目录条目. - 动态加载器 (单位:千美元)
createCuratedManifest())解决实际安装的扩展包,然后构建一个ExtensionManifestagentOS 运行时间可以消耗.
架构:目录对源代码
| 软件包 | 作用 |
|---|---|
@framers/agentos-extensions | 源代码 ——实际通道适配器,工具实施及扩展包 |
@framers/agentos-extensions-registry (这个) | 目录/SDK 索引上面的扩展,存储元数据,以及动态加载(无论安装哪套) |
@framers/agentos | 运行时间 - 提供 ITool, (中文(简体) ), IChannelAdapter, (中文(简体) ), ExtensionManifest内核 消耗清单 |
依赖方向 : 此软件包取决于 @framers/agentos 用于运行时间类型( pier dep) 和引用扩展包 @framers/agentos-extensions 作为可选依赖。 只装入已安装的扩展; 丢失的软件包默默跳过 .
休闲和可选设计
编目和运行时间故意脱钩. 下面的四个DI层独立运行,所以一个主机支付它安装和使用的确切费用.
第1层:可选 peerDependenciesMeta 每个扩展名
每个目录条目 CHANNEL_CATALOG, (中文(简体) ), TOOL_CATALOG,以及 PROVIDER_CATALOG 仅按名称引用其 npm 软件包。 此软件包不会急切地导入它们 . peerDependenciesMeta.optional: true 保留 npm install 除非主机明确将软件包添加到自己的软件包中 package.json。 。 。 .
第2层: import.meta.resolve() 在显示构建时跳过未安装的软件包
createCuratedManifest() 移动请求的过滤器( e)tools: 'all' | string[] | 'none', (中文(简体) ), channels: ...)和电话 import.meta.resolve(packageName) 每个条目。 失败者被吞并;该条目从产出清单中删除。 跑步时间永远看不到一个无法解决的包. getAvailableExtensions() 财务报告和审定财务报表 getAvailableChannels() 为想要在自己的UI或日志中浮出已安装扩展名的主机显示此分辨率状态 .
第3层:每层 requiredSecrets 在目录元数据中
CHANNEL_CATALOG 财务报告和审定财务报表 TOOL_CATALOG 条目声明扩展名所期望的密钥( 已通过 SECRET_ENV_MAP) (中文(简体) ). 当运行时间激活描述符时,它会参考 requiredSecrets 并跳过激活,如果非可选密钥无法解答。 包也可以读取其条目不需要的秘密. Pii-redaction中的LLM评委是: 它只在主机设定包时运行 llmJudge 选项,当该选项没有 apiKey 法官问AgentOS的秘密 <provider>.apiKey (从) extensionSecrets,否则该提供者的环境变量,例如 OPENAI_API_KEY,则 pii.llm.apiKey (从) extensionSecrets 页:1 单凭钥匙是不会让法官生气的 主题和ml级的LLM级不带秘密:当主机通过时运行 llmInvoker 在包的选择.
第4层:重资源服从 SharedServiceRegistry
运行时间 ExtensionLifecycleContext.services 暴露一个 getOrCreate(key, factory) API (英语). 激活时没有登记:一包在第一次呼叫时用钥匙穿过工厂,需要资源,然后由登记册运行,然后要求该钥匙(同一包中的其他工具、其护栏、同一登记册上的其他包)共享缓存实例. has(key) 在工厂开工前不要撒谎 BERT NER 模式在 pii- redaction (默认情况下约为 109 MB) q8 重量, 键 agentos:nlp:ner-pipeline并且NLI的管道 以这种方式在地上 守卫懒惰的负载。 两包在没有共享登记簿的情况下首先装入其模型:ml分类器在第一个分类器上装入它的一个ONNX模型(毒伯特),在它检查的第一个输入器上每个过程装入它的嵌入模型(全-MiniLM-L6-v2)时,主题性就装入它的嵌入模型.
这看起来像末端
// 1. Host installs the registry SDK + only the extensions it wants.
// npm install @framers/agentos @framers/agentos-extensions-registry
// @framers/agentos-ext-pii-redaction
import { AgentOS } from '@framers/agentos';
import { createCuratedManifest } from '@framers/agentos-extensions-registry';
// 2. Manifest build resolves only what's installed.
const manifest = await createCuratedManifest({ tools: 'all' });
// → manifest.packs.length === 1 (only the PII redaction pack made it).
// 3. AgentOS activates the pack. Nothing loads and nothing is registered:
// services.has('agentos:nlp:ner-pipeline') is false.
// The PII guard reads the final reply only (its evaluateStreamingChunks
// option is false by default), so hold streamed output or the streamed
// text reaches the person before the redaction. guardrailOutputMode (and
// requiredGuardrails) exist from @framers/agentos 0.13.3; an older core
// ignores the option and streams.
const agent = new AgentOS();
await agent.initialize({ extensionManifest: manifest, guardrailOutputMode: 'hold' });
// 4. The first scan that needs the NER tier asks the registry for
// 'agentos:nlp:ner-pipeline', and the model loads then. Later scans and
// the pack's pii_scan and pii_redact tools share it.
调度机械(第1阶段相继消毒器、第2阶段平行分级器、最坏动作汇总、中流重置),见 护栏关于整个生命周期,参见 扩展加载 财务报告和审定财务报表 自动登录扩展。 。 。 .
安装
pnpm add @framers/agentos-extensions-registry
然后安装所需的任意扩展包(例如. @framers/agentos-ext-telegram) (中文(简体) ). 只有已安装的软件包会被装入 createCuratedManifest()。 。 。 .
主要出口
| 导出 | 说明 |
|---|---|
createCuratedManifest(options?) | 构建一个 ExtensionManifest 从已安装的扩展名。 接受频道/工具过滤器、机密和每个扩展覆盖. |
CHANNEL_CATALOG | 所有37个频道平台条目的静态目录(平台、软件包、SDK、需要的秘密) |
TOOL_CATALOG | 工具扩展名的静态目录( 网络搜索、 CLI 执行器、 图像搜索等) |
PROVIDER_CATALOG | 静态目录 27个模型提供者条目:25 LLM+2图像(提供者名称,模型,基础URL). 11个LLM供应商在核心中提供运行时间适配器;其余是用于发现和路线图等同的目录元数据. |
getAvailableExtensions() | 只返回在当前环境中可解析 npm 包的扩展 |
getAvailableChannels() | 只返回安装了软件包的频道适配器 |
SECRET_ENV_MAP | 映射出密钥( 例如 ). telegram.botToken)到环境可变名称 |
使用量
import { createCuratedManifest } from '@framers/agentos-extensions-registry';
// Load all installed extensions
const manifest = await createCuratedManifest({ channels: 'all', tools: 'all' });
// Or selectively enable specific channels
const manifest = await createCuratedManifest({
channels: ['telegram', 'discord', 'slack'],
tools: 'all',
secrets: {
'telegram.botToken': process.env.TELEGRAM_BOT_TOKEN,
'discord.botToken': process.env.DISCORD_BOT_TOKEN,
'slack.botToken': process.env.SLACK_BOT_TOKEN,
},
});
// Pass to AgentOS runtime
const agent = new AgentOS();
await agent.initialize({ extensionManifest: manifest });
createCuratedManifest(options?)
| 参数 | 类型 | 默认 | 说明 |
|---|---|---|---|
channels | string[] | 'all' | 'none' | 'all' | 要启用的频道平台 |
tools | string[] | 'all' | 'none' | 'all' | 启用哪个工具扩展 |
secrets | Record<string, string> | {} | 秘密地图( 倒回 vars ) |
basePriority | number | 0 | 所有扩展的基础优先级 |
overrides | Record<string, Override> | {} | 每段扩展覆盖 : { enabled?, priority?, options? } |
捐助和支助
| 指南 | 什麽 |
|---|---|
| 捐款 | 制定、承诺和拉动请求规则、审查线索、发放捐款许可证 |
| 发行指南 | 每日发布时间 UTC10: 17 如何将主发布到 npm |
| 代理指令 | 编码代理人的命令和公约 |
| 行为守则 | 社区标准 |
| 安全政策 | 私下报告脆弱性 |
| 支助 | 哪里去寻求帮助 |
许可证
Apache 2.0 — 见 自由主义。 。 。 .
