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。