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:
Codex committed 2026-09-18 14:09:50 +08:00
1 parent 4eaa28b807
commit 9b9a7f4a72
63 files changed
+9087 -892

No files matched your search

@@ -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"]
}
}
]
}
}