知识库章节 ▾

导航

▸ 从这里开始 按角色

类别

工具 52
词汇表 12

工具

Goose + JoinGonka Gateway:您的提供商和密钥到 keyring

Goose 是一个开源的可扩展 AI 代理,运行在您的机器上:包括适用于 macOS、Linux 和 Windows 的桌面应用、终端 CLI 以及嵌入式 API。它能够读取和编辑文件、执行命令,并能通过 MCP 扩展连接外部服务。它使用 Rust 编写,基于 Apache 2.0 许可证分发。该项目起源于 Block 公司,现在隶属于 Linux Foundation 下的 Agentic AI Foundation;官方仓库为 github.com/aaif-goose/goose,旧地址 block/goose 会重定向至此。

Goose 以声明式方式描述提供商:在 custom_providers 目录中添加一个 JSON 文件,模型列表中便会出现新的源。由于 JoinGonka Gateway 使用 OpenAI Chat Completions 协议,因此只需一条安装命令或一个文件即可连接。此后,代理将在去中心化的 Gonka 网络模型(DeepSeek V4 Flash、GLM-5.3 Flash 和 MiniMax M2.7)上运行,价格统一:每百万输入 Token $0.0069。

最好提前了解 Goose 的一个特性:它不在配置文件中保存提供商密钥,而是保存在系统密钥存储中。您的机器上是否存在此类存储,决定了安装后是否还需要一个手动步骤——文中对此有单独章节说明。以下命令和消息已于 2026 年 9 月 23 日通过网关对 goose 1.51.0 进行了实测验证。确认地址后,账户将收到 3M 免费 Token——足够您亲自尝试所有这些操作。

快速启动:安装与单条命令

第 1 步:安装 Goose。来自项目文档的官方 CLI 安装方式:

# macOS and Linux: the script puts the binary in ~/.local/bin
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | CONFIGURE=false bash

# macOS, Homebrew
brew install block-goose-cli

CONFIGURE=false 变量会禁用脚本在安装后立即启动的 goose configure 向导:提供商将由安装程序来配置。如果 ~/.local/bin 不在 PATH 中,脚本会明确告知。Windows 在同一仓库中有 download_cli.ps1 脚本,桌面应用可从文档页面下载;它与 CLI 读取相同的设置,因此以下内容对两者都适用。用 goose --version 验证。

第 2 步:获取密钥。在 gate.joingonka.ai/register 注册,确认邮箱,并在"API 密钥"部分创建一个带 jg- 前缀的密钥。一个密钥和一个余额即可用于网络中的所有模型。

第 3 步:运行安装程序。

npx @joingonka/setup --tool goose

安装程序会询问密钥——密钥不作为命令行参数传入,以免残留在 shell 历史记录中——并会执行以下操作:

  • 创建提供商文件 custom_providers/custom_joingonka.json,其中包含网关地址和三个具有真实上下文窗口的网络模型,权限为 600。名称 custom_joingonka 和 CUSTOM_JOINGONKA_API_KEY 与 Goose 自身从名称"JoinGonka"推导出的完全一致,因此向导中的密钥会落到正确的位置;
  • 将 JoinGonka 设为默认提供商,模型为 DeepSeek V4 Flash——但仅当尚未选择提供商,或所选的是我们的提供商且模型为空或已下线时。它不会改动他人的选择,而是打印一条命令供尝试:goose session --provider custom_joingonka --model …;
  • 将密钥写入 secrets.yaml,但仅当 Goose 的密钥存储确定是文件形式时;否则会直接说明还剩一步——详情见关于密钥的部分;
  • 备份已修改的文件,并在最后向网关发送一个实时请求,以立即验证密钥、地址和模型。

安装程序查找配置目录的方式与 Goose 自身相同:Linux 和 macOS 上是 ~/.config/goose,Windows 上是 %APPDATA%\Block\goose\config,设置 GOOSE_PATH_ROOT 时为 <root>/config。用 --model 标志指定其他模型,简写为 deepseek、glm 或 minimax;显式指定的模型总会写入。免交互模式从环境变量获取密钥:

JOINGONKA_API_KEY=jg-your-key npx @joingonka/setup --tool goose --model glm --non-interactive

手动配置:提供程序文件和 config.yaml

安装程序所做的所有操作都可以手动完成。提供程序是一个单独的 JSON 文件 ~/.config/goose/custom_providers/custom_joingonka.json;文件名必须与 name 字段一致:

{
  "name": "custom_joingonka",
  "engine": "openai",
  "display_name": "JoinGonka",
  "description": "JoinGonka Gateway — Gonka AI inference (OpenAI-compatible)",
  "api_key_env": "CUSTOM_JOINGONKA_API_KEY",
  "base_url": "https://gate.joingonka.ai/v1/chat/completions",
  "models": [
    { "name": "deepseek-ai/DeepSeek-V4-Flash-0731", "context_limit": 380000 },
    { "name": "zai-org/GLM-5.3-Flash", "context_limit": 390000 },
    { "name": "MiniMaxAI/MiniMax-M2.7", "context_limit": 200000 }
  ],
  "supports_streaming": true,
  "requires_auth": true
}
字段值重要性
namecustom_joingonka即文件名和 --provider 的值
engineopenaiOpenAI Chat Completions 格式是网关的主要路径。除此以外,Goose 还支持 anthropic 和 ollama
api_key_envCUSTOM_JOINGONKA_API_KEY不是密钥本身,而是机密名称。文件中没有字段用于存储密钥值 — 下一节将说明 Goose 在哪里查找它
base_urlhttps://gate.joingonka.ai/v1/chat/completions完整地址,参考 Goose 文档示例:旧版本也支持这种格式
models三个带有 context_limit 的条目如果没有 context_limit,Goose 会从其模型目录中获取窗口大小,对于未知模型则默认为 128,000 个 token,并在填满 80% 窗口时压缩历史记录。网络模型的窗口范围为 200,000 到 390,000
supports_streaming, requires_authtrue响应以流式传输,请求需要密钥。请勿关闭流式传输:没有它,且请求中没有硬性限制,网关会将响应截断为简短的默认值

Goose 没有为模型条目提供单独的响应上限。对于此类模型,它根本不在请求中发送限制(我们通过其请求日志验证了这一点),在流式模式下,网关会自动将响应限制为模型自身的上限:DeepSeek V4 Flash 为 32,768 个 token,GLM-5.3 Flash 和 MiniMax M2.7 为 8192 个。无需为此设置全局变量 GOOSE_MAX_TOKENS:它对所有提供程序同时生效。

Goose 通过严格的 JSON 解析来读取提供程序文件:如果有注释或尾随逗号,提供程序将从列表中消失。您可以使用向导 (goose configure → Custom Providers) 创建它,但向导不会询问上下文窗口 — 您必须手动添加。

默认的提供程序和模型位于 ~/.config/goose/config.yaml。Goose 是这样记录它们的:

active_provider: custom_joingonka
providers:
  custom_joingonka:
    enabled: true
    model: deepseek-ai/DeepSeek-V4-Flash-0731
    configured: true

旧的布局(文件根目录中的扁平键 GOOSE_PROVIDER 和 GOOSE_MODEL)仍然有效:Goose 会读取它并在首次保存设置时将其转换为新格式(如我们 goose configure 之后的情况)。安装程序在空文件上编写的就是扁平键,任何版本都能理解。同名的环境变量优先级高于文件:如果它们在 shell 中设置,则 config.yaml 中的选择将无效,安装程序会对此发出警告。

密钥存放位置:keyring、secrets.yaml 或环境变量

在 Goose 的 provider 文件里只有一个密钥名称——CUSTOM_JOINGONKA_API_KEY。Goose 按顺序查找它的值:先查同名环境变量,再查系统密钥库(keyring,在 macOS 上是 Keychain),最后查配置文件旁边的 secrets.yaml。只有当 Goose 使用文件存储时,密钥才会写进这个文件,并且以明文保存,权限为 600。而 Goose 根本不会去 config.yaml 里找密钥(文档)。

当 keyring 被关闭时,存储就会变成文件存储——通过设置任意值的 GOOSE_DISABLE_KEYRING 变量,或在 config.yaml 中写入 GOOSE_DISABLE_KEYRING: true;或者 keyring 不可用:没有图形会话的服务器、容器、CI。在后一种情况下,Goose 会在日志中写入“Keyring unavailable. Using file storage for secrets.”,并自动切换到文件——这正是我们在容器里看到的情况。安装程序不会写入 keyring,也不会替你关闭它:否则 Goose 将看不到已经存在里面的密钥。于是就有以下几种情况:

情况安装程序会做什么你需要做什么
带 keyring 的桌面环境:macOS、Windows、带图形会话的 Linux写入 provider 和模型,不写密钥,并提示“ONE STEP LEFT”用向导保存一次密钥
没有 keyring 的服务器或容器,且还没有 secrets.yaml同上:无法从间接迹象判断是文件存储走一遍向导——Goose 会自己把密钥放进 secrets.yaml,之后安装程序会在那里更新它
已设置 GOOSE_DISABLE_KEYRING 或 secrets.yaml 已存在把密钥写入 secrets.yaml,权限 600,保留其他密钥无需操作
provider 的密钥由命令提供(auth 字段)不写密钥:在 Goose 中 auth 和 api_key_env 互斥无需操作

剩下的步骤。运行 goose configure 并回答向导的问题——我们的运行中它们是这样的:

  • What would you like to configure? → Configure Providers;
  • Which model provider should we use? → JoinGonka(在我们这里它排在第一位);
  • Would you like to set CUSTOM_JOINGONKA_API_KEY? (optional) → Yes,然后在 Enter value for CUSTOM_JOINGONKA_API_KEY 处粘贴密钥——字符会变成方块。密钥会立即保存;
  • Would you like to configure advanced settings? → No;
  • Select a model —— Goose 从网关获取列表:MiniMaxAI/MiniMax-M2.7、deepseek-ai/DeepSeek-V4-Flash-0731、zai-org/GLM-5.3-Flash。光标停在第一行——如果要保留安装程序选定的模型,用方向键选择 DeepSeek V4 Flash。测试请求之后,向导会以“Configuration saved successfully”结束。

在 Goose Desktop 中路径是:Settings → Models → Configure providers → JoinGonka → 密钥 → Submit。不想手动粘贴密钥——把它放进变量,并从同一个 shell 启动向导:Goose 会显示“CUSTOM_JOINGONKA_API_KEY is set via environment variable”,并提示保存该值:

read -s CUSTOM_JOINGONKA_API_KEY && export CUSTOM_JOINGONKA_API_KEY
goose configure

而如果只想运行一次,可以完全不用保存就传入密钥:CUSTOM_JOINGONKA_API_KEY=jg-your-key goose session,在 PowerShell 中则是 $env:CUSTOM_JOINGONKA_API_KEY = "jg-your-key"; goose session。环境变量的优先级高于已保存的值,但只在 shell 关闭前有效。

验证:应发生的情况

先看看 Goose 实际读到的是哪些配置:

goose info -v

在“goose Configuration”区块中,应当能看到带模型标识符的 GOOSE_PROVIDER: custom_joingonka 和 GOOSE_MODEL 行。然后做一次不带交互会话的单次运行:把一个有明显错误的文件放进空目录,让 Goose 找出来。

goose run --no-session -t "Read calc.py and tell me in one sentence whether it has a bug."

--no-session 标志不会把本次运行写进历史。顶部会出现类似 ● new session · custom_joingonka deepseek-ai/DeepSeek-V4-Flash-0731 的行,随后是工具调用——▸ shell 执行 cat calc.py——以及指出错误的回复。可以用 --model 为单次运行指定其他模型:zai-org/GLM-5.3-Flash 或 MiniMaxAI/MiniMax-M2.7。在我们 2026 年 9 月 23 日的运行中,网络上的三个模型都跑通了“请求 → 工具 → 结果 → 回答”的循环。Goose CLI 默认隐藏模型的推理过程;当输出到终端时,可以用 GOOSE_CLI_SHOW_THINKING=1 变量显示出来。从网关侧看,请求会显示在控制台中:“使用情况”板块,按“模型”和按“密钥”的细分。

如果出了问题,通常直接从报错信息就能读出诊断结论:

看到什么意味着什么该怎么办
Error missing required key CUSTOM_JOINGONKA_API_KEY: Configuration value not foundGoose 在环境变量和密钥存储中都没找到密钥用向导保存密钥。如果密钥在 secrets.yaml 里而错误依旧,说明 Goose 现在把密钥存在 keyring 中——再用向导保存一次密钥
Authentication failed … Status: 401 Unauthorized. Response: Invalid API key.网关没有接受该密钥重新保存密钥——完整保存,不要有空格。请注意,环境变量 CUSTOM_JOINGONKA_API_KEY 的优先级高于已保存的值
Error Unknown provider: custom_joingonka提供者文件未能读取:JSON 里有注释、多余的逗号或拼写错误修复该文件,或者删除它并重新运行安装程序:安装程序不会覆盖损坏的文件,只会指出它
Bad request (400): Model "…" not found. Available: …模型名称拼写错误网关会自行列出可用标识符——复制你需要的那个
Rate limit exceeded: Model "…" is currently overloaded in the Gonka network (rate limit)高峰期该模型在网络上的空闲容量已用尽Goose 会自行重试请求,但间隔很短。可以切换模型——会话里用 /model,或启动时用 --model——或者等一分钟;网络状态见状态页面
402余额不足在“计费”板块充值;密钥本身仍然有效

这需要多少费用

代理消耗 token 的方式与聊天不同。即使在标准配置中,Goose 也会向模型发送十八个内置工具的描述,在我们的运行中,每个回合在你的问题之前就携带了约 4600 个输入 token。“读取文件并寻找错误”的任务消耗了两个到三个回合和 10-15k 个 token,几乎全部是输入;Goose 自己会进行另一次简短的请求来构思会话标题。可以在 goose configure → Toggle Extensions 中关闭不必要的扩展 — 这是减少输入的简单方法。

通过 JoinGonka Gateway,输入 token 的价格为每百万 $0.0069,输出 token 为每百万 $0.021 — 所有网络模型的价格相同,并从实时源获取到此页面。

场景消耗通过网关
一次性任务:读取文件,寻找错误10-15K token几分钱的分数
一天的活跃工作3-7M token几分钱
一个月的活跃开发~150M token大约一美元

右侧列的估算基于 2026 年 9 月的价格。作为比较,一般如何在 Goose 中为模型付费:

方法支付模式限制因素
通过 ACP 订阅 Claude、ChatGPT 或 Gemini每月固定金额供应商侧的配额和速率限制刷新窗口
直接使用供应商密钥按供应商价格按 token 付费费用随会话长度增加
JoinGonka Gateway按 token 付费,预付余额使用情况可在仪表板中查看;没有订阅或每月配额

确切的消耗量和余额可以在仪表板的“使用情况”和“账单”部分查看。为什么默认使用 DeepSeek V4 Flash(它拥有网络中最大的输出上限)在 模型概述 中有详细说明。

工作中的注意事项

确认模式。默认情况下,Goose 以 auto 模式运行——完全自主:自己改文件和删文件、执行命令、使用扩展,什么都不会问你。在自己的项目上这样很方便,但面对别人的代码,最好把模式收紧一些:

# inside a session
/mode smart_approve

# permanently, as a line in config.yaml
GOOSE_MODE: smart_approve
模式Goose 的行为
auto无需确认直接行动——默认模式
smart_approve低风险操作自动放行,其余的先询问
approve每次调用工具前都询问
chat只聊天:不用工具,也不做修改

这是 Goose 自身的特性,与模型 provider 无关。

切换模型。会话内——用带标识符的 /model 命令,例如 /model zai-org/GLM-5.3-Flash;单次运行——在 goose run 和 goose session 上加 --model 标志;永久更换——goose configure 或 config.yaml 里的 model 那一行。provider 保持不变。带推理的 GLM-5.3 Flash 擅长处理复杂的逻辑,但它的回答上限是 8192 个 token,其中一部分还要用于推理——详见模型评测。

无人值守运行。goose run 适合脚本和 CI:-q 标志让输出里只保留模型的回答,--output-format json 则返回可供解析的结果。限制项 --max-turns(智能体在无人参与下能走多少步)和 --max-tool-repetitions(同一个工具用相同参数最多能连续调用多少次)可以防止陷入死循环。

隐私。Goose 里的匿名使用统计默认关闭(GOOSE_TELEMETRY_ENABLED)。网关不保存提示词和回答的内容——统计数据里只留下用量汇总。

Goose 可通过单条命令连接到 JoinGonka Gateway — npx @joingonka/setup --tool goose — 或者通过单个文件连接:在 custom_providers 中配置 custom_joingonka 提供商(engine: openai,地址 https://gate.joingonka.ai/v1/chat/completions,具有真实 context_limit 的模型),并在 config.yaml 中设置默认提供商和模型。Goose 的密钥不保存在配置中,而是保存在 keyring 或 secrets.yaml 中:在配有 keyring 的机器上,只需一步操作 — goose configure → Configure Providers → JoinGonka → 输入密钥,选择模型时建议保留 DeepSeek V4 Flash。验证方式 — 运行 goose run 并查看账户后台的“使用情况”栏;DeepSeek V4 Flash、GLM-5.3 Flash 和 MiniMax M2.7 的价格相同,因此应根据行为而不是预算来选择模型。

想了解更多?

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

获取密钥和免费 token →