🚀 CodeBuddy Code v2.155.0 发布
📦 版本信息
| 组件 | 版本 |
|---|---|
| CodeBuddy Code CLI | v2.155.0 |
| Agent SDK JS | v0.3.263 |
| Agent SDK Python | v0.3.262 |
✨ 新功能
完成后系统通知(Web UI)
设置页新增「通知」开关(默认关闭)。开启后,当页面不在前台(标签隐藏或窗口失焦)时,以下时机将弹出系统通知,点击即可把窗口拉回来:
- 对话收口:主对话一轮完成、出错、被中断,或停在等你回复时。
- 团队与任务落定:同事或后台任务完成 / 失败时。
- 不打扰的边界:开关开启且页面不在前台,两条同时满足才弹;同一件事 5 秒内只弹一条;你手动停止的任务、守护进程重启导致的批量失败不弹。
通知由本机 CodeBuddy 进程直接发出,不需要给浏览器站点授权,也就不再受「端口一变就要重新点允许」的影响。平台不支持或端点不可达时,仅在浏览器通知权限已授权的情况下退回浏览器通知保底。设置页提供「发一条测试通知」,用于分辨是「我们没发」还是「系统层吞了」。通知正文取最新一轮回复,思考条目不冒充正文;正文尚未就绪时只报状态,绝不拿上一轮回复冒充。
增强定时任务管理
定时任务支持编辑、暂停、恢复和查看执行记录,任务触发时会在对话中展示触发信息,便于确认执行情况。
A2A 被调侧终态任务跨重启可查
在 --a2a / 混合模式下,已完成的 A2A 任务(COMPLETED / FAILED / CANCELED / REJECTED)现在会落盘。进程重启(sandbox 休眠唤醒、CLI 崩溃重启、sandbox-proxy 重拉)后,调用方凭 taskId 仍能通过 GetTask 取回结果。混合模式下按 session 物理隔离,其它 session 的 taskId 一律返回 TaskNotFound;运行中的任务不落盘,重启后按 TaskNotFound 处理,由调用方重发。
Web UI 首访自动进入 CodeBuddyS
首次用浏览器打开 CLI Web UI(非内嵌 iframe)时,会自动进入 CodeBuddyS 视图,等价于手动点开侧栏切换器。切回 CodeBuddy 后记住你的选择、不再自动切换;被环境变量或运维开关硬关、网络失败挡下时会记「已尝试」,之后不再重试。从不访问网页时配置永不写入,运行时保持休眠,TUI / WorkBuddy / IDE 不受影响。
🔧 改进优化
- 侧栏顶栏收成一行:模式切换、搜索、新建不再各占一块。搜索收成图标,点开后在列表上方浮出输入框并自动聚焦;Esc、点外部或点列表行都会关闭并撤掉过滤,不留隐形筛选。
- 模式切换器文案:中文「CodeBuddy 单干 / CodeBuddy 组队」,英文「CodeBuddy Solo / CodeBuddy Group」,一眼看出两种工作台的区别。
- 交互式启动默认使用稳定端口:TUI /
cbc交互启动会挑一个空闲端口并落盘(~/.codebuddy/web-ui-port.json),同机多开时后续实例依次领base+1 / base+2 …(最多 4 个)。除了省掉每次记住新端口,它还稳住了 localStorage 的 origin —— 工作台模式、通知开关这些设备级偏好不再一换端口就被清空。--port、已设置的SERVER__PORT与--serve行为不变。 - Agent Home 视觉与布局:统一频道输入框、任务面板与任务状态事件的视觉层级,改善窄屏和不同浏览器下的表单布局。
- 模型选择布局自适应:根据终端可用宽度自适应模型信息布局,避免窄窗口下描述内容逐字换行。
🐛 问题修复
- 对话时间线乱序:修复一轮回复在终止 / 结束后整段乱序涌出的问题 —— 最终答案按实际时间位置渲染,不再掉到「问题已取消」等交互面板下方;提问 / 审批面板挂起时,面板前的完成正文保持可见,不再折叠成单行摘要。
- 回复正文排版:恢复正文字号与标题层级(正文 15px/1.7、标题阶梯拉开、段距放松),过程组展开内容的排版同步放松;工具与思考轨道的中性排版保持不变。
- 长会话内存崩溃:修复上下文压缩在长会话、大窗口模型下内存累积、偶发内存溢出崩溃的问题。压缩成功后同步裁剪运行时内存中的会话历史,避免每轮请求对历史做全量深拷带来的临时内存放大;持久化与冷启动路径行为不变。
- 自定义模型配置提示:自定义模型未配置接入地址(含填成空值)时,此前会把请求发往平台网关并回报「当前模型不可用,请切换其他模型」,把配置问题表述成了模型问题。现在会在请求发出前直接失败并提示补全接入地址;本地拉起的模型改为提示等待下载与启动完成。企业管理员下发的自定义模型仍按原有链路走平台网关。
- MCP 工具调用报错:修复自定义模型名含中文 / 非 Latin1 字符时,MCP 工具调用因请求头校验失败而全部报错的问题。
- PTC / Code Mode 工具 Hook:修复通过 REPL 编排内置工具时 PreToolUse Hook 不触发、Hook 输出刷屏、乱序到达时展示错位的问题。现在每次内层工具调用都有独立调用标识,Pre / Post 生命周期稳定关联;内层 Hook 仅归属所属 REPL 记录,主界面保持紧凑,按 Ctrl+O 可查看完整输出。
- Web UI 工作区目录:修复换一个目录启动命令行后、从命令行打开 Web UI 时工作区仍显示「上次编辑器打开的目录」的问题。工作区现在只以命令行启动目录(或显式指定的目录)为准;从带目录参数的旧链接打开时仍按链接里的目录进入。
- Windows shell 命令卡死:修复 Windows 上 PTY worker 文件缺失(杀软隔离、破损安装、
--omit=optional)时 shell 命令挂死的问题,缺失时自动回落到子进程实现。 - 浏览器预览失败:页面加载失败时展示明确原因和恢复操作,并保留本地与内网页面的直接预览能力。
- Agent Home 任务指派不唤醒:修复被指派人不在线时唤醒票无人消费、永远不被拉起的问题;修复重拉失败的过渡态被误判为「用户终止」导致自动唤醒永久失效的问题;唤醒审计现在能区分「真投递」与「只留票」。
- 缓存过期后的额外消耗:会话已使用提示词缓存、空闲超过一小时且上下文达到有效窗口 50% 时,会在发送下一条消息前提前压缩上下文,减少长上下文消耗。
- 恢复会话的模型选择:修复
cbc -c/--resume恢复 PTC 等非默认主 Agent 时丢失模型选择、误回退到 Agent 模型列表首项的问题。 - 终端文件拖放:修复 Web IDE 中资源管理器文件拖到 Dock、工作台或画布终端时误打开文件引发界面卡顿的问题,现在统一粘贴路径。
- 主 Agent 收件箱投递:同事写给主 Agent 的汇报不再「谁先 tick 谁拿」—— 会话里必须有用户自己的发言才会投递,不抢别的活跃会话,超过 30 分钟的旧信要求用户最后一条发言晚于该信落盘;同事的汇报会优先投给它被哪个会话起 / 叫起来的那一个。暂不投递的信走退避队列,用户下次开口后自然投出,不丢信;投递与暂缓都会留下审计记录。
- 重复审批:批量删除数量按每次工具调用独立累计,长任务中先前命令的删除数量不再导致后续少量删除反复要求审批;文件 Open 阶段不再重复检测敏感内容,避免连续弹出两次敏感审批。
- 敏感文件裁决归因:不再把 CLI 根据拒绝信息推定的文件操作当成真实删除,避免敏感读取被错误直接拒绝。