opencode Code Mode 静默返回 null:函数表达式写法是元凶,816 次调用 71 次失败
lehcode · ghdev · 2026-10-21
anomalyco/opencode 的 issue #57484 报告 Code Mode execute() 的静默失败:当 code 参数传入函数表达式(如 async () => {...})而非函数体时,运行时永远返回 null 且无任何报错或日志。
关键证据:
- 扫描 177 个会话共 816 次 execute 调用,71 次产出 null,全部是顶层函数表达式写法;函数体写法 0 次失败。
- 会话内对照实验与在线验证一致:async () => { return 42 } → null,而 (async () => 42)()(IIFE 立即调用)→ 42。
- 根因:JS 引擎把末尾函数对象本身作为返回值,copyOut(undefinedAsNull) 将其转成 null;agent 收到 null 后可能误以为调用成功。
规避方法:始终用带显式 return 的函数体写法;要执行函数就立即调用 (async () => { ... })()。该做法已写入 AGENTS.md。
「编程与Agent」频道最新
- Garry Tan 力挺 Aside Browser:让 Agent 真正用好网页的解法 — garrytan · 2026-10-23
- 1Password 推出 Agent 专用登录方案,AI 可代登录却不接触密码 — AndrewSchmidtFC · 2026-10-23
- MCP 服务器 30 天后暗藏窃取 SSH 密钥指令,作者开源 mcp-guard 防变节 — ErgoniaWorks · 2026-10-23
- 实测:不在 AGENTS.md 里写明的 MCP 工具,编码 Agent 不会用 — colinmcnamara · 2026-10-23
- 用开源模型+Claude 把一段网球视频变成世界级教练 — tweetsatpreet · 2026-10-23
- 132 个免费开源 AI Agent 与 RAG 项目合集,星标 1.65 万 — Arindam_1729 · 2026-10-23