@tencent-ai/codebuddy-code 2.71.1 → 2.72.0-next.6c5fd20.20260402
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.
- package/CHANGELOG.md +19 -0
- package/dist/codebuddy-headless.js +45 -15
- package/dist/codebuddy.js +64 -34
- package/dist/web-ui/assets/devopicons-QN4QXivI.woff2 +0 -0
- package/dist/web-ui/assets/file-icons-C0jOugUK.woff2 +0 -0
- package/dist/web-ui/assets/{index-Dhp52UPr.js → index-BC_Bh2yt.js} +156 -139
- package/dist/web-ui/assets/index-D4u5xYjh.css +32 -0
- package/dist/web-ui/assets/{markdown-BCtMzQ91.js → markdown-Ce2Umeb2.js} +1 -1
- package/dist/web-ui/assets/mfixx-CpAhKOZz.woff2 +0 -0
- package/dist/web-ui/assets/octicons-CaZ_fok2.woff2 +0 -0
- package/dist/web-ui/assets/{vendor-C4-dOWG8.js → vendor-DpYitQz5.js} +1 -1
- package/dist/web-ui/docs/cn/cli/http-api.md +401 -0
- package/dist/web-ui/docs/cn/cli/release-notes/README.md +5 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.69.0.md +24 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.70.0.md +16 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.70.1.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.71.0.md +18 -0
- package/dist/web-ui/docs/cn/cli/release-notes/v2.71.1.md +7 -0
- package/dist/web-ui/docs/cn/cli/remote-control.md +2 -2
- package/dist/web-ui/docs/cn/cli/slash-commands.md +5 -5
- package/dist/web-ui/docs/en/cli/http-api.md +401 -0
- package/dist/web-ui/docs/en/cli/release-notes/README.md +5 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.69.0.md +24 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.70.0.md +16 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.70.1.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.71.0.md +18 -0
- package/dist/web-ui/docs/en/cli/release-notes/v2.71.1.md +7 -0
- package/dist/web-ui/docs/en/cli/remote-control.md +2 -2
- package/dist/web-ui/docs/en/cli/slash-commands.md +6 -6
- package/dist/web-ui/docs/search-index-en.json +1 -1
- package/dist/web-ui/docs/search-index-zh.json +1 -1
- package/dist/web-ui/docs/sidebar-en.json +1 -1
- package/dist/web-ui/docs/sidebar-zh.json +1 -1
- package/dist/web-ui/index.html +4 -4
- package/package.json +3 -2
- package/product.cloudhosted.json +2 -2
- package/product.internal.json +2 -2
- package/product.ioa.json +2 -2
- package/product.json +2 -2
- package/product.selfhosted.json +2 -2
- package/dist/web-ui/assets/devopicons-JYBX4xNv.woff2 +0 -0
- package/dist/web-ui/assets/file-icons-Byv9wKV-.woff2 +0 -0
- package/dist/web-ui/assets/index-B_bIdgkW.css +0 -32
- package/dist/web-ui/assets/mfixx-DfQCz-aF.woff2 +0 -0
- package/dist/web-ui/assets/octicons-CS-gsnb3.woff2 +0 -0
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
# CodeBuddy Code HTTP API <sup>Beta</sup>
|
|
2
|
+
|
|
3
|
+
> **Beta**: 此 API 处于 Beta 阶段,接口可能会有调整。欢迎反馈意见。
|
|
4
|
+
|
|
5
|
+
CodeBuddy Code 提供两套公开接口,面向开发者构建 Agent 应用:
|
|
6
|
+
|
|
7
|
+
- **REST API** (`/api/v1/*`) — 无状态 HTTP 请求/响应,适合 Webhook 接入、管理操作、简单查询
|
|
8
|
+
- **ACP** (`/api/v1/acp`) — 有状态流式协议(JSON-RPC over SSE),适合构建完整 Agent 客户端应用
|
|
9
|
+
|
|
10
|
+
## 快速开始
|
|
11
|
+
|
|
12
|
+
### 启动 HTTP 服务
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
codebuddy --serve --port 8080 --session-id my-session
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### API 文档(Swagger UI)
|
|
19
|
+
|
|
20
|
+
服务启动后访问:
|
|
21
|
+
|
|
22
|
+
- **交互式文档**: `http://127.0.0.1:8080/api/docs`
|
|
23
|
+
- **OpenAPI 规范**: `http://127.0.0.1:8080/api/openapi.json`
|
|
24
|
+
|
|
25
|
+
Swagger UI 提供所有公开端点的交互式测试界面。
|
|
26
|
+
|
|
27
|
+
### 验证服务正常
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
curl http://127.0.0.1:8080/api/v1/health
|
|
31
|
+
# {"data":{"status":"ok","uptime":12.3,"platforms":["generic","wecom","wechat-kf"]}}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## API 分层
|
|
35
|
+
|
|
36
|
+
| 层级 | 路由前缀 | 兼容性承诺 | 说明 |
|
|
37
|
+
|------|---------|-----------|------|
|
|
38
|
+
| **公开 REST API** | `/api/v1/*` | 语义化版本,不做破坏性变更 | 本文档覆盖的内容 |
|
|
39
|
+
| **公开 ACP 协议** | `/api/v1/acp` | 遵循 ACP 规范 | 完整对话能力,参见 [ACP 文档](https://agentclientprotocol.com) |
|
|
40
|
+
| **内部 RPC** | `/internal/*` | 不保证兼容性 | CLI 内部使用,不对外开放 |
|
|
41
|
+
|
|
42
|
+
## 认证
|
|
43
|
+
|
|
44
|
+
支持两种模式(环境变量 `CODEBUDDY_GATEWAY_AUTH` 控制):
|
|
45
|
+
|
|
46
|
+
| 模式 | 值 | 说明 |
|
|
47
|
+
|------|---|------|
|
|
48
|
+
| 无认证 | `none`(默认) | 本地开发用,不需要认证 |
|
|
49
|
+
| 密码认证 | `password` | 远程访问时自动开启 |
|
|
50
|
+
|
|
51
|
+
密码认证支持以下方式(任一通过即可):
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Bearer Token
|
|
55
|
+
curl -H "Authorization: Bearer YOUR_PASSWORD" http://host:port/api/v1/sessions
|
|
56
|
+
|
|
57
|
+
# URL 参数
|
|
58
|
+
curl http://host:port/api/v1/sessions?password=YOUR_PASSWORD
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 响应格式
|
|
62
|
+
|
|
63
|
+
所有 `/api/v1/*` 端点使用统一的信封格式:
|
|
64
|
+
|
|
65
|
+
```jsonc
|
|
66
|
+
// 成功
|
|
67
|
+
{
|
|
68
|
+
"data": { ... }
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// 错误
|
|
72
|
+
{
|
|
73
|
+
"error": {
|
|
74
|
+
"code": "AUTH_REQUIRED", // 机器可读错误码
|
|
75
|
+
"message": "Authentication required" // 人类可读描述
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 端点概览
|
|
81
|
+
|
|
82
|
+
### 系统
|
|
83
|
+
|
|
84
|
+
| 方法 | 端点 | 说明 |
|
|
85
|
+
|------|------|------|
|
|
86
|
+
| GET | `/api/v1/health` | 健康检查 |
|
|
87
|
+
| GET | `/api/v1/info` | 环境信息(版本、OS、CWD 等) |
|
|
88
|
+
| GET | `/api/v1/metrics` | 系统资源指标(对齐 E2B envd) |
|
|
89
|
+
| GET | `/api/v1/envs` | 环境变量(对齐 E2B envd) |
|
|
90
|
+
|
|
91
|
+
### 认证
|
|
92
|
+
|
|
93
|
+
| 方法 | 端点 | 说明 |
|
|
94
|
+
|------|------|------|
|
|
95
|
+
| GET | `/api/v1/auth/status` | 获取认证状态 |
|
|
96
|
+
| POST | `/api/v1/auth/login` | 密码登录,返回 token |
|
|
97
|
+
|
|
98
|
+
### Runs(Agent 执行)
|
|
99
|
+
|
|
100
|
+
| 方法 | 端点 | 说明 |
|
|
101
|
+
|------|------|------|
|
|
102
|
+
| POST | `/api/v1/runs` | 发起 Agent 执行(异步,返回 runId) |
|
|
103
|
+
| GET | `/api/v1/runs/:runId` | 查询执行状态 |
|
|
104
|
+
| GET | `/api/v1/runs/:runId/stream` | SSE 流式获取执行结果 |
|
|
105
|
+
| POST | `/api/v1/runs/:runId/cancel` | 取消执行 |
|
|
106
|
+
|
|
107
|
+
### Webhooks(第三方平台接入)
|
|
108
|
+
|
|
109
|
+
| 方法 | 端点 | 说明 |
|
|
110
|
+
|------|------|------|
|
|
111
|
+
| GET | `/api/v1/webhooks/:platform` | 平台 URL 验证(企微等) |
|
|
112
|
+
| POST | `/api/v1/webhooks/:platform` | 平台消息 Webhook 入口 |
|
|
113
|
+
|
|
114
|
+
支持的平台:`generic`、`wecom`(企业微信)、`wechat-kf`(微信客服)
|
|
115
|
+
|
|
116
|
+
### 会话
|
|
117
|
+
|
|
118
|
+
| 方法 | 端点 | 说明 |
|
|
119
|
+
|------|------|------|
|
|
120
|
+
| GET | `/api/v1/sessions` | 获取会话列表 |
|
|
121
|
+
| DELETE | `/api/v1/sessions/:id` | 删除会话 |
|
|
122
|
+
| POST | `/api/v1/sessions/:id/rename` | 重命名会话 |
|
|
123
|
+
|
|
124
|
+
### PTY(终端)
|
|
125
|
+
|
|
126
|
+
| 方法 | 端点 | 说明 |
|
|
127
|
+
|------|------|------|
|
|
128
|
+
| POST | `/api/v1/pty` | 创建 PTY 会话 |
|
|
129
|
+
| GET | `/api/v1/pty` | 列出 PTY 会话 |
|
|
130
|
+
| GET | `/api/v1/pty/:id` | 查询 PTY 会话 |
|
|
131
|
+
| DELETE | `/api/v1/pty/:id` | 销毁 PTY 会话 |
|
|
132
|
+
| GET | `/api/v1/pty/:id/output` | SSE 流式获取 PTY 输出(替代 WebSocket) |
|
|
133
|
+
| POST | `/api/v1/pty/:id/input/send` | 发送 PTY 输入(对齐 E2B Process.SendInput) |
|
|
134
|
+
| POST | `/api/v1/pty/:id/resize` | 调整 PTY 大小(对齐 E2B Process.Update) |
|
|
135
|
+
| WebSocket | `/api/v1/pty/:id/ws` | PTY 双向数据传输(兼容保留) |
|
|
136
|
+
|
|
137
|
+
### 实例
|
|
138
|
+
|
|
139
|
+
| 方法 | 端点 | 说明 |
|
|
140
|
+
|------|------|------|
|
|
141
|
+
| GET | `/api/v1/instances` | 获取实例列表 |
|
|
142
|
+
| POST | `/api/v1/instances` | 添加远程实例 |
|
|
143
|
+
| DELETE | `/api/v1/instances/:id` | 删除实例 |
|
|
144
|
+
|
|
145
|
+
### Channels(远程控制)
|
|
146
|
+
|
|
147
|
+
| 方法 | 端点 | 说明 |
|
|
148
|
+
|------|------|------|
|
|
149
|
+
| GET | `/api/v1/channels` | 获取客户端列表 |
|
|
150
|
+
| POST | `/api/v1/channels/:type/:id/start` | 启动客户端 |
|
|
151
|
+
| POST | `/api/v1/channels/:type/:id/stop` | 停止客户端 |
|
|
152
|
+
| POST | `/api/v1/channels/wechat` | 创建微信实例 |
|
|
153
|
+
| POST | `/api/v1/channels/wecom` | 创建企微实例 |
|
|
154
|
+
|
|
155
|
+
### 文件系统(E2B 兼容)
|
|
156
|
+
|
|
157
|
+
文件内容操作(对齐 E2B envd HTTP 端点):
|
|
158
|
+
|
|
159
|
+
| 方法 | 端点 | 说明 |
|
|
160
|
+
|------|------|------|
|
|
161
|
+
| GET | `/api/v1/files/download?path=...` | 下载文件(对齐 E2B envd GET /files) |
|
|
162
|
+
| POST | `/api/v1/files/upload?path=...` | 上传文件(对齐 E2B envd POST /files) |
|
|
163
|
+
| POST | `/api/v1/files/compose` | 合并多文件(对齐 E2B envd POST /files/compose) |
|
|
164
|
+
|
|
165
|
+
文件操作(对齐 E2B filesystem.proto):
|
|
166
|
+
|
|
167
|
+
| 方法 | 端点 | 说明 |
|
|
168
|
+
|------|------|------|
|
|
169
|
+
| POST | `/api/v1/fs/stat` | 获取文件/目录信息(对齐 Filesystem.Stat) |
|
|
170
|
+
| POST | `/api/v1/fs/list` | 列出目录内容(对齐 Filesystem.ListDir) |
|
|
171
|
+
| POST | `/api/v1/fs/mkdir` | 创建目录(对齐 Filesystem.MakeDir) |
|
|
172
|
+
| POST | `/api/v1/fs/remove` | 删除文件/目录(对齐 Filesystem.Remove) |
|
|
173
|
+
| POST | `/api/v1/fs/move` | 移动/重命名(对齐 Filesystem.Move) |
|
|
174
|
+
|
|
175
|
+
文件监听(对齐 E2B filesystem.proto):
|
|
176
|
+
|
|
177
|
+
| 方法 | 端点 | 说明 |
|
|
178
|
+
|------|------|------|
|
|
179
|
+
| POST | `/api/v1/fs/watch` | 流式目录监听 SSE(对齐 Filesystem.WatchDir) |
|
|
180
|
+
| POST | `/api/v1/fs/watcher/create` | 创建监听器(对齐 Filesystem.CreateWatcher) |
|
|
181
|
+
| POST | `/api/v1/fs/watcher/events` | 获取监听事件(对齐 Filesystem.GetWatcherEvents) |
|
|
182
|
+
| POST | `/api/v1/fs/watcher/remove` | 删除监听器(对齐 Filesystem.RemoveWatcher) |
|
|
183
|
+
|
|
184
|
+
CBC 增强:
|
|
185
|
+
|
|
186
|
+
| 方法 | 端点 | 说明 |
|
|
187
|
+
|------|------|------|
|
|
188
|
+
| GET | `/api/v1/fs/search?query=...` | 文件模糊搜索(基于 ripgrep,E2B 无对应接口) |
|
|
189
|
+
|
|
190
|
+
### 进程管理(E2B 兼容)
|
|
191
|
+
|
|
192
|
+
对齐 E2B process.proto,将 gRPC 方法映射为 REST 端点:
|
|
193
|
+
|
|
194
|
+
| 方法 | 端点 | 说明 |
|
|
195
|
+
|------|------|------|
|
|
196
|
+
| POST | `/api/v1/process/start` | 启动进程(对齐 Process.Start,支持 SSE/JSON) |
|
|
197
|
+
| GET | `/api/v1/process/list` | 列出运行中进程(对齐 Process.List) |
|
|
198
|
+
| POST | `/api/v1/process/connect` | 连接到进程 SSE 流(对齐 Process.Connect) |
|
|
199
|
+
| POST | `/api/v1/process/input/send` | 发送 stdin(对齐 Process.SendInput) |
|
|
200
|
+
| POST | `/api/v1/process/input/stream` | 流式发送 stdin(对齐 Process.StreamInput) |
|
|
201
|
+
| POST | `/api/v1/process/signal/send` | 发送信号(对齐 Process.SendSignal) |
|
|
202
|
+
| POST | `/api/v1/process/stdin/close` | 关闭 stdin(对齐 Process.CloseStdin) |
|
|
203
|
+
| POST | `/api/v1/process/update` | 更新进程配置如 PTY resize(对齐 Process.Update) |
|
|
204
|
+
|
|
205
|
+
### ACP(Agent Client Protocol)
|
|
206
|
+
|
|
207
|
+
| 方法 | 端点 | 说明 |
|
|
208
|
+
|------|------|------|
|
|
209
|
+
| POST | `/api/v1/acp/connect` | 建立 ACP 连接,返回 connectionId 和 sessionToken |
|
|
210
|
+
| GET | `/api/v1/acp` | SSE 通知订阅(需要 acp-connection-id Header) |
|
|
211
|
+
| POST | `/api/v1/acp` | 发送 JSON-RPC 请求(newSession、prompt、cancelRun 等) |
|
|
212
|
+
| DELETE | `/api/v1/acp` | 断开连接 |
|
|
213
|
+
|
|
214
|
+
### 文件变更(Checkpoint)
|
|
215
|
+
|
|
216
|
+
| 方法 | 端点 | 说明 |
|
|
217
|
+
|------|------|------|
|
|
218
|
+
| GET | `/api/v1/file-changes/diff?path=...` | 获取单个文件的 diff 内容 |
|
|
219
|
+
| GET | `/api/v1/file-changes/checkpoints` | 列出可回退的 checkpoint |
|
|
220
|
+
| POST | `/api/v1/file-changes/revert` | 撤回文件变更或回退到 checkpoint |
|
|
221
|
+
|
|
222
|
+
### 任务模板
|
|
223
|
+
|
|
224
|
+
| 方法 | 端点 | 说明 |
|
|
225
|
+
|------|------|------|
|
|
226
|
+
| GET | `/api/v1/tasks/templates` | 获取任务模板 |
|
|
227
|
+
| POST | `/api/v1/tasks/templates/refresh` | 刷新(触发 AI 推荐) |
|
|
228
|
+
|
|
229
|
+
## 使用示例
|
|
230
|
+
|
|
231
|
+
### 健康检查
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
curl http://127.0.0.1:8080/api/v1/health
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### 发起 Agent 执行
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
# 发送消息
|
|
241
|
+
curl -X POST http://127.0.0.1:8080/api/v1/runs \
|
|
242
|
+
-H "Content-Type: application/json" \
|
|
243
|
+
-d '{"text": "帮我分析代码性能", "sender": {"id": "dev", "name": "Developer"}}'
|
|
244
|
+
|
|
245
|
+
# 响应: {"data": {"runId": "uuid-xxx", "status": "accepted"}}
|
|
246
|
+
|
|
247
|
+
# 通过 SSE 流获取结果
|
|
248
|
+
curl http://127.0.0.1:8080/api/v1/runs/uuid-xxx/stream
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### PTY 终端管理
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# 创建终端
|
|
255
|
+
curl -X POST http://127.0.0.1:8080/api/v1/pty \
|
|
256
|
+
-H "Content-Type: application/json" \
|
|
257
|
+
-d '{"cols": 120, "rows": 40}'
|
|
258
|
+
|
|
259
|
+
# 列出终端
|
|
260
|
+
curl http://127.0.0.1:8080/api/v1/pty
|
|
261
|
+
|
|
262
|
+
# SSE 流式获取输出(替代 WebSocket)
|
|
263
|
+
curl http://127.0.0.1:8080/api/v1/pty/SESSION_ID/output
|
|
264
|
+
|
|
265
|
+
# 发送输入
|
|
266
|
+
curl -X POST http://127.0.0.1:8080/api/v1/pty/SESSION_ID/input/send \
|
|
267
|
+
-H "Content-Type: application/json" \
|
|
268
|
+
-d '{"data": "ls -la\n"}'
|
|
269
|
+
|
|
270
|
+
# 调整大小
|
|
271
|
+
curl -X POST http://127.0.0.1:8080/api/v1/pty/SESSION_ID/resize \
|
|
272
|
+
-H "Content-Type: application/json" \
|
|
273
|
+
-d '{"cols": 200, "rows": 50}'
|
|
274
|
+
|
|
275
|
+
# 销毁终端
|
|
276
|
+
curl -X DELETE http://127.0.0.1:8080/api/v1/pty/SESSION_ID
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### 文件系统操作(E2B 兼容)
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
# 下载文件
|
|
283
|
+
curl "http://127.0.0.1:8080/api/v1/files/download?path=/tmp/test.txt"
|
|
284
|
+
|
|
285
|
+
# 上传文件
|
|
286
|
+
curl -X POST "http://127.0.0.1:8080/api/v1/files/upload?path=/tmp/upload.txt" \
|
|
287
|
+
-H "Content-Type: application/octet-stream" \
|
|
288
|
+
--data-binary @local-file.txt
|
|
289
|
+
|
|
290
|
+
# 获取文件信息
|
|
291
|
+
curl -X POST http://127.0.0.1:8080/api/v1/fs/stat \
|
|
292
|
+
-H "Content-Type: application/json" \
|
|
293
|
+
-d '{"path": "/tmp"}'
|
|
294
|
+
|
|
295
|
+
# 列出目录
|
|
296
|
+
curl -X POST http://127.0.0.1:8080/api/v1/fs/list \
|
|
297
|
+
-H "Content-Type: application/json" \
|
|
298
|
+
-d '{"path": "/tmp", "depth": 2}'
|
|
299
|
+
|
|
300
|
+
# 创建目录
|
|
301
|
+
curl -X POST http://127.0.0.1:8080/api/v1/fs/mkdir \
|
|
302
|
+
-H "Content-Type: application/json" \
|
|
303
|
+
-d '{"path": "/tmp/new-dir"}'
|
|
304
|
+
|
|
305
|
+
# 文件模糊搜索(CBC 增强)
|
|
306
|
+
curl "http://127.0.0.1:8080/api/v1/fs/search?query=component&limit=10"
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### 进程管理(E2B 兼容)
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
# 启动进程(JSON 模式)
|
|
313
|
+
curl -X POST http://127.0.0.1:8080/api/v1/process/start \
|
|
314
|
+
-H "Content-Type: application/json" \
|
|
315
|
+
-d '{"process": {"cmd": "python3", "args": ["script.py"]}, "tag": "my-script"}'
|
|
316
|
+
|
|
317
|
+
# 启动进程(SSE 流式输出)
|
|
318
|
+
curl -X POST http://127.0.0.1:8080/api/v1/process/start \
|
|
319
|
+
-H "Content-Type: application/json" \
|
|
320
|
+
-H "Accept: text/event-stream" \
|
|
321
|
+
-d '{"process": {"cmd": "python3", "args": ["script.py"]}}'
|
|
322
|
+
|
|
323
|
+
# 列出运行中进程
|
|
324
|
+
curl http://127.0.0.1:8080/api/v1/process/list
|
|
325
|
+
|
|
326
|
+
# 发送 stdin
|
|
327
|
+
curl -X POST http://127.0.0.1:8080/api/v1/process/input/send \
|
|
328
|
+
-H "Content-Type: application/json" \
|
|
329
|
+
-d '{"process": {"pid": 12345}, "input": {"stdin": "hello\n"}}'
|
|
330
|
+
|
|
331
|
+
# 发送信号(SIGTERM)
|
|
332
|
+
curl -X POST http://127.0.0.1:8080/api/v1/process/signal/send \
|
|
333
|
+
-H "Content-Type: application/json" \
|
|
334
|
+
-d '{"process": {"tag": "my-script"}, "signal": 15}'
|
|
335
|
+
|
|
336
|
+
# 系统指标
|
|
337
|
+
curl http://127.0.0.1:8080/api/v1/metrics
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
### 会话管理
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
# 获取会话列表
|
|
344
|
+
curl http://127.0.0.1:8080/api/v1/sessions
|
|
345
|
+
|
|
346
|
+
# 重命名会话
|
|
347
|
+
curl -X POST http://127.0.0.1:8080/api/v1/sessions/SESSION_ID/rename \
|
|
348
|
+
-H "Content-Type: application/json" \
|
|
349
|
+
-d '{"name": "性能优化讨论"}'
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### 文件变更管理
|
|
353
|
+
|
|
354
|
+
```bash
|
|
355
|
+
# 获取文件 diff(需要文件在 checkpoint 中被跟踪)
|
|
356
|
+
curl "http://127.0.0.1:8080/api/v1/file-changes/diff?path=/path/to/file.ts"
|
|
357
|
+
# 响应: {"path": "/path/to/file.ts", "oldText": "...", "newText": "..."}
|
|
358
|
+
|
|
359
|
+
# 列出可回退的 checkpoint
|
|
360
|
+
curl http://127.0.0.1:8080/api/v1/file-changes/checkpoints
|
|
361
|
+
# 响应: {"checkpoints": [{"id": "xxx", "label": "...", "createdAt": 1234567890, "files": [...], "additions": 5, "deletions": 2}]}
|
|
362
|
+
|
|
363
|
+
# 按文件撤回变更
|
|
364
|
+
curl -X POST http://127.0.0.1:8080/api/v1/file-changes/revert \
|
|
365
|
+
-H "Content-Type: application/json" \
|
|
366
|
+
-d '{"paths": ["/path/to/file.ts"]}'
|
|
367
|
+
# 响应: {"success": true, "revertedFiles": ["/path/to/file.ts"]}
|
|
368
|
+
|
|
369
|
+
# 回退到指定 checkpoint
|
|
370
|
+
curl -X POST http://127.0.0.1:8080/api/v1/file-changes/revert \
|
|
371
|
+
-H "Content-Type: application/json" \
|
|
372
|
+
-d '{"checkpointId": "checkpoint-uuid", "scope": "CodeAndConversation"}'
|
|
373
|
+
# scope 可选值: "Code"(仅回退文件), "Conversation"(仅回退对话), "CodeAndConversation"(全部回退)
|
|
374
|
+
|
|
375
|
+
# 撤回全部变更(回退到最早的 checkpoint)
|
|
376
|
+
curl -X POST http://127.0.0.1:8080/api/v1/file-changes/revert \
|
|
377
|
+
-H "Content-Type: application/json" \
|
|
378
|
+
-d '{}'
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
## 错误码
|
|
382
|
+
|
|
383
|
+
| 错误码 | HTTP 状态 | 说明 |
|
|
384
|
+
|--------|----------|------|
|
|
385
|
+
| `AUTH_REQUIRED` | 401 | 需要认证 |
|
|
386
|
+
| `AUTH_INVALID` | 401 | 认证无效 |
|
|
387
|
+
| `AUTH_RATE_LIMITED` | 429 | 登录尝试过多 |
|
|
388
|
+
| `NOT_FOUND` | 404 | 资源不存在 |
|
|
389
|
+
| `BAD_REQUEST` | 400 | 请求参数错误 |
|
|
390
|
+
| `RATE_LIMITED` | 429 | 请求频率过高 |
|
|
391
|
+
| `INTERNAL_ERROR` | 500 | 服务器内部错误 |
|
|
392
|
+
| `SESSION_NOT_FOUND` | 404 | 会话不存在 |
|
|
393
|
+
| `SESSION_DELETE_CURRENT` | 400 | 不能删除当前会话 |
|
|
394
|
+
| `TERMINAL_NOT_FOUND` | 404 | PTY 不存在 |
|
|
395
|
+
| `PROCESS_NOT_FOUND` | 404 | 进程不存在 |
|
|
396
|
+
| `PATH_REQUIRED` | 400 | 缺少 path 参数 |
|
|
397
|
+
| `PATH_NOT_DIRECTORY` | 400 | 路径不是目录 |
|
|
398
|
+
| `INSUFFICIENT_STORAGE` | 507 | 磁盘空间不足 |
|
|
399
|
+
| `RUN_NOT_FOUND` | 404 | 执行不存在 |
|
|
400
|
+
| `PLATFORM_UNSUPPORTED` | 400 | 不支持的 Webhook 平台 |
|
|
401
|
+
| `SIGNATURE_INVALID` | 403 | 签名验证失败 |
|
|
@@ -17,6 +17,11 @@ Release Notes 记录了每个版本的用户可见变更,包括:
|
|
|
17
17
|
|
|
18
18
|
<!-- 新版本自动添加到此处 -->
|
|
19
19
|
|
|
20
|
+
- [v2.71.1](./v2.71.1.md) - 2026-04-01
|
|
21
|
+
- [v2.71.0](./v2.71.0.md) - 2026-04-01
|
|
22
|
+
- [v2.70.1](./v2.70.1.md) - 2026-03-31
|
|
23
|
+
- [v2.70.0](./v2.70.0.md) - 2026-03-31
|
|
24
|
+
- [v2.69.0](./v2.69.0.md) - 2026-03-30
|
|
20
25
|
- [v2.68.0](./v2.68.0.md) - 2026-03-30
|
|
21
26
|
- [v2.67.0](./v2.67.0.md) - 2026-03-28
|
|
22
27
|
- [v2.66.2](./v2.66.2.md) - 2026-03-26
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# 🚀 CodeBuddy Code v2.69.0 发布
|
|
2
|
+
|
|
3
|
+
## ✨ 新功能
|
|
4
|
+
|
|
5
|
+
### E2B 兼容 API
|
|
6
|
+
|
|
7
|
+
全面对齐 E2B 开放协议,让 CodeBuddy Code 可作为 E2B 兼容的沙箱环境使用:
|
|
8
|
+
|
|
9
|
+
- **文件系统 API**:新增 `/api/v1/fs/*` 和 `/api/v1/files/*` 端点,支持文件读写、目录操作、文件监听等完整文件系统功能
|
|
10
|
+
- **进程管理 API**:新增 `/api/v1/process/*` 端点,支持进程启动(PTY/管道)、输入输出流、信号发送等全生命周期管理
|
|
11
|
+
- **系统指标与环境变量 API**:新增 `/api/v1/metrics` 和 `/api/v1/envs` 端点,提供 CPU/内存/磁盘使用指标和环境变量查询
|
|
12
|
+
|
|
13
|
+
## 🔧 改进优化
|
|
14
|
+
|
|
15
|
+
- **PTY 终端增强**:新增 SSE 输出流、HTTP 输入发送、HTTP resize 端点,提供 WebSocket 之外的纯 HTTP 替代方案
|
|
16
|
+
- **终端 Web UI 重构**:前端终端组件从 WebSocket 迁移到 SSE + HTTP 通信,提升跨平台兼容性
|
|
17
|
+
- **分布式追踪**:基于 Hook 机制重构 trace 链路,支持 SDK 传递 traceId 实现端到端追踪,每次工具调用自动创建子 Span
|
|
18
|
+
- **WeChat 多实例支持**:支持同时连接多个 WeChat 机器人实例,自动路由消息到正确的客户端
|
|
19
|
+
- **WeChat 媒体消息**:支持接收和发送图片、文件、语音、视频消息
|
|
20
|
+
- **中文引号修复**:自动修复模型输出中的中文引号,避免工具调用 JSON 解析失败
|
|
21
|
+
|
|
22
|
+
## 🔒 安全修复
|
|
23
|
+
|
|
24
|
+
- **企业微信 SSRF 防护**:企业微信机器人媒体下载添加 URL 白名单校验,确保仅限企微官方 CDN 域名,防止服务端请求伪造攻击
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# 🚀 CodeBuddy Code v2.70.0 发布
|
|
2
|
+
|
|
3
|
+
## ✨ 新功能
|
|
4
|
+
|
|
5
|
+
### 内置命令模型驱动调用
|
|
6
|
+
|
|
7
|
+
AI 模型现在可以通过 Skill 工具直接执行部分内置斜杠命令(如 /clear、/model、/config、/resume、/gateway 等),让 WebChat、微信等非终端场景也能由模型代理执行命令,无需用户手动输入斜杠命令。
|
|
8
|
+
|
|
9
|
+
- /model、/config、/resume 等命令新增 `list` 子命令,支持以文本方式列出可用选项
|
|
10
|
+
- 通过 `disableModelInvocation` 字段统一控制内置命令和自定义命令是否允许模型调用
|
|
11
|
+
|
|
12
|
+
## 🔧 改进优化
|
|
13
|
+
|
|
14
|
+
- **实例注册地址简化**:将 localUrl/tunnelUrl 合并为统一的 url 字段,后端自动确定最佳可达地址,简化配置
|
|
15
|
+
- **权限确认框稳定性**:使用 useSyncExternalStore 替代 useEffect 订阅模式,彻底解决权限确认框偶发不显示的竞态问题
|
|
16
|
+
- **会话权限模式保持**:修复多实例场景下切换会话时权限模式被重置的问题
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# CodeBuddy Code v2.70.1 发布
|
|
2
|
+
|
|
3
|
+
## 🔒 安全修复
|
|
4
|
+
|
|
5
|
+
### CORS 跨域攻击防护
|
|
6
|
+
|
|
7
|
+
修复了本地 Gateway 服务(`cbc --serve`)存在的跨域请求安全漏洞。此前,恶意网页可通过 JavaScript 跨域访问用户本地 localhost 服务,执行 Agent 命令或窃取输出数据。
|
|
8
|
+
|
|
9
|
+
主要修复内容:
|
|
10
|
+
|
|
11
|
+
- 替换框架默认的 `Access-Control-Allow-Origin: *` 为精确白名单机制,仅允许 localhost、127.0.0.1 和 Tunnel URL 的跨域请求
|
|
12
|
+
- 新增 Host 头验证中间件,防止 DNS Rebinding 攻击
|
|
13
|
+
- 修复 SSE 流式端点的 CORS 通配符漏洞
|
|
14
|
+
- 默认绑定地址从 `0.0.0.0` 改为 `127.0.0.1`,避免服务暴露到局域网
|
|
15
|
+
|
|
16
|
+
## 🔧 改进优化
|
|
17
|
+
|
|
18
|
+
- **自定义跨域规则**:支持通过环境变量 `CODEBUDDY_CODE_CORS_ORIGINS`(逗号分隔)或 Settings 配置 `gateway.corsOrigins` 自定义允许的跨域源,满足特殊场景需求
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# 🚀 CodeBuddy Code v2.71.0 发布
|
|
2
|
+
|
|
3
|
+
## ✨ 新功能
|
|
4
|
+
|
|
5
|
+
### Web UI 代码编辑器
|
|
6
|
+
|
|
7
|
+
Web UI 新增文件浏览和代码编辑功能,让你可以直接在浏览器中查看和编辑项目文件:
|
|
8
|
+
|
|
9
|
+
- **目录树导航**:左侧面板展示项目文件结构,快速定位文件
|
|
10
|
+
- **多标签编辑**:同时打开多个文件,在标签间自由切换
|
|
11
|
+
- **Monaco Editor**:集成 VS Code 同款编辑器引擎,支持语法高亮
|
|
12
|
+
- **自动保存**:编辑内容自动保存,无需手动操作
|
|
13
|
+
- **文件拖拽移动**:支持拖拽文件进行移动操作
|
|
14
|
+
- **键盘快捷键**:支持常用快捷键,提升编辑效率
|
|
15
|
+
|
|
16
|
+
## 🔧 改进优化
|
|
17
|
+
|
|
18
|
+
- **流式超时时间优化**:将流式响应超时和首 token 超时默认值从 2 分钟提升至 10 分钟,减少复杂任务中因模型响应较慢导致的超时中断。仍可通过 `CODEBUDDY_STREAM_TIMEOUT_MS` 和 `CODEBUDDY_FIRST_TOKEN_TIMEOUT_MS` 环境变量自定义
|
|
@@ -94,7 +94,7 @@ winget install Cloudflare.cloudflared
|
|
|
94
94
|
当 `cloudflared` 未安装或 Tunnel 启动失败时,Gateway 自动回退到局域网模式。此模式下,仅同一网络中的设备可以访问。
|
|
95
95
|
|
|
96
96
|
- 默认监听端口:`8321`
|
|
97
|
-
-
|
|
97
|
+
- 监听地址:默认 `127.0.0.1`(仅本机),可通过 `--host 0.0.0.0` 监听所有网络接口
|
|
98
98
|
|
|
99
99
|
## 安全机制
|
|
100
100
|
|
|
@@ -172,7 +172,7 @@ Web UI 基于 ACP(Agent Client Protocol)与本地 Agent 通信,保证了
|
|
|
172
172
|
|
|
173
173
|
| 环境变量 | 说明 |
|
|
174
174
|
|:---------|:-----|
|
|
175
|
-
| `
|
|
175
|
+
| `CODEBUDDY_CODE_CORS_ORIGINS` | 额外的 CORS 允许来源(逗号分隔) |
|
|
176
176
|
|
|
177
177
|
## 实例管理
|
|
178
178
|
|
|
@@ -17,15 +17,15 @@ CodeBuddy Code 支持斜杠命令,允许您在聊天中执行特殊操作、
|
|
|
17
17
|
| `/add-dir` | `<path>` | ✅ 支持 | 添加工作目录。指定要添加的目录路径。 |
|
|
18
18
|
| `/agents` | | ✅ 支持 | 管理实验性 AI 智能体 |
|
|
19
19
|
| `/compact`| | ✅ 支持 | 压缩上下文。 |
|
|
20
|
-
| `/config`| | ✅ 支持 |
|
|
20
|
+
| `/config`| `[list \| get \| set]` | ✅ 支持 | 查看或修改本地配置。不带参数时打开交互式面板,`list` 列出当前设置,`get <key>` 读取设置,`set <key> <value>` 修改设置。 |
|
|
21
21
|
| `/context` | | ✅ 支持 | 计算当前会话的上下文 token 分布情况。 |
|
|
22
22
|
| `/cost` | | ✅ 支持 | 显示会话的成本和 Token 使用情况。 |
|
|
23
23
|
| `/init` | | ✅ 支持 | 初始化一个新的 CodeBuddy 存储库。 |
|
|
24
24
|
| `/mcp` | | ✅ 支持 | 管理 MCP 连接。 |
|
|
25
25
|
| `/memory`| | ✅ 支持 | 管理长期记忆 |
|
|
26
|
-
| `/model` | `[model-name]` | ✅ 支持 | 切换或查看当前使用的 AI
|
|
27
|
-
| `/model:text-to-image` | `[model-id]` | ✅ 支持 |
|
|
28
|
-
| `/model:image-to-image` | `[model-id]` | ✅ 支持 |
|
|
26
|
+
| `/model` | `[list \| model-name]` | ✅ 支持 | 切换或查看当前使用的 AI 模型。不带参数时打开交互式选择界面,`list` 列出可用模型,带模型名称参数时直接切换到指定模型(如 `/model gpt-4o`)。 |
|
|
27
|
+
| `/model:text-to-image` | `[list \| model-id]` | ✅ 支持 | 切换或查看当前使用的文生图模型。不带参数时打开交互式选择界面,`list` 列出可用模型,带模型 ID 参数时直接切换到指定模型。 |
|
|
28
|
+
| `/model:image-to-image` | `[list \| model-id]` | ✅ 支持 | 切换或查看当前使用的图生图模型。不带参数时打开交互式选择界面,`list` 列出可用模型,带模型 ID 参数时直接切换到指定模型。 |
|
|
29
29
|
| `/permissions` | | ✅ 支持 | 管理工具权限和工作区目录访问权限。 |
|
|
30
30
|
| `/plan` | | ✅ 支持 | 预览当前计划模式下的计划文件内容。 |
|
|
31
31
|
| `/upgrade` | | ✅ 支持 | 在浏览器中打开升级页面,查看高级功能和订阅选项。 |
|
|
@@ -37,7 +37,7 @@ CodeBuddy Code 支持斜杠命令,允许您在聊天中执行特殊操作、
|
|
|
37
37
|
| `/theme` | | ✅ 支持 | 打开主题选择面板,可选择和预览不同的终端主题(dark、light、colorblind-friendly、ANSI 等)。 |
|
|
38
38
|
| `/export` | | ✅ 支持 | 导出当前对话到文件或剪贴板。 |
|
|
39
39
|
| `/feedback` | | ✅ 支持 | 打开反馈页面,提交 Bug 报告或功能建议。 |
|
|
40
|
-
| `/resume` | | ✅ 支持 |
|
|
40
|
+
| `/resume` | `[list \| session-id]` | ✅ 支持 | 恢复之前的会话。不带参数时打开交互式面板,`list` 列出所有会话,带 session-id 时直接切换到指定会话。 |
|
|
41
41
|
| `/rewind` | | ✅ 支持 | 回退对话到之前的某个消息点,可选择仅回退对话、仅回退代码或同时回退两者。详见 [检查点](checkpointing.md)。 |
|
|
42
42
|
| `/sandbox` | | ✅ 支持 | 管理 Bash 命令沙箱模式,控制命令执行的安全策略。详见 [沙箱文档](bash-sandboxing.md)。 |
|
|
43
43
|
| `/stats` | | ✅ 支持 | 显示使用统计信息,包括 Token 使用量、模型调用次数、会话时长等详细数据,支持总览和按模型分类两个视图。 |
|