模型与端点
运行时配置 vs 编译期 openai feature
**anycode model向导与config.json**:决定运行时用哪家 API、密钥与base_url。凡走 OpenAI Chat Completions 兼容 传输时,默认使用**ZaiClient(build_zai_openai_stack_client/MultiProviderLlmClient)。例外:编译启用**openaifeature 且全局provider为规范 id**openai**时,该分支改用**OpenAIClient**(见下文)。- Cargo feature
openai:仅额外编译[OpenAIClient](../../../crates/llm/src/providers/openai.rs),供需要独立实现或链接可选代码路径时使用;与向导是否填写 OpenAI 官方 URL 无必然绑定。默认anycode二进制未对该 feature 启用anycode-llm的openai(见下文「主 CLI」)。
与 OpenClaw 对齐
- 厂商目录:与 OpenClaw Provider Directory 对齐的静态表在源码
crates/llm/src/provider_catalog.rs的PROVIDER_CATALOG;上游 canonical 以 openclaw/openclaw 为准。 - 模型引用:OpenClaw 常用
provider/model(如anthropic/claude-opus-4-6);anyCode 在config.json里拆成provider+model两字段,语义相同。也可仅在model中写限定名(含/),与全局provider分开校验。解析逻辑见anycode_llm(build_qualified_chat_model_value、resolve_chat_model_ref,对齐 OpenClawchat-model-ref.ts)。 anycode status:输出primary_chat_ref、model_routes与各RuntimeMode下解析到的provider / model,便于核对自动路由。- 命名:配置文件里
provider为 snake_case(如cloudflare_ai_gateway)。OpenClaw 文档里的 kebab-case 会自动规范化(如cloudflare-ai-gateway→cloudflare_ai_gateway)。 - 别名示例:
claude→anthropic;zai/bigmodel→z.ai;kimi→moonshot;github-copilot→copilot;amazon-bedrock→bedrock;glm→z.ai。 - AWS Bedrock:
provider设为amazon_bedrock(别名bedrock),填写区域下可用模型 id,凭证走 AWS 链(如AWS_PROFILE、实例角色)。运行时使用 Bedrock Converse(含流式)。 - GitHub Copilot:
provider设为github_copilot(别名copilot),选择兼容 Copilot Chat 的模型 id,并执行anycode model auth copilot(设备码登录),令牌写入~/.anycode/credentials/。 - 占位项:部分目录项仅为与 OpenClaw 一致(例如部分媒体类 API),若 anyCode 未接线,可改用
custom+ 自建 OpenAI 兼容base_url。
完整厂商列表请用 anycode model 交互菜单,或直接查阅源码中的 PROVIDER_CATALOG。
配置字段(~/.anycode/config.json)
provider:须为目录中的规范 id(及别名)。除 z.ai / Anthropic 外,另有 OpenRouter、Groq、DeepSeek、Bedrock、GitHub Copilot 等,见上节。plan:coding或general(主要影响 z.ai 默认base_url选择)base_url:可选。为空时 z.ai 会按plan使用默认端点;Anthropic 默认为官方 Messages API,也可覆盖model:例如 z.ai 的glm-5;其它厂商填对应 API 的模型 id(见厂商文档)api_key:对应厂商的密钥session(可选):TUI 会话。auto_compact(默认true):在发送下一条用户消息前,若上一轮 agent turn 上报的 input tokens 超过阈值,则先自动执行与/compact相同的压缩。context_window_auto(默认true):根据provider+model自动推断上下文窗口(见anycode_llm::resolve_context_window_tokens,如 Claude 约 200k、GLM/z.ai 约 128k、Gemini 约 1M)。若需固定窗口,设context_window_auto: false并填写context_window_tokens。另可用auto_compact_ratio(默认0.88)或auto_compact_min_input_tokens(绝对阈值,优先于比例)。auto_compact: false可关闭自动压缩。anycode enable context-compression会将context-compression记入runtime.features(见 版本与特性开关);具体阈值仍主要由上文session.auto_compact_*控制。
详见 README 中的路由(routing.agents)与安全(security)字段说明。
z.ai(BigModel)
端点
- 通用:
https://api.z.ai/api/paas/v4/chat/completions - 编码:
https://api.z.ai/api/coding/paas/v4/chat/completions
工具调用(OpenAI 兼容)
客户端按 OpenAI Chat Completions 形态下发 tools / tool_choice,并解析响应中的 tool_calls。具体字段以线上 API 为准;若与标准形态不一致,需在 crates/llm/src/providers/zai.rs 中调整解析。
Anthropic
- 使用
provider:anthropic(或兼容别名claude) api_key:Anthropic API Keymodel:Anthropic Messages API 支持的模型 idbase_url:可选,覆盖默认 Messages API 地址
OpenAI 官方 API(可选 crate feature)
- 库:
anycode-llm在启用 Cargo feature**openai** 时编译OpenAIClient(实现见[crates/llm/src/providers/openai.rs](../../../crates/llm/src/providers/openai.rs)),默认 URL 为https://api.openai.com/v1/chat/completions;请求/响应与 z.ai 所用 OpenAI Chat Completions 形态一致;ModelConfig.model为空时默认gpt-4o-mini。 - 与 Zai 栈的区别:配置里 OpenAI 兼容 网关(z.ai、OpenRouter 等)仍走现有
ZaiClient+build_zai_openai_stack_client;OpenAIClient面向官方端点或需独立 HTTP 语义时的集成。 - 环境变量:
ANYCODE_OPENAI_TOOL_CHOICE可为auto/required/none(有工具时),与 z.ai 的ANYCODE_ZAI_TOOL_CHOICE分离。 - 主 CLI:
cargo build -p anycode --features openai启用;build_multi_llm_stack在全局provider规范 id 为**openai** 时用OpenAIClient,其它 OpenAI 兼容 厂商仍用ZaiClient(与上表一致)。
重试策略
anyCode 对以下情况做指数退避重试:
HTTP 429(Rate limit)HTTP 5xx(服务端错误)- 网络请求错误(发送失败)
不重试:鉴权类错误(例如 401/403)以及其他非 retryable 状态码。
