在 OpenHands 里用 DaoXE

OpenHands(前身 OpenDevin)是那个会规划、改文件、跑命令、提补丁的开源智能体。它的 LLM 层就是 LiteLLM —— 任何 OpenAI 兼容端点都能直接插进来,DaoXE 亦然。

更新于 2026-09-15

OpenHands 跑完整的工程循环 —— 规划、编辑、终端、PR。官方文档写明:LiteLLM 支持什么模型它就能接什么(最便宜 API 教程),而 OpenAI 兼容路径正是 DaoXE 的形状:一个 base URL、一把 key、一个带对前缀的模型 ID。

为什么让 OpenHands 走 DaoXE#

  • 智能体循环,用你的 key。OpenHands 的规划器、编辑器和终端调用都跑在你注册的供应商上 —— 一把 DaoXE key 覆盖 ~25 家供应商的数百个模型,强模型和便宜模型共用一个余额。
  • 两套配置、一份账单。命名 LLM 配置让强模型负责规划、低价模型做例行编辑 —— 不必开第二个账号。
  • 结果可审计。智能体的产出是 diff 和命令执行记录 —— 正是检查便宜端点有没有给你真模型的地面实况(如何鉴别掉包)。

在 OpenHands 里配置#

  1. 打开 LLM 高级面板。 在 OpenHands UI 的 Settings → LLM 点 "see advanced settings" 并开启 Advanced 开关 —— Base URL 字段只在那里出现。
  2. 给模型 ID 加前缀。 Custom Model 填 openai/ + DaoXE GET /v1/models 里的精确 ID,例如 openai/YOUR_EXACT_MODEL_ID。OpenHands 经 LiteLLM 路由,openai/… 就是它对「任意 OpenAI 兼容服务器」的供应商标。
  3. 指向 DaoXE。 Base URL:https://daoxe.com/v1;API Key:你的 DaoXE key。无界面运行则读同一组 LLM_MODEL / LLM_BASE_URL / LLM_API_KEY。
  4. 验一次循环。 让它干一件小事 —— 列文件、修个错别字 —— 确认工具调用真的执行。若智能体「表现得像聊天机器人」,文档给的办法是换更强模型或加大上下文窗口,而不是翻设置。
bash
# Headless / CLI runs read the same trio
export LLM_MODEL="openai/YOUR_EXACT_MODEL_ID"   # the openai/ prefix is required
export LLM_BASE_URL="https://daoxe.com/v1"
export LLM_API_KEY="***"

值得注意的坑

openai/ 前缀不是装饰:OpenHands 靠它解析供应商 —— 缺前缀配置就走错路径,文档排错表里的 "Provider is not recognized" 说的就是它。前缀之后的字符串必须与端点 GET /v1/models 返回的 id 完全一致;DaoXE 的模型 ID 随账号而变,请读取、别猜。Base URL 是从后端可达,不是从你的浏览器:OpenHands 常在 Docker 里运行,容器里的 127.0.0.1 是容器自己 —— 所以文档的本地服务器示例用 http://host.docker.internal:<port>/v1。DaoXE 的托管地址只要容器出网 HTTPS 不被拦即可。弱模型会让循环停摆:文档建议用得起的最强模型;无视工具调用的模型看着像网关故障,其实是模型问题。命名配置会继承:config.toml 里的 [llm.<profile>] 段复制默认 [llm] 的全部设置,base URL 配一次全档共享。更多客户端见客户端设置说明。

验证你拿到的是真模型#

先证明端点可用,再怀疑客户端 —— 这一步失败,改任何设置都没用:

bash
export DAOXE_API_KEY="your_api_key"

# List the exact model IDs your account can call
curl --fail-with-body --show-error --silent \
  https://daoxe.com/v1/models \
  -H "Authorization: Bearer ${DAOXE_API_KEY}"

先在智能体之外证明端点可用,再在 temperature 0 下把难题与官方 API 对比:

bash
curl --fail-with-body --show-error --silent \
  https://daoxe.com/v1/chat/completions \
  -H "Authorization: Bearer ${DAOXE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_EXACT_MODEL_ID",
    "max_tokens": 64,
    "messages": [{"role": "user", "content": "Say hello in one sentence."}]
  }'

别信我们 —— 自己验证

把 开源 benchmark 对准 DaoXE 和官方 API,在 temperature 0 下对比。再学会如何鉴别掉包,让便宜端点无法悄悄把你换成更小的模型。

常见问题#

OpenHands 能接 DaoXE 吗?

能 —— Settings → LLM 开 Advanced,Custom Model 填 openai/YOUR_EXACT_MODEL_ID,Base URL 填 https://daoxe.com/v1,贴 DaoXE key。本质是 LiteLLM 的 openai/ 供应商指向 DaoXE。

模型名为什么必须 openai/ 开头?

那是 OpenHands(经 LiteLLM)选路用的供应商标 —— openai/ 表示「按这个 base URL 走 OpenAI 兼容协议」。前缀后的部分必须等于 GET /v1/models 里的精确 ID,否则报错误模型。

OpenHands 连不上我填的 base URL?

发起请求的是 OpenHands 后端(通常在 Docker 内,localhost 指容器)。接 DaoXE 托管端点时检查容器出网 HTTPS/代理;文档里的 host.docker.internal 是给本地模型服务器用的。

费用?

按模型、随账号 —— 实时定价;充值统一 1 元 = $1 额度。

试用 DaoXE —— 并亲自 benchmark 它

一个 key 调 GPT、Claude、Gemini、DeepSeek 等。用开源 benchmark 对准我们做对比 —— 别只听我们说。