为什么是 config,而不是 code

QueryMT 背后的理念:你的 AI agent 应该是一个 file,而不是一个 program。

代码的问题

如今几乎所有 AI agent framework 都要求你写 code。Python、TypeScript 或其他语言,本质上都是用命令式方式定义 behavior。这意味着:

  • 难以 review。 你无法扫一眼 200 行 Python script 就知道 agent 会做什么。
  • 难以共享。 共享 agent 往往意味着共享 dependency tree、virtualenv,以及一点运气。
  • 不够 portable。 code 绑定 runtime。LangChain agent 不能同样运行在 browser 或 phone 上。
  • 难以 audit。 比较两个 version 的 diff 时,很难看清 agent behavior 到底变了什么。

为什么是 TOML

TOML file 是意图声明。它说明 agent 应该做什么,而不是该如何执行。framework 负责 how。

# 这是一个完整的 agent
[agent]
provider = "anthropic"
model = "claude-sonnet-4-5-20250929"
tools = ["shell", "knowledge_ingest", "knowledge_query"]

[agent.execution]
max_steps = 30

[[middleware]]
type = "limits"
max_turns = 15

你会得到什么

  • 易于审阅: 打开文件,读一遍。你就能准确知道 agent 会做什么。
  • 易于共享: 把 TOML 附到 Slack message 上,仅此而已。
  • 可移植: 同一个 config 可运行在 CLI、dashboard、VS Code、iOS、Android。
  • 易于审计: git diff 会准确显示 agent behavior 的变化。
  • 可版本化: Configs 可以和 code 一起放在 git 中。rollback 很简单。

取舍

Config-driven 意味着你不能表达任意 logic。如果需要 custom routing algorithm 或 bespoke tool,就需要写 Rust code 并编译进 framework。config system 覆盖 90% 的 use cases,其余由 Rust API 处理。

这是有意为之。config 是 product,code 是 platform。