知识库章节 ▾

导航

▸ 从这里开始 按角色

类别

工具 52
词汇表 12

工具

OpenHands + JoinGonka Gateway:专属 endpoint 上的智能体

OpenHands 是一个用于自主开发的开源平台:代理能够自行阅读存储库、运行命令、修改文件并将任务执行到结果,而您只需设置目标并验证结果。到 2026 年,其主要界面是 Agent Canvas,这是一个基于浏览器的控制台,用于启动与代理的对话以及在您的机器、Docker、服务器或 OpenHands 云中运行自动化。代码遵循 MIT 许可证开源。

OpenHands 不强制绑定特定模型:整个 LLM 交互层基于 LiteLLM 构建,因此任何 OpenAI 兼容的终端节点都适用于该代理。对于 JoinGonka Gateway,这需要在设置中填写三个字段:Custom Model — openai/deepseek-ai/DeepSeek-V4-Flash-0731,Base URL — https://gate.joingonka.ai/v1,以及 API Key — 您的 jg-… 密钥。不需要单独的安装程序:一切都可以在几分钟内在界面中完成。

自主代理是 tokens 的最大消费者:每一步都带有系统提示、历史记录和工具结果,而一个任务中包含数十个步骤。OpenHands 文档明确警告代理会向模型发送大量请求,因此请注意消耗情况。通过网关,一百万个输入 token 的价格为 $0.0069 — DeepSeek V4 Flash、GLM-5.3 Flash 和 MiniMax M2.7 的价格相同 — 因此长时间的运行不再是预算负担。确认邮箱地址后,您的账户将获得 3M 免费 token:这足以让代理运行一个实际任务并查看您的实际消耗情况。

您使用的是哪个 OpenHands:四种界面与密钥

该项目目前有几种界面,您在哪里查找模型设置取决于您运行的是哪一个。值在各处都是相同的 — 只有访问路径不同。

界面启动方式模型设置位置2026年9月状态
Agent Canvasnpx @openhands/agent-canvas 或 npm install -g @openhands/agent-canvas 及命令 agent-canvas;打开 http://localhost:8000Settings > LLM, Advanced 选项卡项目的主要界面
OpenHands CLIuv tool install openhands --python 3.12,然后执行 openhands首次运行向导,Ctrl+P → Settings,~/.openhands/agent_settings.json 文件功能正常,但在 README 中标注为不再活跃开发
Docker 中的传统 Web 界面执行 openhands serve 或文档中的 docker run;端口 3000Settings → LLM 选项卡 → Advanced 开关在文档中称为 Local GUI (Legacy)
OpenHands Cloud项目的托管云相同的 LLM 设置页面根据文档,自定义 LLM 的设置方式相同;我们尚未测试此路径

Agent Canvas 需要 Node.js 和 uv — 代理的本地服务器在此之上运行(详情请参见安装指南)。指南提到了 Node.js 22.12 或更高版本,但从 1.17 版本开始,包本身要求 Node.js 24 或更高版本 — 请安装 24 以避免不兼容版本的警告。也可以选择容器方式:ghcr.io/openhands/agent-canvas 镜像在 http://localhost:8000/canvas 提供界面,并且仅能看到您挂载的目录。

JoinGonka 密钥。 在 gate.joingonka.ai/register 注册,验证邮箱,并在“API 密钥”部分创建一个带有 jg- 前缀的密钥。一个密钥和一个余额适用于网络中的所有模型。OpenHands 安装程序 @joingonka/setup 的工具列表中没有列出此项,这并不是疏忽:其设置存在于界面和安全的后端存储中,而不是存储在可以在外部编辑的文本配置文件中。

连接到 Agent Canvas:Advanced 选项卡上的三个字段

第 1 步。 启动 Agent Canvas 并打开 Settings > LLM。首次运行向导会建议使用 OpenHands 自带的提供商 — 此步骤可以跳过,以后可以轻松回到设置界面。

第 2 步。 点击 Add LLM Profile 并切换到 Advanced 选项卡:Basic 选项卡仅提供内置列表中的提供商和模型。

第 3 步。 填写三个字段:

字段值
Custom Modelopenai/deepseek-ai/DeepSeek-V4-Flash-0731
Base URLhttps://gate.joingonka.ai/v1
API Key您的 jg-… 密钥

第 4 步。 保存配置文件。在保存之前,Canvas 会通过后端请求验证配置:如果密钥被拒绝或模型不可用,配置文件将无法保存,您会看到错误信息。

第 5 步。 开始新对话并发送一条简短消息。已经打开的对话将继续使用它们启动时所用的模型。

为什么使用 openai/。 LiteLLM 通过模型前缀确定提供商。openai/ 前缀并不意味着“来自 OpenAI 的模型”,而是指“通过 OpenAI Chat Completions 协议与服务器通信”。只有第一个段会被截掉,因此网关接收到的是实际标识符 — deepseek-ai/DeepSeek-V4-Flash-0731。OpenHands 文档中以 openai/qwen/qwen3.6-35b-a3b 为例展示了相同的方案。如果没有该前缀,LiteLLM 将拒绝工作并返回 LLM Provider NOT provided 消息。

为什么使用 /v1 且不能多写。 LiteLLM 通过官方 OpenAI 客户端访问服务器,该客户端会自动追加 /chat/completions。因此,地址必须以 /v1 结尾:没有后缀,请求将无法连接到 API;带有额外后缀,则会指向不存在的路径。Canvas 的另一个要求是:地址必须能从后端访问,而不仅仅是从浏览器访问。网关是一个公共 HTTPS 地址,它从 Docker 容器中可见,正如从宿主机访问一样;像 host.docker.internal 这样的技巧仅在模型运行在您本地机器上时才需要。

为所有三个模型创建配置文件。 为每个网络模型创建一个配置文件并给它们起一个简短的名称 — 例如 deepseek、glm 和 minimax(文档提到限制为十个配置文件)。您可以在对话中直接切换,而不会丢失上下文:使用输入框中的配置文件选择按钮或输入 /model glm 命令;不带参数的 /model 将显示列表。为了避免在每个配置文件中插入密钥,您可以将其保存在 Provider Connections 块中一次 — 它在本地后端可用。

Docker 中的旧版界面。 字段相同:Settings → LLM 选项卡 → 启用 Advanced → Custom Model、Base URL、API Key → Save Changes。

终端与自动化:CLI、环境变量、SDK

CLI 通过 uv 一条命令即可安装,首次启动时会自动引导你完成模型配置;之后可用 Ctrl+P → Settings 返回该配置:

uv tool install openhands --python 3.12
openhands

对于脚本来说,环境变量更方便。一个重要细节:默认情况下 CLI 会忽略它们,只有加上 --override-with-envs 标志才会应用——仅对单次运行生效,不保存任何内容:

export LLM_MODEL="openai/deepseek-ai/DeepSeek-V4-Flash-0731"
export LLM_BASE_URL="https://gate.joingonka.ai/v1"
export LLM_API_KEY="jg-your-key"

openhands --override-with-envs

同一套设置无需界面即可运行——适用于 CI 和批处理任务:

openhands --headless --override-with-envs -t "Read calc.py and tell me in one sentence whether it has a bug."

在 headless 模式下,智能体始终以自动批准方式运作,因此请把它运行在可以放手让它做任何事的地方:独立目录或容器中。--json 标志会把输出转成 JSONL 事件流——便于在管道中解析。我们正是在 2026 年 9 月 21 日以 CLI 1.16.0 这样测试该组合的:CLI 头部会打印 Agent initialized with model: openai/deepseek-ai/DeepSeek-V4-Flash-0731,随后智能体读取文件并给出实质性的回答。

方式作用范围是否保存
Agent Canvas 中的 Settings > LLM该后端上的所有新对话是,保存在后端存储中(~/.openhands)
CLI 中的向导及 Ctrl+P → Settings所有 CLI 运行是,保存在 ~/.openhands/agent_settings.json
带 --override-with-envs 标志的 LLM_MODEL、LLM_BASE_URL、LLM_API_KEY单次 CLI 运行否
config.toml旧版 V0 系列及开发模式文档中已归入 Legacy;在 Agent Canvas 和 CLI 1.x 中,设置由上述方式完成

已保存的 CLI 设置位于 ~/.openhands/agent_settings.json:其中的模型通过编辑 llm 块的三个字段来更改——model、api_key 和 base_url。不建议从零创建该文件:首次启动向导还会把智能体的其他设置写入其中,包括历史压缩,没有它,长时间对话会撞上上下文窗口。

如果你要把智能体嵌入自己的代码,OpenHands SDK 接受同样的三个值:

from pydantic import SecretStr
from openhands.sdk import LLM

llm = LLM(
    model="openai/deepseek-ai/DeepSeek-V4-Flash-0731",
    base_url="https://gate.joingonka.ai/v1",
    api_key=SecretStr("jg-your-key"),
)

长周期自主运行应选择哪种模型

网络内所有模型的价格相同,因此选择取决于行为。对于自主智能体而言,两个数字至关重要。上下文窗口:每一步都会重新发送历史记录,窗口越长,智能体在不丢失信息的情况下工作的时间就越长。回复上限:智能体编写完整大文件的步骤必须能够容纳在一次回复中。下表显示了我们运行同一任务(读取文件并查找错误)的结果,该测试通过 OpenHands CLI 1.16.0 和 SDK 1.21.0 进行。

模型OpenHands 自定义模型上下文回复上限在 OpenHands 中的表现
DeepSeek V4 Flashopenai/deepseek-ai/DeepSeek-V4-Flash-0731380K32768读取文件并切中要点进行回复,没有冗余文本。长上下文和网络中最高的回复上限使其成为处理数小时任务的默认选择
GLM-5.3 Flashopenai/zai-org/GLM-5.3-Flash390K8192在回答前进行推理;工具循环执行得非常干净。适合规划和解析复杂逻辑的配置,需注意部分回复内容会被推理过程占用
MiniMax M2.7openai/MiniMaxAI/MiniMax-M2.7200K8192解决了任务,但在最终消息中显式展示了思维过程。该模型具有网络中最大的容量,可作为高峰时段和对话标题生成的备用配置

针对长时间运行任务的推荐流程遵循 OpenHands 文档的建议:用一个模型规划,用另一个模型执行。使用 glm 配置开始对话并要求提供计划,无需修改文件;然后发送 /model deepseek 并下达执行命令。切换时历史记录、文件和任务状态都会得到保留。将 minimax 配置作为第三种选择保留:在高峰期前两个模型容量耗尽时切换到它非常方便,而且可以在 Settings > Application 中将其分配用于生成对话标题。

历史记录压缩。 即使拥有数十万 token 的窗口,在长时间任务中依然是有限的。在 OpenHands 中,这由压缩器(condenser)处理:它将旧事件折叠成简短的摘要,根据文档,这能降低长对话中的延迟和 token 消耗。在 Agent Canvas 中,它在 Settings > Condenser 部分进行配置;在我们的 CLI 运行中,它在 80 个事件的阈值下自动启用。

模型限制。 OpenHands 从 LiteLLM 目录中获取上下文窗口和回复上限,而其中不包含 Gonka 网络标识符(我们在 LiteLLM 1.81 上测试过),因此智能体本身没有这些模型的预设值。但这不会干扰运行:网关会根据上表自行应用回复上限。如果您想显式设置限制,SDK 中有 max_input_tokens 和 max_output_tokens 字段,而在 Canvas 中,All 选项卡会显示完整的配置字段。有关默认模型的详细信息,请参阅 DeepSeek V4 Flash 概览。

验证与常见错误

您可以通过两个方面来确认请求是否真的通过网关。从 OpenHands 端:开启一个新对话并给出一个简短任务,例如“阅读 README 并用一句话总结”:Agent 必须调用工具并给出回复。从网关端:前往后台“使用情况”部分:请求会出现在“按模型”分类中,且“按密钥”部分会更新最后请求时间。如果为空,说明对话是在另一个配置档案中进行的:请检查当前激活的是哪一个。

现象原因操作建议
LLM Provider NOT provided模型字段缺少提供商前缀在标识符前填写 openai/:openai/deepseek-ai/DeepSeek-V4-Flash-0731
配置无法保存,Canvas 显示后端错误Canvas 通过实时请求验证配置并遭到拒绝错误文本为下方的一行:修正密钥、地址或模型后再次保存
AuthenticationError … Invalid API key网关返回 401:密钥不被接受填入完整的密钥,去除首尾空格;在后台检查密钥是否已被撤销
405 Not Allowed 和 nginx HTML 页面Base URL 缺少 /v1 后缀地址必须严格为 https://gate.joingonka.ai/v1
404 … Invalid URL (POST /v1/v1/chat/completions)Base URL 多了后缀:重复的 /v1 或完整的 /chat/completions 路径只保留 /v1 — LiteLLM 会自动补全路径
400 … Model "…" not found. Available: …openai/ 后的标识符与任何网络模型均不匹配网关会自动列出可用模型;完整列表请参考 GET https://gate.joingonka.ai/v1/models
429密钥已达到每分钟请求限制,或模型在高负载时容量不足OpenHands 会通过递增重试间隔自动重试。若等待过长,请使用 /model 命令切换配置档案;网络状态可在状态页面查看
402余额不足在“账单”部分充值;密钥本身保持有效
Agent 像聊天机器人一样运作:不处理文件,工具调用混乱模型无法处理 Agent 循环;OpenHands 文档建议此时更换模型切换到 DeepSeek V4 Flash 配置档案 — 在我们的测试中,它能正常完成 Agent 循环

根据 OpenHands 文档,发生 429 错误时的重试次数和等待间隔可以通过 LLM_NUM_RETRIES, LLM_RETRY_MIN_WAIT 和 LLM_RETRY_MAX_WAIT 变量配置。文档和 SDK 中的默认值可能存在差异,建议参考实际表现:在 CLI 1.16.0 的对话状态中,我们观察到 5 次重试,等待间隔在 8 到 64 秒之间。

费用说明及使用注意事项

通过 JoinGonka Gateway,输入端 token 价格为 $0.0069/百万,输出端为 $0.021/百万 — 该价格适用于所有网络模型,并从此页面的实时来源获取。

场景消耗量通过 Gateway 费用
单次任务:分析文件,应用修正数万 token分毫之间
自主开发功能20-50M token数十美分
24 小时后台自动化~150M token约一美元

右侧列出的估算基于 2026 年 9 月的价格;关于 Agent 经济学的运作机制,详见关于 AI Agent 最便宜 API 的文章。

支出上限。 OpenHands 建议设置支出限额 — 网关将其内置于付费模型中:余额为预付制,Agent 的消费不会超过账户内的金额。剩余余额和每日消耗可在后台查看。对于 CI 和后台自动化,请创建单独的密钥,以免与您的主密钥消费混淆;关于带每日限额的子密钥,详见关于 Management Keys 的文章。

信任边界。 通过 npm 启动的 Agent Canvas 以您的用户权限运行,能够访问整个文件系统。对于第三方代码,请使用 Docker 版本:Agent 将只能看到挂载的目录。这是 OpenHands 本身的特性,与模型提供商无关。

对话记录由您掌握。 OpenHands 将对话历史本地存储在 ~/.openhands 中,并在每一步将其发送给模型;网关不会存储对话记录 — 您的提示词和代码在响应后不会保留在网关上。

如果任务涉及图片(如界面截图、架构图),请为其创建一个具备视觉能力的独立配置档案:Gonka 网络模型仅支持文本。对于代码、命令和文件,这不是限制。

OpenHands 通过三个字段连接到 JoinGonka Gateway:Custom Model openai/deepseek-ai/DeepSeek-V4-Flash-0731、Base URL https://gate.joingonka.ai/v1 以及 jg-… 密钥。在 Agent Canvas 中,这位于 Settings > LLM 的 Advanced 选项卡下;在 CLI 中,请使用配置向导或设置环境变量 LLM_MODEL、LLM_BASE_URL 和 LLM_API_KEY 并加上 --override-with-envs 标志;config.toml 保留自上一系列。openai/ 前缀用于选择协议而非供应商,且 /v1 后缀是强制性的。实时运行验证了所有三个网络模型上的代理循环:默认请使用具有 380K 上下文且响应上限为 32768 tokens 的 DeepSeek V4 Flash,使用 GLM-5.3 Flash 进行规划,并将 MiniMax M2.7 作为高峰时段的备用配置。

想了解更多?

探索其他章节或立即开始赚取 GNK。

获取密钥和免费 tokens →