feat(merge): 以官方 main 为基底融合 PR#530 多维表格与本地定制
- 多维表格(canvas-batch-table-node/use-canvas-batch-table/canvas-batch-table 等)以 PR#530 实现为主 - 保留官方 main 全部新功能:banner/画布版本历史/提示词编辑/方舟 Agent Plan/支付导出 - 移植本地定制:ddcat 多参考图校验、万有引力 lxmone 连接错误提示、Description v20(v24)、自建插件(a6api/metaso-h3/antigravity-proxy/lxmone)、seccomp、Windows 脚本 - 迁移版本升至 v24(官方 v20-23 banner/版本历史 + 我们的 Description 列) - 修复官方缺失的 markdownPlainText import
This commit is contained in:
41
plugin-packages/src-antigravity-proxy/README.md
Normal file
41
plugin-packages/src-antigravity-proxy/README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Antigravity Proxy
|
||||
|
||||
Antigravity 中转渠道插件:OpenAI Chat Completions 兼容对话协议。
|
||||
|
||||
## 协议身份
|
||||
|
||||
- 插件 ID:`antigravity-proxy`
|
||||
- Provider ID:`antigravity-chat`
|
||||
- 能力:`text`
|
||||
- 默认 Base URL:`http://103.242.14.110:8317`
|
||||
- 鉴权驱动:`bearer`
|
||||
- 创建:`POST /chat/completions`
|
||||
- 生命周期:同步响应
|
||||
|
||||
## 配置字段
|
||||
|
||||
| 字段 | 类型 | 必填 | 含义 |
|
||||
| --- | --- | --- | --- |
|
||||
| `apiKey` | secret | 是 | 中转渠道 API Key |
|
||||
|
||||
## 模型
|
||||
|
||||
- `gemini-3.8-flash-high`
|
||||
- `gemini-pro-agent`
|
||||
|
||||
## 统一字段映射
|
||||
|
||||
| 统一字段 | 类型 | 必填 | 上游映射 |
|
||||
| --- | --- | --- | --- |
|
||||
| `model` | string | 是 | `model` |
|
||||
| `messages` | message[] | 是 | `messages` |
|
||||
| `instructions` | string | 否 | `system/instructions` |
|
||||
| `temperature` | number | 否 | `temperature` |
|
||||
| `top_p` | number | 否 | `top_p` |
|
||||
| `max_tokens` | integer | 否 | `max_tokens` |
|
||||
| `tools` | array | 否 | `tools` |
|
||||
| `tool_choice` | object\|string | 否 | `tool_choice` |
|
||||
| `response_format` | object | 否 | `response_format` |
|
||||
| `stream` | boolean | 否 | `stream` |
|
||||
|
||||
完整接口见 [docs/interface.md](docs/interface.md)。
|
||||
70
plugin-packages/src-antigravity-proxy/docs/interface.md
Normal file
70
plugin-packages/src-antigravity-proxy/docs/interface.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Antigravity Proxy 接口字段
|
||||
|
||||
## 协议身份
|
||||
|
||||
- 插件 ID:`antigravity-proxy`
|
||||
- Provider ID:`antigravity-chat`
|
||||
- 能力:`text`
|
||||
- 默认 Base URL:`http://103.242.14.110:8317`
|
||||
- 鉴权驱动:`bearer`
|
||||
- 创建:`POST /chat/completions`
|
||||
- 生命周期:同步响应
|
||||
|
||||
## 配置字段
|
||||
|
||||
| 字段 | 类型 | 必填 | 含义 |
|
||||
| --- | --- | --- | --- |
|
||||
| `apiKey` | secret | 是 | 中转渠道 API Key |
|
||||
|
||||
## 统一字段映射
|
||||
|
||||
| 统一字段 | 类型 | 必填 | 上游映射 | 说明 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `model` | string | 是 | `model` | 上游模型 ID。 |
|
||||
| `messages` | message[] | 是 | `messages` | 包含历史消息和当前用户输入。 |
|
||||
| `instructions` | string | 否 | `system/instructions` | 系统指令。 |
|
||||
| `temperature` | number | 否 | `temperature` | 采样温度。 |
|
||||
| `top_p` | number | 否 | `top_p` | 核采样参数。 |
|
||||
| `max_tokens` | integer | 否 | `max_tokens/max_output_tokens` | 最大输出 token。 |
|
||||
| `tools` | array | 否 | `tools/toolConfig` | 工具定义。 |
|
||||
| `tool_choice` | object\|string | 否 | `tool_choice` | 工具选择策略。 |
|
||||
| `response_format` | object | 否 | `response_format/text` | 结构化输出配置。 |
|
||||
| `stream` | boolean | 否 | `stream` | 流式开关。 |
|
||||
|
||||
## 上游请求模板
|
||||
|
||||
| 上游位置 | 值或转换表达式 |
|
||||
| --- | --- |
|
||||
| `create.method` | `"POST"` |
|
||||
| `create.path` | `"/chat/completions"` |
|
||||
| `create.contentType` | `"application/json"` |
|
||||
| `create.body.model` | `{"$ref":"request.model"}` |
|
||||
| `create.body.messages` | `{"$ref":"request.messages"}` |
|
||||
| `create.body.temperature` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.temperature"}}` |
|
||||
| `create.body.top_p` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.top_p"}}` |
|
||||
| `create.body.max_tokens` | `{"$omitEmpty":{"$coalesce":[{"$ref":"request.extra.max_tokens"},{"$ref":"request.providerOptions.antigravity-chat.max_tokens"}]}}` |
|
||||
| `create.body.tools` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.tools"}}` |
|
||||
| `create.body.tool_choice` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.tool_choice"}}` |
|
||||
| `create.body.response_format` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.response_format"}}` |
|
||||
| `create.body.stream` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.stream"}}` |
|
||||
| `create.body.stop` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.stop"}}` |
|
||||
| `create.body.seed` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.seed"}}` |
|
||||
| `create.body.frequency_penalty` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.frequency_penalty"}}` |
|
||||
| `create.body.presence_penalty` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.presence_penalty"}}` |
|
||||
| `create.body.user` | `{"$omitEmpty":{"$ref":"request.providerOptions.antigravity-chat.user"}}` |
|
||||
|
||||
## 响应映射
|
||||
|
||||
| 映射位置 | 上游路径或转换表达式 |
|
||||
| --- | --- |
|
||||
| `response.status` | `"succeeded"` |
|
||||
| `response.textPaths[0]` | `"choices.0.message.content"` |
|
||||
| `response.textPaths[1]` | `"choices.0.text"` |
|
||||
| `response.reasoningPaths[0]` | `"choices.0.message.reasoning_content"` |
|
||||
| `response.usage` | `{"$ref":"response.usage"}` |
|
||||
| `response.errorPaths[0]` | `"error.code"` |
|
||||
| `response.messagePaths[0]` | `"error.message"` |
|
||||
|
||||
## 兼容边界
|
||||
|
||||
该包只代表 Antigravity 中转渠道的 OpenAI Chat Completions 线协议;其他端点或网关包装必须使用独立插件。
|
||||
68
plugin-packages/src-antigravity-proxy/manifest.json
Normal file
68
plugin-packages/src-antigravity-proxy/manifest.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"apiVersion": "yingce.plugin/v2",
|
||||
"id": "antigravity-proxy",
|
||||
"name": "Antigravity Proxy",
|
||||
"version": "1.0.0",
|
||||
"author": "Yingce",
|
||||
"description": "Antigravity 中转渠道插件:OpenAI 兼容对话(gemini-3.8-flash-high / gemini-pro-agent)。",
|
||||
"permissions": ["generation.run", "media.read"],
|
||||
"configuration": {
|
||||
"fields": [
|
||||
{ "name": "apiKey", "type": "secret", "label": "API Key", "required": true }
|
||||
]
|
||||
},
|
||||
"contributes": {
|
||||
"providers": [
|
||||
{
|
||||
"id": "antigravity-chat",
|
||||
"label": "Antigravity Chat",
|
||||
"capabilities": ["text"],
|
||||
"scopes": ["admin.system-channel", "user.custom-channel", "canvas", "creation", "agent"],
|
||||
"baseUrl": "http://103.242.14.110:8317",
|
||||
"auth": { "type": "bearer", "field": "apiKey" },
|
||||
"parameters": [
|
||||
{ "name": "model", "type": "string", "required": true, "mapping": "model", "description": "模型 ID(gemini-3.8-flash-high / gemini-pro-agent)。" },
|
||||
{ "name": "messages", "type": "message[]", "required": true, "mapping": "provider message container", "description": "包含历史消息和当前用户输入。" },
|
||||
{ "name": "instructions", "type": "string", "required": false, "mapping": "system/instructions", "description": "系统指令。" },
|
||||
{ "name": "temperature", "type": "number", "required": false, "mapping": "temperature", "description": "采样温度。" },
|
||||
{ "name": "top_p", "type": "number", "required": false, "mapping": "top_p", "description": "核采样参数。" },
|
||||
{ "name": "max_tokens", "type": "integer", "required": false, "mapping": "max_tokens/max_output_tokens", "description": "最大输出 token。" },
|
||||
{ "name": "tools", "type": "array", "required": false, "mapping": "tools/toolConfig", "description": "工具定义。" },
|
||||
{ "name": "tool_choice", "type": "object|string", "required": false, "mapping": "tool_choice", "description": "工具选择策略。" },
|
||||
{ "name": "response_format", "type": "object", "required": false, "mapping": "response_format/text", "description": "结构化输出配置。" },
|
||||
{ "name": "stream", "type": "boolean", "required": false, "mapping": "stream", "description": "流式开关;后台任务当前以最终响应归一。" },
|
||||
{ "name": "providerOptions", "type": "object", "required": false, "mapping": "provider-specific fields", "description": "插件命名空间内的厂商扩展字段。" }
|
||||
],
|
||||
"create": {
|
||||
"method": "POST",
|
||||
"path": "/chat/completions",
|
||||
"contentType": "application/json",
|
||||
"body": {
|
||||
"model": { "$ref": "request.model" },
|
||||
"messages": { "$ref": "request.messages" },
|
||||
"temperature": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.temperature" } },
|
||||
"top_p": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.top_p" } },
|
||||
"max_tokens": { "$omitEmpty": { "$coalesce": [ { "$ref": "request.extra.max_tokens" }, { "$ref": "request.providerOptions.antigravity-chat.max_tokens" } ] } },
|
||||
"tools": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.tools" } },
|
||||
"tool_choice": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.tool_choice" } },
|
||||
"response_format": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.response_format" } },
|
||||
"stream": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.stream" } },
|
||||
"stop": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.stop" } },
|
||||
"seed": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.seed" } },
|
||||
"frequency_penalty": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.frequency_penalty" } },
|
||||
"presence_penalty": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.presence_penalty" } },
|
||||
"user": { "$omitEmpty": { "$ref": "request.providerOptions.antigravity-chat.user" } }
|
||||
}
|
||||
},
|
||||
"response": {
|
||||
"status": "succeeded",
|
||||
"textPaths": ["choices.0.message.content", "choices.0.text"],
|
||||
"reasoningPaths": ["choices.0.message.reasoning_content"],
|
||||
"usage": { "$ref": "response.usage" },
|
||||
"errorPaths": ["error.code"],
|
||||
"messagePaths": ["error.message"]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user