安装渠道与提供商配置#
本文档覆盖 CodeWhale 的完整安装与配置流程,从安装渠道选择到提供商(Provider)配置、生命周期 Hook、搜索后端、上下文分层管理和沙箱安全,为不同平台的用户提供一站式部署指南。
1. 安装渠道对比#
CodeWhale 提供 7 种安装渠道,覆盖主流包管理器和构建方式:
渠道 |
命令 |
适用平台 |
说明 |
|---|---|---|---|
npm |
|
全平台 |
Node.js 18+,npm wrapper 从 GitHub Releases 下载经 SHA-256 校验的二进制 |
Cargo |
|
全平台 |
Rust 生态用户首选 |
Homebrew |
|
macOS / Linux |
macOS 用户最便捷 |
Docker |
|
全平台 |
容器化部署,隔离运行 |
预编译二进制 |
全平台 |
零依赖,直接下载运行 |
|
Nix |
|
Linux / macOS |
Nix 生态用户 |
源码编译 |
|
全平台 |
开发者/定制需求 |
2. 分平台安装步骤#
2.1 支持的平台矩阵#
平台 |
架构 |
状态 |
|---|---|---|
Linux |
x64 / arm64 / riscv64 |
✅ 正式支持 |
macOS |
x64 / arm64(Apple Silicon) |
✅ 正式支持 |
Windows |
x64 / arm64 |
✅ 正式支持 |
Android / Termux |
arm64 |
⚠️ 预览阶段 |
注意:自 v0.8.65 起,Linux x64 发布资产为静态 musl 构建,无需 glibc 依赖,可在任意 Linux 发行版上运行。
2.2 Linux#
# 预编译二进制(推荐)
curl -L https://github.com/Hmbown/CodeWhale/releases/latest/download/codewhale-linux-x64.tar.gz | tar xz
sudo mv codewhale /usr/local/bin/
# Cargo
cargo install codewhale
# npm
npm install -g codewhale
2.3 macOS#
# Homebrew(推荐)
brew install codewhale
# 预编译二进制(Apple Silicon)
curl -L https://github.com/Hmbown/CodeWhale/releases/latest/download/codewhale-macos-arm64.tar.gz | tar xz
sudo mv codewhale /usr/local/bin/
2.4 Windows#
# 预编译二进制(推荐)
# 下载 .zip 包后解压至 PATH 目录,或使用 winget/scoop
# npm
npm install -g codewhale
2.5 Docker#
# 拉取镜像
docker pull ghcr.io/hmbown/codewhale:latest
# 运行(挂载配置目录)
docker run -it --rm \
-v $HOME/.codewhale:/root/.codewhale \
-v $(pwd):/workspace \
ghcr.io/hmbown/codewhale:latest
2.6 Android / Termux(预览)#
# Termux 环境
pkg install codewhale
3. 中国用户镜像加速#
国内用户可通过以下镜像站点加速下载:
镜像源 |
预编译二进制 |
说明 |
|---|---|---|
CNB(Cloud Native Build) |
✅ |
国内 CDN 加速 |
TUNA(清华大学开源软件镜像站) |
✅ |
教育网用户首选 |
# CNB 镜像加速示例
curl -L https://cnb.cool/Hmbown/CodeWhale/-/releases/latest/download/codewhale-linux-x64.tar.gz | tar xz
4. 配置目录结构#
4.1 全局配置目录#
CodeWhale 的全局配置存储在 ~/.codewhale/,可通过环境变量 CODEWHALE_HOME 自定义路径:
~/.codewhale/
├── config.toml # 主配置文件(API 密钥、模型、钩子)
├── mcp.json # MCP 服务器配置
├── skills/ # 用户自定义技能
├── sessions/ # 会话检查点
├── tasks/ # 后台任务
└── audit.log # 审计日志
4.2 项目级配置目录#
每个仓库可有独立的项目级配置,存放于 ./.codewhale/:
./.codewhale/
├── constitution.json # 仓库本地宪法
├── fleet.jsonl # Fleet 状态台账
└── config.toml # 项目级配置覆盖
4.3 兼容路径#
旧版 ~/.deepseek 和 ./.deepseek 路径仍作为兼容回退读取,确保从 deepseek-tui 升级的用户配置不丢失。
5. 提供商配置示例#
配置文件 config.toml 约 1364 行,包含 33 个 provider 配置段。以下为常用提供商配置示例:
5.1 DeepSeek#
[provider.deepseek]
endpoint = "https://api.deepseek.com/v1"
api_key = "sk-your-deepseek-api-key"
[model.deepseek-chat]
provider = "deepseek"
name = "deepseek-chat"
[model.deepseek-reasoner]
provider = "deepseek"
name = "deepseek-reasoner"
5.2 OpenAI#
[provider.openai]
endpoint = "https://api.openai.com/v1"
api_key = "sk-your-openai-api-key"
[model.gpt-4o]
provider = "openai"
name = "gpt-4o"
5.3 Ollama(本地)#
[provider.ollama]
endpoint = "http://localhost:11434/v1"
api_key = "" # 本地运行无需 API 密钥
[model.ollama-qwen]
provider = "ollama"
name = "qwen2.5-coder:14b"
5.4 多提供商并存#
# 可同时配置多个提供商,CodeWhale 按需切换
[provider.deepseek]
endpoint = "https://api.deepseek.com/v1"
api_key = "sk-xxx"
[provider.anthropic]
endpoint = "https://api.anthropic.com/v1"
api_key = "sk-ant-xxx"
[provider.ollama]
endpoint = "http://localhost:11434/v1"
api_key = ""
6. 生命周期 Hook 配置#
CodeWhale 支持 11 个生命周期 Hook 事件,可在特定时机执行自定义脚本:
Hook 事件 |
触发时机 |
典型用途 |
|---|---|---|
|
会话开始时 |
环境初始化 |
|
会话结束时 |
清理临时文件 |
|
消息提交时 |
上下文注入 |
|
工具调用前 |
参数校验 |
|
工具调用后 |
结果后处理 |
|
模式切换时 |
状态记录 |
|
发生错误时 |
错误通知 |
|
回合结束时 |
响应日志 |
|
子 Agent 启动时 |
预检查 |
|
子 Agent 完成时 |
结果汇总 |
|
Shell 环境准备时 |
环境变量注入 |
# config.toml — Hook 配置示例
[hooks]
session_start = "echo 'Session started at $(date)' >> ~/.codewhale/session.log"
session_end = "echo 'Session ended at $(date)' >> ~/.codewhale/session.log"
on_error = "echo 'Error occurred' >> ~/.codewhale/error.log"
7. 搜索后端配置#
CodeWhale 支持 9 个搜索后端,为 Agent 提供联网检索能力:
搜索后端 |
标识 |
说明 |
|---|---|---|
DuckDuckGo |
|
免费,无需 API 密钥 |
Bing |
|
需要 Azure API 密钥 |
Tavily |
|
AI 优化搜索,需要 API 密钥 |
Bocha |
|
国内搜索服务 |
Metaso |
|
国内 AI 搜索 |
SearXNG |
|
自托管,可私有化部署 |
Baidu |
|
国内搜索引擎 |
Volcengine |
|
火山引擎搜索 |
Sofya |
|
代码搜索专用 |
# config.toml — 搜索后端配置示例
[search]
backend = "duckduckgo" # 默认免费后端
[search.tavily]
api_key = "tvly-xxx"
[search.bing]
api_key = "your-azure-api-key"
endpoint = "https://api.bing.microsoft.com/v7.0/search"
8. 上下文分层管理#
CodeWhale 采用三层上下文分层策略,按 token 使用量动态管理上下文窗口:
层级 |
阈值 |
用途 |
|---|---|---|
L1(热上下文) |
192k tokens |
最近交互,全量保留 |
L2(温上下文) |
384k tokens |
压缩摘要,关键信息保留 |
L3(冷上下文) |
576k tokens |
索引化存储,按需检索 |
参数 |
默认值 |
说明 |
|---|---|---|
|
16 |
完整保留的最近对话轮数 |
|
192k |
L1 热上下文阈值 |
|
384k |
L2 温上下文阈值 |
|
576k |
L3 冷上下文阈值 |
# config.toml — 上下文分层配置
[context]
verbatim_window_turns = 16
l1_threshold = 192000
l2_threshold = 384000
l3_threshold = 576000
9. 沙箱安全配置#
CodeWhale 支持操作系统级沙箱隔离:
平台 |
沙箱机制 |
启用方式 |
|---|---|---|
macOS |
Seatbelt(内置) |
默认启用 |
Linux |
bubblewrap |
需显式启用 |
# config.toml — 沙箱配置
[sandbox]
enabled = true
backend = "bubblewrap" # Linux 需显式指定
# Linux 安装 bubblewrap 依赖
sudo apt install bubblewrap # Debian/Ubuntu
sudo dnf install bubblewrap # Fedora
10. 配置速查#
配置项 |
路径 |
格式 |
说明 |
|---|---|---|---|
主配置 |
|
TOML |
API 密钥、模型、钩子、搜索等 |
MCP 服务器 |
|
JSON |
模型上下文协议服务器 |
用户技能 |
|
目录 |
自定义 Skill 文件 |
会话检查点 |
|
目录 |
会话状态持久化 |
后台任务 |
|
目录 |
后台异步任务 |
审计日志 |
|
文本 |
操作审计记录 |
项目宪法 |
|
JSON |
仓库本地宪法 |
Fleet 台账 |
|
JSONL |
Fleet 状态记录 |