配置文件(config.toml)

Agent Store 把所有长期偏好写进 ~/.agent-store/config.toml(TOML 格式):默认模型、API 供应商、模型别名与默认市场源。改一次,每次启动都生效。

  • 默认位置~/.agent-store/config.toml(Windows 上为 %USERPROFILE%\.agent-store\config.toml
  • 可选文件:文件缺失时 App Server 正常运行,但模型调用需要先在 Web UI 中手工创建供应商;存在时启动即自动注册其中声明的供应商、模型默认值与市场源。

本文件沿用 Claude Code / Codex / Kimi Code 风格的用户级 config.toml 惯例([providers.<name>] + [models."<provider>/<model>"])。未知的顶层与嵌套键会被容忍——文件属于你,可以携带 Agent Store 不消费的其他工具(如 Kimi Code 的 thinkingpermissionhooks)的设置,不会导致解析失败。

完整示例

default_model = "opencode/mimo-v2.5-free"

[providers.opencode]
type = "openai"
api_key = "sk-..."
base_url = "https://opencode.ai/zen/v1"

[providers.mimo]
type = "openai"
base_url = "https://api.xiaomimimo.com/v1"

[models."opencode/mimo-v2.5-free"]
provider = "opencode"
model = "mimo-v2.5-free"
display_name = "MiMo V2.5 Free"
max_context_size = 200000
max_output_size = 8000
capabilities = ["thinking", "tool_use"]

[models."opencode/laguna-s-2.1-free"]
provider = "opencode"
model = "laguna-s-2.1-free"
max_context_size = 256000
display_name = "Laguna S 2.1 Free"

# 默认市场源(首次调 store/market 时自动注册;由官网站点自托管)
[default_marketplaces.experts]
source_kind = "url"
source = "https://<站点域名>/source/experts/.codebuddy-plugin/marketplace.json"

顶层字段

字段类型说明
default_modelstring默认模型别名,格式 "<provider>/<model>",必须能在 [models] 中解析;调用方不指定模型时使用
providerstableAPI 供应商表 → providers
modelstable模型别名表 → models
default_marketplacestable启动自动注册的市场源表 → default_marketplaces
memorytable会话结束后的记忆策略 → memory(见下)
marketplacetable后台自动更新节奏 → marketplace(见下)

providers

以唯一名称为 key 的供应商表。Agent Store 从这里读取凭证,不会从 shell 环境变量自动取后备值。

字段类型必填说明
typestring供应商类型(映射到运行时平台),如 openaianthropic
api_keystringAPI 密钥,明文写在配置文件里
base_urlstringAPI 基础 URL
enabledboolean是否启用以自动注册;缺省视为启用

密钥安全:api_key 只用于加密的供应商注册,读取后即被丢弃,不会出现在任何日志与追踪负载中。文件权限建议自行收紧(chmod 600)。

models

"<provider>/<model>" 为 key 的模型别名表。provider 必须指向 [providers] 中已声明的键。

字段类型说明
providerstring所属供应商 key(必填)
modelstring发给上游的模型名(必填)
display_namestring界面显示名
max_context_sizeinteger上下文窗口上限(token 数)
max_output_sizeinteger单次输出上限(token 数)
capabilitiesarray<string>能力标记,如 ["thinking", "tool_use", "image_in"]
reasoning_keystring思考内容在响应中的字段名,如 reasoning_content

default_marketplaces

默认市场源(winget 风格的软件源)。App Server 在首次 store / market 调用时自动注册;同 id 已存在时按新 source 重新激活。

字段类型说明
source_kindstringurl | github | git | directory
sourcestring具体地址;url 类型建议同时提供目录枚举(_files.txt)以支持条目树镜像
[default_marketplaces.experts]
source_kind = "url"
source = "https://<站点域名>/source/experts/.codebuddy-plugin/marketplace.json"

[default_marketplaces.workbuddy-skills]
source_kind = "url"
source = "https://<站点域名>/source/skills/.codebuddy-skill/marketplace.json"

[default_marketplaces.connectors]
source_kind = "url"
source = "https://<站点域名>/source/connectors/.codebuddy-connector/connectors.json"

memory

会话结束后的记忆策略。记忆蒸馏(distillation)会在每个正常对话轮次结束后额外调用一次模型,把本轮会话蒸馏进基于文件的记忆;这次调用发生在该轮终止信号之前,所以客户端会看到「回答已经完整,但会话仍显示正在处理」约 6~15 秒(随模型响应时间波动)。

字段类型说明
distill_enabledbooleanfalse 关闭记忆蒸馏(本轮结束后不再有额外模型调用,「回答完成」与「轮次结束」同时发生);true 或不写该键 = 沿用上游默认(
# 关闭会话结束后的记忆蒸馏(省掉每轮一次的额外模型调用与 6~15 秒收尾等待)
[memory]
distill_enabled = false

优先级:环境变量 NOMIFUN_MEMORY_DISTILL0/false 关、1/true 开)> 本文件的 [memory].distill_enabled > 上游默认(开)。不写 [memory] 段落时行为与以前完全一致。

marketplace

后台自动更新节奏。开启后,运行时按该间隔在后台轮询市场源;默认关闭——不写 [marketplace] 段落就不会产生任何后台请求。

字段类型说明
auto_update_interval_hoursinteger两次轮询之间的小时数。不写或 0 = 关闭;写了正整数才启用
# 每 6 小时在后台检查一次市场源(仅官方源;第三方源永不自动更新)
[marketplace]
auto_update_interval_hours = 6

两道闸同时成立才会真正拉取:① 该市场的「自动更新」开关为开;② 其源地址属于官方镜像。第三方源即使手动把开关打开也只保留标记,不会自动拉取。每次轮询仍走 market/refresh 的 revision / ETag 短路,内容未变时不会重新下载整棵树。

与 Kimi Code / Claude Code 配置的异同

维度Agent StoreKimi Code 等
文件位置~/.agent-store/config.toml~/.kimi-code/config.toml 等(各工具独立目录)
[providers] / [models]同构:type/api_key/base_urlprovider/model/max_context_size/capabilities同构
default_model"<provider>/<model>" 别名同构
未知键容忍,不报错容忍
环境变量后备——凭证只从文件读取部分工具有 env 子表/环境变量后备
Agent Store 专属default_marketplaces[memory][marketplace]

如果你的配置里已经有 Kimi Code 或其他工具的 [providers][models] 段落,可以直接复制它们到 ~/.agent-store/config.toml 使用(前提是该供应商走 OpenAI/Anthropic 兼容协议);不相关的段落(thinkingpermissionhooks 等)保留与否都不影响 Agent Store 解析。