跳到主要内容

CodeWhale v0.8.45 发布 —— 我从 README 里读到了产品方向的信号

· 阅读需 6 分钟

「The most agentic harness for DeepSeek V4。」

Harness? 不是 agent,不是 assistant,不是 CLI tool——harness。我盯着这个词看了几秒,觉得它不是在玩文字游戏。

CodeWhale v0.8.45 封面

那天下午,我看了三次 README

你知道那种感觉吗——工具你每天都在用,但某天突然发现自己对它的理解错了。我本来是想看看有没有新命令,结果被 README 引到了一个叫「What Is It」的新章节里。重写的核心,是把 CodeWhale 拆成了四层:治理层级(constitutional hierarchy)、结构化的信任机制、反馈循环(feedback beats)、还有恢复机制(recovery)。每一层都在解释同一个问题:「当你把模型放在一个开放终端里,怎么确保它不乱来?」

这不是一个 agent 会自问的问题,因为 agent 的前提是「它能做任何事,我们信任开发者让它做」。这是 harness 的问题——一个 harness 知道自己是模型的外部约束框架,不是模型本身。

有意思的地方在于:这三段内容看下来,我突然意识到 CodeWhale 这 0.8.x 系列一直在悄悄搭建的到底是什么。0.8.42 的 Brother Whale 身份提示、0.8.43 的 Post-turn Receipts(每轮收据)、0.8.44 的 Agent Team UX——它们全都是 harness 的零件,不是 agent 的零件。只是之前没人给它们起一个统一的名字。

v0.8.45 给了这个名字。

RLM 会话,第一次成为一等公民

跟 README 改版关系不大但同样值得单说的一件:RLM(Read-Load-Modify)REPL 现在可以加载 session:// 引用了(#2047)。

之前 RLM 只能加载文件路径或剪贴板内容——你想要分析当前会话里的上下文?得手动把内容贴进 REPL。现在 rlm_open 支持 session:// 协议,当前会话的提示词、历史对话、session 数据作为符号对象直接暴露在 RLM 环境里。代码多行分析、跨轮次数据比对,不需要在窗口之间反复跳了。

还有一个很微妙的细节:命令面板现在支持语音输入。调出命令面板后配了一个语音转文字入口,底部会显示转录状态(#2047)。这个功能平常可能不太会用,但当你一只手端着咖啡、另一只手拿着触控板的时候,你突然就需要它了。

和 Moonshot 有关系吗?有关系

v0.8.45 悄悄把 Moonshot/Kimi 做成了第一方 provider——API 密钥认证、模型补全、CLI 授权、密钥存储集成、甚至可选的 Kimi CLI 凭据复用,全套配齐了。

等一下,body 里不是说「Kimi/Moonshot branding is removed from public surfaces」吗?是的, branding 被拿掉了——README 里不再提 Moonshot 作为并列选项,hero 文案也不列第三方提供商。但后端 provider 代码不仅没删,反而做完整了。codewhale --provider moonshot --model kimi-k2.6 现在可以直接到达 TUI,不会在配置解析后卡住。

这个「去掉 branding 但完善后端」的操作传递了一个清晰的信号:CodeWhale 正在把自己定位为 DeepSeek V4 的专属 harness,但它不想失去提供商的灵活性。你不喜欢 DeepSeek?可以用 Moonshot。你想自己搭一个兼容 API?Sub-agent 兼容性修复支持了严格 OpenAI 兼容后端。只不过在公共宣传中,DeepSeek 是唯一的头牌。

送上一张鲸鱼名字清单

子智能体终于有名字了——准确的说是鲸鱼物种名(#2035, #2016)。以前 delegate 出去的子智能体显示为 agent_xxxx,你只能靠猜它是什么角色。现在叫 Beluga、Orca、Humpback……每个名字稳定可读,原始 agent ID 保留在弹窗里可查。对比之前「全部叫 agent_xxxx」的时期,现在是翻看 transcript 时一眼就能分辨哪个 agent 做了什么事。

那些修起来比看起来重要的

v0.8.45 的修复部分有几个值得展开的:

Sub-agent 完成回传适配(#2057, #2120):回传现在用 chat-template 安全的角色字段,在终端更新前发出。这修复了严格 OpenAI 兼容/自托管后端的兼容问题。「严格兼容」的 API 通常对角色字段类型敏感,之前子智能体完成任务后通知回主会话时,那些自建后端的 API 不认,导致任务挂了但母会话不知道。现在改了角色标识的格式,所有兼容 API 都能收到完成信号了。

Self-hosted 预算窗口不再干烧(#2060):窗口小于 500K token 时,output 保留后压扁预检压缩缓冲,结果输入预算直接归零——你刚搭好一个本地模型,还没来得及用,它就说「上下文不够了」。修复后输出保留后仍然留出可用输入预算,小窗口模型也能正常跑长会话。

Goal prompt 一打开就能干活(#2097):开启 goal 模式后,agent 直接开始执行,不再需要你额外敲一下「开始吧」。

审批流一键确认(#2143):Enter 直接提交所选审批选项,Destructive 警告仍然可见,Abort 取消当前轮次而不是只拒绝当前工具调用。

YAML block scalar 解析(#1908, #1907):SKILL.md frontmatter 里多行描述用 >| 标识符时,折叠块标量、字面量标量、三种 chomp 模式全部正确解析了。如果你的技能文件 frontmatter 里写过长描述,大概率遇到过解析错位的问题——现在修了。

list_dir 和 file_search 可取消(#2035):长目录遍历和文件搜索现在响应取消/停止请求,30 秒 fallback 超时。之前碰到深度嵌套的 node_modules,终端就僵住了。

升级

npm install -g codewhale
# 或已安装用户
codewhale update

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#CodeWhale #DeepSeekV4 #终端工具 #AI开发 #开源项目