核心功能详解#
CodeWhale 是一款面向专业开发者的本地优先 AI 编程助手。其核心设计理念围绕"可控性"与"可审计性"展开,通过四条核心能力支柱——模型路由、嵌套宪法、多模式运行和 Fleet 多智能体工作流——构建了一套完整的编码代理(Coding Agent)基础设施。
1. 功能总览#
flowchart TD
CW["CodeWhale 核心"] --> RR["Route Resolver<br/>模型路由"]
CW --> NC["Nested Constitution<br/>嵌套宪法"]
CW --> MP["三种模式与权限姿态"]
CW --> FL["Fleet 多智能体工作流"]
RR --> RR1["36 个提供商路由"]
RR --> RR2["Provider/Model 独立选择"]
RR --> RR3["本地运行时直连"]
NC --> NC1["五级优先级体系"]
NC --> NC2["5 条保护不变量"]
NC --> NC3["三种升级条件"]
MP --> MP1["Plan / Act / Operate"]
MP --> MP2["Ask / Auto-Review / Full Access"]
FL --> FL1["Exact Fleet / Reasoning Router"]
FL --> FL2["四级信任模型"]
FL --> FL3["声明式 Workflow 脚本"]
2. Route Resolver(模型路由)#
2.1 设计原理#
Route Resolver 是 CodeWhale 的模型调度中枢。其核心设计原则是:提供商(Provider)和模型(Model)分别独立选择,模型名称不会隐式改变提供商,不发生静默切换。这意味着用户明确指定了某个模型,CodeWhale 就只会使用该模型对应的提供商,不会因为"智能路由"而将请求转发到其他提供商。
2.2 支持的提供商#
CodeWhale 内置 36 个提供商路由,覆盖主流商业 API、开源模型托管平台和本地推理运行时:
类别 |
提供商 |
说明 |
|---|---|---|
商业 API |
DeepSeek、Anthropic、OpenAI、xAI、Moonshot/Kimi、MiniMax、StepFun、Baidu Qianfan |
头部 AI 厂商 |
模型聚合 |
OpenRouter、Together AI、Fireworks AI、Novita AI、DeepInfra、SiliconFlow |
多模型聚合平台 |
云平台 |
Volcengine Ark(火山方舟)、NVIDIA NIM |
云厂商 AI 服务 |
本地运行时 |
vLLM、SGLang、Ollama |
本地推理引擎 |
其他 |
Hugging Face、Meta Model API |
开源模型与社区 |
2.3 路由字段说明#
每条路由由四个字段组成,形成完整的模型调用描述:
字段 |
类型 |
说明 |
|---|---|---|
|
枚举 |
提供商标识,决定 API 端点和认证方式 |
|
字符串 |
具体模型名称,如 |
|
字符串 |
请求时声明的推理深度/思考档位 |
|
枚举 |
实际生效的推理档位;若无法确认则标记为"暂不可用" |
设计约束:对于无法确认的运行时值(如实际思考档位、token 用量、成本、进度),CodeWhale 保持"暂不可用"(Unavailable)状态,而非返回推测值。这体现了其"可审计性"设计理念。
2.4 本地模型接入#
本地运行时(vLLM、SGLang、Ollama)可以直接连接 localhost,通常不需要 API 密钥:
# ~/.codewhale/config.toml — Ollama 本地接入示例
[provider.ollama]
endpoint = "http://localhost:11434/v1"
api_key = "" # 本地运行时通常无需密钥
[model.ollama-qwen]
provider = "ollama"
name = "qwen2.5-coder:14b"
3. Nested Constitution(嵌套宪法)#
3.1 优先级体系#
Nested Constitution 是 CodeWhale 的行为约束体系,通过五级优先级确保 Agent 行为始终在可控范围内:
flowchart TD
subgraph Priority["优先级(从高到低)"]
P1["🔴 L1: 用户请求(当前回合)<br/>User Request — Current Turn"]
P2["🟠 L2: 内置宪法<br/>Built-in Constitution"]
P3["🟡 L3: 项目法与指令(最近范围优先)<br/>Project Law & Instructions<br/>Nearest Scope First"]
P4["🟢 L4: 用户全局偏好<br/>User Global Preferences"]
P5["🔵 L5: 记忆与上轮交接<br/>Memory & Handoffs"]
end
P1 --> P2 --> P3 --> P4 --> P5
3.2 保护不变量(Protected Invariants)#
以下 5 条不变量在所有优先级层级中均不可被覆盖:
编号 |
不变量 |
说明 |
|---|---|---|
I1 |
保持首轮工具目录头部字节稳定 |
确保 DeepSeek KV 前缀缓存(Prefix Cache)命中,避免首轮推理延迟 |
I2 |
保留旧会话转录重放 |
保证历史会话的可复现性和审计能力 |
I3 |
仅使用 Stable Rust |
编译器和依赖链限定在 Rust 稳定通道 |
I4 |
保持 CLI 调度器与 TUI 二进制同步 |
保证命令行与终端界面的行为一致性 |
I5 |
优先级仅在 BASE_PROMPT 中声明 |
优先级声明逻辑集中于 BASE_PROMPT,避免分散导致的不可预测行为 |
3.3 升级条件(Escalation Conditions)#
当以下三种条件之一被触发时,Agent 必须请求用户确认(升级):
条件 |
触发场景 |
|---|---|
破坏性/难以撤销的操作 |
如 |
更改 provider/auth/config |
修改 API 密钥、更换模型提供商、重写配置文件 |
删除/覆写非自己创建的文件 |
修改用户或第三方代码文件 |
3.4 配置层面#
Nested Constitution 支持多个指令层面,从全局到项目逐级细化:
层面 |
路径 |
管理方式 |
说明 |
|---|---|---|---|
内置全局宪法 |
编译时嵌入 |
不可修改 |
CodeWhale 核心行为约束 |
用户全局宪法 |
|
用户自定义 |
跨项目的个人偏好 |
仓库本地宪法 |
|
项目级 |
特定项目的团队约定 |
AGENTS.md |
项目根目录 |
项目级 |
兼容 SpecWeave/Claude Code 等生态 |
Memory 和 Handoffs |
会话级 |
自动管理 |
跨会话记忆与任务交接 |
4. 三种模式与三种权限姿态#
4.1 三种运行模式#
CodeWhale 提供三种正交的运行模式,通过 Tab 键循环切换:
模式 |
图标 |
设计理念 |
权限边界 |
适用场景 |
|---|---|---|---|---|
Plan(设计优先) |
📋 |
先规划后执行 |
始终只读,不写不改 |
代码审查、架构分析、方案设计 |
Act(Agent 模式) |
🤖 |
多步工具使用 |
shell 有审批提示(默认) |
日常编码、代码重构、Bug 修复 |
Operate(多任务调度) |
⚙️ |
自动派发后台 worker |
后台异步执行 |
批量任务、持续集成、自动化流水线 |
4.2 三种权限姿态#
权限姿态通过 Shift+Tab 循环切换,与模式正交组合:
权限姿态 |
图标 |
行为 |
|---|---|---|
Ask(默认) |
❓ |
有未决选择时向用户询问 |
Auto-Review |
🔍 |
完全自主执行,但保留安全拦截 |
Full Access |
🔓 |
普通工具不显示审批提示,安全拦截仍生效 |
4.3 模式与权限姿态组合矩阵#
Ask(默认) |
Auto-Review |
Full Access |
|
|---|---|---|---|
Plan |
只读 + 询问 |
只读 + 自主 |
只读 + 无审批 |
Act |
Agent + 询问 |
Agent + 自主 |
Agent + 无审批(安全拦截仍生效) |
Operate |
调度 + 询问 |
调度 + 自主 |
调度 + 无审批(安全拦截仍生效) |
关键设计:Full Access 姿态下,安全拦截(如升级条件中定义的破坏性操作)仍然会触发确认,不会因权限姿态而被绕过。
5. Fleet 多智能体工作流#
5.1 架构概览#
Fleet 是 CodeWhale 面向持久多 worker 运行的本地优先控制平面(Control Plane)。其设计目标是将单次 Agent 交互扩展为可编排、可监控、可恢复的多智能体工作流。
flowchart TD
subgraph User["用户交互层"]
CLI["CLI / TUI"]
end
subgraph ControlPlane["Fleet 控制平面"]
Scheduler["调度器"]
StateDB[("Fleet 状态台账<br/>.codewhale/fleet.jsonl")]
AlertMgr["告警管理器"]
end
subgraph Workers["Worker 执行层"]
W1["Worker 1<br/>Sandbox"]
W2["Worker 2<br/>Sandbox"]
W3["Worker N<br/>Sandbox"]
end
subgraph Workflow["Workflow 脚本层"]
WF["声明式 JS 子集<br/>rquickjs 沙箱"]
end
CLI --> Scheduler
Scheduler --> StateDB
Scheduler --> W1
Scheduler --> W2
Scheduler --> W3
WF --> Scheduler
AlertMgr --> StateDB
W1 --> AlertMgr
W2 --> AlertMgr
W3 --> AlertMgr
5.2 Fleet 类型#
类型 |
说明 |
适用场景 |
|---|---|---|
Exact Fleet |
冻结每个 worker 的完整配置(provider、model、reasoning 等) |
确定性流水线,需要精确复现 |
Reasoning Router |
可复用服务,仅选择推理层级(reasoning level),worker 按需动态分配 |
弹性推理任务,资源优化 |
5.3 信任级别#
Fleet 支持四级信任模型,逐级放宽约束:
级别 |
标识 |
默认 |
说明 |
|---|---|---|---|
|
🏖️ |
✅ |
默认级别,最大隔离 |
|
🏠 |
本地信任,可访问文件系统 |
|
|
✅ |
远程验证通过 |
|
|
🔧 |
操作者级别,最高信任 |
5.4 命令速查#
命令 |
说明 |
|---|---|
|
初始化 Fleet 配置 |
|
启动 Fleet 运行 |
|
查看 Fleet 运行状态 |
|
查看 Fleet 详细信息 |
|
查看 Worker 日志 |
|
查看产出物 |
|
中断运行中的 Fleet |
|
重启 Fleet |
|
从检查点恢复 |
|
停止 Fleet |
5.5 验证上限#
Fleet 在执行前会对配置进行上限校验,防止资源耗尽:
限制项 |
上限值 |
|---|---|
单次 Fleet 最大 worker agent 数 |
1000 |
同时活跃 worker 数 |
16 |
递归环(recursive loop)深度 |
5 |
5.6 告警事件#
Fleet 运行期间会触发以下 6 种告警事件:
事件 |
触发条件 |
|---|---|
|
Worker 长时间无响应 |
|
重启次数耗尽 |
|
需要人工介入 |
|
预算超限 |
|
验证器检查失败 |
|
运行完成 |
5.7 Workflow 脚本#
Fleet 的 Workflow 脚本以编译专用的声明式 JavaScript 子集编写,由 rquickjs 沙箱执行。默认校验边界:
校验项 |
上限 |
|---|---|
worker Agent 数量 |
100 |
递归环深度 |
5 |
循环必须声明 |
|
// Fleet Workflow 脚本示例(声明式子集)
workflow({
name: "code-review-pipeline",
fleet: {
type: "exact",
workers: [
{ role: "reviewer", model: "deepseek-chat", trust: "sandbox" },
{ role: "fixer", model: "claude-sonnet-4-20250514", trust: "sandbox" }
]
},
steps: [
{ worker: "reviewer", task: "review PR changes" },
{ worker: "fixer", task: "apply suggested fixes", max_iterations: 3 }
]
});
6. 功能矩阵#
功能 |
状态 |
版本 |
说明 |
|---|---|---|---|
Route Resolver |
✅ 稳定 |
v0.8+ |
36 个提供商,Provider/Model 独立 |
Nested Constitution |
✅ 稳定 |
v0.8+ |
五级优先级,5 条保护不变量 |
Plan 模式 |
✅ 稳定 |
v0.8+ |
只读设计模式 |
Act 模式 |
✅ 稳定 |
v0.8+ |
默认 Agent 模式 |
Operate 模式 |
✅ 稳定 |
v0.9+ |
多任务调度 |
权限姿态(Ask/Auto-Review/Full Access) |
✅ 稳定 |
v0.9+ |
正交组合 |
Fleet 多智能体 |
✅ 稳定 |
v0.9+ |
Exact Fleet + Reasoning Router |
Fleet Workflow 脚本 |
✅ 稳定 |
v0.9+ |
rquickjs 沙箱 |