Plugins

Plugin 配置

理解 SDK Plugin 装配与 CLI Agent Binding 的边界

Plugin 配置

Agent SDK 只负责注册已经构造好的 Runtime Plugin,不定义 CLI 的 Manifest、安装器或 PluginFactory

await agent.plugins.register(new SkillPlugin());
await agent.plugins.unregister("skill");

SDK 宿主

嵌入式宿主直接通过 Plugin 构造参数传入运行配置:

import { ChatPlugin, TelegramChannel } from "@downcity/plugins/chat";

const chat = new ChatPlugin({
  queue: {
    max_concurrency: 4,
    merge_debounce_ms: 500,
  },
  channels: [
    new TelegramChannel({
      bot_token: process.env.TELEGRAM_BOT_TOKEN,
    }),
  ],
});

await agent.plugins.register(chat);

SDK 不读取 City 数据库,也不解释 Agent Plugin Binding。凭证存储、配置界面和 Runtime 组装由宿主负责。

CLI / City 宿主

CLI 使用独立控制面协议:

Plugin Catalog
  → Plugin Resource(完整 Item)
  → Agent Plugin Binding(enabled + config + resource_ids)
  → CLI Runtime Factory
  → Agent Runtime Plugin

内建与外部 Plugin 都使用标准 JSON Schema 描述 Binding 配置与可选 Resource Item。City 统一校验并保存;Agent 启动时,CLI 把 Binding 中的 Resource ID 解析为完整 Item,再构造 Runtime Plugin。

Chat Binding 示例:

{
  "config": {},
  "resource_ids": ["telegram-a1b2c3"]
}

这个 Factory 属于 CLI,不属于 @downcity/agent 的公共 API。

推荐理解方式

  • Agent SDK:接收并运行 Plugin 对象。
  • SDK 宿主:自行构造 Plugin 并拥有配置来源。
  • CLI / City:拥有 Catalog、安装、Binding、Schema 表单和 Runtime Factory。

相关文档