LibreFang 配置参考
config.toml 完整配置参考,涵盖 LibreFang Agent OS 的所有可配置字段。
LibreFang 从 TOML 配置文件中读取配置:
~/.librefang/config.toml
Windows 上 ~ 解析为 C:\Users\<username>。无法确定主目录时使用系统临时目录作为备选。
关键特性:
- 所有配置结构使用
#[serde(default)],即所有字段均为可选。省略的字段使用文档中记录的默认值。
- 通道配置 (
[channels.telegram] 等) 为 Option<T> —— 缺省时适配器禁用。包含段头(即使为空)即启用该适配器。
- 密钥从不直接存储在 config.toml 中。
api_key_env、bot_token_env 等字段保存的是包含实际密钥的环境变量名称。
- 敏感字段 (
api_key、shared_secret) 在调试输出和日志中自动脱敏。
最简可用配置只需设置 LLM 提供商 API 密钥环境变量:
[default_model]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
api_key_env = "ANTHROPIC_API_KEY"
或使用本地 Ollama(无需 API 密钥):
[default_model]
provider = "ollama"
model = "llama3.2:latest"
base_url = "http://localhost:11434"
api_key_env = ""
# --- 顶层字段 ---
home_dir = "~/.librefang"
data_dir = "~/.librefang/data"
log_level = "info"
api_listen = "127.0.0.1:50051"
network_enabled = false
api_key = ""
mode = "default"
language = "en"
usage_footer = "full"
# --- 默认 LLM 提供商 ---
[default_model]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
api_key_env = "ANTHROPIC_API_KEY"
# --- 后备提供商 ---
[[fallback_providers]]
provider = "ollama"
model = "llama3.2:latest"
api_key_env = ""
[[fallback_providers]]
provider = "groq"
model = "llama-3.3-70b-versatile"
api_key_env = "GROQ_API_KEY"
# --- 记忆 ---
[memory]
embedding_model = "all-MiniLM-L6-v2"
consolidation_threshold = 10000
decay_rate = 0.1
# --- 网络 (OFP) ---
[network]
listen_addresses = ["/ip4/0.0.0.0/tcp/0"]
bootstrap_peers = []
mdns_enabled = true
max_peers = 50
shared_secret = ""
# --- Web 工具 ---
[web]
search_provider = "auto"
cache_ttl_minutes = 15
[web.brave]
api_key_env = "BRAVE_API_KEY"
max_results = 5
[web.tavily]
api_key_env = "TAVILY_API_KEY"
search_depth = "basic"
max_results = 5
include_answer = true
[web.perplexity]
api_key_env = "PERPLEXITY_API_KEY"
model = "sonar"
[web.fetch]
max_chars = 50000
max_response_bytes = 10485760
timeout_secs = 30
readability = true
# --- MCP 服务器 ---
[[mcp_servers]]
name = "filesystem"
timeout_secs = 30
env = []
[mcp_servers.transport]
type = "stdio"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
# --- A2A 协议 ---
[a2a]
enabled = false
listen_path = "/a2a"
[[a2a.external_agents]]
name = "research-agent"
url = "https://agent.example.com/.well-known/agent.json"
# --- RBAC 用户 ---
[[users]]
name = "Alice"
role = "owner"
api_key_hash = ""
[users.channel_bindings]
telegram = "123456"
discord = "987654321"
# --- 通道适配器 ---
[channels.telegram]
bot_token_env = "TELEGRAM_BOT_TOKEN"
allowed_users = []
poll_interval_secs = 1
[channels.discord]
bot_token_env = "DISCORD_BOT_TOKEN"
allowed_guilds = []
intents = 33280
[channels.slack]
app_token_env = "SLACK_APP_TOKEN"
bot_token_env = "SLACK_BOT_TOKEN"
allowed_channels = []
顶层字段
位于 config.toml 根级别(不在任何 [section] 内)的字段。
| 字段 | 类型 | 默认值 | 说明 |
|---|
home_dir | path | ~/.librefang | LibreFang 主目录 |
data_dir | path | ~/.librefang/data | SQLite 数据库和数据文件目录 |
log_level | string | "info" | 日志级别:trace、debug、info、warn、error |
api_listen | string | "127.0.0.1:50051" | HTTP/WebSocket/SSE API 监听地址 |
network_enabled | bool | false | 启用 OFP 点对点网络 |
api_key | string | "" | API 认证密钥。设置后除 /api/health 外所有端点需要 Authorization: Bearer <key> |
mode | string | "default" | 内核运行模式 |
language | string | "en" | CLI 输出语言代码 |
usage_footer | string | "full" | 响应中附加的使用信息 |
mode 取值:
| 值 | 行为 |
|---|
stable | 保守模式:无自动更新,固定模型,冻结技能注册表 |
default | 平衡模式:标准运行 |
dev | 开发者模式:启用实验性功能 |
usage_footer 取值:
| 值 | 行为 |
|---|
off | 不显示使用信息 |
tokens | 仅显示 token 数量 |
cost | 仅显示预估费用 |
full | 同时显示 token 数量和预估费用(默认) |
[default_model]
配置代理未指定模型时使用的主 LLM 提供商。
[default_model]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
api_key_env = "ANTHROPIC_API_KEY"
# base_url = "https://api.anthropic.com"
| 字段 | 类型 | 默认值 | 说明 |
|---|
provider | string | "anthropic" | 提供商名称。支持:anthropic、gemini、openai、groq、openrouter、deepseek、together、mistral、fireworks、ollama、vllm、lmstudio、perplexity、cohere、ai21、cerebras、sambanova、huggingface、xai、replicate |
model | string | "claude-sonnet-4-20250514" | 模型标识符。支持别名如 sonnet、haiku、gpt-4o、gemini-flash |
api_key_env | string | "ANTHROPIC_API_KEY" | 保存 API 密钥的环境变量名称 |
base_url | string 或 null | null | API 基础 URL 覆盖。用于代理或自托管端点 |
[memory]
配置基于 SQLite 的记忆子系统,包括向量嵌入和记忆衰减。
[memory]
embedding_model = "all-MiniLM-L6-v2"
consolidation_threshold = 10000
decay_rate = 0.1
| 字段 | 类型 | 默认值 | 说明 |
|---|
sqlite_path | path 或 null | null | SQLite 数据库路径。为 null 时默认为 {data_dir}/librefang.db |
embedding_model | string | "all-MiniLM-L6-v2" | 语义记忆搜索的向量嵌入模型 |
consolidation_threshold | u64 | 10000 | 触发自动合并的存储记忆数量阈值 |
decay_rate | f32 | 0.1 | 记忆置信度衰减率。0.0 = 不衰减,1.0 = 激进衰减 |
[network]
配置 OFP (LibreFang Protocol) 点对点网络层,使用 HMAC-SHA256 双向认证。
[network]
listen_addresses = ["/ip4/0.0.0.0/tcp/0"]
bootstrap_peers = []
mdns_enabled = true
max_peers = 50
shared_secret = "my-cluster-secret"
| 字段 | 类型 | 默认值 | 说明 |
|---|
listen_addresses | list | ["/ip4/0.0.0.0/tcp/0"] | libp2p 多地址监听列表。端口 0 表示自动分配 |
bootstrap_peers | list | [] | 引导节点的多地址列表 |
mdns_enabled | bool | true | 启用 mDNS 自动发现本地网络节点 |
max_peers | u32 | 50 | 最大同时连接节点数 |
shared_secret | string | "" | OFP HMAC-SHA256 双向认证预共享密钥。network_enabled = true 时必填 |
[web]
配置代理工具使用的 Web 搜索和网页抓取功能。
[web]
search_provider = "auto"
cache_ttl_minutes = 15
| 字段 | 类型 | 默认值 | 说明 |
|---|
search_provider | string | "auto" | 搜索引擎选择 |
cache_ttl_minutes | u64 | 15 | 搜索/抓取结果缓存时间(分钟),0 = 禁用缓存 |
search_provider 取值:
| 值 | 说明 |
|---|
auto | 级联回退:按 Tavily、Brave、Perplexity、DuckDuckGo 顺序尝试 |
brave | Brave Search API,需要 BRAVE_API_KEY |
tavily | Tavily AI 搜索,需要 TAVILY_API_KEY |
perplexity | Perplexity AI 搜索,需要 PERPLEXITY_API_KEY |
duckduckgo | DuckDuckGo HTML 抓取,无需 API 密钥 |
[web.brave]
| 字段 | 类型 | 默认值 | 说明 |
|---|
api_key_env | string | "BRAVE_API_KEY" | API 密钥环境变量 |
max_results | usize | 5 | 最大搜索结果数 |
country | string | "" | 国家/地区代码(如 "US"),空 = 无过滤 |
search_lang | string | "" | 语言代码(如 "en"),空 = 无过滤 |
freshness | string | "" | 时效过滤:"pd" 过去一天、"pw" 过去一周、"pm" 过去一月 |
[web.tavily]
| 字段 | 类型 | 默认值 | 说明 |
|---|
api_key_env | string | "TAVILY_API_KEY" | API 密钥环境变量 |
search_depth | string | "basic" | 搜索深度:"basic" 快速、"advanced" 深度分析 |
max_results | usize | 5 | 最大搜索结果数 |
include_answer | bool | true | 是否包含 AI 生成的摘要 |
[web.perplexity]
| 字段 | 类型 | 默认值 | 说明 |
|---|
api_key_env | string | "PERPLEXITY_API_KEY" | API 密钥环境变量 |
model | string | "sonar" | 搜索查询使用的 Perplexity 模型 |
[web.fetch]
| 字段 | 类型 | 默认值 | 说明 |
|---|
max_chars | usize | 50000 | 抓取内容最大字符数 |
max_response_bytes | usize | 10485760 (10 MB) | HTTP 响应体最大字节数 |
timeout_secs | u64 | 30 | HTTP 请求超时(秒) |
readability | bool | true | 启用 HTML 到 Markdown 的可读性提取 |
[channels]
共 40 个通道适配器,均在 [channels.<name>] 下配置。每个通道为 Option<T> —— 省略段即禁用。每个通道均支持 default_agent 字段和 overrides 子表。
[channels.telegram]
[channels.telegram]
bot_token_env = "TELEGRAM_BOT_TOKEN"
allowed_users = []
poll_interval_secs = 1
| 字段 | 类型 | 默认值 | 说明 |
|---|
bot_token_env | string | "TELEGRAM_BOT_TOKEN" | Bot Token 环境变量 |
allowed_users | list of i64 | [] | 允许的用户 ID,空 = 允许所有 |
default_agent | string 或 null | null | 消息路由的代理名称 |
poll_interval_secs | u64 | 1 | 长轮询间隔(秒) |
[channels.discord]
[channels.discord]
bot_token_env = "DISCORD_BOT_TOKEN"
allowed_guilds = []
intents = 33280
| 字段 | 类型 | 默认值 | 说明 |
|---|
bot_token_env | string | "DISCORD_BOT_TOKEN" | Bot Token 环境变量 |
allowed_guilds | list of u64 | [] | 允许的服务器 ID,空 = 允许所有 |
default_agent | string 或 null | null | 消息路由的代理名称 |
intents | u64 | 33280 | Gateway intents 位掩码(默认 = GUILD_MESSAGES | MESSAGE_CONTENT) |
[channels.slack]
| 字段 | 类型 | 默认值 | 说明 |
|---|
app_token_env | string | "SLACK_APP_TOKEN" | App Token 环境变量 (xapp-),用于 Socket Mode |
bot_token_env | string | "SLACK_BOT_TOKEN" | Bot Token 环境变量 (xoxb-),用于 REST API |
allowed_channels | list | [] | 允许的频道 ID,空 = 允许所有 |
default_agent | string 或 null | null | 消息路由的代理名称 |
[channels.whatsapp]
| 字段 | 类型 | 默认值 | 说明 |
|---|
access_token_env | string | "WHATSAPP_ACCESS_TOKEN" | Cloud API 访问令牌环境变量 |
verify_token_env | string | "WHATSAPP_VERIFY_TOKEN" | Webhook 验证令牌环境变量 |
phone_number_id | string | "" | WhatsApp Business 电话号码 ID |
webhook_port | u16 | 8443 | Webhook 监听端口 |
allowed_users | list | [] | 允许的电话号码,空 = 允许所有 |
[channels.signal]
| 字段 | 类型 | 默认值 | 说明 |
|---|
api_url | string | "http://localhost:8080" | signal-cli REST API 地址 |
phone_number | string | "" | Bot 注册的电话号码 |
allowed_users | list | [] | 允许的电话号码,空 = 允许所有 |
[channels.matrix]
| 字段 | 类型 | 默认值 | 说明 |
|---|
homeserver_url | string | "https://matrix.org" | Matrix 主服务器 URL |
user_id | string | "" | Bot 用户 ID(如 "@librefang:matrix.org") |
access_token_env | string | "MATRIX_ACCESS_TOKEN" | 访问令牌环境变量 |
allowed_rooms | list | [] | 监听的房间 ID,空 = 所有已加入房间 |
[channels.email]
| 字段 | 类型 | 默认值 | 说明 |
|---|
imap_host | string | "" | IMAP 服务器主机名 |
imap_port | u16 | 993 | IMAP 端口(993 = TLS) |
smtp_host | string | "" | SMTP 服务器主机名 |
smtp_port | u16 | 587 | SMTP 端口(587 = STARTTLS) |
username | string | "" | 邮箱地址 |
password_env | string | "EMAIL_PASSWORD" | 密码环境变量 |
poll_interval_secs | u64 | 30 | IMAP 轮询间隔(秒) |
folders | list | ["INBOX"] | 监控的 IMAP 文件夹 |
allowed_senders | list | [] | 允许的发件人,空 = 所有 |
[channels.teams]
| 字段 | 类型 | 默认值 | 说明 |
|---|
app_id | string | "" | Azure Bot App ID |
app_password_env | string | "TEAMS_APP_PASSWORD" | Bot Framework 密码环境变量 |
webhook_port | u16 | 3978 | Webhook 端口 |
allowed_tenants | list | [] | 允许的 Azure AD 租户 ID |
其他通道适配器
以下通道配置模式相同 —— 包含段头即启用,均支持 default_agent 字段:
| 通道 | 关键字段 | 说明 |
|---|
mattermost | server_url, token_env | Mattermost 机器人 |
irc | server, port, nick, channels | IRC 聊天 |
google_chat | service_account_env, space_ids | Google Chat |
twitch | oauth_token_env, channels, nick | Twitch 聊天 |
rocketchat | server_url, token_env, user_id | Rocket.Chat |
zulip | server_url, bot_email, api_key_env | Zulip |
xmpp | jid, password_env, server, rooms | XMPP/Jabber |
line | channel_secret_env, access_token_env | LINE |
viber | auth_token_env, webhook_url | Viber |
messenger | page_token_env, verify_token_env | Facebook Messenger |
reddit | client_id, client_secret_env, subreddits | Reddit |
mastodon | instance_url, access_token_env | Mastodon |
bluesky | identifier, app_password_env | Bluesky |
feishu | app_id, app_secret_env | 飞书/Lark |
revolt | bot_token_env, api_url | Revolt |
nextcloud | server_url, token_env | Nextcloud Talk |
guilded | bot_token_env, server_ids | Guilded |
keybase | username, paperkey_env | Keybase |
threema | threema_id, secret_env | Threema |
nostr | private_key_env, relays | Nostr |
webex | bot_token_env | Webex |
pumble | bot_token_env | Pumble |
flock | bot_token_env | Flock |
twist | token_env, workspace_id | Twist |
mumble | host, port, username | Mumble |
dingtalk | access_token_env, secret_env | 钉钉 |
discourse | base_url, api_key_env, api_username | Discourse 论坛 |
gitter | token_env, room_id | Gitter |
ntfy | server_url, topic, token_env | ntfy 通知 |
gotify | server_url, app_token_env, client_token_env | Gotify |
webhook | secret_env, listen_port, callback_url | 通用 Webhook |
linkedin | access_token_env, organization_id | LinkedIn |
[[mcp_servers]]
MCP (Model Context Protocol) 服务器连接,提供外部工具集成。每个条目为一个 [[mcp_servers]] 数组元素。
[[mcp_servers]]
name = "filesystem"
timeout_secs = 30
env = []
[mcp_servers.transport]
type = "stdio"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
[[mcp_servers]]
name = "remote-api"
timeout_secs = 60
env = ["GITHUB_PERSONAL_ACCESS_TOKEN"]
[mcp_servers.transport]
type = "sse"
url = "https://mcp.example.com/sse"
| 字段 | 类型 | 默认值 | 说明 |
|---|
name | string | 必填 | MCP 服务器名称。工具命名空间为 mcp_{name}_{tool} |
timeout_secs | u64 | 30 | 请求超时(秒) |
env | list | [] | 传递给子进程的环境变量名(仅 stdio 传输) |
传输方式 (按 type 区分):
type | 字段 | 说明 |
|---|
stdio | command, args | 启动子进程,通过 stdin/stdout 的 JSON-RPC 通信 |
sse | url | 连接到 HTTP Server-Sent Events 端点 |
[a2a]
Agent-to-Agent 协议配置,启用跨 LibreFang 实例的代理间通信。
[a2a]
enabled = true
listen_path = "/a2a"
[[a2a.external_agents]]
name = "research-agent"
url = "https://agent.example.com/.well-known/agent.json"
| 字段 | 类型 | 默认值 | 说明 |
|---|
enabled | bool | false | 是否启用 A2A 协议 |
listen_path | string | "/a2a" | A2A 端点 URL 前缀 |
external_agents | list | [] | 外部 A2A 代理列表 |
external_agents 条目:
| 字段 | 类型 | 说明 |
|---|
name | string | 外部代理显示名称 |
url | string | Agent Card 端点 URL(通常为 /.well-known/agent.json) |
[[fallback_providers]]
后备提供商链。当主 LLM 提供商 ([default_model]) 失败时,按顺序尝试这些提供商。
[[fallback_providers]]
provider = "ollama"
model = "llama3.2:latest"
api_key_env = ""
[[fallback_providers]]
provider = "groq"
model = "llama-3.3-70b-versatile"
api_key_env = "GROQ_API_KEY"
| 字段 | 类型 | 默认值 | 说明 |
|---|
provider | string | "" | 提供商名称(如 "ollama"、"groq"、"openai") |
model | string | "" | 该提供商的模型标识符 |
api_key_env | string | "" | API 密钥环境变量名。本地提供商(ollama 等)可为空 |
base_url | string 或 null | null | 基础 URL 覆盖。为 null 时使用目录默认值 |
[[users]]
RBAC 多用户配置。用户可分配角色并绑定到通道平台身份。
[[users]]
name = "Alice"
role = "owner"
api_key_hash = "sha256_hash_of_api_key"
[users.channel_bindings]
telegram = "123456"
discord = "987654321"
| 字段 | 类型 | 默认值 | 说明 |
|---|
name | string | 必填 | 用户显示名称 |
role | string | "user" | RBAC 角色 |
channel_bindings | map | {} | 通道平台名到平台用户 ID 的映射 |
api_key_hash | string 或 null | null | 用户个人 API 密钥的 SHA256 哈希 |
角色层级(从高到低):
| 角色 | 说明 |
|---|
owner | 完全管理权限,可管理所有代理、用户和配置 |
admin | 可管理代理和大多数设置,不能修改 owner 账户 |
user | 可与代理交互,有限的管理能力 |
viewer | 只读访问,可查看代理响应但不能发送消息 |
通道覆盖配置
每个通道适配器支持 [channels.<name>.overrides] 子表,用于按通道自定义代理行为。
[channels.telegram.overrides]
model = "claude-haiku-4-5-20251001"
system_prompt = "You are a concise Telegram assistant."
dm_policy = "respond"
group_policy = "mention_only"
rate_limit_per_user = 10
threading = true
output_format = "telegram_html"
usage_footer = "tokens"
| 字段 | 类型 | 默认值 | 说明 |
|---|
model | string 或 null | null | 该通道的模型覆盖 |
system_prompt | string 或 null | null | 该通道的系统提示覆盖 |
dm_policy | string | "respond" | 私信处理策略 |
group_policy | string | "mention_only" | 群聊处理策略 |
rate_limit_per_user | u32 | 0 | 每用户每分钟最大消息数,0 = 无限制 |
threading | bool | false | 启用线程回复(支持的平台) |
output_format | string 或 null | null | 输出格式覆盖 |
usage_footer | string 或 null | null | 使用信息页脚覆盖:off、tokens、cost、full |
dm_policy 取值: respond(回复所有私信)、allowed_only(仅回复允许列表用户)、ignore(忽略所有私信)
group_policy 取值: all(回复所有消息)、mention_only(仅 @提及时回复)、commands_only(仅响应斜杠命令)、ignore(忽略所有群消息)
output_format 取值: markdown(标准 Markdown)、telegram_html(Telegram HTML 子集)、slack_mrkdwn(Slack mrkdwn)、plain_text(纯文本)
LLM 提供商密钥
| 变量 | 说明 |
|---|
ANTHROPIC_API_KEY | Anthropic API 密钥(Claude 系列) |
GEMINI_API_KEY | Google Gemini API 密钥(别名:GOOGLE_API_KEY) |
OPENAI_API_KEY | OpenAI API 密钥 |
GROQ_API_KEY | Groq API 密钥 |
DEEPSEEK_API_KEY | DeepSeek API 密钥 |
PERPLEXITY_API_KEY | Perplexity API 密钥 |
OPENROUTER_API_KEY | OpenRouter API 密钥 |
TOGETHER_API_KEY | Together AI API 密钥 |
MISTRAL_API_KEY | Mistral AI API 密钥 |
FIREWORKS_API_KEY | Fireworks AI API 密钥 |
COHERE_API_KEY | Cohere API 密钥 |
AI21_API_KEY | AI21 Labs API 密钥 |
CEREBRAS_API_KEY | Cerebras API 密钥 |
SAMBANOVA_API_KEY | SambaNova API 密钥 |
HUGGINGFACE_API_KEY | Hugging Face API 密钥 |
XAI_API_KEY | xAI (Grok) API 密钥 |
REPLICATE_API_KEY | Replicate API 密钥 |
Web 搜索密钥
| 变量 | 说明 |
|---|
BRAVE_API_KEY | Brave Search API 密钥 |
TAVILY_API_KEY | Tavily Search API 密钥 |
PERPLEXITY_API_KEY | Perplexity Search API 密钥(与 LLM 提供商共用) |
通道令牌
| 变量 | 通道 | 说明 |
|---|
TELEGRAM_BOT_TOKEN | Telegram | Bot API 令牌 |
DISCORD_BOT_TOKEN | Discord | Bot 令牌 |
SLACK_APP_TOKEN | Slack | App 级令牌 (xapp-) |
SLACK_BOT_TOKEN | Slack | Bot 令牌 (xoxb-) |
WHATSAPP_ACCESS_TOKEN | WhatsApp | Cloud API 访问令牌 |
MATRIX_ACCESS_TOKEN | Matrix | 主服务器访问令牌 |
EMAIL_PASSWORD | Email | 邮箱密码或应用专用密码 |
TEAMS_APP_PASSWORD | Teams | Azure Bot Framework 密码 |
MATTERMOST_TOKEN | Mattermost | Bot 令牌 |
TWITCH_OAUTH_TOKEN | Twitch | OAuth 令牌 |
GOOGLE_CHAT_SERVICE_ACCOUNT | Google Chat | 服务账号 JSON 密钥 |
LINE_CHANNEL_ACCESS_TOKEN | LINE | 频道访问令牌 |
MASTODON_ACCESS_TOKEN | Mastodon | 访问令牌 |
BLUESKY_APP_PASSWORD | Bluesky | 应用密码 |
FEISHU_APP_SECRET | 飞书 | 应用密钥 |
DINGTALK_ACCESS_TOKEN | 钉钉 | Webhook 访问令牌 |
完整的通道令牌列表请参考英文版本,此处仅列出常用通道。
KernelConfig::validate() 在启动时运行,返回警告列表(非致命错误)。内核仍会启动,但会记录每个警告。
验证内容
对每个已启用的通道,验证器检查对应环境变量是否已设置且非空。
对 Web 搜索提供商,验证器检查:
| 提供商 | 检查项 |
|---|
brave | web.brave.api_key_env |
tavily | web.tavily.api_key_env |
perplexity | web.perplexity.api_key_env |
duckduckgo | 无需检查 |
auto | 无需检查(级联回退处理缺失密钥) |
不验证的内容
[default_model] 的 api_key_env 不在 validate() 中检查。缺失密钥在运行时首次使用驱动时报错。
[network] 的 shared_secret 不会与 network_enabled 交叉验证。
- MCP 服务器配置不在配置加载时验证,连接错误在后台 MCP 连接阶段出现。
部分子系统有独立配置,不属于 config.toml 但值得了解:
会话压缩(运行时)
通过 CompactionConfig 内部配置(目前未在 config.toml 中暴露):
| 字段 | 默认值 | 说明 |
|---|
threshold | 80 | 会话消息数超过此值时触发压缩 |
keep_recent | 20 | 压缩后保留的最近消息数 |
max_summary_tokens | 1024 | 压缩消息摘要的最大 token 数 |
WASM 沙箱(运行时)
通过 SandboxConfig 内部配置(目前未在 config.toml 中暴露):
| 字段 | 默认值 | 说明 |
|---|
fuel_limit | 1000000 | 最大 CPU 指令预算,0 = 无限制 |
max_memory_bytes | 16777216 (16 MB) | WASM 线性内存上限 |
timeout_secs | null (30s 回退) | 基于 epoch 的墙钟超时 |
模型路由(每代理清单)
通过代理清单中的 ModelRoutingConfig 配置:
| 字段 | 默认值 | 说明 |
|---|
simple_model | "claude-haiku-4-5-20251001" | 简单查询使用的模型 |
medium_model | "claude-sonnet-4-20250514" | 中等复杂度查询使用的模型 |
complex_model | "claude-sonnet-4-20250514" | 复杂查询使用的模型 |
simple_threshold | 100 | 低于此 token 数归类为简单查询 |
complex_threshold | 500 | 高于此 token 数归类为复杂查询 |
自主运行护栏(每代理清单)
通过代理清单中的 AutonomousConfig 配置:
| 字段 | 默认值 | 说明 |
|---|
quiet_hours | null | 静默时段 Cron 表达式(代理在此窗口暂停) |
max_iterations | 50 | 每次调用的最大工具使用迭代次数 |
max_restarts | 10 | 永久停止前的最大自动重启次数 |
heartbeat_interval_secs | 30 | 心跳健康检查间隔(秒) |
heartbeat_channel | null | 发送心跳状态的通道(如 "telegram") |