答用户12682993
找到根因了。这条错误出现在 CRON 自动化任务的 runtime_state.err 字段里,不是交互式终端的问题。日志原文(节选自 2026-08-11-07-58-37...log):
5835961809 ... err=Session spawn failed: spawn ENAMETOOLONG
5835961806 ... err=Session spawn failed: spawn EN...
5835961807 ... err=Session sp...
涉及的 ID(5835961806~809、1786355944065)全是你的金融 CRON 自动化。结合日志里的 [SandboxShell]、[SandboxOrchestrator]、[SandboxCLIClient] 标签,链路已经清楚:WorkBuddy 在为每个 CRON 派生 sandbox 会话进程时,Windows 的 CreateProcess 因传入数据超长而拒绝,返回 ENAMETOOLONG。这一批 CRON 全部因此静默失败——也解释了为什么你今天的 CRON "今日 run 数: 0"。
最后做一次环境尺寸取证,确认是"环境块/命令行超 32767 字符上限"而非别的。
根因锁定。 这不是缺失二进制,而是环境块超限——并且凶手非常具体:
环境块实测 46,027 字符,已超过 Windows CreateProcess 的 32,767 字符硬上限。其中最大的一项:
CODEBUDDY_MCP_CONFIG = 36,515 字符(单个变量就占了 36.5 KB)
PATH = 1,745 字符(且含重复条目)
CODEBUDDY_MCP_CONFIG 是 WorkBuddy 把 全部 77 个连接器(含 69 个已断开的)的配置序列化后塞进环境变量的产物。当 CRON 触发时,WorkBuddy 显式把这个巨型环境块传给 sandbox 会话进程;Windows 的 CreateProcess 对"显式传入的环境块"强制 32767 字符上限,超限即返回 ERROR_FILENAME_EXCED_RANGE,libuv 将其映射为 ENAMETOOLONG → 你的整批 CRON 派生失败。
这也解释了为什么我的交互式 shell 还能正常跑(它走"继承父进程环境"路径,不校验 32767),而 CRON 的 sandbox spawn 走"显式传环境块"路径,直接撞墙。
量化一下可操作的修复空间——先只读核查 mcp.json 的规模。真正的根因:Windows 环境块超限
错误码 ENAMETOOLONG 在 libuv 层对应 ERROR_FILENAME_EXCED_RANGE——Windows CreateProcess 对"显式传入的环境块"有 32,767 字符硬上限,超限即拒绝派生。
证据链(全部实测):
项目 实测值 阈值 状态
继承环境块总字节 46,027 32,767 超限 +13,260
其中 CODEBUDDY_MCP_CONFIG 36,494 — 单一变量占 36.5 KB
PATH 1,745(含重复条目) — 次要
进一步解析:CODEBUDDY_MCP_CONFIG 是 WorkBuddy 注入的一个 connector-proxy MCP server 定义(内含 1 个 server),不是你的 ~/.workbuddy/mcp.json(仅 179 字节、1 个 server)。这个 36KB 的代理配置是 WorkBuddy 从连接器目录运行时序列化进 sandbox 环境的。
为什么表现为"所有 CRON 静默失败"
日志原文(2026-08-11-07-58-37...log)印证了链路:
5835961806/807/808/809 ... err=Session spawn failed: spawn ENAMETOOLONG
1786355944065 ... (no runtime_state row)
涉及的全是你的金融 CRON(runtime_state.err 字段),今天"run 数: 0"。机制区分是关键:
我的交互式 shell 走"继承父进程环境"路径,Windows 不校验 32767 → 正常跑
CRON 的 sandbox spawn 走"显式传环境块"路径 → 撞 32767 上限 → ENAMETOOLONG → 整批派生失败
这也解释了为什么报"Session spawn failed"而非"命令找不到"。
修复路径与操作边界修复路径与操作边界
1. 主修复(治本,需 WorkBuddy 厂商):sandbox spawn 不应把 36KB 的 connector-proxy 配置整块塞进环境块。正确做法是继承父环境 + 选择性覆盖,或压缩该配置。这是 WorkBuddy 内部环境构造缺陷,建议提 bug 报告(我已掌握全部证据)。退回老版本就正常了,说明新版有问题!!!!