Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,11 @@ jobs:
CPA_BINARY=/tmp/cpa-test/cli-proxy-api python3 tests/cpa_round2.py
CPA_BINARY=/tmp/cpa-test/cli-proxy-api python3 tests/cpa_count_tokens.py
CPA_BINARY=/tmp/cpa-test/cli-proxy-api python3 tests/cpa_thinking_suffix.py
gh release download v0.2.12 --repo Gaoshou101/CommandCodeBridge --pattern commandcodebridge_0.2.12_linux_amd64.zip --pattern checksums.txt --dir /tmp/bridge-previous
gh release download v0.2.13 --repo Gaoshou101/CommandCodeBridge --pattern commandcodebridge_0.2.13_linux_amd64.zip --pattern checksums.txt --dir /tmp/bridge-previous
cd /tmp/bridge-previous
sha256sum --check --ignore-missing checksums.txt
cd "$GITHUB_WORKSPACE"
CPA_BINARY=/tmp/cpa-test/cli-proxy-api python3 tests/cpa_hot_reload.py --previous-archive /tmp/bridge-previous/commandcodebridge_0.2.12_linux_amd64.zip
CPA_BINARY=/tmp/cpa-test/cli-proxy-api python3 tests/cpa_hot_reload.py --previous-archive /tmp/bridge-previous/commandcodebridge_0.2.13_linux_amd64.zip
- uses: actions/download-artifact@v4
with:
name: cpamp-manager-test
Expand Down
11 changes: 10 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
# Changelog

## [Unreleased]
## [0.2.14] - 2026-11-08

### Fixed

- `claude-sonnet-5-5` 上的 `model(none)`(或原生 Messages 请求体中的 `thinking.type=disabled`)不再直接返回 400。该模型的上游拒绝 `disabled`、要求改用 `between_tools`,而 CommandCode 的请求校验又对所有模型拒绝 `between_tools`,经 CommandCode 无法关闭它的思考。插件现识别这一 400,改用最接近的可接受请求(自适应思考,`effort=low`)重试一次;请求日志新增 `adjustments` 字段,控制台请求详情显示「兼容调整」,`reasoning_to` 记为 `low`。低强度下模型对简单问题通常不思考(实测),但不能保证完全不思考。`claude-haiku-5-5` 接受 `disabled`,不受影响。
- `claude-sonnet-5-5` 不支持强制工具选择:`tool_choice` 为 `tool`/`any` 时上游返回 400 “not supported”。插件现改为 `auto`(保留工具列表与 `disable_parallel_tool_use`)重试一次并同样记录。`auto` 下模型仍可能不调用工具,客户端需能处理普通回复。
- 以上两项只作用于 Messages 协议模型、只匹配上述上游 400;其他错误照常返回,不重试。重试发生在向客户端输出任何内容之前,统计中仍计为一次请求。重试被接受后,插件在本进程内记住该模型,之后的请求直接改写、不再先失败一次;重启或修改 `base_url` 后重新探测,重试仍失败时不记住。2026-11-08 已对真实上游复测(见验证记录)。

### Changed

- 默认 `timeout_seconds` 从 600 改为 **1800**(取值范围不变)。实测 `grok-4.7` 高等级推理用时 658 秒,旧默认会把它截断为 504。只影响新安装或从未保存过设置的实例:`settings.json` 优先于 YAML,已保存过设置的实例保留原值(通常为 600),需在「设置 → 请求策略 → 请求超时」手动改为 1800。设置页说明同步提示。
- `tests/commandcode_live.py`:thinking 用例改用需要推理的计数题并请求 `effort=high`(自适应模型对“Reply only OK.”不思考);新增 `--thinking-off`(发送 `model(none)`)和 `--request-timeout`(默认 300 秒,此前插件超时固定 120 秒、客户端读超时 30 秒)。每个请求记录插件做出的兼容调整,出现预期外的调整即失败;失败报告带最后执行的检查名。`cpa_round2.py` 让模拟上游按 sonnet-5-5 的方式拒绝两类请求,经真实 CPA 宿主端到端验证重试、日志和计数。
- 插件控制台的 `console.js`、`console.css` 改为 Prettier 3.7.4 格式化的可读源码(原为长行手写压缩风格),按原样内嵌;JS 语法树与原文件一致(仅去掉空语句),CSS 仅引号、属性选择器引号和小数前导零写法变化。控制台页面增大约 17 KB,未加入压缩步骤。CI 检查这两个文件的格式;Node 测试改为按唯一标记切片,标记缺失时直接失败。
- 热升级联测的前一版本改为 v0.2.13。部署说明新增 Claude 模型 403「The provider refused this request」的排查提示:实测与出口有关(香港出口拒绝、日本出口正常),不是插件故障。

## [0.2.13] - 2026-11-07

Expand Down
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,11 @@
- **原生额度窗口**:在 CPAMP 列表、卡片和详情查看 5h、周、月额度,查询窗口请求统计、预测和周期快照。
- **请求记录**:查看凭证健康度、tokens、缓存用量、预估花费、首字耗时、输出速率及模型统计;支持明暗主题和手机布局。

当前版本 **v0.2.13**。插件调用官方 Provider API;Go 订阅的 `/alpha/generate` 路径和固定上游 provider 模式不在支持范围内。账户用量通过官方 `/alpha/...` 查询接口读取,模型权限以实际套餐为准。
当前版本 **v0.2.14**。插件调用官方 Provider API;Go 订阅的 `/alpha/generate` 路径和固定上游 provider 模式不在支持范围内。账户用量通过官方 `/alpha/...` 查询接口读取,模型权限以实际套餐为准。

### v0.2.14 更新

`claude-sonnet-5-5` 上的 `model(none)` 和强制工具选择不再返回 400:插件识别这两类上游拒绝,改用最接近的可接受请求(自适应低强度思考、`tool_choice: auto`)重试一次,并在请求日志与控制台显示「兼容调整」。默认请求超时从 600 秒改为 1800 秒;已保存过设置的实例需在「设置 → 请求策略」手动修改。

### v0.2.13 更新

Expand Down Expand Up @@ -47,7 +51,7 @@ plugins:
- https://raw.githubusercontent.com/Gaoshou101/CommandCodeBridge/main/registry.json
```

保存并重载配置,在 CPAMP「插件商店」找到 **CommandCodeBridge**,选择 Latest 或 **v0.2.13** 安装。支持热升级的宿主会下载匹配平台的 ZIP、验证校验值并切换版本;安装后检查插件控制台显示的运行版本。
保存并重载配置,在 CPAMP「插件商店」找到 **CommandCodeBridge**,选择 Latest 或 **v0.2.14** 安装。支持热升级的宿主会下载匹配平台的 ZIP、验证校验值并切换版本;安装后检查插件控制台显示的运行版本。

也可从 [Releases](https://github.com/Gaoshou101/CommandCodeBridge/releases/latest) 手动下载 ZIP 和 `checksums.txt`。按 **CPA 所在服务器**选择动态库:

Expand All @@ -73,7 +77,7 @@ Linux 发布包要求 glibc ≥2.28(v0.2.12 及更早为 ≥2.34);Alpine/m

## 安装或更新原生面板

**升级插件后还要更新 CPAMP 页面**,才能使用新版凭证布局。v0.2.13 动态库已内嵌匹配页面。
**升级插件后还要更新 CPAMP 页面**,才能使用新版凭证布局。v0.2.14 动态库已内嵌匹配页面。

CPA 与 Manager Server 在同一主机直接运行时:

Expand All @@ -88,7 +92,7 @@ CPA 与 Manager Server 在同一主机直接运行时:
| 首次启用外部页面,或更改 Manager Server 的页面路径 | 重启 Manager Server 一次 |
| 迁移插件数据目录,或旧宿主不支持动态库热升级 | 安排相应服务重启 |

Manager Server 在另一台主机或独立容器中时,在其运行环境安装 `commandcodebridge_0.2.13_cpamp-web.zip` 内的 `management.html`,通过 `PANEL_PATH` 或 `panelPath` 托管。面板源码基线见 [compatibility.json](./internal/bridge/compatibility.json) 的 `cpamp_source_commit`;不同版本应在匹配源码上应用适配。
Manager Server 在另一台主机或独立容器中时,在其运行环境安装 `commandcodebridge_0.2.14_cpamp-web.zip` 内的 `management.html`,通过 `PANEL_PATH` 或 `panelPath` 托管。面板源码基线见 [compatibility.json](./internal/bridge/compatibility.json) 的 `cpamp_source_commit`;不同版本应在匹配源码上应用适配。

**完整周期快照另需 Manager Server 接受 `commandcode` 平台。** 前端包附带适配脚本、服务器名单补丁和测试;按现有 Manager Server 的同一源码版本重建并部署。仅更新插件和页面不能替代这个服务器改动。[原生集成说明](./integrations/cpamp/README.md)包含构建、HTTP 生效核验和回滚步骤。

Expand Down
2 changes: 1 addition & 1 deletion config.example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ plugins:
cpamp_config_path: ""
cpamp_panel_path: ""
# Browser OAuth uses a local POST receiver and CPAMP result submission.
timeout_seconds: 600
timeout_seconds: 1800
# Optional stall guards inside timeout_seconds (0 = off, otherwise 5-1800):
# time to the first upstream response data, and the longest gap between chunks.
first_byte_timeout_seconds: 0
Expand Down
17 changes: 13 additions & 4 deletions docs/DEPLOYMENT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
# CPAMP 部署、升级与回滚

本文说明 CommandCodeBridge v0.2.13 的安装、页面更新与回滚。路径应以实际运行环境为准;历史排查中的路径仅用于说明当时的问题。
本文说明 CommandCodeBridge v0.2.14 的安装、页面更新与回滚。路径应以实际运行环境为准;历史排查中的路径仅用于说明当时的问题。

## v0.2.14:Claude 兼容调整与默认超时

1. 更新插件至 v0.2.14,确认实际运行版本;配置无需修改。
2. 默认 `timeout_seconds` 改为 1800,只对新安装或从未保存过设置的实例生效。已保存过设置的实例仍使用 `settings.json` 中的值(通常为 600),长推理模型会被截断为 504(实测 grok-4.7 高等级推理约 11 分钟);需要时在「设置 → 请求策略 → 请求超时」改为 1800。
3. 对 `claude-sonnet-5-5` 使用 `model(none)` 或强制工具选择的客户端无需改动;请求日志的 `adjustments` 与控制台「兼容调整」显示插件所做的改写。`auto` 下模型仍可能不调用工具,客户端需能处理普通回复。
4. 页面功能未变,但页面带插件版本标识,仍按下节步骤更新 CPAMP 页面并强刷浏览器。
5. Claude 模型返回 403 `permission_error`「The provider refused this request」与插件版本无关,实测与出口有关:2026-11-08 同一密钥从香港出口请求两款 Claude 模型(含不经插件的直连)均返回该 403,经日本出口恢复正常,其他模型不受影响。CPA v8.0.23 会因该 403 冷却凭证上的这个模型,随后同模型返回 503 `auth_unavailable`。改用合适出口的代理后,重启 CPA 清除冷却。

## v0.2.13:glibc 2.28、写盘与超时保护

Expand Down Expand Up @@ -199,7 +207,8 @@ Windows 使用 `Get-FileHash -Algorithm SHA256`,macOS 使用 `shasum -a 256`
| 无法加载库 | CPA 是否含插件支持;CPU/系统/运行库是否匹配;文件是否可读 |
| 模型可见但返回 403 | 目录不保证套餐权限,检查 `MODEL_NOT_IN_PLAN` |
| 接口直连失败或超时 | 确认 CPA 全局代理;插件不继承 Windows 系统代理 |
| 上游长时间无响应才报 504 | 可在设置页启用「首字节超时」和「流空闲超时」(`first_byte_timeout_seconds`、`stream_idle_timeout_seconds`,0 为关闭,启用时 5–1800 秒)。日志的错误类型分别为 `upstream_first_byte_timeout`、`upstream_stream_idle_timeout`;默认关闭。实测 Claude/GPT 思考期间不发送数据,首字节即思考时长(难题或 57 万 tokens 上下文约 12~25 秒),grok-4.7 高等级出现过 58 秒段间间隔;启用时建议两项均 ≥120 秒。grok-4.7 等长推理可超过默认 `timeout_seconds: 600`(实测 658 秒),需要时提高到 1200~1800 |
| 上游长时间无响应才报 504 | 可在设置页启用「首字节超时」和「流空闲超时」(`first_byte_timeout_seconds`、`stream_idle_timeout_seconds`,0 为关闭,启用时 5–1800 秒)。日志的错误类型分别为 `upstream_first_byte_timeout`、`upstream_stream_idle_timeout`;默认关闭。实测 Claude/GPT 思考期间不发送数据,首字节即思考时长(难题或 57 万 tokens 上下文约 12~25 秒),grok-4.7 高等级出现过 58 秒段间间隔;启用时建议两项均 ≥120 秒。grok-4.7 等长推理可超过 600 秒(实测 658 秒)。`timeout_seconds` 默认值自 v0.2.14 起为 1800;此前保存过设置的实例仍是 `settings.json` 中的旧值(通常 600),需在「设置 → 请求策略 → 请求超时」手动提高 |
| `model(none)` 或强制工具选择的请求日志显示「兼容调整」 | 部分 Claude 模型(实测 `claude-sonnet-5-5`)经 CommandCode 不能关闭思考,也不支持 `tool_choice` 为 `tool`/`any`。插件把上游的 400 改为自适应低强度思考或 `auto` 后重试一次,在日志 `adjustments` 中记录,并在本进程内记住该模型;重启或改 `base_url` 后重新探测 |
| 用量缺失 | 查看 `unavailable` / `status`;查询失败保留旧值 |
| 日志写入失败 | 检查 data_dir 的磁盘空间、权限及 `storage_error` |
| 重启后设置未按 YAML 改变 | 已存 settings.json 优先;采用明确的迁移方案 |
Expand Down Expand Up @@ -249,7 +258,7 @@ Windows 使用 `Get-FileHash -Algorithm SHA256`,macOS 使用 `shasum -a 256`
本轮没有真实账号调用。可先运行无网络预览:

```sh
python tests/commandcode_live.py --dry-run --generate --chat-model YOUR_CHAT_MODEL --messages-model YOUR_CLAUDE_MODEL --tools --image --thinking --thinking-mode adaptive --zdr --max-requests 13 --max-tokens 2048
python tests/commandcode_live.py --dry-run --generate --chat-model YOUR_CHAT_MODEL --messages-model YOUR_CLAUDE_MODEL --tools --image --thinking --thinking-off --thinking-mode adaptive --zdr --max-requests 14 --max-tokens 2048
```

实际执行需要仓库外 JSON 凭据文件(`api_key`)、CPA/动态库环境变量及明确允许的模型和请求预算,再去掉 `--dry-run` 并添加 `--credential-file`、`--report`。可分组降低预算;所有组合最多 13 次,本脚本硬限制最多 20 次、每次至多 8192 输出 tokens。实际收费规则以上游为准;ZDR 请求被接受也不能证明服务端保留策略。个人/组织与多 key 的共享身份仍待真实验收,因此采样保持逐凭据隔离。
实际执行需要仓库外 JSON 凭据文件(`api_key`)、CPA/动态库环境变量及明确允许的模型和请求预算,再去掉 `--dry-run` 并添加 `--credential-file`、`--report`。可分组降低预算;所有组合最多 14 次,`--request-timeout` 默认每次 300 秒(10–1800)。thinking 用例使用需要推理的计数题,`--thinking-off` 发送 `model(none)`;报告逐项列出插件的兼容调整(如强制工具选择改为 `auto`),出现预期外的调整即失败。本脚本硬限制最多 20 次、每次至多 8192 输出 tokens。实际收费规则以上游为准;ZDR 请求被接受也不能证明服务端保留策略。个人/组织与多 key 的共享身份仍待真实验收,因此采样保持逐凭据隔离。
25 changes: 24 additions & 1 deletion docs/RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,29 @@
# CommandCodeBridge 发布说明

## v0.2.13
## v0.2.14

发布日期:2026-11-08。CPA 原生插件,C ABI 1 / RPC schema 6;调用官方 Provider API。

### 本次更新

- **sonnet-5-5 的 `model(none)`**:该模型的上游拒绝 `thinking.type=disabled` 并要求改用 `between_tools`,而 CommandCode 的请求校验对所有模型拒绝 `between_tools`,经 CommandCode 无法关闭它的思考。插件现识别这一 400,改用自适应思考 + `effort=low` 重试一次。低强度下模型对简单问题通常不思考(实测),但不能保证。
- **sonnet-5-5 的强制工具选择**:`tool_choice` 为 `tool`/`any`(含 Chat 客户端的 `required`)时上游返回 400,插件改为 `auto`(保留工具列表与 `disable_parallel_tool_use`)重试一次。
- 两项只匹配上述上游 400、只作用于 Messages 协议模型;重试发生在任何输出之前,统计计为一次请求。重试被接受后本进程内记住该模型,重启或修改 `base_url` 后重新探测。请求日志新增 `adjustments`,控制台请求详情显示「兼容调整」。
- **默认超时改为 1800 秒**:实测 grok-4.7 高等级推理用时 658 秒,旧默认 600 秒会截断为 504。
- 验收脚本改用需要推理的思考用例,新增 `--thinking-off`、`--request-timeout`;控制台 `console.js`/`console.css` 改为可读源码(#17)。

### 升级步骤

1. 更新插件至 **v0.2.14**,确认实际运行版本。无需修改配置。
2. 已保存过设置的实例仍使用原超时(通常 600 秒),需要时在「设置 → 请求策略 → 请求超时」改为 1800。
3. 本次未改变 CPAMP 页面功能;页面带插件版本标识,仍建议在「设置 → CPAMP 原生面板」更新页面,异机/独立容器使用 `commandcodebridge_0.2.14_cpamp-web.zip`。
4. Claude 模型返回 403「The provider refused this request」与插件无关,实测与出口有关,见部署说明 v0.2.14 第 5 条。

### 下载与校验

四平台原生 ZIP、独立 CPAMP 前端 ZIP、五个 `.zip.sha256` 和统一 `checksums.txt`,共 **11 个资产**。CPA 发布门槛仍为 v8.0.23,热升级联测的前一版本改为 v0.2.13;v8.0.59 在 Windows 本地完成全套宿主联测。合并前以同一源码构建的 Windows 动态库对真实上游完成付费复测(sonnet-5-5、haiku-5-5),详见验证记录;未访问或修改任何部署服务器。

## 已发布 v0.2.13

发布日期:2026-11-07。CPA 原生插件,C ABI 1 / RPC schema 6;调用官方 Provider API。

Expand Down
Loading
Loading