插件与扩展
DuoDuoCode 有三层扩展方式,按复杂度从低到高:
- 自定义工具 —— 写几行代码给 AI 加一个工具
- 插件 —— 打包分发一组能力
- MCP —— 接入标准协议的外部服务
方式一:自定义工具
在配置目录下创建 tool/ 或 tools/ 目录,放入 .js 或 .ts 文件即可。
目录位置见配置:
~/.config/duoduocode/
tool/
deploy.ts
notify.ts
文件内导出工具定义,每个导出对应一个工具。工具名为 <文件名>_<导出名>;若导出名为 default,则工具名就是文件名。
// ~/.config/duoduocode/tool/notify.ts
import { tool } from "@duoduo-ai/plugin"
export default tool({
description: "发送通知到指定渠道",
args: {
message: tool.schema.string(),
},
async execute(args) {
// ...
return "已发送"
},
})
自定义工具与内置工具一样参与权限校验。
方式二:插件
在配置文件中声明插件:
{
"plugin": [
"my-plugin",
["another-plugin", { "option": true }]
]
}
两种写法:
| 写法 | 说明 |
|---|---|
| 字符串 | 插件名或路径,无配置 |
| 二元数组 | [名称或路径, 配置对象] |
插件可以:
- 注册自定义工具
- 注册自定义 Agent
- 注入提示词与指令
- 注册终端插件(界面扩展)
方式三:MCP
需要接入标准协议的外部服务时,用 MCP 更合适。详见 MCP。
终端插件
终端界面(TUI)也支持插件扩展,在 tui.json 中配置:
{
"$schema": "https://www.dd322.cn/code/tui.json",
"plugin": ["my-tui-plugin"],
"plugin_enabled": true
}
| 字段 | 说明 |
|---|---|
plugin | 终端插件列表 |
plugin_enabled | 是否启用终端插件总开关 |
技能(Skill)
技能是另一类轻量扩展:它不改代码,只在匹配场景时把领域专用的指令与工作流注入给 AI。
duoduocode gear search <关键词> # 搜索技能
duoduocode gear list # 列出已安装
duoduocode gear install <id> # 安装
duoduocode gear create # 创建自己的技能
也可以在配置中追加技能目录:
{
"skills": {
"paths": ["./my-skills"]
}
}
AI 通过 skill 工具在合适的时机加载技能。