Repository navigation
Releases: 1812095643/sub2api-excel2api-plugin
Release list
v0.6.0 · 修复 Excel2API 图片上传
图片问题修复
修复 Issue #1:BPS 拒绝客户端用户消息中的 data:image/...;base64,...,此前插件会直接返回 HTTP 400。
v0.6.0 的处理链是:
- 识别用户消息里的
input_imagedata URL; - 在同一账号代理和授权下请求
https://bps.openai.com/basispoints/api/attachments; - 使用 multipart
file上传图片; - 读取返回的
openai_file_id; - 将用户消息中的
image_url替换成file_id后再请求/basispoints/api/responses。
已经是 HTTPS 的用户图片会原样保留。工具返回的截图不会被误当成用户附件上传,会按工具结果继续回放。
其他能力
- Excel2API BPS 工具隧道;
- Codex CLI 35 个工具/namespace 声明;
- function/custom 工具类型恢复;
- 完整
run_officejs调用项回放; - 稳定
turn_id和agent_iteration; - 请求时区与英文 Accept-Language;
- 并行降智检测、Cron、条件任务和专用测试。
安装
在 Sub2API 0.2.7 插件管理页上传:
openai-account-health-0.6.0-linux-amd64.s2plugin
然后开启 Excel2API、填写账号 ID、开启“启用测试”,保存并点击“保存并测试 Excel2API”。
校验
SHA-256:8cd98d5bf65d5ff1e555e31698e69c9c561ec314166bf1073a4fc5bff22bed77
本地 Linux/WSL 回归测试和 multipart 附件上传契约测试通过。未使用真实账号进行上游图片请求验收。
v0.5.0 · Excel2API Codex 工具隧道
这是什么
openai-account-health 是面向 Sub2API 0.2.7 的 OpenAI OAuth Transport 插件。本版本把指定的 OpenAI OAuth 账号接入 ChatGPT Excel 的 BPS Responses 接口,并通过固定的 run_officejs 隧道保持 Codex CLI 的工具调用协议。
主要功能
- Excel2API:按 Sub2API 账号 ID 单独启用,自动复用账号授权、ChatGPT account ID 和账号代理。
- Codex CLI 工具目录:内置来自
openai/codex固定提交的 35 个工具/命名空间声明,包含exec_command、apply_patch、view_image、update_plan、MCP 资源、协作工具、代码模式和图片工具。 - BPS 工具隧道:BPS 不接收客户端
tools;插件把工具目录写入 developer 消息,解析 BPS 原生run_officejs,再恢复为客户端的function_call或custom_tool_call。 - 稳定工具续接:保留原始 BPS 调用项,固定
turn_id,只递增agent_iteration。 - 参数与错误保护:校验嵌套 JSON、工具类型、namespace 和 schema;半截/非法参数、未知工具和连续空回合会明确处理。
- 请求时区与英文请求头:默认
Asia/Singapore,可按账号覆盖,已有Accept-Language统一为英文。 - 并行降智检测:支持多个模型、并行度、指定账号、只检测启用调度账号、Cron 和条件任务。
安装和首次使用
- 在 Sub2API 管理后台打开“插件管理”。
- 上传本 Release 的
openai-account-health-0.5.0-linux-amd64.s2plugin。 - 确认签名可信后启用插件。
- 打开插件配置页,开启 Excel2API,填写需要走 BPS 的 Sub2API OpenAI OAuth 账号 ID。
- 开启 启用测试,填写至少一个检测模型并保存。
- 点击 保存并测试 Excel2API,确认 BPS、账号授权和账号代理可用。
- 再通过 Codex CLI 或经过 Sub2API 的 Responses 客户端使用这些账号。
账号管理页面的“测试连接”不属于本插件配置流程;Excel2API 使用插件页面内的专用测试按钮。
配置字段
插件 UI 使用以下 JSON 字段,字段名保持 snake_case:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
default_timezone |
string | Asia/Singapore |
默认 IANA 时区 |
account_timezones |
object | {} |
账号 ID 到时区的覆盖映射 |
direct_enabled |
boolean | false |
Excel2API 总开关 |
direct_account_ids |
number[] | [] |
需要走 BPS 的账号 ID |
diagnostic_enabled |
boolean | true |
降智检测总开关 |
diagnostic_models |
string[] | [] |
检测模型列表 |
diagnostic_account_ids |
number[] | [] |
留空表示全部 OpenAI OAuth 账号 |
diagnostic_schedulable_only |
boolean | false |
只检测启用调度的账号 |
diagnostic_concurrency |
integer | 4 |
并行度,1 到 16 |
schedule_mode |
string | disabled |
disabled、cron 或 condition |
schedule_cron |
string | "" |
五段 Cron,例如 */30 * * * * |
schedule_condition |
string | has_schedulable_accounts |
条件任务类型 |
YAML 配置
Sub2API 0.2.7 的插件业务配置不是从主 YAML 自动读取,而是通过插件 UI 或管理 API 保存后加密进数据库。仓库中的两个示例文件分别对应两类配置。
宿主主配置 YAML
把下面片段合并到服务器主 config.yaml 的 plugins 节点,用于信任发布者公钥:
plugins:
allow_unsigned: false
trusted_publishers:
personal-astra-transport-20260921: "LPYLHgoVkZ4sCI1jDDlYXPkv8bErFM9mKFpN5/ngWjY="不要把签名私钥、OAuth Token、refresh token、Cookie 或代理密码写进 YAML。
插件业务 YAML
仓库中的 docs/excel2api-config.example.yaml 是业务配置记录示例。Sub2API 0.2.7 不会自动读取这个文件:
plugin_id: local.personal.openai-account-health
config:
default_timezone: Asia/Singapore
account_timezones:
"123": America/Los_Angeles
direct_enabled: true
direct_account_ids:
- 123
diagnostic_enabled: true
diagnostic_models:
- gpt-5.6-sol
- gpt-6-astra
diagnostic_account_ids: []
diagnostic_schedulable_only: true
diagnostic_concurrency: 4
schedule_mode: cron
schedule_cron: "*/30 * * * *"
schedule_condition: has_schedulable_accountsSub2API 管理 API 保存时,只提交 config 对象。例如使用 Powershell:
$pluginId = 1
$config = Get-Content .\excel2api-config.json -Raw
Invoke-RestMethod `
-Method Put `
-Uri "http://127.0.0.1:8080/admin/plugins/$pluginId/config" `
-ContentType "application/json" `
-Body $config实际部署需要使用你的管理认证和二次验证流程。$pluginId 是插件安装后后台返回的数据库 ID,不是插件字符串 ID。没有 yq 时,直接在插件 UI 填写保存更稳妥。
兼容和边界
- Sub2API:
>=0.2.7 <0.3.0,推荐并实际验证版本为0.2.7。 - 当前 Release 只提供 Linux amd64 运行时。
- API Key 账号、其他 Provider 和 OAuth 刷新流程继续由 Sub2API 原有路径处理。
- 工具执行仍由 Codex CLI/Sub2API 客户端负责,插件不会执行 shell、
apply_patch、MCP 或图片工具。 - 用户图片必须使用 HTTPS URL;BPS 拒绝的
data:image会在插件本地拦截。
校验
- 插件签名:Ed25519 校验通过。
- SHA-256:
c3631f9f788af401ed4b53b4bc83490f3da08f842463d55c4edf374ae7b37bff - 本地 Linux/WSL 回归测试、Codex 工具目录解析、namespace 回放、非法隧道调用、JavaScript 语法检查均通过。
- 该 Release 未进行真实 BPS 上游请求验收;请先在插件页面执行“保存并测试 Excel2API”。
完整说明、YAML 示例和源码见仓库 README: