Plugins
Plugin 总览
理解 Downcity 里 plugin 的建模方式、本地 plugin 与托管 plugin 的区别,以及 plugin 能力如何组装
Plugin 总览
在当前 Downcity 里,plugin 就是能力扩展单元。
这意味着:
- 能力通过 plugin 暴露
- 运行时参与点通过 plugin 暴露
- 长生命周期的托管 runtime 模块,也统一建模成 plugin
如果你想看具体 built-in plugin 手册,请继续阅读 Agent Plugins Docs。
一句话理解
plugin 是 Downcity 里“一个能力边界”的统一承载单元。
它可以是:
- action-first
- hook-oriented
- system-oriented
- lifecycle-owned
- HTTP-exposing
两类最重要的 plugin
本地 plugin
这类 plugin 通常直接挂到一个本地 SDK Agent 上。
典型例子:
skillwebasrttsauth
托管 plugin
这类 plugin 属于 runtime 管理对象,会跟随目标 agent lifecycle 参与运行。
典型例子:
chattaskmemorycontactshell
ActionSchedule 由 Agent 自身管理,因此不会作为 plugin 出现在列表里。
正因为存在这类托管 plugin,旧的“分层对立”语言已经不再适合当前模型。
在本地 SDK 里怎么接入 plugin
import { Agent } from "@downcity/agent";
import { SkillPlugin, WebPlugin } from "@downcity/plugins";
const agent = new Agent({
id: "repo-helper",
path: "/path/to/project",
tools: {},
plugins: [new SkillPlugin(), new WebPlugin()],
});
const plugins = agent.plugins.list();关键点:
plugins是当前这个Agent私有的 registry- SDK 不会自动注册所有 built-in plugin
- 你可以直接使用
agent.plugins.list()、availability()、runAction() - prompt 阶段的 plugin system 文本,只来自这个 SDK
Agent已注册的 plugin
一个 plugin 可能包含什么
完整 plugin 可能包含:
configactionssetupusagehooksresolvessystemavailabilityhttplifecycle
不是每个 plugin 都需要把这些全部实现。
现在“plugin 启用”到底是什么意思
要分多层理解:
- agent 级:这个本地 SDK
Agent有没有注册该 plugin - runtime 级:这个托管 plugin 当前是启动还是停止
- plugin 自身级:
availability()当前是否判定可用 - project 级:
downcity.json.plugins.*里有什么运行参数
不要把它们混成一个概念。