
【Bug已解决】OpenClaw 配置文件报错 SyntaxError: Unexpected token in JSON 解决方案1. 问题描述在手动编辑 OpenClaw 的核心配置文件openclaw.json比如新增一个渠道配置、调整模型对接参数之后重新启动服务时遇到配置解析失败SyntaxError: Unexpected token } in JSON at position 528 at JSON.parse (anonymous) at loadConfig (/opt/openclaw/lib/config.js:42:18)严重时 OpenClaw Gateway 直接无法启动反复重启都是同样的报错。1.1 具体现象手动加了一段渠道配置比如接入某个消息平台的 webhook 地址保存文件后重启 OpenClaw服务启动失败有人反馈用在线 JSON 格式化工具看着是对的但程序还是报错往往是复制粘贴时带入了不可见字符从网上教程复制的配置片段格式和自己原有的配置风格不一致导致拼接出错这是 OpenClaw 新手最容易踩的第一个坎——openclaw.json 的核心配置分为工作区配置、渠道配置、模型配置、会话管理、工具配置、Webhooks 配置等多个模块手动拼接时极易在模块边界处出现逗号/括号错误。2. 原因分析JSON 格式对语法的容错度是零常见的出错点集中在以下几类错误类型典型例子说明模块拼接时逗号缺失/多余在两个渠道配置对象之间漏加逗号从教程复制片段直接粘贴到已有配置中间最容易出这个问题末尾多余的逗号{a: 1, b: 2,}最后一个键值对后面不能有逗号引号不匹配或使用中文全角引号中文输入法状态下打出的符号肉眼很难分辨全角和半角引号的区别嵌套括号未正确闭合复制片段时漏掉了配对的}或]配置层级越深越容易在嵌套结构中漏掉闭合符号注释残留从某些教程里复制了带//注释的伪 JSON标准 JSON 不支持任何形式的注释用一张流程图梳理排查思路OpenClaw 启动 ↓ 读取 openclaw.json 文件内容 ↓ 调用 JSON.parse() 解析 ↓ 是否解析成功 ├─ 成功 → 加载各模块配置正常启动 └─ 失败 → 抛出 SyntaxError服务无法启动3. 解决方案方案一用命令行工具快速定位具体错误位置最推荐# 用 Node.js 内置能力快速校验并暴露详细报错信息 node -e JSON.parse(require(fs).readFileSync(/opt/openclaw/config/openclaw.json, utf-8)) # 或者用 jq更专业的 JSON 处理工具 jq . /opt/openclaw/config/openclaw.json报错信息里的position字段是字符偏移量结合编辑器的跳转到指定字符位置功能能快速定位问题所在行。方案二改动前先做一次备份出错后快速回滚# 每次改动前都先备份 cp openclaw.json openclaw.json.bak.$(date %Y%m%d%H%M) # 如果改坏了直接还原到最近一次可用的备份 cp openclaw.json.bak.20260615 openclaw.json回滚后再用每次只加一小段配置改完立刻用命令行工具验证一次的方式重新添加新内容而不是一次性大改多个模块。方案三使用支持 JSON Schema 校验的编辑器打开配置文件用 VS Code 打开openclaw.json如果 OpenClaw 官方提供了对应的 JSON Schema 定义文件可以在文件头部关联该 Schema编辑时能获得实时的字段名校验和语法高亮提示{ $schema: ./openclaw-schema.json, gateway: { port: 18789 } }即使没有专门的 Schema 文件VS Code 对标准 JSON 语法本身的实时校验括号匹配、逗号检查也能拦截绝大多数手写错误。方案四排查是否混入了全角符号尤其是中文输入法用户grep -n [。] openclaw.json如果有匹配结果说明中文输入法状态下误输入了全角逗号/引号/括号需要逐一替换为对应的英文半角符号。这是一个非常隐蔽、极容易被反复踩中的坑。方案五按模块拆分配置文件降低单文件复杂度进阶方案如果openclaw.json已经变得非常庞大渠道配置、模型配置、工具配置全部堆在一个文件里可以查看 OpenClaw 是否支持通过OPENCLAW_CONFIG_PATH或分模块引用的方式拆分配置文件降低每次手动编辑时误伤其他模块的风险。4. 各方案对比总结方案适用场景推荐指数命令行工具定位错误已经出错需要快速定位具体位置⭐⭐⭐⭐⭐改动前备份回滚无法快速定位错误追求快速恢复可用⭐⭐⭐⭐⭐使用支持校验的编辑器长期维护配置文件的预防性措施⭐⭐⭐⭐检查全角符号中文输入法用户的特定排查方向⭐⭐⭐⭐拆分配置文件配置文件已经变得庞大复杂⭐⭐⭐5. 常见问题 FAQ5.1 从网上教程复制配置片段时应该注意什么复制后建议先粘贴到一个纯文本编辑器而不是直接粘贴进现有配置文件肉眼确认没有隐藏的全角符号或多余空白字符后再手动整合进自己的配置结构并特别注意模块边界处的逗号是否需要补充。5.2 团队多人共同维护同一份 OpenClaw 配置如何减少这类错误建议把openclaw.json纳入 Git 版本管理在提交前的 CI 流程里加入 JSON 格式校验步骤例如用jq . openclaw.json作为一个简单的 pre-commit 检查在合并前就拦截格式错误的提交。5.3 配置文件解析失败后之前正在运行的服务会不会直接崩溃取决于失败发生的时机如果是启动阶段读取配置失败服务会直接无法启动如果是运行时重新加载配置比如收到了 reload 信号失败通常会保留使用内存中原有的旧配置继续运行不一定会导致正在运行的服务崩溃具体行为以当前版本实现为准。5.4 有没有办法在保存文件时就自动校验而不是等重启服务才发现可以在编辑器里配置保存前的 Git Hook 或者简单的文件监听脚本在每次保存后自动跑一次jq . openclaw.json第一时间在终端里看到校验结果而不用等重启整个服务才发现问题。5.5 openclaw.json 里能写注释方便自己理解配置吗标准 JSON 不支持注释。如果需要为配置项添加说明建议维护一份独立的 Markdown 文档专门记录每个配置项的含义和取值范围不要在 JSON 文件里硬写非标准的注释内容。5.6 Windows 上编辑这个文件容易踩什么额外的坑需要注意保存编码格式为不带 BOM 的 UTF-8部分 Windows 记事本默认保存的文件会带有 BOM 头个别 JSON 解析实现对文件开头的 BOM 字符处理不当可能导致明明内容正确却仍然报解析错误。5.7 排查清单速查表□ 1. 用 node -e JSON.parse(...) 或 jq 定位具体的语法错误位置 □ 2. 检查是否有模块拼接处遗漏或多余的逗号 □ 3. 检查是否混入了中文输入法产生的全角符号 □ 4. 检查文件保存编码是否为不带 BOM 的 UTF-8 □ 5. 无法快速定位时优先回滚到最近的可用备份 □ 6. 长期维护建议改动前先在纯文本环境校验复制的配置片段 □ 7. 团队协作场景在 CI 中加入 JSON 格式校验步骤6. 总结OpenClaw 配置文件报SyntaxError: Unexpected token的本质是手动编辑 JSON 配置文件时引入了不符合标准语法的内容尤其容易发生在从教程复制片段、或者中文输入法误输入全角符号的场景。核心处理思路善用命令行 JSON 校验工具快速定位具体错误位置不要靠肉眼逐字排查改动前先备份出错后快速回滚再小步骤逐步添加新配置而不是一次性大改警惕中文输入法带来的全角符号问题这是这类报错里最隐蔽也最常见的根因之一。最佳实践建议把配置文件纳入 Git 版本管理并搭配 CI 格式校验既能在改坏时快速回滚也能在团队协作场景下把语法错误拦截在合并之前而不是让每个人各自在本地反复踩坑。