个人游戏笔记本免费"养龙虾"(七)OpenClaw的openclaw.json文件的基本配置
- 问题背景
- 一、env
- 二、models
- 三、agents
- 四、tools
- [五、"commands" "approvals" "session" "cron"等](#五、"commands" "approvals" "session" "cron"等)
- 六、gateway
- 七、plugins
- 八、channels(渠道)的配置
- 九、验证
系列文章:
1. 个人游戏笔记本免费"养龙虾"(Win10+WSL2+OpenClaw 部署与配置指南)
2.个人游戏笔记本免费"养龙虾"(二)用显卡GPU运行OpenClaw,CUDA的安装与配置
3.个人游戏笔记本免费"养龙虾"(三)OpenClaw的安全配置指南
4.个人游戏笔记本免费"养龙虾"(四)OpenClaw(exec tools)的文件权限配置
5.个人游戏笔记本免费"养龙虾"(五)OpenClaw浏览器工具browser的使用
6.个人游戏笔记本免费"养龙虾"(番外篇)VSCode远程SSH登录Ubuntu配置OpenClaw
7.个人游戏笔记本免费"养龙虾"(六)给OpenClaw一个灵魂:配置七大Markdown文件
8.个人游戏笔记本免费"养龙虾"(七)OpenClaw的openclaw.json文件的基本配置
9.个人游戏笔记本免费"养龙虾"(八)OpenClaw:如何选择部署哪个大模型版本
问题背景
经过前期的实践,目前(2026.4.4) OpenClaw可以正常运行,webchat(UI聊天)可以进行2-3轮对话,也能够分析自然语言指令,命令行也能正常执行agent-browser命令。但是, 很棘手的问题是:在webchat中,不能正常调用skills。例如,通过对话不能正常执行agent-browser命令。
纳米AI的回答是:这个问题主要原因是安全设计,对话模式默认处于严格的安全限制下,而命令行模式拥有更高的权限。这是官方为了防止AI在对话中被诱导执行恶意操作而故意设置的安全机制。
可能的原因分析
- 权限问题:对话模式:默认仅允许纯对话,禁止自动执行任何操作(如文件读写、浏览器操作、命令执行等)
- 配置问题:可能没有正确配置对话模式的权限、环境变量(PATH、env等)
- 环境问题:可能缺少某些依赖库或工具
因此,本文根据官方文档,尽可能多的配置选项,而不仅仅是最小配置。需要配置的总体内容如下:
openclaw.json (JSON5 格式,支持注释)
├── agents # Agent 运行时配置
├── env # 环境变量配置
├── auth # 认证配置(OAuth/API Key)
├── identity # AI 身份设定
├── logging # 日志配置
├── messages # 消息格式化
├── routing # 路由和队列
├── tools # 工具配置
├── session # 会话管理
├── channels # 渠道配置(WhatsApp/Telegram/Discord 等)
├── models # 模型提供商配置
├── cron # 定时任务
├── hooks # Webhooks
├── gateway # 网关配置
├── skills # 技能配置
└── plugins # 插件配置
用ollama pull、openclaw onboard等命令完成了模型的安装、拉取、配置,在openclaw.json文件中,会自动生成配置内容。包括:"models" "auth" "agents" "gateway"等选项的基本配置。
同样,在OpenClaw control UI界面中的配置内容,也会自动写入openclaw.json文件中。这些都没有问题。不再赘述。
但是,这些配置内容还不够,需要增加权限相关的配置。
一、env
tools和skills会调用外部命令,因此,需要配置环境变量。
官方文档:环境变量 - OpenClaw
c
{
"env": {
"shellEnv": {
"enabled": true,
"timeoutMs": 15000
}
},
}
二、models
"models"基本不需要修改。这里强调2个参数:"contextWindow"和"maxTokens"。这2个参数过大,会导致内存超限,系统崩溃;太小,推理性能会下降。
我的GPU是6G,选择的模型是qwen3.5:2b-q4_K_M。2个参数设置如下。验证结果表明,可以进行3-5轮对话。
"contextWindow": 104858,
"maxTokens": 8192
三、agents
在自动配置的基础上,增加了一些配置项。具体含义可以参考官方文档,这里仅仅列出来供大家参考。
(一)elevated提升权限
elevated权限升级选项必须打开,才能够在主机上执行外部shell命令,例如/命令、!bash命令。
官方文档:沙箱 vs 工具策略 vs 提升执行-OpenClaw
c
"elevatedDefault": "on",
(二)heartbeat
这个似乎也是必不可少的。
(三)list
该选项也是自动生成的,但是要增加一些选项。特别是涉及到权限的一些选项,例如:"skills" "sandbox" "tools" "elevated"。
c
{
"agents": {
"defaults": {
"model": {
"primary": "ollama/qwen3.5:2b-q4_K_M"
},
"models": {
"ollama/glm-4.7-flash": {},
"ollama/qwen3.5:2b": {},
"ollama/qwen3.5:2b-q4_K_M": {}
},
"workspace": "/home/hello/.openclaw/workspace",
"skipBootstrap": false,
"bootstrapMaxChars": 20000,
"bootstrapTotalMaxChars": 150000,
"bootstrapPromptTruncationWarning": "once",
"userTimezone": "China/Shanghai",
"timeFormat": "24",
"contextPruning": {
"mode": "cache-ttl",
"ttl": "1h",
"keepLastAssistants": 3,
"softTrimRatio": 0.3,
"hardClearRatio": 0.5,
"minPrunableToolChars": 50000,
"softTrim": {
"maxChars": 4000,
"headChars": 1500,
"tailChars": 1500
},
"hardClear": {
"enabled": true,
"placeholder": "[Old tool result content cleared]"
}
},
"elevatedDefault": "on",
"blockStreamingDefault": "on",
"blockStreamingBreak": "text_end",
"blockStreamingChunk": {
"breakPreference": "sentence"
},
"heartbeat": {
"every": "30m",
"model": "ollama/qwen3.5:2b-q4_K_M",
"session": "main",
"includeReasoning": false,
"target": "none",
"directPolicy": "allow",
"to": "+15555550123",
"prompt": "Read HEARTBEAT.md if it exists...",
"ackMaxChars": 300,
"suppressToolErrorWarnings": false,
"lightContext": false
}
},
"list": [
{
"id": "main",
"default": true,
"name": "Main",
"workspace": "~/.openclaw/workspace",
"agentDir": "~/.openclaw/agents/main/agent",
"model": "ollama/qwen3.5:2b-q4_K_M",
"skills": [
"agent-browser",
"clawhub",
"healthcheck",
"node-connect",
"skill-creator",
"tmux",
"weather",
"hello_world"
],
"identity": {
"name": "Claw",
"theme": "helpful sloth",
"emoji": "🦥",
"avatar": "avatars/samantha.png"
},
"groupChat": {
"mentionPatterns": [
"@openclaw"
]
},
"subagents": {
"allowAgents": [
"*"
]
},
"sandbox": {
"mode": "off"
},
"params": {
"cacheRetention": "none"
},
"tools": {
"allow": [
"llm-task"
],
"elevated": {
"enabled": true,
"allowFrom": {
"webchat": [
"*"
]
}
}
}
}
]
},
}
补充:session(会话)的修剪
会话剪枝(Session pruning)在每次 LLM 调用之前从内存上下文中修剪旧的工具结果。
官方文档:Session pruning - OpenClaw
四、tools
该选项可以通过"OpenClaw control UI"来配置,文件内容也是自动生成的,但是要增加一些选项。特别要注意权限、环境等相关的选项,例如:"elevated" "exec" "ask" "pathPrepend"。
c
"tools": {
"profile": "full",
"byProvider": {
"webchat": {
"allow": [
"exec",
"read"
],
"profile": "full"
}
},
"web": {
"fetch": {
"enabled": true,
"readability": true
}
},
"links": {
"enabled": true
},
"sessions": {
"visibility": "all"
},
"message": {
"allowCrossContextSend": true
},
"elevated": {
"enabled": true,
"allowFrom": {
"webchat": [
"*"
]
}
},
"exec": {
"host": "gateway",
"security": "full",
"ask": "off",
"pathPrepend": [
"/usr/local/bin",
"/lib/node_modules"
],
"safeBinTrustedDirs": [
"/usr/local/bin",
"/lib/node_modules"
],
"backgroundMs": 2000,
"timeoutSec": 2000,
"cleanupMs": 2000,
"notifyOnExit": true,
"notifyOnExitEmptySuccess": true
},
"sessions_spawn": {
"attachments": {
"enabled": true
}
}
},
五、"commands" "approvals" "session" "cron"等
c
"commands": {
"native": true,
"nativeSkills": true,
"text": true,
"bash": true,
"bashForegroundMs": 2000,
"restart": true,
"useAccessGroups": true,
"ownerDisplay": "raw",
"allowFrom": {
"*": [
"*"
]
}
},
"approvals": {
"exec": {
"enabled": true,
"mode": "session"
}
},
"session": {
"dmScope": "per-peer"
},
"cron": {
"enabled": false
},
"web": {
"enabled": true
},
补充:session(会话)的配置和重置
- (1)会话控制对话的连续性和隔离性:
dmScope是OpenClaw中的会话隔离范围配置,用于控制直接聊天(DM)会话的边界,防止不同用户的对话串起来。- main(共享模式):所有用户的直接聊天都会进入同一个会话上下文。适合单人自用场景:所有对话上下文保持连续,体验自然
- per-peer:每个发送者(peer)的对话会进入独立的会话上下文
- per-channel-peer:每个渠道+发送者的组合会进入独立的会话上下文。多用户多渠道的复杂场景
- per-account-channel-peer:每个账户+渠道+发送者的组合会进入独立的会话上下文。
六、gateway
自动生成的基本就够用了。
c
"gateway": {
"port": 18789,
"mode": "local",
"bind": "loopback",
"controlUi": {
"enabled": true
},
"auth": {
"mode": "token",
"token": "322da958350196cdd5c6f1a42797942f729121771a17423b"
},
"tailscale": {
"mode": "off",
"resetOnExit": false
},
"nodes": {
"denyCommands": [
"camera.snap",
"camera.clip",
"screen.record",
"contacts.add",
"calendar.add",
"reminders.add",
"sms.send"
]
}
},
七、plugins
这个应该也很重要,plugins与skills是类似的,甚至是相关的。注意权限设置的相关部分。
c
"plugins": {
"allow": [],
"entries": {
"llm-task": {
"enabled": true
}
}
}
}
八、channels(渠道)的配置
(一)WebChat的配置
WebChat也属于channel(通信渠道)的一种,因此,也要配置渠道。但是,webchat没有专用的Json字段,它使用gateway的端点+认证配置。其使用的是比较简单的全局选项,如下:
- gateway.port:WebSocket 主机/端口。
- gateway.auth.token:WebSocket 认证。
- gateway.remote.token:远程 Gateway 网关目标。
- session.*:会话存储和主键默认值。
(二)gateway中channel的配置
1、设置一个渠道
每个渠道,例如iMessage,在channels.<provider> 下都有各自的配置部分。
webchat似乎没有channels.<provider> 这个选项。
2、选择并配置模型
用ollama pull、openclaw onboard等命令完成了模型的安装、拉取、配置,在openclaw.json文件中,会自动生成配置内容。这里没有问题。不再赘述。
这里强烈建议:每修改一个Json字段,就运行一次openclaw doctor,检查是否有错误。最好是重启gatewayopneclaw gateway restart。这样就可以及时发现修改不正确的地方。因为,官方文档中的配置不一定就是正确的。
九、验证
- 可以执行外部shell命令。例如,输入
!echo hello,可以返回执行结果。

- 可以执行skills的CLI命令。例如,agent-browser的命令结果如下

参考文献:OpenClaw 配置文件全解析:openclaw.yaml 详解