@tencent-ai/codebuddy-code 2.76.0-next.949c0a4.20260403 → 2.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/codebuddy-headless.js +88 -88
  3. package/dist/codebuddy.js +95 -95
  4. package/dist/web-ui/assets/{index-BC_Bh2yt.js → index-C25QEkQn.js} +107 -107
  5. package/dist/web-ui/docs/cn/cli/cli-reference.md +1 -0
  6. package/dist/web-ui/docs/cn/cli/env-vars.md +2 -0
  7. package/dist/web-ui/docs/cn/cli/http-api.md +117 -2
  8. package/dist/web-ui/docs/cn/cli/plugin-marketplaces.md +338 -61
  9. package/dist/web-ui/docs/cn/cli/plugins-reference.md +484 -420
  10. package/dist/web-ui/docs/cn/cli/plugins.md +333 -458
  11. package/dist/web-ui/docs/cn/cli/release-notes/README.md +5 -0
  12. package/dist/web-ui/docs/cn/cli/release-notes/v2.72.0.md +26 -0
  13. package/dist/web-ui/docs/cn/cli/release-notes/v2.73.0.md +21 -0
  14. package/dist/web-ui/docs/cn/cli/release-notes/v2.74.0.md +15 -0
  15. package/dist/web-ui/docs/cn/cli/release-notes/v2.75.0.md +6 -0
  16. package/dist/web-ui/docs/cn/cli/release-notes/v2.76.0.md +9 -0
  17. package/dist/web-ui/docs/cn/cli/slash-commands.md +3 -0
  18. package/dist/web-ui/docs/en/cli/cli-reference.md +1 -0
  19. package/dist/web-ui/docs/en/cli/release-notes/README.md +5 -0
  20. package/dist/web-ui/docs/en/cli/release-notes/v2.72.0.md +26 -0
  21. package/dist/web-ui/docs/en/cli/release-notes/v2.73.0.md +21 -0
  22. package/dist/web-ui/docs/en/cli/release-notes/v2.74.0.md +15 -0
  23. package/dist/web-ui/docs/en/cli/release-notes/v2.75.0.md +6 -0
  24. package/dist/web-ui/docs/en/cli/release-notes/v2.76.0.md +9 -0
  25. package/dist/web-ui/docs/en/cli/slash-commands.md +3 -0
  26. package/dist/web-ui/docs/search-index-en.json +1 -1
  27. package/dist/web-ui/docs/search-index-zh.json +1 -1
  28. package/dist/web-ui/docs/sidebar-en.json +1 -1
  29. package/dist/web-ui/docs/sidebar-zh.json +1 -1
  30. package/dist/web-ui/index.html +1 -1
  31. package/package.json +2 -3
  32. package/product.cloudhosted.json +2 -2
  33. package/product.internal.json +2 -2
  34. package/product.ioa.json +2 -2
  35. package/product.json +3 -2
  36. package/product.selfhosted.json +2 -2
@@ -1,427 +1,269 @@
1
- # CodeBuddy 插件系统
1
+ # 创建插件
2
2
 
3
- CodeBuddy Code 支持强大的插件系统,允许您扩展和定制 CLI 的功能。通过插件,您可以添加新的命令、技能和 Hooks,从而打造符合您工作流程的个性化开发环境。
3
+ 插件让你可以通过自定义技能、代理、钩子和 MCP 服务器来扩展 CodeBuddy Code 的功能。本指南涵盖如何创建你自己的插件。
4
4
 
5
- ## 核心概念
5
+ 要安装已有的插件,请参阅[插件市场](plugin-marketplaces.md)。完整的技术规范请参考[插件参考文档](plugins-reference.md)。
6
6
 
7
- ### 什么是插件?
7
+ ## 何时使用插件 vs 独立配置
8
8
 
9
- 插件是一个可复用的功能包,可以包含以下组件:
9
+ CodeBuddy Code 支持两种添加自定义技能、代理和钩子的方式:
10
10
 
11
- - **Commands(命令)**:用户可以手动触发的斜杠命令
12
- - **Skills(技能)**: AI 自动识别并调用的专业能力
13
- - **Hooks(钩子)**:在特定事件触发时自动执行的操作
11
+ | 方式 | 技能名称 | 适用场景 |
12
+ |------|----------|----------|
13
+ | **独立配置**(`.codebuddy/` 目录) | `/hello` | 个人工作流、项目特定定制、快速实验 |
14
+ | **插件**(含 `.codebuddy-plugin/plugin.json` 的目录) | `/plugin-name:hello` | 团队共享、社区分发、版本化发布、跨项目复用 |
14
15
 
15
- ### 什么是插件市场?
16
+ **使用独立配置的场景**:
16
17
 
17
- 插件市场是插件的发布和分发渠道,CodeBuddy 支持多种类型的插件市场:
18
+ - 为单个项目定制 CodeBuddy Code
19
+ - 配置是个人的,不需要共享
20
+ - 在打包为插件之前实验技能或钩子
21
+ - 需要简短的技能名称,如 `/hello` 或 `/deploy`
18
22
 
19
- - **本地目录市场**:从本地文件系统加载插件
20
- - **GitHub 仓库市场**:从 GitHub 仓库获取插件
21
- - **HTTP/HTTPS 市场**:从 HTTP(S) 服务器获取插件清单和插件包
23
+ **使用插件的场景**:
22
24
 
23
- ## 快速开始
24
-
25
- 有三种方式管理插件:**团队配置自动安装**、**交互式界面** 和 **命令行子命令**。
26
-
27
- ### 方式一:团队配置自动安装(推荐)
28
-
29
- 团队可以通过在项目的 `.codebuddy/settings.json` 中配置 `extraKnownMarketplaces` 和 `enabledPlugins`,实现插件的自动安装和启用。当团队成员启动 CodeBuddy 时,系统会自动安装配置中指定的插件市场和插件。
25
+ - 需要与团队或社区共享功能
26
+ - 需要在多个项目中使用相同的技能/代理
27
+ - 需要版本控制和便捷的更新机制
28
+ - 通过市场分发
29
+ - 可以接受命名空间化的技能名称如 `/my-plugin:hello`(命名空间防止插件间冲突)
30
30
 
31
- #### 配置示例
31
+ > **提示**:先在 `.codebuddy/` 中使用独立配置快速迭代,准备共享时再[转换为插件](#将现有配置转换为插件)。
32
32
 
33
- `.codebuddy/settings.json` 中添加以下配置:
34
-
35
- ```json
36
- {
37
- "extraKnownMarketplaces": {
38
- "team-marketplace": {
39
- "source": {
40
- "source": "github",
41
- "repo": "your-org/team-plugins-marketplace"
42
- }
43
- },
44
- "custom-marketplace": {
45
- "source": {
46
- "source": "git",
47
- "url": "https://git.example.com/plugins-marketplace"
48
- }
49
- }
50
- },
51
- "enabledPlugins": {
52
- "team-plugin-a@team-marketplace": true,
53
- "team-plugin-b@team-marketplace": true
54
- }
55
- }
56
- ```
57
-
58
- #### 配置说明
59
-
60
- - **`extraKnownMarketplaces`**:定义额外的插件市场
61
- - 键名为市场名称(如 `team-marketplace`)
62
- - `source.source`:市场类型,支持 `github`、`git` 和 `url`
63
- - `source.repo`: GitHub 仓库路径(格式:`owner/repo`,仅当 source 为 `github` 时)
64
- - `source.url`: Git 仓库 URL 或 HTTP(S) marketplace.json URL(仅当 source 为 `git` 或 `url` 时)
65
-
66
- - **`enabledPlugins`**:指定要启用的插件
67
- - 键名格式:`插件名@市场名`
68
- - 值为 `true` 表示启用,`false` 表示禁用
69
-
70
- #### 自动安装流程
71
-
72
- 1. **启动检测**: CodeBuddy 启动时会自动检测配置文件
73
- 2. **市场安装**:自动安装 `extraKnownMarketplaces` 中未安装的市场
74
- 3. **插件安装**:自动安装 `enabledPlugins` 中已启用但未安装的插件
75
- 4. **后台执行**:安装过程在后台异步执行,不阻塞启动流程
76
- 5. **日志记录**:安装过程会记录详细日志,可通过 `--debug` 查看
77
-
78
- #### 优势
79
-
80
- - **团队统一**:确保团队成员使用相同的插件配置
81
- - **自动化**:无需手动安装,提升开发效率
82
- - **版本控制**:配置文件可提交到 Git,便于团队协作
83
- - **灵活覆盖**:个人可在本地配置中覆盖团队配置
84
-
85
- ### 方式二:交互式界面
86
-
87
- 在 CodeBuddy 对话中输入 `/plugin`,会打开交互式插件管理界面。
88
-
89
- #### 打开管理界面
90
-
91
- ```bash
92
- /plugin
93
- ```
94
-
95
- #### 界面功能
96
-
97
- 交互式界面包含以下 6 个 tab:
33
+ ## 快速开始
98
34
 
99
- 1. **Discover(发现)** - 浏览所有可用插件,查看安装数、描述等信息
100
- - 实时搜索插件
101
- - 显示插件安装统计
102
- - 快速安装插件
35
+ 本快速开始将引导你创建一个包含自定义技能的插件。你将创建一个清单文件(定义插件的配置文件)、添加一个技能,并使用 `--plugin-dir` 参数在本地测试。
103
36
 
104
- 2. **Browse(浏览)** - 从已配置的市场中浏览和安装插件
105
- - 按市场分类浏览
106
- - 查看插件详情
107
- - 安装插件
37
+ ### 前提条件
108
38
 
109
- 3. **Installed(已安装)** - 管理已安装的插件
110
- - 查看已安装插件列表和状态
111
- - 启用/禁用插件
112
- - 卸载插件
113
- - 查看插件详细信息
39
+ - 已[安装并认证](quickstart.md) CodeBuddy Code
114
40
 
115
- 4. **Marketplaces(市场)** - 管理插件市场
116
- - 查看已配置的市场列表
117
- - 更新市场信息
118
- - 移除市场
41
+ > 如果看不到 `/plugin` 命令,请将 CodeBuddy Code 更新到最新版本。参见[故障排除](troubleshooting.md)获取升级说明。
119
42
 
120
- 5. **Add Marketplace(添加市场)** - 添加新的插件市场源
121
- - 支持本地路径、GitHub 仓库、Git URL 和 HTTP URL
122
- - 自动识别市场源类型
123
- - 设置市场显示名称
43
+ ### 创建你的第一个插件
124
44
 
125
- 6. **Errors(错误)** - 查看插件加载和操作过程中发生的错误
126
- - 详细的错误信息和错误类型
127
- - 错误发生时间和相关上下文
128
- - 帮助诊断和解决问题
45
+ #### 1 步:创建插件目录
129
46
 
130
- #### 交互式命令示例
47
+ 每个插件都有自己的目录,包含清单文件和你的技能、代理或钩子。现在创建一个:
131
48
 
132
49
  ```bash
133
- /plugin # 打开管理界面
134
- /plugin install my-plugin # 安装插件
135
- /plugin install my-plugin@marketplace # 从指定市场安装
136
- /plugin enable my-plugin # 启用禁用的插件
137
- /plugin disable my-plugin # 禁用启用的插件
138
- /plugin uninstall my-plugin # 卸载插件
139
- /plugin marketplace add <source> # 添加市场
140
- /plugin marketplace list # 列出市场
141
- /plugin marketplace update <name> # 更新市场
142
- /plugin marketplace remove <name> # 移除市场
50
+ mkdir my-first-plugin
143
51
  ```
144
52
 
145
- ### 方式三:命令行子命令
53
+ #### 第 2 步:创建插件清单
146
54
 
147
- 在终端中使用 `codebuddy plugin` 命令进行管理。
55
+ 清单文件位于 `.codebuddy-plugin/plugin.json`,定义插件的身份信息:名称、描述和版本。CodeBuddy Code 使用这些元数据在插件管理器中展示你的插件。
148
56
 
149
- #### 插件操作
57
+ 在插件目录内创建 `.codebuddy-plugin` 目录:
150
58
 
151
59
  ```bash
152
- # 安装插件
153
- codebuddy plugin install <plugin> # 从默认市场安装
154
- codebuddy plugin install <plugin>@<marketplace> # 从指定市场安装
155
- codebuddy plugin i <plugin> # 简写形式
156
-
157
- # 启用和禁用插件
158
- codebuddy plugin enable <plugin> # 启用插件
159
- codebuddy plugin disable <plugin> # 禁用插件
160
-
161
- # 卸载插件
162
- codebuddy plugin uninstall <plugin> # 卸载插件
163
- codebuddy plugin remove <plugin> # 别名形式
164
-
165
- # 验证插件或市场清单
166
- codebuddy plugin validate <path> # 验证本地插件或市场
60
+ mkdir my-first-plugin/.codebuddy-plugin
167
61
  ```
168
62
 
169
- #### 市场管理
63
+ 然后创建 `my-first-plugin/.codebuddy-plugin/plugin.json`,内容如下:
170
64
 
171
- ```bash
172
- # 添加市场
173
- codebuddy plugin marketplace add <source>
174
- codebuddy plugin marketplace add <source> -n <name> # 指定市场名称
175
-
176
- # 列出市场
177
- codebuddy plugin marketplace list
178
-
179
- # 更新市场
180
- codebuddy plugin marketplace update <name>
181
-
182
- # 移除市场
183
- codebuddy plugin marketplace remove <name>
184
- codebuddy plugin marketplace rm <name> # 别名形式
65
+ ```json
66
+ {
67
+ "name": "my-first-plugin",
68
+ "description": "A greeting plugin to learn the basics",
69
+ "version": "1.0.0",
70
+ "author": {
71
+ "name": "Your Name"
72
+ }
73
+ }
185
74
  ```
186
75
 
187
- ## 插件管理
76
+ | 字段 | 用途 |
77
+ |------|------|
78
+ | `name` | 唯一标识符和技能命名空间。技能以此为前缀(如 `/my-first-plugin:hello`) |
79
+ | `description` | 在插件管理器中浏览或安装插件时显示 |
80
+ | `version` | 使用[语义化版本](plugins-reference.md#版本管理)跟踪发布 |
81
+ | `author` | 可选。用于归属标注 |
188
82
 
189
- ### 添加插件市场
83
+ 更多字段如 `homepage`、`repository` 和 `license`,参见[完整清单 Schema](plugins-reference.md)。
190
84
 
191
- #### 使用交互式界面
85
+ #### 第 3 步:添加技能
192
86
 
193
- 1. 输入 `/plugin`
194
- 2. 选择 "3. Add marketplace"
195
- 3. 输入市场源地址
196
- 4. 等待自动识别市场类型和加载插件清单
87
+ 技能放在 `skills/` 目录中。每个技能是一个包含 `SKILL.md` 文件的文件夹。文件夹名称成为技能名称,并以插件命名空间为前缀(在名为 `my-first-plugin` 的插件中,`hello/` 创建 `/my-first-plugin:hello`)。
197
88
 
198
- #### 使用子命令
89
+ 在插件目录中创建技能目录:
199
90
 
200
91
  ```bash
201
- # 添加 GitHub 仓库市场
202
- codebuddy plugin marketplace add https://github.com/username/plugin-repo
203
-
204
- # 添加市场并指定显示名称
205
- codebuddy plugin marketplace add https://github.com/username/plugin-repo -n my-marketplace
206
-
207
- # 添加本地目录市场
208
- codebuddy plugin marketplace add /path/to/local/plugins
209
-
210
- # 添加 HTTP 市场
211
- codebuddy plugin marketplace add https://example.com/plugins
92
+ mkdir -p my-first-plugin/skills/hello
212
93
  ```
213
94
 
214
- **参数说明**:
215
- - `<source>`:市场源地址(本地路径、GitHub URL 或 HTTP(S) URL)
216
- - `-n, --name <name>`:可选,为市场指定显示名称
217
-
218
- ### 安装插件
95
+ 然后创建 `my-first-plugin/skills/hello/SKILL.md`,内容如下:
219
96
 
220
- #### 使用交互式界面
221
-
222
- 1. 输入 `/plugin`
223
- 2. 选择 "1. Browse and install plugins"
224
- 3. 选择插件市场
225
- 4. 浏览可用插件并选择安装
226
-
227
- #### 使用子命令
228
-
229
- ```bash
230
- # 从默认市场安装
231
- codebuddy plugin install my-plugin
232
-
233
- # 从指定市场安装
234
- codebuddy plugin install my-plugin@marketplace-name
97
+ ```markdown
235
98
 
236
- # 使用别名
237
- codebuddy plugin i my-plugin
99
+ Greet the user warmly and ask how you can help them today.
238
100
  ```
239
101
 
240
- ### 启用和禁用插件
102
+ #### 第 4 步:测试你的插件
241
103
 
242
- #### 使用交互式界面
243
-
244
- 1. 输入 `/plugin`
245
- 2. 选择 "2. Manage plugins"
246
- 3. 选择要启用或禁用的插件
247
-
248
- #### 使用子命令
104
+ 使用 `--plugin-dir` 参数运行 CodeBuddy Code 以加载你的插件:
249
105
 
250
106
  ```bash
251
- # 启用插件
252
- codebuddy plugin enable my-plugin
253
-
254
- # 禁用插件
255
- codebuddy plugin disable my-plugin
107
+ codebuddy --plugin-dir ./my-first-plugin
256
108
  ```
257
109
 
258
- **注意**:启用/禁用插件后需要重启 CodeBuddy 才能生效。
259
-
260
- ### 卸载插件
110
+ 启动后,尝试你的新技能:
261
111
 
262
- #### 使用交互式界面
112
+ ```
113
+ /my-first-plugin:hello
114
+ ```
263
115
 
264
- 1. 输入 `/plugin`
265
- 2. 选择 "2. Manage plugins"
266
- 3. 选择要卸载的插件,确认卸载
116
+ 你会看到 CodeBuddy 回复一个问候语。运行 `/help` 可以看到你的技能列在插件命名空间下。
267
117
 
268
- #### 使用子命令
118
+ > **为什么要命名空间?** 插件技能始终带有命名空间(如 `/my-first-plugin:hello`),以防止多个插件中同名技能产生冲突。要更改命名空间前缀,请更新 `plugin.json` 中的 `name` 字段。
269
119
 
270
- ```bash
271
- # 卸载插件
272
- codebuddy plugin uninstall my-plugin
120
+ #### 第 5 步:添加技能参数
273
121
 
274
- # 使用别名
275
- codebuddy plugin remove my-plugin
276
- ```
122
+ 通过接受用户输入使技能更加动态。`$ARGUMENTS` 占位符捕获用户在技能名称后提供的任何文本。
277
123
 
278
- ### 管理插件市场
124
+ 更新你的 `SKILL.md` 文件:
279
125
 
280
- #### 列出市场
126
+ ```markdown
127
+ ---
128
+ description: Greet the user with a personalized message
129
+ ---
281
130
 
282
- 使用交互式界面:
283
- 1. 输入 `/plugin`
284
- 2. 选择 "4. Manage marketplaces"
131
+ # Hello Skill
285
132
 
286
- 使用子命令:
287
- ```bash
288
- codebuddy plugin marketplace list
133
+ Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.
289
134
  ```
290
135
 
291
- #### 更新市场
292
-
293
- 使用交互式界面:
294
- 1. 输入 `/plugin`
295
- 2. 选择 "4. Manage marketplaces"
296
- 3. 选择要更新的市场
136
+ 运行 `/reload-plugins` 以获取更改,然后用你的名字尝试技能:
297
137
 
298
- 使用子命令:
299
- ```bash
300
- codebuddy plugin marketplace update my-marketplace
138
+ ```
139
+ /my-first-plugin:hello Alex
301
140
  ```
302
141
 
303
- #### 移除市场
142
+ CodeBuddy 会按名字问候你。更多关于向技能传递参数的信息,参见 [Skills 文档](skills.md)。
304
143
 
305
- 使用交互式界面:
306
- 1. 输入 `/plugin`
307
- 2. 选择 "4. Manage marketplaces"
308
- 3. 选择要移除的市场,确认移除
144
+ ---
309
145
 
310
- 使用子命令:
311
- ```bash
312
- codebuddy plugin marketplace remove my-marketplace
313
- codebuddy plugin marketplace rm my-marketplace
314
- ```
146
+ 你已成功创建并测试了一个包含以下关键组件的插件:
315
147
 
316
- ### 验证插件或市场清单
148
+ - **插件清单**(`.codebuddy-plugin/plugin.json`):描述插件的元数据
149
+ - **技能目录**(`skills/`):包含你的自定义技能
150
+ - **技能参数**(`$ARGUMENTS`):捕获用户输入实现动态行为
317
151
 
318
- ```bash
319
- # 验证插件清单格式
320
- codebuddy plugin validate /path/to/plugin
152
+ > `--plugin-dir` 参数适用于开发和测试。当你准备与他人共享插件时,参见[插件市场](plugin-marketplaces.md)。
321
153
 
322
- # 验证市场清单格式
323
- codebuddy plugin validate /path/to/marketplace
154
+ ## 插件结构概述
324
155
 
325
- # 验证来自 GitHub 的插件清单
326
- codebuddy plugin validate https://github.com/username/plugin-repo
327
- ```
156
+ 你已经创建了一个包含技能的插件,但插件还可以包含更多内容:自定义代理、钩子、MCP 服务器和 LSP 服务器。
328
157
 
329
- 验证命令会检查 `plugin.json` 或 `marketplace.json` 的格式和完整性。
158
+ > **常见错误**:不要将 `commands/`、`agents/`、`skills/` 或 `hooks/` 放在 `.codebuddy-plugin/` 目录内。只有 `plugin.json` 放在 `.codebuddy-plugin/` 内。所有其他目录必须在插件根目录层级。
330
159
 
331
- ## 插件结构
160
+ | 目录 | 位置 | 用途 |
161
+ |------|------|------|
162
+ | `.codebuddy-plugin/` | 插件根目录 | 包含 `plugin.json` 清单 |
163
+ | `commands/` | 插件根目录 | Markdown 格式的斜杠命令 |
164
+ | `agents/` | 插件根目录 | 自定义代理定义 |
165
+ | `skills/` | 插件根目录 | 包含 `SKILL.md` 文件的代理技能 |
166
+ | `hooks/` | 插件根目录 | `hooks.json` 事件处理器 |
167
+ | `.mcp.json` | 插件根目录 | MCP 服务器配置 |
168
+ | `.lsp.json` | 插件根目录 | LSP 服务器配置(代码智能) |
169
+ | `bin/` | 插件根目录 | 插件启用时添加到 Bash 工具 `PATH` 的可执行文件 |
170
+ | `settings.json` | 插件根目录 | 插件启用时应用的默认[设置](settings.md) |
332
171
 
333
- ### 标准插件目录结构
172
+ **示例完整结构**:
334
173
 
335
174
  ```
336
175
  my-plugin/
337
- ├── .codebuddy-plugin/ # 元数据目录(必需)
338
- │ └── plugin.json # 插件清单文件
339
- ├── commands/ # 命令目录(可选)
176
+ ├── .codebuddy-plugin/ # 元数据目录(必需)
177
+ │ └── plugin.json # 插件清单文件
178
+ ├── commands/ # 命令目录(可选)
340
179
  │ └── example.md
341
- ├── agents/ # 代理目录(可选)
180
+ ├── agents/ # 代理目录(可选)
342
181
  │ └── example.md
343
- ├── skills/ # 技能目录(可选)
344
- │ └── example/
182
+ ├── skills/ # 技能目录(可选)
183
+ │ └── code-review/
345
184
  │ └── SKILL.md
346
- ├── hooks/ # Hooks 目录(可选)
185
+ ├── hooks/ # Hooks 目录(可选)
347
186
  │ └── hooks.json
348
- ├── .mcp.json # MCP 配置文件(可选)
349
- └── .lsp.json # LSP 配置文件(可选)
187
+ ├── bin/ # 可执行文件目录(可选)
188
+ └── my-tool
189
+ ├── .mcp.json # MCP 配置文件(可选)
190
+ ├── .lsp.json # LSP 配置文件(可选)
191
+ └── settings.json # 默认设置文件(可选)
350
192
  ```
351
193
 
352
- ### plugin.json 格式
194
+ ## 开发更复杂的插件
353
195
 
354
- 插件清单文件定义插件的元数据和包含的组件,位于 `.codebuddy-plugin/plugin.json`:
196
+ 掌握了基础插件后,你可以创建更复杂的扩展。
355
197
 
356
- ```json
357
- {
358
- "name": "my-plugin",
359
- "version": "1.0.0",
360
- "description": "插件描述",
361
- "author": {
362
- "name": "作者名称",
363
- "email": "author@example.com"
364
- },
365
- "homepage": "https://github.com/username/my-plugin",
366
- "repository": "https://github.com/username/my-plugin",
367
- "keywords": ["example"],
368
- "category": "开发工具",
369
- "commands": [],
370
- "agents": [],
371
- "skills": [],
372
- "hooks": "./hooks/hooks.json"
373
- }
374
- ```
198
+ ### 添加技能
375
199
 
376
- ### Commands(命令)
200
+ 插件可以包含[代理技能](skills.md)来扩展 CodeBuddy 的能力。技能是模型调用的:CodeBuddy 会根据任务上下文自动使用它们。
377
201
 
378
- 插件可以提供自定义斜杠命令,用户可以手动触发。命令定义为 Markdown 文件。
202
+ 在插件根目录添加 `skills/` 目录,其中包含带有 `SKILL.md` 文件的技能文件夹:
379
203
 
380
- **示例**: `commands/example.md`
204
+ ```
205
+ my-plugin/
206
+ ├── .codebuddy-plugin/
207
+ │ └── plugin.json
208
+ └── skills/
209
+ └── code-review/
210
+ └── SKILL.md
211
+ ```
381
212
 
382
- ```markdown
213
+ 每个 `SKILL.md` 需要包含 `name` 和 `description` 字段的 frontmatter,后跟指令:
383
214
 
384
- 这是一个示例命令。当用户输入 /my-plugin:example 时会执行此命令。
215
+ ```markdown
216
+ ---
217
+ name: code-review
218
+ description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.
219
+ ---
385
220
 
386
- 参数: $1
221
+ When reviewing code, check for:
222
+ 1. Code organization and structure
223
+ 2. Error handling
224
+ 3. Security concerns
225
+ 4. Test coverage
387
226
  ```
388
227
 
389
- 命令会以 `/plugin-name:command-name` 的格式注册。
390
-
391
- 详细说明请参考: [Slash Commands 文档](slash-commands.md)
228
+ 安装插件后,运行 `/reload-plugins` 加载技能。完整的技能编写指南,包括渐进式披露和工具限制,参见[代理技能](skills.md)。
392
229
 
393
- ### Skills(技能)
230
+ ### 添加命令
394
231
 
395
- 技能是 AI 可以自动识别和调用的专业能力模板。
232
+ 插件可以提供自定义斜杠命令,用户可以手动触发。命令定义为 Markdown 文件。
396
233
 
397
- **示例**: `skills/SKILL.md`
234
+ **示例**:`commands/example.md`
398
235
 
399
236
  ```markdown
400
237
  ---
401
- description: "技能描述"
238
+ description: "示例命令描述"
239
+ argument-hint: "[参数]"
402
240
  ---
403
241
 
404
- 技能的详细说明和使用场景...
242
+ 这是一个示例命令。当用户输入 /my-plugin:example 时会执行此命令。
243
+
244
+ 参数:$ARGUMENTS
405
245
  ```
406
246
 
407
- 详细说明请参考: [Skills 文档](skills.md)
247
+ 命令会以 `/plugin-name:command-name` 的格式注册。
408
248
 
409
- ### Hooks(钩子)
249
+ 详细说明请参考 [Slash Commands 文档](slash-commands.md)。
410
250
 
411
- Hooks 允许在特定事件发生时自动执行操作。
251
+ ### 添加 Hooks
412
252
 
413
- **示例**: `hooks/hooks.json`
253
+ Hooks 允许在特定事件发生时自动执行操作。命令通过标准输入接收 hook 输入的 JSON 数据,可以使用 `jq` 提取字段。
254
+
255
+ **示例**:`hooks/hooks.json`
414
256
 
415
257
  ```json
416
258
  {
417
259
  "hooks": {
418
- "user-prompt-submit-hook": [
260
+ "PostToolUse": [
419
261
  {
262
+ "matcher": "Write|Edit",
420
263
  "hooks": [
421
264
  {
422
265
  "type": "command",
423
- "command": "echo 'User submitted: $INPUT'",
424
- "timeout": 5000
266
+ "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix"
425
267
  }
426
268
  ]
427
269
  }
@@ -430,21 +272,13 @@ Hooks 允许在特定事件发生时自动执行操作。
430
272
  }
431
273
  ```
432
274
 
433
- 详细说明请参考: [Hooks 文档](hooks.md)
434
-
435
- ### LSP(Language Server Protocol)
436
-
437
- LSP 插件为 AI 提供实时代码智能功能,使其能够理解代码结构、类型定义、函数签名等信息。
275
+ 详细说明请参考 [Hooks 文档](hooks.md)
438
276
 
439
- #### 使用建议
277
+ ### 添加 LSP 服务器
440
278
 
441
- 对于常见语言(如 TypeScript、PythonRust 等),建议直接从官方插件市场安装预构建的 LSP 插件。仅在需要支持尚未覆盖的语言时,才需要创建自定义 LSP 插件。
279
+ > 对于常见语言如 TypeScript、PythonRust,建议直接从官方插件市场安装预构建的 LSP 插件。仅当需要支持尚未覆盖的语言时才创建自定义 LSP 插件。
442
280
 
443
- #### 配置 LSP 服务器
444
-
445
- 通过在插件根目录添加 `.lsp.json` 文件来配置 LSP 服务器:
446
-
447
- **示例**: `.lsp.json`
281
+ LSP(Language Server Protocol)插件为 CodeBuddy 提供实时代码智能。如果需要支持没有官方 LSP 插件的语言,可以在插件中添加 `.lsp.json` 文件:
448
282
 
449
283
  ```json
450
284
  {
@@ -458,12 +292,7 @@ LSP 插件为 AI 提供实时代码智能功能,使其能够理解代码结构
458
292
  }
459
293
  ```
460
294
 
461
- #### 配置字段说明
462
-
463
- - **语言标识符** (如 `"go"`):定义 LSP 服务器支持的语言
464
- - `command`:LSP 服务器可执行文件的命令名称
465
- - `args`:传递给命令的参数数组
466
- - `extensionToLanguage`:文件扩展名到语言标识符的映射
295
+ 安装插件的用户必须在其机器上预装语言服务器二进制文件。
467
296
 
468
297
  #### 多语言配置示例
469
298
 
@@ -488,105 +317,190 @@ LSP 插件为 AI 提供实时代码智能功能,使其能够理解代码结构
488
317
 
489
318
  #### 安装要求
490
319
 
491
- 用户在安装包含 LSP 配置的插件时,必须在其系统上预先安装相应的语言服务器二进制文件。例如:
320
+ 用户在安装包含 LSP 配置的插件时,必须在其系统上预先安装相应的语言服务器二进制文件:
492
321
 
493
- - **Go**: 需要安装 `gopls` (`go install golang.org/x/tools/gopls@latest`)
494
- - **Python**: 需要安装 `python-lsp-server` (`pip install python-lsp-server`)
495
- - **Rust**: 需要安装 `rust-analyzer` (`rustup component add rust-analyzer`)
322
+ - **Go**: `go install golang.org/x/tools/gopls@latest`
323
+ - **Python**: `pip install python-lsp-server`
324
+ - **Rust**: `rustup component add rust-analyzer`
496
325
 
497
- #### 工作原理
326
+ ### 携带默认设置
498
327
 
499
- 1. CodeBuddy 启动时读取 `.lsp.json` 配置
500
- 2. 根据文件扩展名自动启动对应的 LSP 服务器
501
- 3. AI 通过 LSP 协议获取代码智能信息
502
- 4. 提供更准确的代码建议和修改
328
+ 插件可以在根目录包含 `settings.json` 文件,在插件启用时应用默认配置。目前仅支持 `agent` 键。
503
329
 
504
- #### 最佳实践
330
+ 设置 `agent` 会将插件的一个[自定义代理](sub-agents.md)激活为主线程,应用其系统提示词、工具限制和模型。这让插件在启用时可以改变 CodeBuddy Code 的默认行为。
505
331
 
506
- 1. **提供安装说明**:在插件的 README 中明确说明需要安装的语言服务器
507
- 2. **版本兼容性**:说明支持的语言服务器版本范围
508
- 3. **使用官方插件**:优先使用官方维护的 LSP 插件,避免重复工作
509
- 4. **测试充分**:确保 LSP 配置在不同操作系统上都能正常工作
332
+ ```json
333
+ {
334
+ "agent": "security-reviewer"
335
+ }
336
+ ```
510
337
 
511
- ## 插件市场类型
338
+ 此示例激活插件 `agents/` 目录中定义的 `security-reviewer` 代理。`settings.json` 中的设置优先于 `plugin.json` 中声明的 `settings`。未知键会被静默忽略。
512
339
 
513
- ### GitHub 市场
340
+ ### 本地测试插件
514
341
 
515
- GitHub 仓库发布和获取插件。
342
+ 使用 `--plugin-dir` 参数在开发过程中测试插件。这会直接加载你的插件,无需安装。
516
343
 
517
- **仓库结构**:
344
+ ```bash
345
+ codebuddy --plugin-dir ./my-plugin
346
+ ```
347
+
348
+ 当 `--plugin-dir` 插件与已安装的市场插件同名时,本地副本在该会话中优先使用。这让你可以测试已安装插件的改动而无需卸载它。通过托管设置强制启用的市场插件是唯一的例外,不能被覆盖。
349
+
350
+ 在修改插件时,运行 `/reload-plugins` 无需重启即可获取更新。这会重新加载插件、技能、代理、钩子、插件 MCP 服务器和插件 LSP 服务器。测试你的插件组件:
351
+
352
+ - 使用 `/plugin-name:skill-name` 尝试技能
353
+ - 在 `/agents` 中检查代理是否出现
354
+ - 验证钩子是否按预期工作
355
+
356
+ > 可以通过多次指定参数同时加载多个插件:
357
+ >
358
+ > ```bash
359
+ > codebuddy --plugin-dir ./plugin-one --plugin-dir ./plugin-two
360
+ > ```
361
+
362
+ ### 调试插件问题
518
363
 
364
+ 如果插件没有按预期工作:
365
+
366
+ 1. **检查结构**:确保目录在插件根目录,而不是在 `.codebuddy-plugin/` 内
367
+ 2. **单独测试组件**:分别检查每个命令、代理和钩子
368
+ 3. **使用调试模式**:用 `--debug` 参数启动 CodeBuddy 查看详细日志
369
+
370
+ ## plugin.json 清单格式
371
+
372
+ 插件清单文件定义插件的元数据和包含的组件,位于 `.codebuddy-plugin/plugin.json`:
373
+
374
+ ```json
375
+ {
376
+ "name": "my-plugin",
377
+ "version": "1.0.0",
378
+ "description": "插件描述",
379
+ "author": {
380
+ "name": "作者名称",
381
+ "email": "author@example.com"
382
+ },
383
+ "homepage": "https://github.com/username/my-plugin",
384
+ "repository": "https://github.com/username/my-plugin",
385
+ "keywords": ["example"],
386
+ "category": "开发工具",
387
+ "commands": [],
388
+ "agents": [],
389
+ "skills": [],
390
+ "hooks": "./hooks/hooks.json"
391
+ }
519
392
  ```
520
- plugin-repo/
521
- ├── .codebuddy-plugin/
522
- │ └── marketplace.json # 市场清单
523
- └── plugins/
524
- ├── plugin1/
525
- │ ├── .codebuddy-plugin/
526
- │ │ └── plugin.json
527
- │ └── ...
528
- └── plugin2/
529
- ├── .codebuddy-plugin/
530
- │ └── plugin.json
531
- └── ...
393
+
394
+ 完整的清单 Schema 说明参见[插件参考文档](plugins-reference.md)。
395
+
396
+ ## 共享你的插件
397
+
398
+ 当插件准备好共享时:
399
+
400
+ 1. **添加文档**:包含一个 `README.md`,说明安装和使用方式
401
+ 2. **版本管理**:在 `plugin.json` 中使用[语义化版本](plugins-reference.md#版本管理)
402
+ 3. **创建或使用市场**:通过[插件市场](plugin-marketplaces.md)分发
403
+ 4. **与他人测试**:在更广泛分发之前,让团队成员测试插件
404
+
405
+ 插件上线到市场后,其他人可以按照[插件市场](plugin-marketplaces.md)中的说明安装使用。
406
+
407
+ ## 将现有配置转换为插件
408
+
409
+ 如果你已经在 `.codebuddy/` 目录中有技能或钩子,可以将它们转换为插件以便于共享和分发。
410
+
411
+ ### 迁移步骤
412
+
413
+ #### 第 1 步:创建插件结构
414
+
415
+ 创建新的插件目录:
416
+
417
+ ```bash
418
+ mkdir -p my-plugin/.codebuddy-plugin
532
419
  ```
533
420
 
534
- **marketplace.json** 格式:
421
+ 创建清单文件 `my-plugin/.codebuddy-plugin/plugin.json`:
535
422
 
536
423
  ```json
537
424
  {
538
- "name": "My Plugin Marketplace",
539
- "plugins": [
540
- {
541
- "name": "plugin1",
542
- "source": "plugins/plugin1",
543
- "description": "Plugin 1 description"
544
- },
545
- {
546
- "name": "plugin2",
547
- "source": "plugins/plugin2",
548
- "description": "Plugin 2 description"
549
- }
550
- ]
425
+ "name": "my-plugin",
426
+ "description": "Migrated from standalone configuration",
427
+ "version": "1.0.0"
551
428
  }
552
429
  ```
553
430
 
554
- ### HTTP 市场
431
+ #### 2 步:复制现有文件
555
432
 
556
- 通过 HTTP(S) 服务器提供插件。
433
+ 将现有配置复制到插件目录:
557
434
 
558
- **服务器要求**:
435
+ ```bash
436
+ # 复制命令
437
+ cp -r .codebuddy/commands my-plugin/
559
438
 
560
- - 提供 `/marketplace.json` - 市场清单
561
- - 提供 `/plugins/<plugin-name>/plugin.json` - 插件清单
562
- - 提供插件文件下载
439
+ # 复制代理(如有)
440
+ cp -r .codebuddy/agents my-plugin/
563
441
 
564
- ### 本地目录市场
442
+ # 复制技能(如有)
443
+ cp -r .codebuddy/skills my-plugin/
444
+ ```
565
445
 
566
- 从本地文件系统加载插件,适用于开发和测试。
446
+ #### 第 3 步:迁移 Hooks
567
447
 
568
- **目录结构**:
448
+ 如果你的设置中有 hooks,创建 hooks 目录:
569
449
 
450
+ ```bash
451
+ mkdir my-plugin/hooks
570
452
  ```
571
- local-plugins/
572
- ├── .codebuddy-plugin/
573
- │ └── marketplace.json
574
- └── plugins/
575
- └── my-plugin/
576
- ├── .codebuddy-plugin/
577
- │ └── plugin.json
578
- └── ...
453
+
454
+ 创建 `my-plugin/hooks/hooks.json`,将 hooks 配置放入其中。从 `.codebuddy/settings.json` 或 `settings.local.json` 中复制 `hooks` 对象,格式是一样的。命令通过标准输入接收 hook 输入的 JSON 数据,可以使用 `jq` 提取字段:
455
+
456
+ ```json
457
+ {
458
+ "hooks": {
459
+ "PostToolUse": [
460
+ {
461
+ "matcher": "Write|Edit",
462
+ "hooks": [
463
+ {
464
+ "type": "command",
465
+ "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix"
466
+ }
467
+ ]
468
+ }
469
+ ]
470
+ }
471
+ }
579
472
  ```
580
473
 
474
+ #### 第 4 步:测试迁移后的插件
475
+
476
+ 加载插件验证一切正常:
477
+
478
+ ```bash
479
+ codebuddy --plugin-dir ./my-plugin
480
+ ```
481
+
482
+ 测试每个组件:运行你的命令、在 `/agents` 中检查代理、验证钩子正确触发。
483
+
484
+ ### 迁移前后对比
485
+
486
+ | 独立配置(`.codebuddy/`) | 插件 |
487
+ |---------------------------|------|
488
+ | 仅在一个项目中可用 | 可通过市场共享 |
489
+ | 文件在 `.codebuddy/commands/` | 文件在 `plugin-name/commands/` |
490
+ | Hooks 在 `settings.json` 中 | Hooks 在 `hooks/hooks.json` 中 |
491
+ | 需要手动复制来共享 | 使用 `/plugin install` 安装 |
492
+
493
+ > 迁移后,可以删除 `.codebuddy/` 中的原始文件以避免重复。加载时插件版本会优先使用。
494
+
581
495
  ## 最佳实践
582
496
 
583
497
  ### 插件开发建议
584
498
 
585
- 1. **遵循命名规范**:使用清晰、描述性的插件名称
499
+ 1. **遵循命名规范**:使用清晰、描述性的插件名称(kebab-case,无空格)
586
500
  2. **提供完整元数据**:在 `plugin.json` 中提供详细的描述和作者信息
587
501
  3. **版本管理**:使用语义化版本号(Semantic Versioning)
588
502
  4. **文档完善**:为每个命令和技能提供清晰的描述
589
- 5. **测试充分**:在本地市场中测试插件后再发布
503
+ 5. **测试充分**:使用 `--plugin-dir` 在本地测试插件后再发布
590
504
 
591
505
  ### 安全注意事项
592
506
 
@@ -594,49 +508,18 @@ local-plugins/
594
508
  2. **审查插件代码**:安装前检查插件的命令和 Hooks
595
509
  3. **使用权限控制**:通过 CodeBuddy 的权限系统限制插件访问
596
510
 
597
- ### 插件发布流程
598
-
599
- 1. 创建插件目录和文件
600
- 2. 编写 `plugin.json`
601
- 3. 在本地市场测试插件
602
- 4. 创建 GitHub 仓库或 HTTP 服务器
603
- 5. 添加 `marketplace.json`
604
- 6. 分享市场地址给用户
605
-
606
511
  ## 故障排除
607
512
 
608
- ### 市场未加载
609
-
610
- **问题**:无法添加市场或看不到来自它的插件
611
-
612
- **解决方案**:
613
-
614
- * 验证市场 URL 是否可访问
615
- * 检查 `.codebuddy-plugin/marketplace.json` 是否存在于指定路径
616
- * 使用 `codebuddy plugin validate` 确保 JSON 语法有效
617
- * 对于私有存储库,确认您有访问权限
618
-
619
- #### 插件安装失败
620
-
621
- **问题**:市场出现但插件安装失败
622
-
623
- **解决方案**:
624
-
625
- * 验证插件源 URL 是否可访问
626
- * 检查插件目录是否包含所需文件
627
- * 对于 GitHub 来源,确保存储库是公开的或您有访问权限
628
- * 通过手动克隆/下载来测试插件来源
629
-
630
513
  ### 插件未加载
631
514
 
632
515
  **问题**:插件已安装但不工作
633
516
 
634
517
  **解决方案**:
635
518
 
636
- * 确认插件已启用:`/plugin` "3. Installed"
637
- * 检查 `plugin.json` 格式是否正确
638
- * 重启 CodeBuddy 以加载新插件
639
- * 使用 `--debug` 模式查看加载日志
519
+ - 确认插件已启用:运行 `/plugin` 进入 "Installed" 标签页查看
520
+ - 检查 `plugin.json` 格式是否正确
521
+ - 运行 `/reload-plugins` 重新加载插件
522
+ - 使用 `--debug` 模式查看加载日志
640
523
 
641
524
  ### 命令不可用
642
525
 
@@ -644,46 +527,38 @@ local-plugins/
644
527
 
645
528
  **解决方案**:
646
529
 
647
- * 确认命令路径在 `plugin.json` 中正确配置
648
- * 检查命令文件是否存在
649
- * 验证命令文件格式符合 Markdown 规范
650
-
651
- ### 市场连接失败
652
-
653
- **问题**:无法连接到市场或获取插件列表
654
-
655
- **解决方案**:
656
-
657
- * **GitHub 市场**:检查网络连接和仓库访问权限
658
- * **HTTP 市场**:确认服务器可访问
659
- * **本地市场**:验证目录路径和权限
530
+ - 确认命令文件放在插件根目录的 `commands/` 中,而不是 `.codebuddy-plugin/`
531
+ - 检查命令文件是否存在且格式正确
532
+ - 运行 `/reload-plugins` 刷新
660
533
 
661
534
  ### 验证和测试
662
535
 
663
- 在共享前测试您的市场和插件:
536
+ 在共享前测试你的插件:
664
537
 
665
538
  ```bash
666
- # 验证市场 JSON 语法
667
- codebuddy plugin validate .
668
-
669
- # 验证特定插件
539
+ # 验证插件格式
670
540
  codebuddy plugin validate /path/to/plugin
671
541
 
672
- # 添加本地市场用于测试
673
- codebuddy plugin marketplace add ./path/to/marketplace
542
+ # 使用 --plugin-dir 本地测试
543
+ codebuddy --plugin-dir ./my-plugin
674
544
 
675
- # 测试插件安装
676
- codebuddy plugin install test-plugin@marketplace-name
545
+ # 测试插件的技能
546
+ /my-plugin:skill-name
677
547
  ```
678
548
 
679
- ## 相关文档
549
+ ## 后续步骤
680
550
 
681
- - **[插件参考文档](plugins-reference.md)** - 插件开发完整技术规范
682
- - **[Slash Commands](slash-commands.md)** - 了解命令系统
683
- - **[Skills](skills.md)** - 学习技能系统
684
- - **[Hooks](hooks.md)** - 掌握 Hooks 机制
551
+ ### 对于插件用户
685
552
 
686
- ---
553
+ - [插件市场](plugin-marketplaces.md) - 浏览市场并安装插件
554
+ - [设置](settings.md) - 了解插件配置选项
687
555
 
688
- *通过插件系统,让 CodeBuddy 更强大 🚀*
556
+ ### 对于插件开发者
689
557
 
558
+ - [插件市场](plugin-marketplaces.md) - 打包和共享你的插件
559
+ - [插件参考文档](plugins-reference.md) - 完整技术规范
560
+ - 深入了解具体的插件组件:
561
+ - [Skills](skills.md) - 技能开发详情
562
+ - [子代理](sub-agents.md) - 代理配置和能力
563
+ - [Hooks](hooks.md) - 事件处理和自动化
564
+ - [MCP](mcp.md) - 外部工具集成