文档
Agentic 工具设置
Agentic 工具在每一步都会发送文件内容、命令输出和完整的对话历史。这么大的 prompt 可能要几十秒才会出现第一个 token。如果你的应用先放弃,请求依然计费,而你什么也收不到。请按下文设置超时、流式输出、重试和上下文大小。
为什么这很重要
- 在响应到达前被中断的请求仍会计费。请求一到达,AI 服务器就开始处理整个 prompt。如果你的应用先断开(超时、停止按钮、连接中断),处理成本已经产生,但你拿不到响应。
- 超大 prompt 在第一个 token 之前需要超过 30 秒。数百 KB、包含上千条消息的 Agentic prompt,可能在吐出第一个 token 之前就超过许多应用的默认限制(30 或 60 秒)。
- 流式输出能让连接保持活跃。开启流式输出后,我们的服务器会立即发送响应头,并在等待响应期间每 10 秒发送一次 keepalive 信号。仍可能切断连接的是你应用的总时间限制,所以请把它设为至少 300 秒。
- 大上下文请选快速模型。长会话或大型仓库请使用更快的模型,把大模型留给真正需要的步骤。可在价格页面对比。
适用于所有工具的准则
- 超时
- 至少 300 秒。注意单位:有的工具用秒(
300),有的用毫秒(300000)。 - 流式输出
- 开启它。不开流式输出时,响应完成前不会有任何数据传输,代理和应用会更早放弃。
- 重试
- 保持较低(0–3)。超时后的重试是一个新请求,同样计费。先修好超时,而不是调高重试次数。
- 上下文
- 保持小巧。使用自动 compact/摘要,每个任务开一个新会话,并排除大文件夹(node_modules、build、data)。
Claude Code
- Base URL 与密钥
- 参照 Claude Code 指南:
ANTHROPIC_BASE_URL=https://ai.geraikita.com(不含 /v1),ANTHROPIC_AUTH_TOKEN= 你的 gk- 密钥。变量可以写在~/.claude/settings.json的env块中。 - 超时
API_TIMEOUT_MS(毫秒):每次尝试等待响应头的时长,默认 600000(10 分钟)。不要调低;如果曾经调低过,请改回至少300000。- 流式输出
- 始终使用流式输出,没有关闭它的设置。
- 重试
CLAUDE_CODE_MAX_RETRIES,默认 10,包括响应开始流式传输前的超时。大 prompt 请设为 2–3,避免同一步骤被反复计费。- 上下文
/compact会总结对话,/clear开始新对话。自动 compact 默认开启(autoCompactEnabled);把CLAUDE_AUTOCOMPACT_PCT_OVERRIDE设得更低(如 60)会更早 compact。
~/.claude/settings.json
{
"env": {
"ANTHROPIC_BASE_URL": "https://ai.geraikita.com",
"ANTHROPIC_AUTH_TOKEN": "gk-xxxxxxxx",
"API_TIMEOUT_MS": "600000",
"CLAUDE_CODE_MAX_RETRIES": "3",
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "60"
}
}Cline
- Base URL 与密钥
- 参照 Cline 指南:provider 选 OpenAI Compatible(Base URL
https://ai.geraikita.com/v1),或选 Anthropic 并在 Use custom base URL 中填https://ai.geraikita.com。 - 超时
- Cline 官方文档没有为 OpenAI Compatible 或 Anthropic provider 提供超时设置(Request Timeout 仅适用于 Ollama)。要让第一个 token 尽快出现:缩小上下文,大上下文时选更快的模型。
- 流式输出
- 官方文档中没有流式输出设置,无需更改。
- 重试
- 官方文档中没有重试设置。
- 上下文
- Auto Compact 会在上下文快满时自动总结。
/smol(别名/compact)手动总结,/newtask会把摘要带到新任务中。在 Model Configuration 中按模型设置 Context Window size。
Roo Code
- Base URL 与密钥
- 注意:Roo Code 扩展已于 2026年5月15日正式停止维护。如果你仍在使用:provider 选 OpenAI Compatible,Base URL
https://ai.geraikita.com/v1,填你的 gk- 密钥(与 Cline 相同)。 - 超时
- VS Code settings.json 中的
roo-cline.apiRequestTimeout,单位为秒(默认 600,范围 0–3600,0 = 不限制)。不要低于300。 - 流式输出
- 确保 OpenAI Compatible 配置中的 Enable streaming 保持勾选。
- 重试
- 开启 Auto-Approve 后,失败的请求会以递增的间隔自动重试;没有单独的开关。
- 上下文
- Intelligent Context Condensing(Settings → Context):把阈值从默认的 100% 调低,让压缩更早开始,或点击 Condense Context。用
.rooignore排除大文件夹。
Kilo Code
- Base URL 与密钥
- Settings → Providers → Custom provider → OpenAI Compatible,Base URL
https://ai.geraikita.com/v1,填你的 gk- 密钥。或者像下方示例那样使用~/.config/kilo/kilo.jsonc文件。 - 超时
- provider 上的
options.timeout(毫秒)涵盖等待响应头和第一个字节的时间。默认 300000,正好卡在极限;请设为600000。不要把chunkTimeout设得太低。 - 流式输出
- 官方文档中没有流式输出设置,无需更改。
- 重试
- 官方文档中没有重试设置。
- 上下文
compaction.auto(默认true)和/compact。必须为每个模型设置limit.context(数值越小越早 compact):不设置的话自动 compact 不会运行。用.kilocodeignore或权限规则排除大文件夹。
~/.config/kilo/kilo.jsonc
{
"provider": {
"geraikita": {
"npm": "@ai-sdk/openai-compatible",
"name": "Geraikita AI",
"options": {
"baseURL": "https://ai.geraikita.com/v1",
"apiKey": "gk-xxxxxxxx",
"timeout": 600000
},
"models": {
"claude-sonnet-5": {
"name": "Claude Sonnet 5",
"limit": { "context": 128000, "output": 16000 }
}
}
}
},
"compaction": { "auto": true }
}Cursor
- Base URL 与密钥
- Cursor Settings → Models → OpenAI API key。Cursor 官方文档没有说明自定义 base URL;如果你的 Cursor 版本显示 Override OpenAI Base URL,请填入
https://ai.geraikita.com/v1。自己的 API 密钥只适用于聊天模型(Tab 仍使用 Cursor 内置模型),且请求会经过 Cursor 的服务器。 - 超时
- 官方文档中没有可调的超时设置。替代做法:缩小上下文,每个任务开新对话,并选快速模型,让第一个 token 在应用限制之前到达。
- 流式输出
- 由 Cursor 处理,无需设置。
- 重试
- 官方文档中没有重试设置。
- 上下文
- 上下文快满时,Cursor 会自动总结较早的对话内容。每次切换任务都开一个新对话,并用
.cursorignore排除大文件。
OpenCode
- Base URL 与密钥
- 参照 OpenCode 指南:provider
@ai-sdk/openai-compatible,baseURL为https://ai.geraikita.com/v1。 - 超时
- 在
provider.geraikita.options中(毫秒):headerTimeout(等待响应头,默认 300000)和chunkTimeout(流式分块之间的间隔,默认 300000)。timeout(总限制)默认关闭;如果设置,请至少设为300000。 - 流式输出
- 始终使用流式输出,没有关闭它的设置。
- 重试
- 官方文档中没有重试设置。如果请求频繁中断,请修正超时并缩小上下文。
- 上下文
compaction.auto(默认true)会在上下文满时自动总结会话。/compact手动总结,/new开始新会话。
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"geraikita": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://ai.geraikita.com/v1",
"apiKey": "{env:GERAIKITA_API_KEY}",
"headerTimeout": 300000,
"chunkTimeout": 300000
}
}
},
"compaction": { "auto": true }
}Continue
- Base URL 与密钥
- 在
config.yaml中:provider: openai,apiBase: https://ai.geraikita.com/v1,apiKey= 你的 gk- 密钥。 - 超时
requestOptions.timeout单位为秒(默认 7200)。至少填300,而不是 300000。- 流式输出
openaiprovider 始终使用流式输出。- 重试
- 官方文档中没有重试设置。
- 上下文
defaultCompletionOptions.contextLength和maxTokens用于限制上下文和响应大小。每个任务开一个新对话;Continue CLI 提供/compact和/clear。
~/.continue/config.yaml
models:
- name: Claude Sonnet 5 (Geraikita)
provider: openai
model: claude-sonnet-5
apiBase: https://ai.geraikita.com/v1
apiKey: gk-xxxxxxxx
requestOptions:
timeout: 600 # 秒,不是毫秒
defaultCompletionOptions:
contextLength: 64000 # 越小 = 历史被裁剪越多
maxTokens: 8192n8n
- Base URL 与密钥
- OpenAI 凭据:把 Base URL 设为
https://ai.geraikita.com/v1,并填你的 gk- API 密钥。Anthropic 凭据:Base URLhttps://ai.geraikita.com。 - 超时
- OpenAI Chat Model 节点 → Options → Timeout(毫秒)。默认 60000(60 秒),这是在 60 秒处被切断的常见原因;请至少设为
300000。HTTP Request 节点 → Options → Timeout 也以毫秒为单位。自托管:不要把EXECUTIONS_TIMEOUT(秒)设得比它更低。 - 流式输出
- AI Agent → Options → Enable Streaming(默认开启;需要 Chat Trigger 或 Response Mode 为 Streaming 的 Webhook)。Anthropic Chat Model → Stream Responses。OpenAI Chat Model 没有流式输出选项,因此要依靠足够长的 Timeout。
- 重试
- OpenAI Chat Model → Options → Max Retries,默认 2。超时后的重试同样计费;请先修正 Timeout。
- 上下文
- Simple Memory 子节点 → Context Window Length = 发送多少条过往交互。保持较小,例如 5–10。
OpenAI SDK(Python 与 Node.js)
- Base URL 与密钥
base_url/baseURL=https://ai.geraikita.com/v1,api_key/apiKey= 你的 gk- 密钥。基础示例见第一个请求。- 超时
timeout:Python 中单位为秒,Node.js 中为毫秒。SDK 默认 10 分钟,只要不把它调到低于 300 秒就没问题。- 流式输出
stream=True(Python)/stream: true(Node.js)。- 重试
max_retries/maxRetries,默认 2,包括重试超时的请求。大 prompt 请设为 0–1。- 上下文
- 只发送需要的历史:发送前裁剪旧消息或先做摘要。
from openai import OpenAI
client = OpenAI(
base_url="https://ai.geraikita.com/v1",
api_key="gk-xxxxxxxx",
timeout=600.0, # 秒
max_retries=1, # 超时后的重试同样计费
)
stream = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{"role": "user", "content": "Halo!"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Anthropic SDK(Python 与 Node.js)
- Base URL 与密钥
base_url/baseURL=https://ai.geraikita.com(不含 /v1,SDK 会自行追加 /v1/messages),api_key/apiKey= 你的 gk- 密钥。- 超时
timeout:Python 中单位为秒,Node.js 中为毫秒;默认 10 分钟。SDK 会拒绝预计耗时超过约 10 分钟的非流式请求,所以请使用流式输出。- 流式输出
client.messages.stream(...),或在messages.create上使用stream=True/stream: true。- 重试
max_retries/maxRetries,默认 2。大 prompt 请设为 0–1。- 上下文
- 只发送需要的历史;把
max_tokens限制在响应实际所需的范围内。
import anthropic
client = anthropic.Anthropic(
base_url="https://ai.geraikita.com", # 不含 /v1
api_key="gk-xxxxxxxx",
timeout=600.0, # 秒
max_retries=1, # 超时后的重试同样计费
)
with client.messages.stream(
model="claude-sonnet-5",
max_tokens=4096,
messages=[{"role": "user", "content": "Halo!"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)curl
- Base URL 与密钥
- 请求头
Authorization: Bearer gk-...,发往https://ai.geraikita.com/v1/chat/completions。基础示例见第一个请求。 - 超时
- 不加
--max-time时,curl 不限制总时长。如果使用它,请至少设为300(秒)。 - 流式输出
- 请求体中加
"stream": true,并加上-N(--no-buffer),让响应分块立即显示。 - 重试
--retry默认为 0,且超时时也会重试。大 prompt 不要加它。- 上下文
- 请求体由你自己构建:只发送需要的消息。
bash
curl https://ai.geraikita.com/v1/chat/completions \
--max-time 600 -N \
-H "Authorization: Bearer gk-xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","stream":true,"messages":[{"role":"user","content":"Halo!"}]}'计费条款
在响应到达前由买家一方取消的请求(应用超时、停止按钮、连接中断)仍会计费。空输出仅在我方出现问题时补偿(服务器返回空响应或错误,或 ≥60 秒没有任何输出)。自 2026年11月1日起生效。
条款与条件第10条常见问题
我的应用超时了,输出是空的。还会计费吗?
会,如果是你的应用在响应到达前切断了请求:AI 服务器已经处理了你的 prompt。这一点写在条款与条件中,自 2026年11月1日起生效。
空输出什么时候会补偿?
当问题出在我方时:服务器返回空响应或错误,或者 60 秒及以上完全没有输出。
为什么不直接调高重试次数?
每次重试都是一个新请求。如果原因是超时太短,重试只会重复计费而没有结果。请把超时调到至少 300 秒,并开启流式输出。
我的 prompt 非常大,什么方法最有效?
做摘要或开新会话,排除大文件夹,大上下文时使用更快的模型。可在价格页面对比模型。