Hmbown/CodeWhale

GitHub: Hmbown/CodeWhale

CodeWhale是一款基于终端的深度学习编码代理工具。

Stars: 38658 | Forks: 3324

# CodeWhale ## 安装 `codewhale` 以一对自包含的 Rust 发布二进制文件的形式安装: `codewhale` 分派命令和它启动的用于交互会话的兄弟 `codewhale-tui` 运行时。npm 和 Docker 会为你安装这两个二进制文件;Cargo 和手动安装必须将这两个二进制文件放在同一目录中(通常是 `PATH` 上的目录)。npm 软件包只是那些发布二进制文件的安装程序/包装器;代理不在 Node 上运行。 ``` # 1. npm — easiest if you already use Node. The package downloads the # matching prebuilt Rust binaries from GitHub Releases. npm install -g codewhale # 2. Cargo — no Node needed. Requires Rust 1.88+ (the crates use the # 2024 edition; older toolchains fail with "feature `edition2024` is # required"). Run `rustup update` first, or use a non-Cargo path below. cargo install codewhale-cli --locked # `codewhale` (entry point) cargo install codewhale-tui --locked # `codewhale-tui` (TUI binary) # 3. Homebrew — legacy compatibility only. # The tap/formula still uses the old deepseek-tui name. Prefer npm, Cargo, # Docker, or direct downloads for new installs until the formula is renamed. brew tap Hmbown/deepseek-tui brew install deepseek-tui # 4. Direct download — platform archive from GitHub Releases. # https://github.com/Hmbown/CodeWhale/releases # Archives include both codewhale and codewhale-tui plus an install script. # Individual binaries are also attached for scripts; keep the pair together. # 5. Docker — prebuilt release image. docker volume create codewhale-home docker run --rm -it \ -e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \ -v codewhale-home:/home/codewhale/.codewhale \ -v "$PWD:/workspace" \ -w /workspace \ ghcr.io/hmbown/codewhale:latest ``` 已经安装?使用与安装路径匹配的更新程序: ``` codewhale update # release-binary updater npm install -g codewhale@latest # npm wrapper brew update && brew upgrade deepseek-tui # legacy Homebrew installs only cargo install codewhale-cli --locked --force cargo install codewhale-tui --locked --force ``` ## Harness 的工作原理 # 自托管 SGLang SGLANG_BASE_URL="http://localhost:30000/v1" codewhale --provider sglang --model deepseek-v4-flash # 自托管 vLLM VLLM_BASE_URL="http://localhost:8000/v1" codewhale --provider vllm --model deepseek-v4-flash # 可信局域网 vLLM 通过 HTTP DEEPSEEK_ALLOW_INSECURE_HTTP=1 VLLM_BASE_URL="http://192.168.0.110:8000/v1" codewhale --provider vllm --model deepseek-v4-flash # 自托管 Ollama ollama pull codewhale-coder:1.3b codewhale --provider ollama --model codewhale-coder:1.3b ``` Inside the TUI, `/provider` opens the provider picker and `/model` opens the local model/thinking picker. `/provider openrouter` and `/model ` switch directly, while `/models` explicitly fetches and lists live API models when the active provider supports model listing. --- ## Release Notes Release-specific changes live in [CHANGELOG.md](CHANGELOG.md). This README stays focused on current install paths, core workflows, provider setup, runtime interfaces, and extension points. --- ## Usage ```bash codewhale # interactive TUI codewhale "explain this function" # one-shot prompt codewhale exec --auto --output-format stream-json "fix this bug" # NDJSON backend stream codewhale exec --resume "follow up" # continue a non-interactive session codewhale --model deepseek-v4-flash "summarize" # model override codewhale --model auto "fix this bug" # auto-select model + thinking codewhale --yolo # auto-approve tools codewhale auth set --provider deepseek # save API key codewhale doctor # check setup & connectivity codewhale doctor --json # machine-readable diagnostics codewhale setup --status # read-only setup status codewhale setup --tools --plugins # scaffold tool/plugin dirs codewhale models # list live API models codewhale sessions # list saved sessions with timestamps codewhale resume --last # resume the most recent session in this workspace codewhale resume # resume a specific session by UUID codewhale fork # fork a saved session into a sibling path codewhale serve --http # HTTP/SSE API server codewhale serve --mobile # LAN mobile control page; token-gated by default codewhale serve --acp # ACP stdio adapter for Zed/custom agents codewhale run pr # fetch PR and pre-seed review prompt codewhale mcp list # list configured MCP servers codewhale mcp validate # validate MCP config/connectivity codewhale mcp-server # run dispatcher MCP stdio server codewhale update # check for and apply binary updates ``` 在交互式 TUI 编曲器中,在行前加上 `!` 以通过正常的批准、沙盒和输出界面运行 shell 命令,例如 `! cargo test -p codewhale-tui sidebar`。 ### 分支对话 已保存的会话故意是可分支的。`codewhale fork ` 将现有已保存会话复制到一个新的兄弟会话中,记录父会话 ID 在元数据中,并打开该分支以便您可以探索一个替代方向,而不会污染原始路径。会话选择器和 `codewhale sessions` 用父 ID 标记分支会话。 `codewhale sessions` 列出跨工作区保存的会话,包括最后更新的时间戳。`codewhale resume --last` 和 `codewhale --continue` 选择当前工作区的最新会话;从另一个目录恢复工作时要传递显式的会话 ID。 在 TUI 中,Esc-Esc 回退可以将活动转写回先前的用户提示并将在编曲器中编辑该提示。`/restore` 和 `revert_turn` 是独立的 workspace 回滚工具:它们从 side-git 快照中恢复文件,但不会重写对话历史。 Docker 镜像发布到 GHCR 以进行发布构建: ``` docker volume create codewhale-home docker run --rm -it \ -e DEEPSEEK_API_KEY="$DEEPSEEK_API_KEY" \ -v codewhale-home:/home/codewhale/.codewhale \ -v "$PWD:/workspace" \ -w /workspace \ ghcr.io/hmbown/codewhale:latest ``` 有关固定标签、本地镜像构建、卷所有权说明和非交互式管道使用,请参阅 [docs/DOCKER.md](docs/DOCKER.md)。 ### Zed / ACP DeepSeek 可以作为为通过 stdio 启动本地 ACP 代理的编辑器运行的自定义 Agent Client Protocol 服务器。在 Zed 中添加自定义代理服务器: ``` { "agent_servers": { "DeepSeek": { "type": "custom", "command": "codewhale", "args": ["serve", "--acp"], "env": {} } } } ``` 第一个 ACP 切片支持通过您现有的 DeepSeek 配置/API 密钥创建新会话和提示响应。工具支持的编辑和检查点回放尚未通过 ACP 暴露。 社区维护的适配器:[acp-codewhale-adapter](https://github.com/rockeverm3m/acp-codewhale-adapter) 将 `codewhale exec --auto` 连接到 `cc-connect`,为需要工具支持的 ACP 工作流但不在内置 Zed 切片中使用的用户提供桥梁。 ### 键盘快捷键 | 键 | 操作 | |---|---| | `Tab` | 完成 `/` 或 `@` 条目;运行时,将草稿排队为后续操作;否则循环模式 | | `Shift+Tab` | 循环推理努力:关闭 → 高 → 最大 | | `F1` | 可搜索的帮助覆盖层 | | `Esc` | 返回 / 取消 | | `Ctrl+K` | 命令调色板 | | `Ctrl+R` | 恢复早期会话 | | `Alt+R` | 搜索提示历史记录并恢复已清除的草稿 | | `Ctrl+S` | 保存当前草稿(`/stash list`,`/stash pop` 恢复) | | `@path` | 在编曲器中附加文件/目录上下文 | | `↑`(在编曲器开始时) | 选择要删除的附件行 | 完整快捷键目录:[docs/KEYBINDINGS.md](docs/KEYBINDINGS.md)。 ## 模式 | 模式 | 行为 | | --- | --- | | **计划** 🔍 | 只读调查 — 模型在做出更改之前探索并提出计划;多步调查使用 `checklist_write` | | **代理** 🤖 | 默认交互模式 — 多步工具使用带有批准门;大量工作使用 `checklist_write` 跟踪 | | **YOLO** ⚡ | 在受信任的工作区自动批准所有工具;多步工作仍然保持可见的清单 | ## 配置 用户配置:`~/.codewhale/config.toml`(备用 `~/.deepseek/config.toml`)。项目覆盖:`/.codewhale/config.toml`(备用 `/.deepseek/config.toml`)(拒绝:`api_key`,`base_url`,`provider`,`mcp_config_path`)。[config.example.toml](config.example.toml) 包含每个选项。 TUI 页脚可以使用 `/statusline` 或通过在配置中设置 `[tui].status_items` 来修剪。当前页脚自定义从内置芯片中选择,例如 `mode`,`model`,`status`,`git_branch`,`tokens` 和 `cache`;芯片顺序由 `config.toml` 中 `status_items` 中键的顺序控制。交互式选择器写入规范顺序。多行布局、自定义颜色和外部命令小部件不是当前状态行界面的部分。 通常不需要为兼容 DeepSeek 的端点创建新的提供程序。保持 `provider = "deepseek"` 并设置 `[providers.deepseek].base_url` / `model`,或使用 `provider = "openai"` 为通用的 OpenAI 兼容网关。在用户配置或环境变量中保持 `provider`,`api_key` 和 `base_url`;项目覆盖不能设置它们。 关键环境变量: | 变量 | 目的 | |---|---| | `DEEPSEEK_API_KEY` | API 密钥 | | `DEEPSEEK_BASE_URL` | API 基础 URL | | `DEEPSEEK_HTTP_HEADERS` | 可选的自定义模型请求头,例如 `X-Model-Provider-Id=your-model-provider` | | `DEEPSEEK_MODEL` | 默认模型 | | `DEEPSEEK_STREAM_IDLE_TIMEOUT_SECS` | 流空闲超时(秒),默认 `300`,夹在 `1..=3600` 之间 | | `CODEWHALE_PROVIDER` / `DEEPSEEK_PROVIDER` | `deepseek`(默认),`nvidia-nim`,`openai`,`atlascloud`,`wanjie-ark`,`volcengine`,`openrouter`,`xiaomi-mimo`,`novita`,`fireworks`,`siliconflow`,`siliconflow-CN`,`arcee`,`moonshot`,`sglang`,`vllm`,`ollama`,`huggingface` | | `DEEPSEEK_PROFILE` | 配置配置文件名称 | | `DEEPSEEK_MEMORY` | 设置为 `on` 以启用用户内存 | | `DEEPSEEK_ALLOW_INSECURE_HTTP=1` | 在受信任网络上允许非本地的 `http://` API 基础 URL | | `NVIDIA_API_KEY` / `OPENAI_API_KEY` / `ATLASCLOUD_API_KEY` / `WANJIE_ARK_API_KEY` / `VOLCENGINE_API_KEY` / `VOLCENGINE_ARK_API_KEY` / `ARK_API_KEY` / `OPENROUTER_API_KEY` / `XIAOMI_MIMO_API_KEY` / `XIAOMI_API_KEY` / `MIMO_API_KEY` / `NOVITA_API_KEY` / `FIREWORKS_API_KEY` / `SILICONFLOW_API_KEY` / `ARCEE_API_KEY` / `MOONSHOT_API_KEY` / `KIMI_API_KEY` / `SGLANG_API_KEY` / `VLLM_API_KEY` / `OLLAMA_API_KEY` / `HUGGINGFACE_API_KEY` / `HF_TOKEN` | 提供程序身份验证 | | `OPENAI_BASE_URL` / `OPENAI_MODEL` | 通用 OpenAI 兼容端点和模型 ID | | `ATLASCLOUD_BASE_URL` / `ATLASCLOUD_MODEL` | AtlasCloud 端点和模型覆盖 | | `WANJIE_ARK_BASE_URL` / `WANJIE_ARK_MODEL` | Wanjie Ark 端点和模型覆盖 | | `VOLCENGINE_BASE_URL` / `VOLCENGINE_ARK_BASE_URL` / `ARK_BASE_URL` / `VOLCENGINE_MODEL` / `VOLCENGINE_ARK_MODEL` | Volcengine Ark 端点和模型覆盖 | | `OPENROUTER_BASE_URL` | OpenRouter 端点覆盖 | | `XIAOMI_MIMO_BASE_URL` / `MIMO_BASE_URL` / `XIAOMI_MIMO_MODEL` / `MIMO_MODEL` | Xiaomi MiMo 端点和模型覆盖;Token Plan 默认为 `https://token-plan-sgp.xiaomimimo.com/v1` | | `NOVITA_BASE_URL` | Novita 端点覆盖 | | `FIREWORKS_BASE_URL` | Fireworks 端点覆盖 | | `SILICONFLOW_BASE_URL` / `SILICONFLOW_MODEL` | SiliconFlow 端点和模型覆盖 | | `ARCEE_BASE_URL` / `ARCEE_MODEL` | Arcee AI 端点和模型覆盖 | | `SGLANG_BASE_URL` | 自托管 SGLang 端点 | | `SGLANG_MODEL` | 自托管 SGLang 模型 ID | | `VLLM_BASE_URL` | 自托管 vLLM 端点 | | `VLLM_MODEL` | 自托管 vLLM 模型 ID | | `OLLAMA_BASE_URL` | 自托管 Ollama 端点 | | `OLLAMA_MODEL` | 自托管 Ollama 模型标签 | | `HUGGINGFACE_API_KEY` / `HF_TOKEN` / `HUGGINGFACE_BASE_URL` / `HUGGINGFACE_MODEL` | Hugging Face 端点和模型覆盖 | | `NO_ANIMATIONS=1` | 启动时强制启用无动画模式 | | `SSL_CERT_FILE` | 用于企业代理的定制 CA 套件 | 在 `settings.toml` 中设置 `locale`,使用 `/config locale zh-Hans` 或依赖 `LC_ALL`/`LANG` 来选择 UI 颜色和发送到 V4 模型的备用语言。最新的用户消息仍然在自然语言推理和回复中获胜,因此即使是在英文系统区域设置中,中文用户仍然保持中文。请参阅 [docs/CONFIGURATION.md](docs/CONFIGURATION.md) 和 [docs/MCP.md](docs/MCP.md)。 ## 模型与定价 | 模型 | 上下文 | 输入(缓存命中) | 输入(缓存未命中) | 输出 | |---|---|---|---|---| | `deepseek-v4-pro` | 1M | $0.003625 / 1M | $0.435 / 1M | $0.87 / 1M | | `deepseek-v4-flash` | 1M | $0.0028 / 1M | $0.14 / 1M | $0.28 / 1M | DeepSeek 平台默认为 `https://api.deepseek.com/beta`,因此可以测试受 beta 门控的 API 功能而无需额外设置。将 `base_url = "https://api.deepseek.com"` 设置为退出。 旧别名 `deepseek-chat` / `deepseek-reasoner` 映射到 `deepseek-v4-flash` 并于 2026 年 7 月 24 日后退役。NVIDIA NIM 变体使用您的 NVIDIA 账户条款。 ## 发布您的技能 codewhale 从工作区目录(`.agents/skills` → `skills` → `.opencode/skills` → `.claude/skills` → `.cursor/skills`)和全局目录(`~/.agents/skills` → `~/.claude/skills` → `~/.codewhale/skills` → `~/.deepseek/skills`)中查找技能。每个技能都是一个包含 `SKILL.md` 文件的目录: ``` ~/.agents/skills/my-skill/ └── SKILL.md ``` 必需的前置内容: ``` --- name: my-skill description: Use this when DeepSeek should follow my custom workflow. --- # My Skill Instructions for the agent go here. ``` 命令:`/skills`(列出),`/skill `(激活),`/skill new`(脚手架),`/skill install github:/`(社区),`/skill update` / `uninstall` / `trust`。社区安装从 GitHub 开始不需要后端服务。安装的技能出现在模型可见的会话上下文中;代理可以在任务与它们的描述匹配时自动选择相关技能,通过 `load_skill` 工具。 首次启动还会安装用于常见工作流程的捆绑系统技能skill-creator`,`delegate`,`v4-best-practices`,`plugin-creator`, `skill-installer`,`mcp-builder`,`documents`,`presentations`, `spreadsheets`,`pdf` 和 `feishu`。这些位于 `~/.codewhale/skills`(或备用 `~/.deepseek/skills`)中,并进行了版本控制,因此新捆绑包在升级时添加,而无需重新创建用户故意删除的技能。 ## 文档 | 文档 | 主题 | |---|---| | [GUIDE.md](docs/GUIDE.md) | 首次运行用户指南 | | [ARCHITECTURE.md](docs/ARCHITECTURE.md) |
标签:可视化界面, 请求拦截, 通知系统, 靶机