工具使用

This commit is contained in:
Sirius
2026-08-06 14:14:09 +08:00
parent d5eb882dfe
commit e236721db1
11 changed files with 745 additions and 73 deletions
+8 -6
View File
@@ -1,6 +1,6 @@
# Command Code OpenAI Bridge
Command Code OpenAI Bridge 是一个仅在本机运行的 OpenAI Chat Completions 兼容服务。它把 OpenAI 客户端发送的文本对话转交给 Command Code CLI 执行,并将最终 assistant 回复以标准 Chat Completions 格式返回
Command Code OpenAI Bridge 是一个仅在本机运行的 OpenAI 兼容服务。它把 Chat Completions 文本对话与 function calling 决策转交给 Command Code CLI 执行,并提供 Responses API 文本子集
默认 API 地址:`http://127.0.0.1:18000/v1`
@@ -12,7 +12,7 @@ Command Code OpenAI Bridge 是一个仅在本机运行的 OpenAI Chat Completion
2. 保留消息的角色、顺序和完整文本,将全部会话历史序列化后通过 stdin 传给 Command Code。
3. 在启动服务的终端中显示模型状态、turn、工具调用、工具结果、stderr、最终回答和耗时。
4. 从 Command Code 的 NDJSON 结构化结果中提取 `finalText`
5. 把最终回复和可用的 token usage 返回给 API 客户端。
5. 把最终回复、外部 function tool calls 和可用的 token usage 返回给 API 客户端。
服务不保存跨请求会话。每次调用都使用 `--no-session`,对话历史由客户端维护并在请求中完整提供。
@@ -20,16 +20,17 @@ Command Code OpenAI Bridge 是一个仅在本机运行的 OpenAI Chat Completion
- 提供 `GET /health``GET /v1/models``POST /v1/chat/completions`
- 支持字符串形式的 `content` 和 OpenAI 文本 part 数组。
- 接受 `stream: true`,但 Command Code 调用仍为非流式;完整结果生成后再一次性封装为 SSE 事件返回
- Chat Completions 支持标准 function tools、工具选择、assistant tool calls 和 tool 结果消息;工具由客户端执行
- 接受 `stream: true`;普通 Chat 实时转发文本 deltafunction calling 在完整决策校验后发送工具调用 SSE。
- 支持中文、Unicode、Markdown、代码块和较长文本。
- 模型名称通过 YAML 配置映射到实际 Command Code 模型。
- 请求内容通过 stdin 传输,不受命令行参数长度限制。
- 同时只运行一个 Command Code 请求;忙碌时返回 HTTP 429。
- 同时只运行一个 Command Code 请求;其余请求进入有限 FIFO 队列,队列已满时返回 HTTP 429。
- 客户端断开、请求取消、总超时和 Ctrl+C 会终止当前子进程组。
- 单次 Command Code 失败后,HTTP 服务可继续处理后续请求。
- Authorization 请求头会被忽略,服务强制绑定 `127.0.0.1`
当前只支持文本 Chat Completions。`stream: true` 是客户端兼容层,不会实时输出 Command Code 的生成过程。图片、音频、function calling、Responses API 和服务端会话均未实现。
当前只接受文本消息和文本输入。普通 Chat SSE 实时转发 Command Code 文本 deltafunction calling 会等待完整决策通过 JSON 与参数 Schema 校验后发送 `tool_calls`。Responses 只实现文本子集。图片、音频、文件输入、Computer Use、托管工具和服务端 Chat 会话均未实现。
## 技术实现
@@ -50,6 +51,7 @@ src/
├── server.ts # HTTP 路由、单请求状态和错误处理
├── openai.ts # 请求校验、消息转换和响应生成
├── command-code.ts # CLI 检查、子进程管理和最终结果提取
├── tool-calling.ts # 外部 function calling 决策解析与参数校验
├── renderer.ts # Command Code 事件的终端显示
└── config.ts # YAML 配置读取与校验
@@ -71,7 +73,7 @@ command-code status --json
./scripts/start.sh
```
默认配置位于 `config.yaml`,配置示例位于 `config.example.yaml`。常用配置包括监听端口、Command Code 可执行文件、工作目录、总超时、请求体上限、最大 turn 数、权限模式和模型映射。
默认配置位于 `config.yaml`,配置示例位于 `config.example.yaml`。常用配置包括监听端口、Command Code 可执行文件、工作目录、总超时、请求体上限、等待队列上限、最大 turn 数、权限模式和模型映射。
调用示例: