[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-78985":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},78985,"CodeWhale","Hmbown\u002FCodeWhale","Hmbown","DeepSeek + MiMo coding agent in terminal","https:\u002F\u002Fcodewhale.net\u002F",null,"Rust",38023,3272,147,355,0,178,984,3859,808,120,"MIT License",false,"main",true,[27,28,29,30,31,32],"cli","deepseek","llm","rust","terminal","tui","2026-06-12 04:01:24","# CodeWhale\n\n> DeepSeek-first agentic terminal for open source and open-weight coding models. It runs from the `codewhale` command, streams reasoning blocks, edits local workspaces with approval gates, and can auto-route each turn to the right DeepSeek model and thinking level.\n\n[![CI](https:\u002F\u002Fgithub.com\u002FHmbown\u002FCodeWhale\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FHmbown\u002FCodeWhale\u002Factions\u002Fworkflows\u002Fci.yml)\n[![npm](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fcodewhale)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fcodewhale)\n[![crates.io](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fcodewhale-cli?label=crates.io)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fcodewhale-cli)\n[![Sponsor](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSponsor-GitHub%20Sponsors-ea4aaa?logo=githubsponsors&logoColor=white)](https:\u002F\u002Fgithub.com\u002Fsponsors\u002FHmbown)\n[DeepWiki project index](https:\u002F\u002Fdeepwiki.com\u002FHmbown\u002FCodeWhale)\n\n[简体中文 README](README.zh-CN.md)\n[日本語 README](README.ja-JP.md)\n\n[Install](#install) · [Quickstart](#quickstart) · [Usage](#usage) · [Documentation](#documentation) · [Contributing](#contributing) · [Support](#support)\n\n## Install\n\n`codewhale` is distributed as Rust binaries: the dispatcher command\n(`codewhale`) and the companion TUI runtime (`codewhale-tui`). Pick whichever\ninstall path you already use; they all put the same commands on your `PATH`.\nThe npm package is an installer\u002Fwrapper for the release binaries, not the\nagent runtime itself.\n\n```bash\n# 1. npm — easiest if you already use Node. The package downloads the\n#    matching prebuilt Rust binaries from GitHub Releases.\nnpm install -g codewhale\n\n# 2. Cargo — no Node needed. Requires Rust 1.88+ (the crates use the\n#    2024 edition; older toolchains fail with \"feature `edition2024` is\n#    required\"). Run `rustup update` first, or use a non-Cargo path below.\ncargo install codewhale-cli --locked   # `codewhale` (entry point)\ncargo install codewhale-tui     --locked   # `codewhale-tui` (TUI binary)\n\n# 3. Homebrew — macOS package manager.\nbrew tap Hmbown\u002Fdeepseek-tui\nbrew install deepseek-tui\n\n# 4. Direct download — no package manager or toolchain.\n#    https:\u002F\u002Fgithub.com\u002FHmbown\u002FCodeWhale\u002Freleases\n#    Prebuilt for Linux x64\u002FARM64, macOS x64\u002FARM64, Windows x64.\n\n# 5. Docker — prebuilt release image.\ndocker volume create codewhale-home\ndocker run --rm -it \\\n  -e DEEPSEEK_API_KEY=\"$DEEPSEEK_API_KEY\" \\\n  -v codewhale-home:\u002Fhome\u002Fcodewhale\u002F.deepseek \\\n  -v \"$PWD:\u002Fworkspace\" \\\n  -w \u002Fworkspace \\\n  ghcr.io\u002Fhmbown\u002Fcodewhale:latest\n```\n\n> In mainland China, speed up the npm path with\n> `--registry=https:\u002F\u002Fregistry.npmmirror.com`, or use the\n> [Cargo mirror](#china--mirror-friendly-installation) below.\n>\n> Download safety: official release binaries live under\n> `https:\u002F\u002Fgithub.com\u002FHmbown\u002FCodeWhale\u002Freleases`. For manual downloads,\n> verify the SHA-256 manifest and avoid look-alike repositories or search-result\n> mirrors. See [download safety and checksums](docs\u002FINSTALL.md#2-download-safety-and-checksums).\n\nAlready installed? Use the updater that matches the install path:\n\n```bash\ncodewhale update                         # release-binary updater\nnpm install -g codewhale@latest      # npm wrapper\nbrew update && brew upgrade deepseek-tui\ncargo install codewhale-cli --locked --force\ncargo install codewhale-tui     --locked --force\n```\n\n![codewhale screenshot](assets\u002Fscreenshot.png)\n\n---\n\n## What Is It?\n\nCodeWhale is a DeepSeek-first coding agent for open source and open-weight models that runs in your terminal. It can read and edit files, run shell commands, search the web, manage git, and coordinate sub-agents from a keyboard-driven TUI.\n\nIt is built around DeepSeek V4 (`deepseek-v4-pro` \u002F `deepseek-v4-flash`), including 1M-token context windows, streaming reasoning blocks, and prefix-cache-aware cost reporting.\n\n### Key Features\n\n- **Model auto-routing** — `--model auto` \u002F `\u002Fmodel auto` chooses both the model and thinking level for each turn\n- **Thinking-mode streaming** — see DeepSeek reasoning blocks as the model works\n- **Full tool suite** — file ops, shell execution, git, web search\u002Fbrowse, apply-patch, sub-agents, MCP servers\n- **1M-token context** — context tracking, manual or configured compaction, and prefix-cache telemetry\n- **Prefix-cache stability tracking** — an optional `\u002Fstatusline` footer chip surfaces how stable the cached prefix has been across recent turns so cost-busting edits are visible before they land\n- **Three modes** — Plan (read-only explore), Agent (interactive with approval), YOLO (auto-approved)\n- **Reasoning-effort tiers** — cycle through `off → high → max` with `Shift + Tab`\n- **Session save\u002Fresume\u002Ffork** — checkpoint long-running sessions and fork saved conversations into sibling paths with parent lineage shown in the picker\n- **Workspace rollback** — side-git pre\u002Fpost-turn snapshots with `\u002Frestore` and `revert_turn`, without touching your repo's `.git`\n- **OS-level sandbox** — Seatbelt on macOS, Landlock on Linux, Job Objects on Windows; shell commands run with workspace-scoped filesystem access only\n- **Durable task queue** — background tasks can survive restarts\n- **HTTP\u002FSSE runtime API** — `codewhale serve --http` for headless agent workflows\n- **MCP protocol** — connect to Model Context Protocol servers for extended tooling; please see [docs\u002FMCP.md](docs\u002FMCP.md)\n- **Fin-powered seams** — cheap `deepseek-v4-flash` with thinking off handles routing, RLM child calls, summaries, and other fast coordination work\n- **Native RLM** (`rlm_session_objects`\u002F`rlm_open`\u002F`rlm_eval`) — persistent REPL sessions for batched analysis with bounded helpers like `peek`, `search`, `chunk`, and `sub_query_batch`; active prompt\u002Fhistory objects are opened by symbolic refs instead of pasted into the parent transcript\n- **LSP diagnostics** — inline error\u002Fwarning surfacing after every edit via rust-analyzer, pyright, typescript-language-server, gopls, clangd\n- **User memory** — optional persistent note file injected into the system prompt for cross-session preferences\n- **Localized UI** — `en`, `ja`, `zh-Hans`, `pt-BR` with auto-detection\n- **Live cost tracking** — per-turn and session-level token usage and cost estimates; cache hit\u002Fmiss breakdown; CNY display when the session locale is `zh-Hans`\n- **Skills system** — composable, installable instruction packs from GitHub; ships with a bundled starter set (`skill-creator`, `mcp-builder`, `plugin-creator`, `v4-best-practices`, `documents`, `presentations`, `spreadsheets`, `pdf`, `feishu`, `skill-installer`, `delegate`) so `\u002Fskills` is useful from first launch\n- **Terminal-native notifications** — OSC 9 (iTerm2\u002FWezTerm\u002FGhostty), OSC 99 (Kitty), OSC 777 (Ghostty), plus desktop notification fallback\n- **Built-in theme picker** — Catppuccin, Tokyo Night, Dracula, Gruvbox alongside the original light\u002Fdark palettes; switch live with `\u002Ftheme`\n\n---\n\n## How It's Wired\n\n`codewhale` (dispatcher CLI) → `codewhale-tui` (companion binary) → ratatui interface ↔ async engine ↔ OpenAI-compatible streaming client. Tool calls route through a typed registry (shell, file ops, git, web, sub-agents, MCP, RLM) and results stream back into the transcript. The engine manages session state, turn tracking, the durable task queue, and an LSP subsystem that feeds post-edit diagnostics into the model's context before the next reasoning step.\n\nSee [docs\u002FARCHITECTURE.md](docs\u002FARCHITECTURE.md) for the full walkthrough.\n\n### Sub-agents: Concurrent Background Execution\n\nCodeWhale can dispatch multiple sub-agents that run in parallel — like a concurrent task queue:\n\n- **Non-blocking launch.** `agent_open` returns immediately. The child gets its own fresh context and tool registry and runs independently. The parent keeps working.\n- **Background execution.** Sub-agents execute concurrently (default cap: 10, configurable to 20). The engine manages the pool — no polling loop needed.\n- **Completion notification.** When a sub-agent finishes, the runtime delivers a structured `\u003Ccodewhale:subagent.done>` event with a summary, evidence list, and execution metrics. The parent model reads the `summary` field and integrates findings.\n- **Bounded result retrieval.** Large transcripts are parked behind `var_handle` references. The model calls `handle_read` for slices, ranges, or JSONPath projections — keeping the parent context lean.\n\nSee [docs\u002FSUBAGENTS.md](docs\u002FSUBAGENTS.md) for the full sub-agent reference.\n\n---\n\n## Quickstart\n\n```bash\nnpm install -g codewhale\ncodewhale --version\ncodewhale --model auto\n```\n\nPrebuilt binaries are published for **Linux x64**, **Linux ARM64** (v0.8.8+), **macOS x64**, **macOS ARM64**, and **Windows x64**. For other targets (musl, riscv64, FreeBSD, etc.), see [Install from source](#install-from-source) or [docs\u002FINSTALL.md](docs\u002FINSTALL.md).\n\nOn first launch you'll be prompted for your [DeepSeek API key](https:\u002F\u002Fplatform.deepseek.com\u002Fapi_keys). The key is saved to `~\u002F.deepseek\u002Fconfig.toml` so it works from any directory without OS credential prompts.\n\nYou can also set it ahead of time:\n\n```bash\ncodewhale auth set --provider deepseek   # saves to ~\u002F.deepseek\u002Fconfig.toml\ncodewhale auth status                    # shows the active credential source\n\nexport DEEPSEEK_API_KEY=\"YOUR_KEY\"      # env var alternative; use ~\u002F.zshenv for non-interactive shells\ncodewhale\n\ncodewhale doctor                         # verify setup\n```\n\nIf `codewhale doctor` says the rejected key came from `DEEPSEEK_API_KEY`, remove\nthe stale export from your shell startup file, open a fresh shell, or run\n`codewhale auth set --provider deepseek`. Use `codewhale auth status` to see the\nconfig, keyring, and env-var source state without printing the key. Saved config\nkeys take precedence over the keyring and environment and are easier to rotate.\n\n> To rotate or remove a saved key: `codewhale auth clear --provider deepseek`.\n\n### Tencent Cloud \u002F CNB Remote-First Path\n\nFor an always-on workspace you can control from a phone, use the Tencent-native\npath: CNB mirror\u002Fsource, Tencent Lighthouse HK, a Feishu\u002FLark long-connection\nbridge, and optional EdgeOne for a deliberate public HTTPS edge. The runtime API\nstays bound to localhost; EdgeOne is not used to expose `\u002Fv1\u002F*`.\n\nStart with [docs\u002FTENCENT_CLOUD_REMOTE_FIRST.md](docs\u002FTENCENT_CLOUD_REMOTE_FIRST.md),\nthen use [docs\u002FTENCENT_LIGHTHOUSE_HK.md](docs\u002FTENCENT_LIGHTHOUSE_HK.md) for the\nserver runbook.\n\n### Model Auto-Routing and Fin\n\nUse `codewhale --model auto` or `\u002Fmodel auto` when you want codewhale to decide how much model and reasoning power a turn needs.\n\nModel auto-routing controls two settings together:\n\n- Model: `deepseek-v4-flash` or `deepseek-v4-pro`\n- Thinking: `off`, `high`, or `max`\n\nBefore the real turn is sent, the app makes a small `deepseek-v4-flash` routing call with thinking off. That fast path is called **Fin**: a low-latency seam for model selection, summaries, RLM children, context maintenance, and other coordination work that should not spend a full reasoning turn. Fin looks at the latest request and recent context, then selects a concrete model and thinking level for the real request. Short\u002Fsimple turns can stay on Flash with thinking off; coding, debugging, release work, architecture, security review, or ambiguous multi-step tasks can move up to Pro and\u002For higher thinking.\n\n`--model auto` and `\u002Fmodel auto` are local to codewhale. The upstream API never receives `model: \"auto\"`; it receives the concrete model and thinking setting chosen for that turn. The TUI shows the selected route, and cost tracking is charged against the model that actually ran. If the Fin route fails or returns an invalid answer, the app falls back to a local heuristic. Sub-agents inherit model auto-routing unless you assign them an explicit model.\n\nUse a fixed model or fixed thinking level when you want repeatable benchmarking, a strict cost ceiling, or a specific provider\u002Fmodel mapping.\n\n### Linux ARM64 (Raspberry Pi, Asahi, Graviton, HarmonyOS PC)\n\n`npm i -g codewhale` works on glibc-based ARM64 Linux from v0.8.8 onward. You can also download prebuilt binaries from the [Releases page](https:\u002F\u002Fgithub.com\u002FHmbown\u002FCodeWhale\u002Freleases) and place them side by side on your `PATH`.\n\n### China \u002F Mirror-friendly Installation\n\nIf GitHub or npm downloads are slow from mainland China, use a Cargo registry mirror:\n\n```toml\n# ~\u002F.cargo\u002Fconfig.toml\n[source.crates-io]\nreplace-with = \"tuna\"\n\n[source.tuna]\nregistry = \"sparse+https:\u002F\u002Fmirrors.tuna.tsinghua.edu.cn\u002Fcrates.io-index\u002F\"\n```\n\nThen install both binaries (the dispatcher delegates to the TUI at runtime):\n\n```bash\ncargo install codewhale-cli --locked   # provides `codewhale`\ncargo install codewhale-tui     --locked   # provides `codewhale-tui`\ncodewhale --version\n```\n\nPrebuilt binaries can also be downloaded from [GitHub Releases](https:\u002F\u002Fgithub.com\u002FHmbown\u002FCodeWhale\u002Freleases). Use `DEEPSEEK_TUI_RELEASE_BASE_URL` for mirrored release assets.\n\n### Windows (Scoop)\n\n[Scoop](https:\u002F\u002Fscoop.sh) is a Windows package manager. The `codewhale` package is listed\nin Scoop's main bucket, but that manifest updates independently and can lag the\nGitHub\u002Fnpm\u002FCargo release. Run `scoop update` first, then verify the installed\nversion with `codewhale --version`:\n\n```bash\nscoop update\nscoop install deepseek-tui\ncodewhale --version\n```\n\nUse npm or direct GitHub release downloads when you need the newest release\nbefore Scoop's manifest catches up.\n\n\n\u003Cdetails id=\"install-from-source\">\n\u003Csummary>Install from source\u003C\u002Fsummary>\n\nWorks on any Tier-1 Rust target — including musl, riscv64, FreeBSD, and older ARM64 distros.\n\n```bash\n# Linux build deps (Debian\u002FUbuntu\u002FRHEL):\n#   sudo apt-get install -y build-essential pkg-config libdbus-1-dev\n#   sudo dnf install -y gcc make pkgconf-pkg-config dbus-devel\n\ngit clone https:\u002F\u002Fgithub.com\u002FHmbown\u002FCodeWhale.git\ncd CodeWhale\n\ncargo install --path crates\u002Fcli --locked   # requires Rust 1.88+; provides `codewhale`\ncargo install --path crates\u002Ftui --locked   # provides `codewhale-tui`\n```\n\nBoth binaries are required. Cross-compilation and platform-specific notes: [docs\u002FINSTALL.md](docs\u002FINSTALL.md).\n\n\u003C\u002Fdetails>\n\n### Other API Providers\n\nOfficial DeepSeek remains the default and first-class path. Other providers are\nadditive, with OpenRouter starting from DeepSeek Pro\u002FFlash before broader\nopen-model catalogs are enabled.\n\n```bash\n# NVIDIA NIM\ncodewhale auth set --provider nvidia-nim --api-key \"YOUR_NVIDIA_API_KEY\"\ncodewhale --provider nvidia-nim\n\n# AtlasCloud\ncodewhale auth set --provider atlascloud --api-key \"YOUR_ATLASCLOUD_API_KEY\"\ncodewhale --provider atlascloud\n\n# Wanjie Ark\ncodewhale auth set --provider wanjie-ark --api-key \"YOUR_WANJIE_API_KEY\"\ncodewhale --provider wanjie-ark --model deepseek-reasoner\n\n# OpenRouter\ncodewhale auth set --provider openrouter --api-key \"YOUR_OPENROUTER_API_KEY\"\ncodewhale --provider openrouter --model deepseek\u002Fdeepseek-v4-pro\n\n# Novita\ncodewhale auth set --provider novita --api-key \"YOUR_NOVITA_API_KEY\"\ncodewhale --provider novita --model deepseek\u002Fdeepseek-v4-pro\n\n# Fireworks\ncodewhale auth set --provider fireworks --api-key \"YOUR_FIREWORKS_API_KEY\"\ncodewhale --provider fireworks --model deepseek-v4-pro\n\n# Generic OpenAI-compatible endpoint\ncodewhale auth set --provider openai --api-key \"YOUR_OPENAI_COMPATIBLE_API_KEY\"\nOPENAI_BASE_URL=\"https:\u002F\u002Fopenai-compatible.example\u002Fv4\" codewhale --provider openai --model glm-5\n\n# Self-hosted SGLang\nSGLANG_BASE_URL=\"http:\u002F\u002Flocalhost:30000\u002Fv1\" codewhale --provider sglang --model deepseek-v4-flash\n\n# Self-hosted vLLM\nVLLM_BASE_URL=\"http:\u002F\u002Flocalhost:8000\u002Fv1\" codewhale --provider vllm --model deepseek-v4-flash\n\n# Self-hosted Ollama\nollama pull codewhale-coder:1.3b\ncodewhale --provider ollama --model codewhale-coder:1.3b\n```\n\nInside the TUI, `\u002Fprovider` opens the provider picker and `\u002Fmodel` opens the\nlocal model\u002Fthinking picker. `\u002Fprovider openrouter` and `\u002Fmodel \u003Cid>` switch\ndirectly, while `\u002Fmodels` explicitly fetches and lists live API models when the\nactive provider supports model listing.\n\n---\n\n## Release Notes\n\nRelease-specific changes live in [CHANGELOG.md](CHANGELOG.md). This README\nstays focused on current install paths, core workflows, provider setup, runtime\ninterfaces, and extension points.\n\n---\n\n## Usage\n\nAll examples use `codewhale`. The short form `codew` works everywhere —\nit's a silent alias that forwards to `codewhale`.\n\n```bash\ncodewhale                                         # interactive TUI\ncodewhale \"explain this function\"                 # one-shot prompt\ncodewhale exec --auto --output-format stream-json \"fix this bug\"  # agentic exec with tool auto-approvals\ncodewhale swebench run --instance-id \u003CID> --issue-file issue.md  # write all_preds.jsonl for SWE-bench\ncodewhale exec --resume \u003CSESSION_ID> \"follow up\"  # continue a non-interactive session\ncodewhale --model deepseek-v4-flash \"summarize\"   # model override\ncodewhale --model auto \"fix this bug\"             # auto-route model + thinking\ncodewhale --yolo                                  # auto-approve tools\ncodewhale auth set --provider deepseek            # save API key\ncodewhale doctor                                  # check setup & connectivity\ncodewhale doctor --json                           # machine-readable diagnostics\ncodewhale setup --status                          # read-only setup status\ncodewhale setup --tools --plugins                 # scaffold tool\u002Fplugin dirs\ncodewhale models                                  # list live API models\ncodewhale sessions                                # list saved sessions\ncodewhale resume --last                           # resume the most recent session in this workspace\ncodewhale resume \u003CSESSION_ID>                     # resume a specific session by UUID\ncodewhale fork \u003CSESSION_ID>                       # fork a saved session into a sibling path\ncodewhale serve --http                            # HTTP\u002FSSE API server\ncodewhale serve --acp                             # ACP stdio adapter for Zed\u002Fcustom agents\ncodewhale run pr \u003CN>                              # fetch PR and pre-seed review prompt\ncodewhale mcp list                                # list configured MCP servers\ncodewhale mcp validate                            # validate MCP config\u002Fconnectivity\ncodewhale mcp-server                              # run dispatcher MCP stdio server\ncodewhale update                                  # check for and apply binary updates\n```\n\n### Branching Conversations\n\nSaved sessions are intentionally branchable. `codewhale fork \u003CSESSION_ID>` copies\nan existing saved session into a new sibling session, records the parent session\nid in metadata, and opens that fork so you can explore an alternate direction\nwithout polluting the original path. The session picker and `codewhale sessions`\nmark forked sessions with their parent id.\n\nInside the TUI, Esc-Esc backtrack can rewind the active transcript to a prior\nuser prompt and put that prompt back in the composer for editing. `\u002Frestore`\nand `revert_turn` are separate workspace rollback tools: they restore files\nfrom side-git snapshots but do not rewrite conversation history.\n\nDocker images are published to GHCR for release builds:\n\n```bash\ndocker volume create codewhale-home\n\ndocker run --rm -it \\\n  -e DEEPSEEK_API_KEY=\"$DEEPSEEK_API_KEY\" \\\n  -v codewhale-home:\u002Fhome\u002Fcodewhale\u002F.deepseek \\\n  -v \"$PWD:\u002Fworkspace\" \\\n  -w \u002Fworkspace \\\n  ghcr.io\u002Fhmbown\u002Fcodewhale:latest\n```\n\nSee [docs\u002FDOCKER.md](docs\u002FDOCKER.md) for pinned tags, local image builds,\nvolume ownership notes, and non-interactive pipeline usage.\n\n### SWE-bench\n\nCodeWhale can emit SWE-bench-compatible prediction JSONL from a checked-out\ntask workspace:\n\n```bash\ncodewhale swebench run \\\n  --instance-id django__django-12345 \\\n  --issue-file issue.md \\\n  --predictions-path all_preds.jsonl\n```\n\n`run` uses the same tool-backed automation path as `codewhale exec --auto`,\nthen exports the final working-tree diff as `model_patch`. Use\n`codewhale swebench export --instance-id \u003CID>` when you have already produced\nthe diff yourself. See [docs\u002FSWEBENCH.md](docs\u002FSWEBENCH.md) for the full flow.\n\n### Zed \u002F ACP\n\nDeepSeek can run as a custom Agent Client Protocol server for editors that\nspawn local ACP agents over stdio. In Zed, add a custom agent server:\n\n```json\n{\n  \"agent_servers\": {\n    \"DeepSeek\": {\n      \"type\": \"custom\",\n      \"command\": \"codewhale\",\n      \"args\": [\"serve\", \"--acp\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\nThe first ACP slice supports new sessions and prompt responses through your\nexisting DeepSeek config\u002FAPI key. Tool-backed editing and checkpoint replay are\nnot exposed through ACP yet.\n\nCommunity-maintained adapter: [acp-codewhale-adapter](https:\u002F\u002Fgithub.com\u002Frockeverm3m\u002Facp-codewhale-adapter)\nbridges `codewhale exec --auto` to `cc-connect` for users who need tool-backed\nACP workflows outside the built-in Zed slice.\n\n### Keyboard Shortcuts\n\n| Key | Action |\n|---|---|\n| `Tab` | Complete `\u002F` or `@` entries; while running, queue draft as follow-up; otherwise cycle mode |\n| `Shift+Tab` | Cycle reasoning-effort: off → high → max |\n| `F1` | Searchable help overlay |\n| `Esc` | Back \u002F dismiss |\n| `Ctrl+K` | Command palette |\n| `Ctrl+R` | Resume an earlier session |\n| `Alt+R` | Search prompt history and recover cleared drafts |\n| `Ctrl+S` | Stash current draft (`\u002Fstash list`, `\u002Fstash pop` to recover) |\n| `@path` | Attach file\u002Fdirectory context in composer |\n| `↑` (at composer start) | Select attachment row for removal |\n\nVoice input is available from the command palette (`Ctrl+K`, then search\n`Voice input`) after configuring `voice_input_command`; the helper\nrecords\u002Ftranscribes audio, CodeWhale shows a listening status while it runs, and\nthe final transcript is inserted into the composer for editing.\n\nFull shortcut catalog: [docs\u002FKEYBINDINGS.md](docs\u002FKEYBINDINGS.md).\n\n---\n\n## Modes\n\n| Mode | Behavior |\n| --- | --- |\n| **Plan** 🔍 | Read-only investigation — model explores and proposes a plan before making changes; multi-step investigations use `checklist_write` |\n| **Agent** 🤖 | Default interactive mode — multi-step tool use with approval gates; substantial work is tracked with `checklist_write` |\n| **YOLO** ⚡ | Auto-approve all tools in a trusted workspace; multi-step work still keeps a visible checklist |\n\nModes are separate from model auto-routing. `Tab` cycles Plan \u002F Agent \u002F YOLO,\nwhile `\u002Fmodel auto` controls model and thinking selection. The `\u002Fgoal` command\ntracks a session objective and token budget today; a fuller Goal work surface is\nthe right future home for persistent objective progress rather than another\nmeaning of \"auto\".\n\n---\n\n## Configuration\n\nUser config: `~\u002F.deepseek\u002Fconfig.toml`. Project overlay: `\u003Cworkspace>\u002F.deepseek\u002Fconfig.toml` (denied: `api_key`, `base_url`, `provider`, `mcp_config_path`). [config.example.toml](config.example.toml) has every option.\n\nKey environment variables:\n\n| Variable | Purpose |\n|---|---|\n| `DEEPSEEK_API_KEY` | API key |\n| `DEEPSEEK_BASE_URL` | API base URL |\n| `DEEPSEEK_HTTP_HEADERS` | Optional custom model request headers, e.g. `X-Model-Provider-Id=your-model-provider` |\n| `DEEPSEEK_MODEL` | Default model |\n| `DEEPSEEK_STREAM_IDLE_TIMEOUT_SECS` | Stream idle timeout in seconds, default `300`, clamped to `1..=3600` |\n| `DEEPSEEK_PROVIDER` | `codewhale` (default), `nvidia-nim`, `openai`, `atlascloud`, `wanjie-ark`, `openrouter`, `novita`, `fireworks`, `sglang`, `vllm`, `ollama` |\n| `DEEPSEEK_PROFILE` | Config profile name |\n| `DEEPSEEK_MEMORY` | Set to `on` to enable user memory |\n| `DEEPSEEK_ALLOW_INSECURE_HTTP=1` | Allow non-local `http:\u002F\u002F` API base URLs on trusted networks |\n| `NVIDIA_API_KEY` \u002F `OPENAI_API_KEY` \u002F `ATLASCLOUD_API_KEY` \u002F `WANJIE_ARK_API_KEY` \u002F `OPENROUTER_API_KEY` \u002F `NOVITA_API_KEY` \u002F `FIREWORKS_API_KEY` \u002F `SGLANG_API_KEY` \u002F `VLLM_API_KEY` \u002F `OLLAMA_API_KEY` | Provider auth |\n| `OPENAI_BASE_URL` \u002F `OPENAI_MODEL` | Generic OpenAI-compatible endpoint and model ID |\n| `ATLASCLOUD_BASE_URL` \u002F `ATLASCLOUD_MODEL` | AtlasCloud endpoint and model override |\n| `WANJIE_ARK_BASE_URL` \u002F `WANJIE_ARK_MODEL` | Wanjie Ark endpoint and model override |\n| `OPENROUTER_BASE_URL` | OpenRouter endpoint override |\n| `NOVITA_BASE_URL` | Novita endpoint override |\n| `FIREWORKS_BASE_URL` | Fireworks endpoint override |\n| `SGLANG_BASE_URL` | Self-hosted SGLang endpoint |\n| `SGLANG_MODEL` | Self-hosted SGLang model ID |\n| `VLLM_BASE_URL` | Self-hosted vLLM endpoint |\n| `VLLM_MODEL` | Self-hosted vLLM model ID |\n| `OLLAMA_BASE_URL` | Self-hosted Ollama endpoint |\n| `OLLAMA_MODEL` | Self-hosted Ollama model tag |\n| `NO_ANIMATIONS=1` | Force accessibility mode at startup |\n| `SSL_CERT_FILE` | Custom CA bundle for corporate proxies |\n\nSet `locale` in `settings.toml`, use `\u002Fconfig locale zh-Hans`, or rely on `LC_ALL`\u002F`LANG` to choose UI chrome and the fallback language sent to V4 models. The latest user message still wins for natural-language reasoning and replies, so Chinese user turns stay Chinese even on an English system locale. See [docs\u002FCONFIGURATION.md](docs\u002FCONFIGURATION.md) and [docs\u002FMCP.md](docs\u002FMCP.md).\n\n---\n\n## Models & Pricing\n\n| Model | Context | Input (cache hit) | Input (cache miss) | Output |\n|---|---|---|---|---|\n| `deepseek-v4-pro` | 1M | $0.003625 \u002F 1M | $0.435 \u002F 1M | $0.87 \u002F 1M |\n| `deepseek-v4-flash` | 1M | $0.0028 \u002F 1M | $0.14 \u002F 1M | $0.28 \u002F 1M |\n\nDeepSeek Platform defaults to `https:\u002F\u002Fapi.deepseek.com\u002Fbeta` so beta-gated API features can be tested without extra setup. Set `base_url = \"https:\u002F\u002Fapi.deepseek.com\"` to opt out.\n\nLegacy aliases `deepseek-chat` \u002F `deepseek-reasoner` map to `deepseek-v4-flash` and retire after July 24, 2026. NVIDIA NIM variants use your NVIDIA account terms.\n\n> [!Note]\n> DeepSeek's pricing page now lists the V4 Pro rates above as the permanent prices: the previous 75% promotional discount has been folded into a one-quarter base-rate adjustment as the promotion window closes on 15:59 UTC on 31 May 2026. The TUI cost estimator already uses these values, so no behavioural change is required. For any future price changes, consult the official [DeepSeek pricing page](https:\u002F\u002Fapi-docs.deepseek.com\u002Fzh-cn\u002Fquick_start\u002Fpricing).\n\n---\n\n## Publishing Your Own Skill\n\ncodewhale discovers skills from workspace directories (`.agents\u002Fskills` → `skills` → `.opencode\u002Fskills` → `.claude\u002Fskills` → `.cursor\u002Fskills`) and global directories (`~\u002F.agents\u002Fskills` → `~\u002F.claude\u002Fskills` → `~\u002F.deepseek\u002Fskills`). Each skill is a directory with a `SKILL.md` file:\n\n```text\n~\u002F.agents\u002Fskills\u002Fmy-skill\u002F\n└── SKILL.md\n```\n\nFrontmatter required:\n\n```markdown\n---\nname: my-skill\ndescription: Use this when DeepSeek should follow my custom workflow.\n---\n\n# My Skill\nInstructions for the agent go here.\n```\n\nCommands: `\u002Fskills` (list), `\u002Fskill \u003Cname>` (activate), `\u002Fskill new` (scaffold), `\u002Fskill install github:\u003Cowner>\u002F\u003Crepo>` (community), `\u002Fskill update` \u002F `uninstall` \u002F `trust`. Community installs from GitHub require no backend service. Installed skills appear in the model-visible session context; the agent can auto-select relevant skills via the `load_skill` tool when your task matches their descriptions.\n\nFirst launch also installs bundled system skills for common workflows:\n`skill-creator`, `delegate`, `v4-best-practices`, `plugin-creator`,\n`skill-installer`, `mcp-builder`, `documents`, `presentations`,\n`spreadsheets`, `pdf`, and `feishu`. These live under\n`~\u002F.deepseek\u002Fskills` and are versioned so new bundles are added on upgrade\nwithout recreating skills the user deliberately deleted.\n\n---\n\n## Documentation\n\n| Doc | Topic |\n|---|---|\n| [ARCHITECTURE.md](docs\u002FARCHITECTURE.md) | Codebase internals |\n| [CONFIGURATION.md](docs\u002FCONFIGURATION.md) | Full config reference |\n| [MODES.md](docs\u002FMODES.md) | Plan \u002F Agent \u002F YOLO modes |\n| [MCP.md](docs\u002FMCP.md) | Model Context Protocol integration |\n| [RUNTIME_API.md](docs\u002FRUNTIME_API.md) | HTTP\u002FSSE API server |\n| [INSTALL.md](docs\u002FINSTALL.md) | Platform-specific install guide |\n| [DOCKER.md](docs\u002FDOCKER.md) | GHCR image, volumes, and Docker usage |\n| [CNB_MIRROR.md](docs\u002FCNB_MIRROR.md) | CNB mirror and China-friendly install notes |\n| [TENCENT_CLOUD_REMOTE_FIRST.md](docs\u002FTENCENT_CLOUD_REMOTE_FIRST.md) | Tencent\u002FCNB\u002FLighthouse\u002FFeishu remote-first path |\n| [TENCENT_LIGHTHOUSE_HK.md](docs\u002FTENCENT_LIGHTHOUSE_HK.md) | Lighthouse Hong Kong server setup |\n| [MEMORY.md](docs\u002FMEMORY.md) | User memory feature guide |\n| [SUBAGENTS.md](docs\u002FSUBAGENTS.md) | Sub-agent role taxonomy and lifecycle |\n| [KEYBINDINGS.md](docs\u002FKEYBINDINGS.md) | Full shortcut catalog |\n| [RELEASE_RUNBOOK.md](docs\u002FRELEASE_RUNBOOK.md) | Release process |\n| [LOCALIZATION.md](docs\u002FLOCALIZATION.md) | UI locale matrix & switching |\n| [OPERATIONS_RUNBOOK.md](docs\u002FOPERATIONS_RUNBOOK.md) | Ops & recovery |\n| [RECURSIVE_SELF_IMPROVEMENT.md](docs\u002FRECURSIVE_SELF_IMPROVEMENT.md) | Copyable prompts for agent-assisted CodeWhale improvements |\n\nFull Changelog: [CHANGELOG.md](CHANGELOG.md).\n\n---\n\n## Support\n\nCodeWhale is MIT-licensed and usable without sponsorship. If it saves you time,\nthe clearest way to support ongoing maintenance is\n[GitHub Sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002FHmbown). One-time support is also\navailable through [Buy Me a Coffee](https:\u002F\u002Fwww.buymeacoffee.com\u002Fhmbown).\n\nSponsorship helps cover release builds, CI\u002Fruntime testing, package publishing,\nand maintainer time for issue triage and review. Feature requests, bug reports,\nand pull requests do not require sponsorship.\n\n---\n\n## Thanks\n\n- **[DeepSeek](https:\u002F\u002Fgithub.com\u002Fdeepseek-ai)** — thank you for the models and support that power every turn. 感谢 DeepSeek 提供模型与支持，让每一次交互成为可能。\n- **[DataWhale](https:\u002F\u002Fgithub.com\u002Fdatawhalechina)** 🐋 — thank you for your support and for welcoming us into the Whale Brother family. 感谢 DataWhale 的支持，并欢迎我们加入“鲸兄弟”大家庭。\n- **[OpenWarp](https:\u002F\u002Fgithub.com\u002Fzerx-lab\u002Fwarp)** — thank you for prioritizing codewhale support and for collaborating on a better terminal-agent experience.\n- **[Open Design](https:\u002F\u002Fgithub.com\u002Fnexu-io\u002Fopen-design)** — thank you for support and collaboration around design-forward agent workflows.\n\nThis project ships with help from a growing community of contributors:\n\n- **[merchloubna70-dot](https:\u002F\u002Fgithub.com\u002Fmerchloubna70-dot)** — 28 PRs spanning features, fixes, and VS Code extension scaffolding (#645–#681)\n- **[WyxBUPT-22](https:\u002F\u002Fgithub.com\u002FWyxBUPT-22)** — Markdown rendering for tables, bold\u002Fitalic, and horizontal rules (#579)\n- **[loongmiaow-pixel](https:\u002F\u002Fgithub.com\u002Floongmiaow-pixel)** — Windows + China install documentation (#578)\n- **[20bytes](https:\u002F\u002Fgithub.com\u002F20bytes)** — User memory docs and help polish (#569)\n- **[staryxchen](https:\u002F\u002Fgithub.com\u002Fstaryxchen)** — glibc compatibility preflight (#556)\n- **[Vishnu1837](https:\u002F\u002Fgithub.com\u002FVishnu1837)** — glibc compatibility improvements and terminal restoration on SIGINT\u002FSIGTERM (#565, #1586)\n- **[shentoumengxin](https:\u002F\u002Fgithub.com\u002Fshentoumengxin)** — Shell `cwd` boundary validation (#524)\n- **[toi500](https:\u002F\u002Fgithub.com\u002Ftoi500)** — Windows paste fix report\n- **[xsstomy](https:\u002F\u002Fgithub.com\u002Fxsstomy)** — Terminal startup repaint report\n- **[melody0709](https:\u002F\u002Fgithub.com\u002Fmelody0709)** — Slash-prefix Enter activation report\n- **[lloydzhou](https:\u002F\u002Fgithub.com\u002Flloydzhou)** and **[jeoor](https:\u002F\u002Fgithub.com\u002Fjeoor)** — Compaction cost reports and npm installer stream-pause race fix (#1860); lloydzhou also contributed deterministic environment context (#813, #922) and KV prefix-cache stabilisation (#1080)\n- **[Agent-Skill-007](https:\u002F\u002Fgithub.com\u002FAgent-Skill-007)** — README clarity pass (#685)\n- **[woyxiang](https:\u002F\u002Fgithub.com\u002Fwoyxiang)** — Windows install documentation (#696)\n- **[wangfeng](mailto:wangfengcsu@qq.com)** — Pricing\u002Fdiscount info update (#692)\n- **[zichen0116](https:\u002F\u002Fgithub.com\u002Fzichen0116)** — CODE_OF_CONDUCT.md (#686)\n- **[dfwqdyl-ui](https:\u002F\u002Fgithub.com\u002Fdfwqdyl-ui)** — model ID case-sensitivity compatibility report (#729)\n- **[Oliver-ZPLiu](https:\u002F\u002Fgithub.com\u002FOliver-ZPLiu)** — stale `working...` state bug report, Windows clipboard fallback, MCP Streamable HTTP session fixes, and Homebrew tap automation (#738, #850, #1643, #1631)\n- **[reidliu41](https:\u002F\u002Fgithub.com\u002Freidliu41)** — resume hint, workspace trust persistence, Ollama provider support, thinking-block stream finalization, CI cache hardening, streaming wrap, DeepSeek model completions, and help picker selection polish (#863, #870, #921, #1078, #1603, #1628, #1601, #1964)\n- **[cyq1017](https:\u002F\u002Fgithub.com\u002Fcyq1017)** — Unicode `git_status` paths, local\u002Fconfigured skill discovery, and mode-switch toast dedupe (#1953, #1956, #1957)\n- **[xieshutao](https:\u002F\u002Fgithub.com\u002Fxieshutao)** — plain Markdown skill fallback (#869)\n- **[GK012](https:\u002F\u002Fgithub.com\u002FGK012)** — npm wrapper `--version` fallback (#885)\n- **[y0sif](https:\u002F\u002Fgithub.com\u002Fy0sif)** — parent turn-loop wakeup after direct child sub-agent completion (#901)\n- **[mac119](https:\u002F\u002Fgithub.com\u002Fmac119)** and **[leo119](https:\u002F\u002Fgithub.com\u002Fleo119)** — `codewhale update` command documentation (#838, #917)\n- **[dumbjack](https:\u002F\u002Fgithub.com\u002Fdumbjack)** \u002F **浩淼的mac** — command-safety null-byte hardening (#706, #918)\n- **macworkers** — fork confirmation with the new session id (#600, #919)\n- **zero** and **[zerx-lab](https:\u002F\u002Fgithub.com\u002Fzerx-lab)** — notification condition config and richer OSC 9 notification body (#820, #920)\n- **[chnjames](https:\u002F\u002Fgithub.com\u002Fchnjames)** — cached @mention completions, config recovery polish, and Windows UTF-8 shell output (#849, #927, #982, #1018)\n- **[angziii](https:\u002F\u002Fgithub.com\u002Fangziii)** — config safety, async cleanup, Docker hardening, and command-safety fixes (#822, #824, #827, #831, #833, #835, #837)\n- **[elowen53](https:\u002F\u002Fgithub.com\u002Felowen53)** — UTF-8 decoding and deterministic test coverage (#825, #840)\n- **[wdw8276](https:\u002F\u002Fgithub.com\u002Fwdw8276)** — `\u002Frename` command for custom session titles (#836)\n- **[banqii](https:\u002F\u002Fgithub.com\u002Fbanqii)** — `.cursor\u002Fskills` discovery path support (#817)\n- **[junskyeed](https:\u002F\u002Fgithub.com\u002Fjunskyeed)** — dynamic `max_tokens` calculation for API requests (#826)\n- **Hafeez Pizofreude** — SSRF protection in `fetch_url` and Star History chart\n- **Unic (YuniqueUnic)** — Schema-driven config UI (TUI + web)\n- **Jason** — SSRF security hardening\n- **[axobase001](https:\u002F\u002Fgithub.com\u002Faxobase001)** — snapshot orphan cleanup, npm install guards, session telemetry fixes, model-scope cache clear, symlinked skill support, npm mirror-escape-hatch guidance, and proxy preservation for child tasks (#975, #1032, #1047, #1049, #1052, #1019, #1051, #1056, #1608)\n- **[MengZ-super](https:\u002F\u002Fgithub.com\u002FMengZ-super)** — `\u002Ftheme` command foundation and SSE gzip\u002Fbrotli decompression (#1057, #1061)\n- **[DI-HUO-MING-YI](https:\u002F\u002Fgithub.com\u002FDI-HUO-MING-YI)** — Plan-mode read-only sandbox safety fix (#1077)\n- **[bevis-wong](https:\u002F\u002Fgithub.com\u002Fbevis-wong)** — precise paste-Enter auto-submit reproducer (#1073)\n- **[Duducoco](https:\u002F\u002Fgithub.com\u002FDuducoco)** and **[AlphaGogoo](https:\u002F\u002Fgithub.com\u002FAlphaGogoo)** — skills slash-menu and `\u002Fskills` coverage fix (#1068, #1083)\n- **[ArronAI007](https:\u002F\u002Fgithub.com\u002FArronAI007)** — window-resize artifact fix for macOS Terminal.app and ConHost (#993)\n- **[THINKER-ONLY](https:\u002F\u002Fgithub.com\u002FTHINKER-ONLY)** — OpenRouter and custom-endpoint model-ID preservation (#1066)\n- **[Jefsky](https:\u002F\u002Fgithub.com\u002FJefsky)** — DeepSeek endpoint correction report (#1079, #1084)\n- **[wlon](https:\u002F\u002Fgithub.com\u002Fwlon)** — NVIDIA NIM provider API-key preference diagnosis (#1081)\n- **[Horace Liu](https:\u002F\u002Fgithub.com\u002Fliuhq)** — Nix package support and install documentation (#1173)\n- **[jieshu666](https:\u002F\u002Fgithub.com\u002Fjieshu666)** — terminal repaint flicker reduction (#1563)\n- **[gordonlu](https:\u002F\u002Fgithub.com\u002Fgordonlu)** — Windows Enter \u002F CSI-u input fix (#1612)\n- **[mdrkrg](https:\u002F\u002Fgithub.com\u002Fmdrkrg)** — first-run onboarding crash fix when the API key is missing (#1598)\n- **[Aitensa](https:\u002F\u002Fgithub.com\u002FAitensa)** — CJK wrapping propagation for diff and pager output (#1622)\n- **[qiyan233](https:\u002F\u002Fgithub.com\u002Fqiyan233)** — legacy DeepSeek CN provider alias compatibility (#1645)\n- **[zlh124](https:\u002F\u002Fgithub.com\u002Fzlh124)** — WSL2\u002Fheadless startup report and clipboard-init fix (#1772, #1773)\n- **[aboimpinto](https:\u002F\u002Fgithub.com\u002Faboimpinto)** — Windows alt-screen logging, Home\u002FEnd composer, and runtime log follow-ups (#1774, #1776, #1748, #1749, #1782, #1783)\n- **[LeoLin990405](https:\u002F\u002Fgithub.com\u002FLeoLin990405)** — provider model passthrough, reasoning replay, thinking-only turn, and Windows quoting fixes (#1740, #1743, #1742, #1744)\n- **[nightt5879](https:\u002F\u002Fgithub.com\u002Fnightt5879)** — Ctrl+C prompt restore fix (#1764)\n- **[h3c-hexin](https:\u002F\u002Fgithub.com\u002Fh3c-hexin)** — streaming batch tool-call preservation and CLI reasoning-effort passthrough (#1686, #1511)\n- **[hxy91819](https:\u002F\u002Fgithub.com\u002Fhxy91819)** — prefix-cache preservation during tool-result pruning (#1514)\n- **[JiarenWang](https:\u002F\u002Fgithub.com\u002FJiarenWang)** — Plan-mode read-only enforcement, approval-takeover clamping, Ctrl+H delete fix, and undo context sync (#1123, #962, #958, #1150)\n- **[Liu-Vince](https:\u002F\u002Fgithub.com\u002FLiu-Vince)** — MCP pagination, markdown indentation preservation, zh-Hans i18n polish, and env-var documentation (#1256, #1179, #1274, #1178)\n- **[linzhiqin2003](https:\u002F\u002Fgithub.com\u002Flinzhiqin2003)** — `--model auto` cost-saving bias, execution-discipline prompts, and declarative-fact memory hygiene (#1385, #1384, #1381)\n- **[lbcheng888](https:\u002F\u002Fgithub.com\u002Flbcheng888)** — cost persistence across save\u002Frestore and transcript scroll fix (#1192, #1211)\n- **[pengyou200902](https:\u002F\u002Fgithub.com\u002Fpengyou200902)** — UTF-8-safe memory truncation, truncation-marker precision, and keybinding docs (#968, #1122, #1095)\n- **[ChaceLyee2101](https:\u002F\u002Fgithub.com\u002FChaceLyee2101)** — reasoning-token cost tracking with auto-CNY on zh-Hans and zh-CN README sync (#1505, #1504)\n- **[CrepuscularIRIS](https:\u002F\u002Fgithub.com\u002FCrepuscularIRIS)** — low-motion mode for Termius\u002FSSH and npx MCP server sandbox fix (#1479, #1346)\n- **[laoye2020](https:\u002F\u002Fgithub.com\u002Flaoye2020)** — Catppuccin, Tokyo Night, Dracula, and Gruvbox themes with `\u002Ftheme` picker (#1534)\n- **[punkcanyang](https:\u002F\u002Fgithub.com\u002Fpunkcanyang)** — Kitty (OSC 99) and Ghostty (OSC 777) desktop notification support (#1426)\n- **[Rene-Kuhm](https:\u002F\u002Fgithub.com\u002FRene-Kuhm)** — Spanish (es-419) Latin American localization (#1452)\n- **[sternelee](https:\u002F\u002Fgithub.com\u002Fsternelee)** — DeepSeek prefix-cache stability tracking (#1517)\n- **[ComeFromTheMars](https:\u002F\u002Fgithub.com\u002FComeFromTheMars)** — Shift+Up\u002FDown transcript scroll shortcuts (#1432)\n- **[sockerch](https:\u002F\u002Fgithub.com\u002Fsockerch)** — pinyin aliases for all slash commands (#1306)\n- **[Apeiron0w0](https:\u002F\u002Fgithub.com\u002FApeiron0w0)** — FocusGained debounce for Tabby terminal flicker loop (#1560)\n- **[greyfreedom](https:\u002F\u002Fgithub.com\u002Fgreyfreedom)** — jump-to-latest-transcript button (#969)\n- **[SamhandsomeLee](https:\u002F\u002Fgithub.com\u002FSamhandsomeLee)** — explicit hidden-file mention completion (#1270)\n- **[dst1213](https:\u002F\u002Fgithub.com\u002Fdst1213)** — quota-error HTTP 400 retry (#1203)\n- **[fuleinist](https:\u002F\u002Fgithub.com\u002Ffuleinist)** — `--yolo` flag forwarding from CLI to TUI (#1233)\n- **[heloanc](https:\u002F\u002Fgithub.com\u002Fheloanc)** — Home\u002FEnd key composer support (#1246)\n- **[jinpengxuan](https:\u002F\u002Fgithub.com\u002Fjinpengxuan)** — active provider credential preservation during onboarding (#1265)\n- **[lixiasky-back](https:\u002F\u002Fgithub.com\u002Flixiasky-back)** — verified npm binary adoption (#1339)\n- **[J3y0r](https:\u002F\u002Fgithub.com\u002FJ3y0r)** — workspace-switch command (#1065)\n- **[KhalidAlnujaidi](https:\u002F\u002Fgithub.com\u002FKhalidAlnujaidi)** — delegate skill bundling (#1144)\n- **[Wenjunyun123](https:\u002F\u002Fgithub.com\u002FWenjunyun123)** — docs anchor-offset preservation (#1282)\n- **[whtis](https:\u002F\u002Fgithub.com\u002Fwhtis)** — zh-CN README dispatcher-path sync (#1235)\n- **[aqilaziz](https:\u002F\u002Fgithub.com\u002Faqilaziz)** — memory skill-link fix (#1095)\n- **[wuwuzhijing](https:\u002F\u002Fgithub.com\u002Fwuwuzhijing)** — rsproxy rustup workaround install docs (#1011)\n- **[eltociear](https:\u002F\u002Fgithub.com\u002Feltociear)** — Japanese README translation (#746)\n- **[Ling](https:\u002F\u002Fgithub.com\u002FLING71671)** — `grep_files` cancellation-token support and Ctrl+Z composer-draft recovery (#1839, #1911)\n- **[Ben Younes](https:\u002F\u002Fgithub.com\u002Fousamabenyounes)** — Linux Wayland (non-wlroots) clipboard support (#1938)\n- **[Matt Van Horn](https:\u002F\u002Fgithub.com\u002Fmvanhorn)** — Docker first-run permission fix and runtime system-prompt regression tests (#1699, #1702)\n- **[Kristopher Clark](https:\u002F\u002Fgithub.com\u002Fkrisclarkdev)** — compaction user-query preservation fix (#1704)\n- **[tdccccc](https:\u002F\u002Fgithub.com\u002Ftdccccc)** — composer scroll fix and pager mouse-wheel support (#1715, #1716)\n- **[LittleBlacky](https:\u002F\u002Fgithub.com\u002FLittleBlacky)** — provider-gated `reasoning_content` stream fix (#1680)\n- **[Anaheim](https:\u002F\u002Fgithub.com\u002FAnaheimEX)** — `rlm_open` blank-source schema validation report (#1712)\n- **[THatch26](https:\u002F\u002Fgithub.com\u002FTHatch26)** — terminal resize paging fix (#1724)\n- **[Alvin](https:\u002F\u002Fgithub.com\u002Falvin1)** — Zed ACP id compatibility report (#1696)\n- **[knqiufan](https:\u002F\u002Fgithub.com\u002Fknqiufan)** — sub-agent file-write delegation work (#1833)\n- **[IIzzaya](https:\u002F\u002Fgithub.com\u002FIIzzaya)** — exact-alias-first slash-completion ordering idea (#1811)\n- **[DC](https:\u002F\u002Fgithub.com\u002Fduanchao-lab)** — terminal cleanup-guard idea (#1630)\n- **[imkingjh999](https:\u002F\u002Fgithub.com\u002Fimkingjh999)** — provider\u002Fmodel switching fixes (#1642)\n- **[Photo](https:\u002F\u002Fgithub.com\u002Feng2007)** — provider-aware `\u002Fmodel` picker catalog work (#1201)\n- **[chennest](https:\u002F\u002Fgithub.com\u002Fchennest)** — diagnostics schema report (#1685)\n- **[kunpeng-ai-lab](https:\u002F\u002Fgithub.com\u002Fkunpeng-ai-lab)** — Windows composer scroll fix (#1578)\n- **[WuMing](https:\u002F\u002Fgithub.com\u002Fasdfg314284230)** — Windows PowerShell flicker fix (#1591)\n- **[maker316](https:\u002F\u002Fgithub.com\u002Fmaker316)** — LoopGuard\u002Fchecklist loop report (#1574)\n- **[lalala](https:\u002F\u002Fgithub.com\u002Flalala-233)** — approval denial regression report (#1617)\n- **[muyuliyan](https:\u002F\u002Fgithub.com\u002Fmuyuliyan)** — `pandoc_convert` validation fix (#1523)\n- **[czf0718](https:\u002F\u002Fgithub.com\u002Fczf0718)** — resize and turn-completion flicker fix (#1537)\n- **[MeAiRobot](https:\u002F\u002Fgithub.com\u002FMeAiRobot)** — toast overlay composer-input fix (#1485)\n- **[tiger-dog](https:\u002F\u002Fgithub.com\u002Ftiger-dog)** — approval modal collapse and markdown identifier fixes (#1455)\n- **[MMMarcinho](https:\u002F\u002Fgithub.com\u002FMMMarcinho)** — opt-in `image_analyze` vision tool (#1467)\n- **[lucaszhu-hue](https:\u002F\u002Fgithub.com\u002Flucaszhu-hue)** — AtlasCloud provider integration (#1436)\n- **[sandofree](https:\u002F\u002Fgithub.com\u002Fsandofree)** — Tavily and Bocha `web_search` backends (#1294)\n- **[zhuangbiaowei](https:\u002F\u002Fgithub.com\u002Fzhuangbiaowei)** — `\u002Fchange` release-notes command (#1416)\n- **[NorethSea](https:\u002F\u002Fgithub.com\u002FNorethSea)** — updater companion-binary refresh fix (#1492)\n- **[Jianfengwu2024](https:\u002F\u002Fgithub.com\u002FJianfengwu2024)** — Windows MSVC toolchain environment preservation (#1487)\n- **[Fire-dtx](https:\u002F\u002Fgithub.com\u002FFire-dtx)** — npm postinstall recoverability work (#1059)\n- **[oooyuy92](https:\u002F\u002Fgithub.com\u002Foooyuy92)** — long-session palette readability report (#1070, #936)\n- **[qinxianyuzou](https:\u002F\u002Fgithub.com\u002Fqinxianyuzou)** — zh-Hans destructive approval wording (#1087, #1091)\n- **[tyouter](https:\u002F\u002Fgithub.com\u002Ftyouter)** — session title\u002Fhistory preview cleanup (#1510)\n- **[xulongzhe](https:\u002F\u002Fgithub.com\u002Fxulongzhe)** — issue-template and vision-boundary follow-ups (#1530, #1544)\n- **[YaYII](https:\u002F\u002Fgithub.com\u002FYaYII)** — trusted media path work (#1462)\n- **[47Cid](https:\u002F\u002Fgithub.com\u002F47Cid)** and **[Jafar Akhondali](https:\u002F\u002Fgithub.com\u002FJafarAkhondali)** — responsible security disclosures and hardening reports\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). Pull requests welcome — check the [open issues](https:\u002F\u002Fgithub.com\u002FHmbown\u002FCodeWhale\u002Fissues) for good first contributions.\n\nIf you want CodeWhale to help improve CodeWhale, start with the\n[recursive self-improvement prompt](docs\u002FRECURSIVE_SELF_IMPROVEMENT.md). It is\ndesigned to turn one DeepSeek V4 Pro session, or another capable open-weight\npath, into one small, reviewable patch.\n\n> [!Note]\n> *Not affiliated with DeepSeek Inc.*\n\n## License\n\n[MIT](LICENSE)\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Hmbown\u002FCodeWhale&type=date&legend=top-left)](https:\u002F\u002Fwww.star-history.com\u002F?repos=Hmbown%2FCodeWhale&type=date&logscale=&legend=top-left)\n","CodeWhale 是一个基于终端的 DeepSeek 和 MiMo 编码助手。它通过 `codewhale` 命令运行，能够流式传输推理块，并在用户批准后编辑本地工作区。CodeWhale 的核心功能包括自动选择合适的 DeepSeek 模型和思维层次，以及提供文本用户界面（TUI）支持。该项目使用 Rust 语言开发，确保了高性能与安全性。适用于需要高效代码生成、调试或学习的开发者，尤其适合那些希望在终端环境中直接获得智能编码辅助的场景。",2,"2026-06-11 03:57:20","top_all"]