
1. 先把问题摆清楚你到底在选什么OpenClaw 和 Claude Agent SDK 常被放在一起比较但很多人第一步就比错了方向。前者是一个自托管、本地优先的个人 AI 助理平台核心是把一个始终在线的助理塞进你日常用的消息渠道里后者是 Anthropic 官方给开发者的 Agent 构建框架核心是让 Claude 在真实计算环境里跑 observe-decide-act 循环。一个面向终端用户一个面向写代码的人。所以真正需要做技术选型的场景通常是这样的你手上有一个多步骤任务需要模型自己调工具、看结果、再决定下一步同时你还想接一些外部工具服务。这时候问题就变成——我是直接用一个已经编排好的助理产品还是用 SDK 自己搭一个 Agent Loop两者的 Agent Loop 编排方式、MCP 工具接入机制差别很大选错了后面返工成本很高。这篇不堆概念直接给可复制的config.toml和settings.json骨架再演示一次 MCP 工具注册加 Agent Loop 调用的完整验证动作让你自己跑一遍再决定。适合正在两者之间做选型的开发者也适合想搞清楚 MCP 接入到底怎么落地的人。2. TaoToken 前置把模型调用这层先铺好不管你最后选 OpenClaw 还是 Claude Agent SDK模型调用这层都得先通。我习惯先把 API Key 和接入地址准备好再谈 Agent Loop 和 MCP否则调半天报 401 会浪费很多时间。TaoToken 的接入地址是https://taotoken.net/api控制台和 Key 管理在官网。你需要先拿到一个 API Key后面 OpenClaw 的 provider 配置和 Claude Agent SDK 的环境变量都会用到它。这一步不复杂但要注意 Key 的权限范围别一上来就用最高权限去跑实验。提示模型对话调试可以用网页端先验证 Key 是否可用确认没问题再写进配置文件能省掉一轮排查。如果你后面要长期跑编码类 Agent可以了解下 Coding Plan它更适合持续性的编码任务只是临时验证模型通不通用模型对话就够了。接入文档里有完整的参数说明配置前扫一眼能避免拼错字段。3. 可复制配置config.toml 与 settings.json 骨架3.1 OpenClaw 的 config.toml 骨架OpenClaw 是 Gateway 常驻架构配置集中在config.toml。下面这份骨架保留了 provider、agent、MCP 三块最关键的字段你可以直接改成自己的值。# ~/.openclaw/config.toml [provider] # Provider-Agnostic这里以 OpenAI 兼容入口为例 name taotoken base_url https://taotoken.net/api api_key sk-你的Key model claude-sonnet-4-6 [agent] id work workspace ~/.openclaw/workspace/work # 人格与指令文件 bootstrap [AGENTS.md, SOUL.md, USER.md] # 上下文压缩 compaction true compaction_model claude-haiku-4-5 [agent.tools] # 工具策略允许 bash / read / write / edit allow [bash, read, write, edit] # 沙箱默认关闭生产环境建议开启 sandbox false # MCP Server 注册OpenClaw 同时支持 Server 和 Client 角色 [[mcp.servers]] name filesystem command npx args [-y, modelcontextprotocol/server-filesystem, /tmp/mcp-demo] enabled true几个容易踩的点base_url结尾不要多加斜杠model字段用的是 provider 侧的模型标识不同 provider 命名不一样sandbox默认是 off本地实验无所谓真要跑不可信工具时记得打开。3.2 Claude Agent SDK 的 settings.json 骨架Claude Agent SDK 是嵌入式 Agent Loop配置走settings.json权限和 Hook 是重点。{ model: claude-sonnet-4-6, env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的Key }, permissions: { defaultMode: ask, deny: [ Bash(rm -rf *), Bash(curl * | sh) ] }, hooks: { PreToolUse: [ { matcher: Bash, hooks: [ { type: command, command: echo \[audit] bash invoked\ } ] } ], PostToolUse: [ { matcher: Write|Edit, hooks: [ { type: command, command: echo \[audit] file changed\ } ] } ] }, mcpServers: { filesystem: { command: npx, args: [-y, modelcontextprotocol/server-filesystem, /tmp/mcp-demo] } } }对比一下就能看出机制差异OpenClaw 的 MCP 注册写在[[mcp.servers]]数组里由 Gateway 统一管理生命周期Claude Agent SDK 的mcpServers是嵌在应用配置里的随 Agent 进程启动。权限上SDK 的deny规则即使开了 bypass 也生效这是它安全默认更强的地方。4. 验证请求注册一个 MCP 工具并跑通 Agent Loop光有配置不算数得实际跑一次。下面用 filesystem 这个 MCP Server 做演示验证工具注册和 Agent Loop 调用是否打通。4.1 准备 MCP Server 目录mkdir -p /tmp/mcp-demo echo hello mcp /tmp/mcp-demo/sample.txt4.2 Claude Agent SDK 侧验证用 Python SDK 跑一个最小 Agent Loop让它通过 MCP 工具读文件。import anyio from claude_agent_sdk import query, ClaudeAgentOptions async def main(): options ClaudeAgentOptions( mcp_servers{ filesystem: { command: npx, args: [-y, modelcontextprotocol/server-filesystem, /tmp/mcp-demo], } }, allowed_tools[mcp__filesystem__read_file], permission_modeask, ) async for message in query( prompt读取 /tmp/mcp-demo/sample.txt 的内容并告诉我, optionsoptions, ): print(message) anyio.run(main)跑通后你会看到 Agent Loop 的完整轨迹先发起工具调用MCP Server 返回文件内容模型拿到 observation 后再生成最终回复。这就是 observe-decide-act 循环在 SDK 里的实际形态。4.3 OpenClaw 侧验证OpenClaw 启动 Gateway 后直接在配置好的消息渠道里发一句读取 /tmp/mcp-demo/sample.txt 的内容Gateway 会把消息路由到对应 AgentAgent 调用注册好的 MCP 工具结果再通过渠道回给你。区别在于SDK 里你是用代码驱动一次 queryOpenClaw 里你是用消息触发一个常驻 Agent。4.4 结果对照验证项Claude Agent SDKOpenClaw触发方式代码调用 query()消息渠道发消息生命周期任务完成即止Gateway 常驻MCP 工具发现启动时加载 mcpServersGateway 统一注册权限拦截deny 规则不可绕过tool policy sandbox结果输出流式 message 对象渠道消息回复5. 本篇常见错排查5.1 MCP Server 起不来最常见的是npx找不到包或网络问题。先在终端手动跑一遍npx -y modelcontextprotocol/server-filesystem /tmp/mcp-demo确认能启动再写进配置。如果报路径错误检查目录是否存在。5.2 工具调用被权限拦截Claude Agent SDK 里如果allowed_tools没写对工具会被 deny。注意 MCP 工具的命名格式是mcp__server__tool少一个下划线都不行。OpenClaw 侧则是检查[agent.tools]的allow列表有没有包含对应工具。5.3 Agent Loop 卡住不返回多半是模型调用这层没通。先确认ANTHROPIC_BASE_URL和 Key 正确用模型对话单独验证一次。如果模型能回但 Agent 不调工具检查 MCP Server 是否真的注册成功SDK 侧可以打开 verbose 看工具列表。5.4 上下文压缩触发异常长任务里 compaction 可能把关键信息压掉。OpenClaw 可以指定小模型做压缩SDK 用主模型压缩。如果发现 Agent 中途失忆把压缩阈值调高或者把重要信息写进 Memory 文件。5.5 沙箱与权限的取舍OpenClaw 的 sandbox 默认 off本地跑没问题但接不可信工具时一定要开。SDK 的ask模式默认会拦别为了省事直接 bypassdeny 规则是最后一道防线。6. 选型建议与下一步跑完上面的验证选型其实就清晰了。如果你要的是住在消息渠道里、始终在线、能换不同模型大脑的个人助理OpenClaw 的 Gateway 架构更合适如果你要的是嵌进自己应用、按需启动、安全可控、能并行子 Agent 的任务引擎Claude Agent SDK 更对路。两者共享 Agent Loop、工具调用、上下文压缩、Hook 拦截这些架构基因但产品定位和部署模式是根本分野。下一步建议先把 Key 和接入地址配好再决定往哪个方向深入。排障和接入细节看接入文档验证模型通不通用模型对话长期跑编码类 Agent 可以了解 Coding Plan。配置这东西跑通一次比看十篇对比都管用。