Title:
环境
- HermesPet 版本:1.4.1 (Apple Silicon)
- macOS 版本:macOS 15.x
- Codex CLI 版本:最新
问题描述
在 opencode.json 中配置了 MCP server(如 notion),HermesPet 启动 Codex 时会将 MCP 配置注入到 ~/.codex/config.toml。但注入过程中,command 字段的 数组类型被错误地序列化为字符串,导致 Codex 解析 config.toml 失败。
复现步骤
- 在
opencode.json 中配置一个 MCP server,例如:
{
"mcp": {
"notion": {
"command": ["npx", "-y", "@notionhq/notion-mcp-server"],
"enabled": true,
"type": "local"
}
}
}
- 启动 HermesPet(它会自动将 MCP 配置写入 Codex 的 config.toml)
- Codex 启动时报错
实际结果
Codex 报错:
❌ Codex: Error loading config.toml: invalid type: string "[\"-y\",\"@notionhq\\/notion-mcp-server\"]", expected a sequence
in `mcp_servers.notion.args`
config.toml 中被写入了字符串而非数组:
# 错误:args 是字符串
[mcp_servers.notion]
args = "[\"-y\",\"@notionhq/notion-mcp-server\"]"
期望结果
config.toml 中应写入合法的 TOML 数组:
# 正确:args 是数组
[mcp_servers.notion]
args = ["-y", "@notionhq/notion-mcp-server"]
补充说明
opencode.json 中的 command 数组第一个元素("npx")似乎被用作 command 字段,剩余元素作为 args,但 args 被整体 JSON.stringify 成了字符串
- 此 bug 在 MCP server 的
command 数组有 3 个及以上元素 时更容易触发(apple MCP 只有 3 个元素但可能碰巧格式不同)
- 临时 workaround:在
opencode.json 中将对应 MCP server 的 enabled 设为 false
Title:
环境
问题描述
在
opencode.json中配置了 MCP server(如 notion),HermesPet 启动 Codex 时会将 MCP 配置注入到~/.codex/config.toml。但注入过程中,command字段的 数组类型被错误地序列化为字符串,导致 Codex 解析 config.toml 失败。复现步骤
opencode.json中配置一个 MCP server,例如:{ "mcp": { "notion": { "command": ["npx", "-y", "@notionhq/notion-mcp-server"], "enabled": true, "type": "local" } } }实际结果
Codex 报错:
config.toml 中被写入了字符串而非数组:
期望结果
config.toml 中应写入合法的 TOML 数组:
补充说明
opencode.json中的command数组第一个元素("npx")似乎被用作command字段,剩余元素作为args,但args被整体JSON.stringify成了字符串command数组有 3 个及以上元素 时更容易触发(apple MCP 只有 3 个元素但可能碰巧格式不同)opencode.json中将对应 MCP server 的enabled设为false