Whale

功能特性

终端中高效 AI 辅助编程所需的一切。

缓存优先循环

Whale 的上下文布局将 DeepSeek 的前缀缓存作为一等公民。系统提示词、工具规范和 Skills 构成不可变前缀, 在整个会话期间保持稳定。对话历史以追加模式写入。这意味着长会话可以持续受益于缓存前缀——实践中可达约 90% 的缓存命中率。

┌─────────────────────────────────────┐
│ 不可变前缀                          │ ← 会话期间固定
│ system + tool specs + skills        │   缓存命中目标
├─────────────────────────────────────┤
│ 追加式对话日志                      │ ← 每轮追加
│ [user][assistant][tool][user]...    │   保持前缀一致
├─────────────────────────────────────┤
│ 可变暂存区                          │ ← 每轮重置
│ 推理 / 中间结果                     │   不参与下游请求
└─────────────────────────────────────┘

工具调用修复层

DeepSeek 的工具调用输出可能存在格式问题。Whale 包含专门的修复层来处理这些边缘情况。

Scavenge(回收)

从推理内容中恢复遗漏的工具调用。

Flatten(展平)

自动展平深层 schema,防止参数丢失。

Recovery(恢复)

处理 JSON 截断、空字段、序列化数组和熔断保护。

TUI 与斜杠命令

Whale 的终端 UI 使用 Go 的 Bubble Tea 框架构建。所有交互都在终端内完成。

命令 用途
whale启动交互式 TUI
whale exec "提示"一次性执行任务
whale setup保存 API Key
whale doctor运行健康检查
whale resume恢复之前会话

斜杠命令(TUI 内)

命令 用途
/ask [提示]只读问答模式
/plan [提示]先计划再执行
/review [目标]代码审查
/compact压缩会话上下文
/focus切换专注视图
/status显示会话状态
/skillsSkills 菜单
/memory查看/管理记忆
/mcpMCP 服务器状态

MCP 与 Skills

在不修改 Whale 核心代码的情况下扩展功能。

MCP 支持

通过 MCP 服务器接入外部工具。Whale 连接标准 MCP 服务器来添加数据库、API、云服务等自定义工具。

Agent Skills

可复用工作流,用于团队规范、代码审查、测试或工具特定指导。在 TUI 中输入 $skill-name 即可调用。

动态工作流

Whale 的 动态工作流 让你用 JavaScript 脚本编排多个 AI Agent——支持扇出研究、多角度审查、流水线处理和对抗验证,一切都在终端中完成。

工作流脚本使用 agent()parallel()pipeline() 原语来协调多个 Agent。每个 Agent 拥有独立的上下文、工具和模型访问权限——结果汇总回当前对话。

.whale/workflows/research.js
const results = await parallel([
  () => agent("搜索 Go 错误处理的最佳实践"),
  () => agent("找出常见的 Go 错误处理陷阱"),
]);
return agent("将两个发现综合成一份简洁指南");

扇出研究

并行启动多个研究 Agent,各自探索不同角度,最后综合结果。

多角度审查

从不同视角(安全、性能、代码风格)审查代码,汇总发现。

流水线处理

按顺序串联 Agent:规划 → 实现 → 审查 → 决策。每一步的输出传递给下一步。

对抗验证

一个 Agent 生成代码或结论,另一个尝试找漏洞。迭代直到双方达成一致。

✅ 兼容 Claude Code — 为 Claude Code 编写的工作流脚本无需修改即可在 Whale 中运行。

隔离工作树

使用 whale --worktree <名称> 为每个功能或 bug 修复创建隔离的 git 工作树。 更改保留在各自的分支中,Whale 会在退出后自动清理。

whale --worktree feature-x
whale exec --worktree feature-x "实现并测试这个更改"