Skip to content

v3.59.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 02:29
· 119 commits to master since this release
4232011

v3.59.0

重点新功能

  • Oncall 转人工与单卡思考(#3262):会话级转人工绑定与对话交接(forward/merge,飞书 230070 错误可恢复);单卡原生思考过程(CoT)回复卡,默认关闭可在配置开启;相关消息卡片配置统一收进 Dashboard。
  • 群秘书 /secretary(#2839):新增群秘书技能,同时修复群背景丢失与 tmux 分号被吞的问题。
  • 普通群「只派活」模式 lead-only(#2843):负责人可把群切为只派活模式,Bot 只接单不主动占会话。
  • 话题关闭后接续原会话(#3236):话题会话关闭后新消息默认接回原会话;dispatch --into 支持 --session-mode resume|fresh 显式选择接续或新开。
  • 工作流增强(#3237, #3246, #3263, #3161, #3166, #3121):goal run 可指定 Codex 配置目录、模型与推理档位并校验实际运行时;工作流草稿新增「项目」,没设默认目录的编排 Bot 必须先选项目,节点 Bot 在项目目录内启动;Architect 重跑分配新 attempt 号不再撞旧 tmux 会话;检查点唤醒等主 Bot CLI 确认收下后才放行;节点工作目录操作权判定补齐 union_id 查询,读不到记录按「无法确认」fail-closed。
  • 反馈卡与鉴权(#3283, #3215, #3274, #3286):反馈卡支持可选引用文本({round}/{answerUrl} 白名单)与话题轮次范围、按钮对齐 buttonAlign;反馈鉴权缓存按人共享并隔离新卡发送,webhook 请求阶段持久化;Meego 登录按人共享,私聊授权后回原话题不再重复要求授权。
  • IPC 绑定群发送(#2428):请求绑定群发送支持幂等键、消息回读与有界归档。
  • 手机端 Web 终端(#3231, #3233, #3101):手机端终端新增复制面板、键盘开关与可自定义快捷指令;快捷指令面板重画保留表单草稿;流式卡片收起低频操作并优化终端键布局。
  • 会话代际契约(#2854):统一会话代际(generation)和持久状态契约,重绑、恢复、休眠的状态语义有了单一事实来源。
  • 机器人替身与入群管理(#2864, #3090, #3097, #3091, #2664, #2662):替身支持仅按 App ID 配置、按关键词筛选触发;普通群支持 /dismiss(仅机器人是群主且是群内唯一机器人时执行);群被解散或机器人被移出后自动结束本群会话;新机器人首次上线私聊主人一次欢迎语;setup add/configure 支持 --extra-scopes-file 追加权限清单。
  • 提问与交互(#3181, #3202, #3191):ask 卡片可展示选项说明并支持 --mention 点名;权限确认卡跟随 Claude Code 自行了结的结局即时落定;会话混入过小图片时可一键清理并续跑。
  • 决策看板(#3119, #3114, #3113):看板事项支持附图文说明(HTML 说明页/视频);关联群的子任务状态上看板,交付、举手、中断时提醒管家;会话任务状态统一推导,看板和表格直接看得出本轮已交付或需要人工介入。
  • 模型生态(#2992, #2797, #3272):Kimi 动态单卡接入思考过程、工具调用与原生用量;MiniMax 会话卡片提供原生压缩按钮;Antigravity 新增隔离的 ACP 长消息输入路径(opt-in 环境变量开启),热重连无原生 id 不再启动失败。
  • 其他新增(#3111, #2999, #3067):新增全局设置 worktreeRoot,可把新建 worktree 放到指定目录;原生插件页接入目录发现与确认安装;消息监听新增静默执行模式。

会话与消息可靠性(重点修复)

  • 运行时重绑丢回复(3a9a9fc6c):运行时进程内重绑后回复不再丢失。
  • 启动与排队(#3251, #3136, e95f067, #3044, #3223, #2981):运行时预留回执晚到不再挂住启动,并保全启动失败前未写入的排队消息;刚唤醒、还有输入未被 CLI 接住的会话不再被活跃上限回收而丢消息;续聊排队输入不再被提前休眠;冷启动 SessionStart 晚到时补按回车提交停在输入框的首条输入;busy marker 残留时按有界兜底释放 prompt-ready;启动遇到 Claude 切换确认框按配置确认,新建 tmux 会话前清掉同名死会话。
  • 轮次与权限(#3055, #3037, #3028, #3166, #3182, #3046):后台子任务未完或首条提示仍在执行时,回到提示符不再提前释放本轮权限;后代进程同时持有 stdin/stdout 时不再挂起,写入未完成不再误报成功;入口预检把残留 shadow 信封当作无 canonical 会话;DSH 单轮超时重启不再重新投递已结束的那轮输入。
  • 卡片与回执(#3240, #3039, #3048, #3020, #3027, #3033, #2886):话题内 /close 后在最新处补发关闭卡;新话题首轮被 @ 后静默收尾时补发回执;chat-scope 确认卡跟随发起 turn 冻结话题落点;已消费的显式 Ask 收据超期删除;Claude 权限确认框提醒不再误报引用文本、不再与权限卡片重复;授权申请卡待批期间发送方后续消息挂在卡上,批准后按序重放;最终回复被内容安全审计拦截时自动打码重发。
  • 话题与派单(#3184, #3042, #3057, #3061, #3043, #3008, #3022, #3036, #3244, #3059):/th /tw 后紧跟技能或斜杠命令照常转给 CLI;new-topic 模式 /fork --create 新群的消息能命中分身会话;scratch 沙箱下不再对 /fork 声称支持;跨身份确定性拒收无法改道时直接告知未执行;派单话题最终卡片不再 @ 派单 Bot;send --mention 登记交接不再为空等 5 秒;无话题根的 chat 轮次记不下回执改记 debug 不再刷 WARN;/project status 群回复不再显示内部任务标记;修复大列表链接登记溢出与 Markdown 链接校验误判;飞书回复禁止携带开发机地址。
  • 引用与附件(#2985, #3021, #3014, #2930, #3031):引用回复不在话题里时,没绑定认领就交给群级绑定;私聊 chat 模式回复也交给会话级插件绑定;沙箱中继的文件和视频附件按内容判定重放身份;修复读隔离会话的显式成员提及权限;引用历史消息不再静默跳过视频附件。
  • 其他会话链路(#3012, #3019, #3040, #3056, #3072):群成员实时查询超时时提示可调大 BOTMUX_LARK_LIST_BOTS_API_TIMEOUT_MS;挂起会话上无 Cookie 的终端链接读 grant 回「会话已挂起」而不是 403;会话恢复通知不再写「通过命令行恢复」;identity 锁按会话实际启动的后端判定,不再误删远程后端会话的 ZDOTDIR/BASH_ENV;消息监听熔断的私信指引不再指向看不到熔断状态的工作台。

CLI 适配

  • Codex(#3268, #3256, #3241, #3007, #3034, #3089, #3081, #2781, #3050, #3171, #3155):冷启动 resume 前按本会话 argv 标记回收残留旧 Codex(SIGTERM→SIGKILL 双重复核),根治对话写锁卡死;413 payload_too_large 归为请求体超限,不再误报连接失败;codex-app 启动派发与结果恢复归属加固,原生提问等待作答期间不再误报「无进展」;网络策略沙盒下 launcher 能找到真正的 codex 进程;提交确认兼容 Codex 去空白后的历史记录,并补内部空白不得放宽的提交确认守卫;白名单隔离新 Bot 首次初始化复制宿主 AGENTS.md;attestation 文件改为写临时文件再改名,避免假 Codex 读到空文件;保留终端手选模型并正确恢复会话;Cursor 停止后自动提交 follow-ups 排队消息。
  • OpenCode(#3280, #3025, #3035):启动期打字的首条消息不再被吞(等输入框出现再首写);未禁用 bypass 时传 --auto,避免权限确认静默卡死托管轮次;恢复回执按与 worker 相同的探针判断是否新起干净会话。
  • TraeX(#3252, #3250, #3052):安装切换后按身份双闸安全回收旧进程;识别会话写锁页面并暂存输入、提供受限重试;换模被拒时不再发切换通知,冷启动预检补 generation 围栏。
  • Antigravity / Lark 工具(#3272, #3180):隔离 ACP 长消息输入;修复可信后台会话的 Lark 工具身份与直连 TraeX 命令路径。
  • 其他适配器(#1420, #3212, #2726, #3247, #3196, #3243, #3045, #3029, #2865, #3080, #3079, #3112, #3058, #2504, #3003, #3053, #3051, #3085, #3018, #3054, #3150):修复 OMP 活动态识别和 Pi 末尾反斜杠提交,Pi 从本地配置发现显式模型;Claude 区分空闲压缩与漏读回复轮次;闲置压缩只从真实对话轮起算,冷启动/重连不再误压缩,保活和自动压缩不再顶掉举手与手动列;Herdr 首启认不出 CLI 时换新窗格重试一次;DSH 握手期插件模型未注册时重试、不再把 ask-user 版本改回旧版;浏览器插件按版本发现桌面内置插件避免缓存失配;Riff 判为无透传面,斜杠命令不再拆成两次远端任务;wrapperCli 写绝对路径时按文件名识别 aiden/cjadk/ttadk;进程树扫描对 exec 中途的不完整 environ 有界重读;zmx attach 与 zellij 探针在编译态不再落到 help,清理会话环境后恢复宿主 PATH;CLI 到 prompt 后很快退出时不再清零崩溃熔断计数;文档评论轮入队前被拒时回评论并清 Typing;失败卡与 worker 通知瞬时失败后持久重试不再只记日志;Bun 下安装路径含中文或空格不再报 preload not found;本机起不动 CLI 时不注册飞书长连接;TraeX/CoCo 重写配置后 gateway 条目不再假阴性、不再反复重写;Kimi 缓存 marker 查找缓存未命中结论,收掉相关跟进项(#3141)。
  • tmux(#3073):修复 tmux 2.x 下 pipe-pane 订阅被 if-shell 拆坏导致收不到输出。

定时任务

  • 暂停与结算(#2995, #3016):修复暂停任务的单次执行与定时通知投递结算;静默任务续跑改写 turnId 后,旧 turn 无 ID 尾帧不再提前结算新 turn。
  • 权威库与编辑(#3015, #3041, #3024):v3 定时任务 host 节点建任务提交到权威库,编辑回滚只用权威行;schedule update 改频率被拒时显示中文原因,已结束任务改频率后提示用 resume;新建定时任务的前置条件测试按目标群解析工作目录。

安全与沙盒

  • Dashboard 跨站(#3002):其余 /api 写接口也拒绝跨站 Origin。
  • 沙盒 fail-closed(#3030, #3005, #3017, #3006, #3032, #3088, #3049):零注入 Bot 不能经沙盒或 CLI 切换落成不支持的组合;沙盒路径名单与 sandboxNetwork 类型写错时拒绝加载;BOTMUX_SANDBOX=oncall/scratch 也要触发 daemon 侧守卫;可读写层拒绝宿主 /run;崩溃停机重试不再拆掉刚准备好的沙箱树;隔离 PID 命名空间里不再把进程号交给宿主 user systemd;v3 distillation 沙箱跳过 /etc 里不存在的条目,搭建失败时记录原始错误。
  • 围栏与环境(#3175, #3158, #2896, #3004, #3010, #3013, #3009):fenced-run 标记下只认显式总线变量,去掉总线后 scope 代码不再从 /run/user 推导回来;清理继承的 Trae Git hook 注入;bytedcli 包装器归一站点别名与大小写;auth request 拒绝目录外权限时给出下一步提示;重定向白名单读现值遇瞬时网络错误在预算内重读;插件 env 保留变量被忽略时日志告警。
  • 会议与 VC(#2978, #2972):daemon 启动时恢复会议出错不再中断整个启动;会议准备记录写入加文件锁,读出错不再覆盖其它记录。

Dashboard 与 Web 终端

  • Base UI 迁移(#3195, #3103):InfoTip/OverflowText/图标提示/飞书标签选择器、下拉菜单 Select/Combobox 改用 Base UI,下拉按需加载。
  • 看板与列表(#3117, #3156, #3077, 67f50ec, #3098, #3075, #3001, #3011, #2521):看板卡片头标签放不下时换行、「⋯」菜单不再被挤出,换行后锁定/沙盒徽标不再缩进;单会话卡片补回群头像;长阶段文字不再把列表标题挤成一字一行;滚动条统一改用原生细滚动条恢复鼠标拖动;只读访问下关闭新建 Bot 对话框不再提前探测 CLI 误弹失效提示;编排失败说清哪个 Bot 和原因、可换 Bot 重试、选 Bot 处可搜索;primary 模式单个副本快照失败不再让会话列表整页 503;模型选择器补回「跟随 CLI 默认」选项。

安装、构建与发版

  • 编译与构建(#3285, #3159, #3120, #3199, #3023, #3070):Linux 编译版显式嵌入截图原生库(skia)并加真实 PNG 冒烟门禁,未知 libc fail-closed;bun 统一升级到 1.4.4 并适配新版 ws 语义;类型检查改用 TypeScript 7 原生编译器并合并 src 之外的检查程序;CI 安装步骤加有界网络重试并跳过用不到的 electron 二进制;自定义 PNPM_HOME 下识别 pnpm 11 全局 store 布局;standalone 安装的官方 Codex 升级提醒直接给出 codex update。

测试与 CI

  • flake 根治(#3291, #3238, #3225, #3200, #3116, #3083, #3178, #3076, #3026):等子进程 exec 完成再读 /proc//exe,修复 bun 下偶发 stale;根治 schedule-repair 锁竞态与 v3 临时目录 teardown 两个高负载 flake;根治 tmux 丢 SIGCHLD 导致死窗格用例偶发红;act 环境测试结束前等动态 import 落定;后代回收断言改有界轮询;死 pane 退出状态按读计数给预算;TraeX 输入投递证据等待时限不再计入 runner 停顿;SIGKILL 死亡窗口结束后再断言关闭诚实性;场景 F 等 dialog_pending 通知后再让假人回答。
  • 围栏测试(#2996, #2997, #3047, #3060, #3000, #2975):写真实 HOME / 数据目录 / bots.json 的测试在围栏没生效时拒跑;起 worker 的 tmux 测试自带私有 tmux 目录,不再落到宿主 -L botmux。
  • E2E 与分片(#3271, #2989, #2990, #2991):飞书真机段先展开「更多操作」再点「显示输出」,卡片按钮改按主行断言;固定 Pi tmux 集成用例启动 shell;custom-final 串行用例行预算放宽到 60 秒;unit 分片超时放宽到 25 分钟。
  • README badge(e586c5b8b, fc7cf5f, 7ba3f10, 6153365):badge 更新排队等 runner 时不再被后续触发取消;README 加 npm 合计下载量、CI 与 Midscene E2E 状态、平台/贡献者/活跃度 badge 与 Star 趋势图;视频封面换动态 GIF。
  • 文档(#3133, #3038):补登 Riff 无透传面的文档说明;删除 bots-json 文档残留的冲突标记。

✨ 新功能

  • kimi: 动态单卡接入 Kimi 思考过程、工具调用与原生用量 (#2992)
  • substitute: 支持按关键词筛选替身触发 (#3090)
  • lark: 群被解散或机器人被移出后自动结束本群会话 (#3091)
  • dashboard: 下拉菜单改用 Base UI Select / Combobox,按需加载 (#3103)
  • dashboard: 会话任务状态统一推导,看板和表格马上看得出本轮已交付或需要你 (#3113)
  • worktree: 新增全局设置 worktreeRoot,可把新建 worktree 放到指定目录 (#3111)
  • minimax: 在会话卡片提供原生压缩按钮 (#2797)
  • decision-board: 事项关联群的子任务状态上看板,交付、举手、中断时提醒管家 (#3114)
  • dismiss: 普通群支持 /dismiss,仅在机器人是群主且是群里唯一机器人时执行 (#3097)
  • message-listener: 新增静默执行模式 (#3067)
  • plugins: 原生插件页接入目录发现与确认安装 (#2999)
  • dashboard: InfoTip / OverflowText / 图标提示 / 飞书标签选择器改用 Base UI (#3195)
  • claude: 会话混入过小图片时一键清理并续跑 (#3191)
  • setup: 机器人新增上线欢迎语,首次上线后私聊主人一次 (#2664)
  • secretary: 新增群秘书 /secretary,修复群背景与 tmux 分号丢失 (#2839)
  • decision-board: 看板事项支持附图文说明(HTML 说明页 / 视频) (#3119)
  • feedback: 反馈按钮支持可选的对齐配置 buttonAlign (#3215)
  • ask: 卡片展示选项说明,支持 --mention 点名 (#3181)
  • substitute: 支持仅通过 App ID 配置机器人替身 (#2864)
  • setup: setup add/configure 支持 --extra-scopes-file 追加权限清单 (#2662)
  • session: 统一会话代际和持久状态契约 (#2854)
  • lark: 收起流式卡片低频操作并优化终端键布局 (#3101)
  • web-terminal: 手机端终端支持复制面板、键盘开关与可自定义快捷指令 (#3231)
  • workflow: bind Codex runtime for headless goals (#3237)
  • ipc: request-bound group send with idempotency key, message id and read-back (#2428)
  • topic: 话题会话关闭后默认接上原会话,dispatch --into 支持 --session-mode resume|fresh (#3236)
  • manager: 普通群负责人可选「只派活」模式(lead-only) (#2843)
  • oncall: 完善会话转人工、单卡思考与消息卡片配置 (#3262)
  • feedback: 支持可选引用文本和话题轮次范围 (#3283)

🐛 修复

  • vc-meeting: 会议准备记录写入加文件锁,读出错时不再覆盖其它记录 (#2972)
  • send: 修复读隔离会话的显式成员提及权限 (#2930)
  • lark: 最终回复被内容安全审计拦截时自动打码重发 (#2886)
  • input-capture: 引用回复不在话题里时,没有绑定认领被引用消息就交给群级绑定 (#2985)
  • worker: 启动命令遇到 Claude 切换确认框时按配置确认;新建 tmux 会话前清掉同名死会话 (#2981)
  • vc-meeting: daemon 启动时恢复会议出错不再中断整个启动 (#2978)
  • sandbox: 可读写层拒绝宿主 /run (#3006)
  • codex-app: 原生提问等待作答期间不再误报「无进展」 (#3007)
  • plugins: pluginRuntime 插件 env 里的保留变量被忽略时在日志里告警 (#3009)
  • auth: auth request 拒绝目录外权限时给出下一步提示 (#3010)
  • schedule: v3 定时任务 host 节点建任务提交到权威库,编辑回滚只用权威行 (#3015)
  • sandbox: 崩溃停机后重试不再拆掉刚准备好的沙箱树 (#3032)
  • project: /project status 群回复不再显示标题尾部的内部任务标记 (#3036)
  • dsh: 启动时不再把 profile 里已有的 ask-user 版本改回 ^0.1.1-rc.1 (#3029)
  • ask: 已消费的显式 Ask 收据超过保留期后删除 (#3020)
  • dashboard: primary 模式下单个副本快照失败不再让会话列表整页 503 (#3011)
  • input-capture: 私聊 chat 模式下的回复消息也交给会话级插件绑定 (#3021)
  • constrained-invocation: 后代同时持有 stdin 和 stdout 时不再挂起,写入未完成不再误报成功 (#3037)
  • opencode: 恢复回执按与 worker 相同的探针判断是否新起干净会话 (#3035)
  • dispatch: 派单话题里 botmux send 的最终卡片不再 @ 派单 bot (#3043)
  • dsh: initialize 遇到插件模型尚未注册时在握手时限内重试 (#3045)
  • worker: 无话题根的 chat 轮次记不下派单回执时改记 debug,不再每轮刷 WARN (#3022)
  • dashboard: 新建定时任务的前置条件测试按目标群解析工作目录 (#3024)
  • durable: 入口预检把残留的 shadow 信封当作无 canonical 会话 (#3028)
  • worker: 后台子任务未完或启动参数里的首条提示仍在执行时,回到提示符不再释放本轮权限 (#3055)
  • update: standalone 安装的官方 Codex 升级提醒直接给出 codex update (#3070)
  • compiled: zmx attach 与 zellij 探针在编译态下不再落到 help (#3058)
  • xpi: 跨身份确定性拒收无法改道时直接告知未执行,不再空耗重试 (#3061)
  • schedule: 静默任务续跑改写 turnId 后,旧 turn 无 ID 尾帧不再提前结算新 turn (#3016)
  • dashboard: 看板单会话卡片补回群头像 (#3077)
  • terminal: 挂起会话上无 Cookie 的 view-link 读 grant 回「会话已挂起」而不是 403 (#3019)
  • passthrough: Riff 后端判为无透传面,斜杠命令不再拆成两次远端任务 (#3080)
  • worker: Claude 权限确认框提醒不再误报引用文本、不再与权限卡片重复 (#3027)
  • grant: 授权申请卡待批期间机器人发送方的后续消息挂在卡上,批准后按序重放 (#3033)
  • dispatch: send --mention 登记交接时不再为未绑定的登记空等 5 秒 (#3008)
  • lark: 消息监听熔断私信不再指向看不到熔断状态的工作台 (#3072)
  • session-env: identity 锁按会话实际启动的后端判定,不再误删远程后端会话的 ZDOTDIR/BASH_ENV (#3056)
  • dispatch: 群成员实时查询超时时提示可调大 BOTMUX_LARK_LIST_BOTS_API_TIMEOUT_MS (#3012)
  • worker: Bun 下安装路径含中文或空格时 worker 启动报 preload not found (#3085)
  • dashboard: 看板卡片头部标签放不下时换行,「⋯」菜单不再被挤出卡片 (#3117)
  • worker-pool: 失败卡片与 worker 通知发送瞬时失败后持久重试,不再只记日志丢弃 (#3051)
  • install: 自定义 PNPM_HOME 下识别 pnpm 11 全局 store 布局 (#3023)
  • ask: chat-scope 会话里的确认卡跟随发起 turn 冻结的话题落点 (#3048)
  • dashboard: 滚动条统一改用原生细滚动条,恢复鼠标拖动 (#3098)
  • dashboard: 编排失败说清哪个 Bot 和原因,可换编排 Bot 重试,选 Bot 处可搜索 (#3001)
  • cursor: 停止后自动提交停在 follow-ups 里的排队消息 (#3050)
  • auth: bytedcli 包装器按上游规则归一站点别名与大小写 (#3004)
  • v3: distillation 沙箱跳过 /etc 里不存在的条目,搭建失败时记录原始错误 (#3049)
  • setup: 重定向白名单读现值遇瞬时网络错误时在预算内重读 (#3013)
  • send: 沙箱中继的文件和视频附件按内容判定重放身份 (#3014)
  • dashboard: 只读访问下关闭中的新建 Bot 对话框不再提前探测 CLI,避免误弹「访问链接已失效」 (#3075)
  • antigravity: scratch 沙箱下不再对 /fork 声称支持 (#3057)
  • fork: new-topic 模式下 /fork --create 新群的消息命中分身会话 (#3042)
  • scope: 隔离 PID 命名空间里不再把进程号交给宿主 user systemd (#3088)
  • worker-pool: 文档评论轮在入队前被拒时回评论并清理 Typing 表情 (#3053)
  • tmux: 修复 tmux 2.x 下 pipe-pane 订阅被 if-shell 拆坏导致收不到输出 (#3073)
  • worker-pool: CLI 到 prompt 后很快又退出时不再清零崩溃熔断计数 (#3003)
  • schedule: schedule update 改频率被拒时显示中文原因,已结束任务改频率后提示用 resume (#3041)
  • workflow: 指定工作目录的操作权判定补齐主 Bot 的 union_id 查询,读不到 run 记录按「无法确认」,主 Bot 自己的节点只查一次群成员 (#3121)
  • worker: 冷启动 SessionStart 晚到时补按一次回车提交停在输入框里的首条输入 (#3044)
  • group-context: 引用历史消息时不再静默跳过视频附件 (#3031)
  • sandbox: BOTMUX_SANDBOX=oncall/scratch 与 sandbox:"oncall" 也要触发 daemon 侧沙盒守卫 (#3017)
  • lark: 本机起不动 CLI 时不注册飞书长连接 (#3018)
  • i18n: 会话恢复通知不再写「通过命令行恢复」 (#3040)
  • traex: 换模被拒时不再发切换通知,冷启动预检补 generation 围栏 (#3052)
  • kimi: 缓存 marker 查找的未命中结论,收掉 #3141 三条跟进项 (#3150)
  • dashboard: 看板卡片头换行后锁定/沙盒徽标不再缩进,徽标间距统一交给 gap (#3156)
  • codex: 提交确认兼容 Codex 去掉首尾空白后写入的历史记录 (#3089)
  • codex: 网络策略沙盒下 Codex launcher 能找到真正的 codex 进程 (#3034)
  • daemon: 新话题首轮被 @ 后静默收尾时补发回执 (#3039)
  • mojo: 进程树扫描对 exec 中途读到的不完整 environ 有界重读 (#3112)
  • fence: fenced-run 去掉总线后 scope 代码不再从 /run/user 推导回来 (#3158)
  • env: 清理继承的 Trae Git hook 注入 (#2896)
  • dashboard: 其余 /api 写接口也拒绝跨站 Origin (#3002)
  • sandbox: 沙盒路径名单与 sandboxNetwork 类型写错时拒绝加载,不再静默放宽 (#3005)
  • plugins: TraeX/CoCo 重写配置后 gateway 条目不再假阴性且不再反复重写 (#3054)
  • opencode: 未禁用 bypass 时传 --auto,避免权限确认静默卡死托管轮次 (#3025)
  • workflow: Architect 每次重跑分配新的 attempt 号,不再撞上一轮的 tmux 会话 (#3161)
  • codex: 保留终端手选模型并正确恢复会话 (#2781)
  • fence: fenced-run 标记下只认显式给出的总线变量,strict envPolicy 也保留标记 (#3175)
  • wrapper: wrapperCli 写绝对路径时按文件名识别 aiden / cjadk / ttadk (#3079)
  • codex: 白名单隔离新 bot 首次初始化时一并复制宿主 ~/.codex/AGENTS.md (#3081)
    • 已在用的白名单隔离 bot 不会自动补:升级后到 Dashboard 的 bot 默认配置「Codex 登录凭证」里点「从宿主重新同步」,会把宿主 AGENTS.md 一起同步过去(原文件先自动备份,下个新会话生效)。
  • test: act 环境的测试结束前等动态 import 落定,根治 teardown 偶发红 (#3200)
  • ci: 安装步骤加有界网络重试,跳过用不到的 electron 二进制下载 (#3199)
  • topic: /th /tw 后紧跟技能或斜杠命令时照常转给 CLI(接管 #1975) (#3184)
  • claude: 在子代理视图里提交的提示也能被确认送达 (#3182)
  • lark: 禁止飞书回复携带开发机地址 (#3059)
  • ask: 权限确认卡跟随 Claude Code 自行了结的结局即时落定,并如实提示内置自动拒绝倒计时 (#3202)
  • lark-tool: 修复可信后台会话的 Lark 工具身份与直连 TraeX 命令路径 (#3180)
  • pi: 从本地配置发现显式模型 (#3212)
  • dashboard: 模型选择器补回「跟随 CLI 默认」选项 (#2521)
  • workflow: 检查点唤醒要等主 Bot 的 CLI 确认收下后,这一轮结束才放行 (#3166)
  • zmx: 清理会话环境后恢复宿主命令搜索路径 (#2504)
  • config: 零注入 bot 不能经沙盒或 CLI 切换落成 scratch 下不支持的组合 (#3030)
  • adapters: 修复 OMP 活动态识别和 Pi 末尾反斜杠提交 (#1420)
  • claude: 区分空闲压缩与漏读回复的轮次 (#2726)
  • dashboard: 保活和自动压缩不再顶掉举手与手动列,补 busySinceAt 边界测试 (#3196)
  • schedule: 修复暂停任务单次执行与定时通知投递结算 (#2995)
  • dsh: 单轮超时后重启不再重新投递已结束的那轮输入 (#3046)
  • worker: busy marker 残留时按有界兜底释放 prompt-ready (#3223)
  • web-terminal: 快捷指令迟到应答补测、过期重画保留新增草稿、coco/traex 归 codex 档 (#3233)
  • browser: 按版本发现桌面内置插件避免旧缓存协议失配 (#2865)
  • dashboard: 决策看板长阶段文字不再把列表标题挤成一字一行 (67f50ec)
  • session: 刚唤醒的会话还有未被 CLI 接住的输入时,不再被活跃上限回收而丢消息 (#3136)
  • link-ref: 修复大列表链接登记和 Markdown 链接校验误判 (#3244)
  • herdr: 新会话首次启动认不出 CLI 时关掉窗格、换新窗格重试一次 (#3243)
  • lark: 话题内 /close 后在最新处补发关闭卡片 (#3240)
  • workflow: 工作流草稿加「项目」,没设默认目录的编排 Bot 必须先选项目 (#3246)
  • idle-compact: 闲置计时只从真实对话轮之后起算,冷启动/重连不再误压缩 (#3247)
  • session: 修复普通消息身份登记与 Codex App 启动回复 (#3241)
  • stuck: 识别会话写锁页面并暂存输入,提供受限重试 (#3250)
  • session: 续聊排队输入不再被提前休眠,丢弃当前轮身份时告警 (e95f067)
  • worker: 重启后运行时预留回执晚到时不再静默挂住会话启动 (#3251)
  • traex: 安装切换后安全回收旧进程(缓解) (#3252)
  • codex: 413 归为请求体超限,不再误报为连接失败 (#3256)
  • workflow: 拉群开始把草稿的项目写进 run.json,没设默认目录的节点 Bot 在项目里起 (#3263)
  • session: 运行时进程内重绑后回复不再丢失 (3a9a9fc)
  • codex: 冷启动 resume 前回收本会话残留的旧 Codex,避免对话写锁卡死 (#3268)
  • antigravity: 增加隔离的 ACP 长消息输入路径 (#3272)
  • feedback: 共享有效鉴权缓存并隔离新卡发送 (#3274)
  • build: Linux 编译版显式嵌入截图原生库并验证真实 PNG (#3285)
  • auth: Meego 登录按人共享,私聊授权后回原话题不再重复要求授权 (#3286)
  • opencode: 启动期打字的首条消息不再被吞 (#3280)

📝 文档

  • readme: 视频封面换成动态 GIF,删去 Doubao 快速接入,贡献者头像列全 (6153365)
  • readme: 加平台、贡献者数、提交活跃度 badge 与 Star 趋势图 (7ba3f10)
  • site: 删除 bots-json 文档里残留的 diff3 冲突标记 (#3038)
  • passthrough: 补登 Riff 无透传面的文档说明与残余配对边界注释 (#3133)

🔧 其它

  • pi: 固定 tmux 集成用例的启动 shell (#2989)
  • unit 分片超时 20→25 分钟,覆盖片内并行/PTY 争用的实测散布 (#2991)
  • ci: 放宽 custom-final 串行 spawn 行预算到 60s(ci.yml 已由 #2991 落地) (#2990)
  • traex: hook 接线测试自带私有 tmux 目录,不再落到宿主 -L botmux (#2975)
  • worker: 场景 F 等 dialog_pending 更正通知后再让假人回答,消除与 hold 轮询的竞态 (#3026)
  • fence: 四个写数据目录的测试文件在围栏外直接拒跑 (#3047)
  • riff: bootstrap 测试改用临时 HOME 和隔离 PATH,不再覆盖宿主 botmux (#3060)
  • mojo: PROBE 2 等 SIGKILL 死亡窗口结束再断言关闭诚实性 (#3076)
  • badges: README 加 npm 合计下载量、CI 与 Midscene E2E 状态 badge (fc7cf5f)
  • badges: badge 更新排队等 runner 时不再被后续触发取消 (e586c5b)
  • dashboard: port-change 集成测试在围栏没生效时拒跑,不再覆盖真实 bots.json (#2996)
  • tmux: 死 pane 退出状态等待按读计数给预算,消除饥饿下墙钟耗尽 flake (#3083)
  • constrained-invocation: 后代回收断言改有界轮询,消除高负载调度竞态 (#3116)
  • build: 构建类型检查改用 TypeScript 7 原生编译器,并合并 src 之外的检查程序 (#3120)
  • fence: 写真实 HOME 的五个测试在围栏没生效时拒跑 (#2997)
  • tmux: 两个起 worker 的 tmux 测试自带私有 tmux 目录,不再落到宿主 -L botmux (#3000)
  • codex: attestation 文件改为写临时文件再改名,避免假 Codex 读到空文件 (#3155)
  • codex: 补内部空白不得放宽的提交确认守卫 (#3171)
  • build: bun 统一升级到 1.4.4 并适配新版 ws 语义 (#3159)
  • traex: 输入投递证据测试的等待时限不再计入 runner 停顿和 worker 冷加载 (#3178)
  • tmux: 根治共享会话死窗格用例的偶发红(tmux 丢 SIGCHLD 不回填退出码) (#3225)
  • ci: 根治 schedule-repair 锁竞态与 v3 临时目录 teardown 两个高负载 flake (#3238)
  • e2e: 飞书真机段先展开「更多操作」再点「显示输出」,卡片按钮改按主行断言 (#3271)
  • cli-identity: 等子进程 exec 完成再读 /proc//exe,修复 bun 下偶发 stale (#3291)

🙏 感谢贡献者

@chengweiv5 @Kerminate @laskfla @wutonga1990 @ninjalyl @dafeizhou @alezeng @lijason1121 @xushulong-solo @xinna2001 @haozhenfei @Wait845 @47seek @LucasIcarus @hu5h @PollionChang @Alan-Paul @shangguandxing-sudo @fangyeqing @Richard5087 @uestcwangci @yeyitech @Phoobobo @yangdm2015 @nengqi @ceilf6 @superShen0916 @e3chovivi @NickChilling @chaozuo-cpu

Full Changelog: v3.58.0...v3.59.0