You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
一、agent 在 pre-step 被拒时丢弃已排队唤醒消息并报空闲
pre-step 决策被拒时,落在组装窗口内的 followup/steer 被静默丢弃,agent 报空闲但消息未处理。
复现步骤:
reject的agent/pre-stepwaterfall 监听器。systemPrompt.assemble/waterfall await 期间调用agent.followup(msg)。实际结果:
turn()在reject路径直接返回,不做inbox.hasPending检查;wakeDriver()对运行中 driver 不置 latch。driver 带着非空 inbox 退休,whenIdle()解析、agent/status: idle触发,消息滞留到下一次交互。预期结果:被拒后唤醒被重新 latch 或由 driver 重新领取,消息在下一个 turn 被处理。
环境:任意平台;
agent-loop运行中。相关代码packages/core/agent-loop/src/agent.ts:267(及:324、:172)。验收条件:在 pre-step await 窗口内投递且决策被拒的 followup 最终被处理,或显式进入下一个 turn;
whenIdle()不得在 inbox 非空时解析。二、persistent bash 超时/部分输出路径丢失命令早期输出
persistent bash 的 fallback 缓冲被后续空操作的 viewport 覆盖,超时与部分输出路径返回空或误导内容。
timeoutMs。fallback = incremental.delta.length > 0 ? fallback + delta : result.viewport,空操作轮询返回空 delta,用空 viewport 替换首轮积累;partialOutput()以 fallback 为最后手段时,模型收到空/误导输出,fallbackTruncated被同步重置。tool-bash-persistent。相关代码packages/shell/tool-bash-persistent/src/index.ts:303。三、一次持久化失败使 schedule 定时提醒永久停摆
schedule runtime 在持久化屏障失败后清掉定时器即返回,之后所有定时提醒不再触发。
ctx.sessions.flush失败一次(例如存储暂时不可写)。driveOnce()已clearTimer(),两处flushSchedulePersistence失败分支只记日志并返回;requested已被置 false,retire()无待办。无定时器、无后续 idle/schedule/change触发,runtime 永久停摆。schedule插件。相关代码packages/schedule/schedule/src/runtime.ts:231、:315。四、E2B 子进程被杀后误报为正常完成(exit 137)
E2B 适配器把被杀命令报成
{ exitCode: 137, signal: null },与本地 provider 报{ exitCode: null, signal }不一致。sleep 60)。exec,SIGKILL 后 wrapper 存活并写入$?=137;commandOutcome的publishedExitCode !== undefined分支忽略terminationSignal,返回{ exitCode: 137, signal: null }。下游bash-local消费者把proc.status判为'completed',模型看到[exit code: 137]而非 kill 标记。{ exitCode: null, signal: 'SIGKILL' })。packages/e2b/subprocess-e2b/src/process.ts:548(及:527、:612)。{ exitCode, signal };terminationSignal已设置时优先报告信号。五、原子写未同步父目录,断电后已报告成功的写入可回退
writeFileAtomicrename 后不 fsync 父目录,断电可撤销已确认成功的写入。writeFileAtomic写入文件并确认成功。FS_STALE_VERSION。同仓storage-json/session-persistence-jsonl均同步目录,此处未同步。packages/fs/fs-local/src/fsio.ts:593。fsyncDirectory被调用。六、spill 保存文件未 fsync,崩溃后日志定位符指向缺失文件
saveTextFile返回定位符前不 fsync 文件与目录,崩溃后恢复工件可能缺失。saveTextFile以'wx', 0o600打开、写入、关闭即返回{ path, bytes },无handle.sync()与目录同步;日志中 "Full formatted result stored at: " 指向缺失或空文件,恢复路径失效。兄弟包attachment-local返回前会同步文件与两级目录。packages/spill/spill-local/src/store.ts:113。七、SDK 会话 run 等待 idle 无期限,wedged runtime 挂起调用方
HarnessSession.run等待session.status: idle无客户端期限,runtime 卡死时调用永不返回。harness.session(id).run(prompt)。client.prompt受requestTimeoutMs约束,但等待 idle 通知的循环无任何 deadline;调用永不 settle,自动化调用方无法放弃。packages/sdk/client/src/api.ts:169。run在期限内 settle 或抛出超时错误;默认行为向后兼容。八、审计发现 9 项低危缺陷,当前不阻断发布,建议随相关改动修复。
session-persistence-jsonl:日志文件被外部删除后,下次 append 静默重建、无会话头,再加载报 corrupt(packages/session/session-persistence-jsonl/src/index.ts:654)。session-projection-cache:markClean在持久化屏障/store 写入成功前重置脏计数,写入失败不重试(packages/session/session-projection-cache/src/index.ts:141)。llm:adapterStream清理期await close()无防护,第三方适配器.return()抛错会替换消费者结果(packages/llm/llm/src/index.ts:894)。subprocess-local:spawn 失败不封口 collect 模式 spill 文件,每次失败泄漏一个 fd 与临时文件(packages/subprocess/subprocess-local/src/spawn.ts:484)。terminal-bash:异步后端下,超时与在途写竞态令active槽残留,后续发送全报SEND_ACTIVE(packages/terminal/terminal-bash/src/session.ts:251)。workflow-worker-thread:agentsStarted计入启动被拒或失败的孩子(packages/workflow/workflow-worker-thread/src/host.ts:338)。timeout-policy:在 abort 时抛错的工具丢失TOOL_TIMEOUT分类(packages/guard/timeout-policy/src/index.ts:67)。apiproxySSE:读取器只按\n\n切帧,CRLF 帧会停摆流并无限增长缓冲;当前同仓服务端只发 LF,属潜伏隐患(packages/host/apiproxy/src/fetch/client.ts:387)。sdk/protocol:入站缓冲无上限,未终止的超大帧无防护(packages/sdk/protocol/src/transport.ts:175)。All reactions