docs: v0.8.45 harness framing — READMEs, website, metadata, contributors

- README: new tagline, What Is It/Key Features → harness framing
- README.zh-CN/ja-JP: matching Chinese/Japanese translations
- web/app/page.tsx: updated hero, description, three-column grid, flywheel
- web/app/layout.tsx: metadata title + description for harness framing
- website/index.html + zh/: hero, feature grid, install command
- README: updated contributor credits for v0.8.45 (idling11, gaord, h3c-hexin, cyq1017, reidliu41, wdw8276, zlh124)
This commit is contained in:
Hunter Bown
2026-05-26 06:40:12 -05:00
parent c47ed896dc
commit 325aec396d
10 changed files with 220 additions and 261 deletions
+23 -33
View File
@@ -121,7 +121,7 @@ export default async function DocsPage({ params }: { params: Promise<{ locale: s
{ group: "Git / 诊断 / 测试", tools: "git_status · git_diff · diagnostics · run_tests" },
{ group: "子 Agent", tools: "agent_open · agent_eval · agent_close —— 持久会话,并行执行,通过 var_handle 读取大结果" },
{ group: "递归 LM (RLM)", tools: "rlm_open · rlm_eval · rlm_configure · rlm_close —— 沙箱 Python REPL,内置 peek/search/chunk/sub_query_batch 等辅助函数" },
{ group: "MCP", tools: "mcp_<server>_<tool>——从 ~/.deepseek/mcp.json 自动注册" },
{ group: "MCP", tools: "mcp_<server>_<tool>——从 ~/.codewhale/mcp.json 自动注册" },
].map((row) => (
<div key={row.group} className="grid md:grid-cols-12 gap-0 hairline-t py-3 px-4 hover:bg-paper-deep transition-colors min-w-0">
<div className="md:col-span-3 font-display text-sm font-semibold">{row.group}</div>
@@ -152,8 +152,8 @@ export default async function DocsPage({ params }: { params: Promise<{ locale: s
))}
</div>
<p className="mt-5 text-ink-soft leading-[1.9] tracking-wide">
{facts.sandboxBackends.join("、")}Windows OS
<code className="inline">/trust</code>
{facts.sandboxBackends.join("、")} <code className="inline">--workspace</code>
<code className="inline">/trust</code>
</p>
</section>
@@ -163,7 +163,7 @@ export default async function DocsPage({ params }: { params: Promise<{ locale: s
<span className="font-cjk text-indigo text-2xl ml-2">Configuration</span>
</h2>
<pre className="code-block mt-5">
{`# ~/.deepseek/config.toml
{`# ~/.codewhale/config.toml
api_key = "sk-..."
base_url = "https://api.deepseek.com"
default_text_model = "${facts.defaultModel ?? "deepseek-v4-pro"}" # 默认模型;deepseek-v4-flash 用于快速 / 子智能体
@@ -179,7 +179,7 @@ default_timeout_secs = 30
[[hooks.hooks]]
event = "session_start" # 也支持: tool_call_before / tool_call_after
command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change / on_error / shell_env`}
command = "~/.codewhale/hooks/pre.sh" # / message_submit / mode_change / on_error / shell_env`}
</pre>
<p className="mt-4 text-sm text-ink-soft">
<Link className="body-link" href="https://github.com/Hmbown/CodeWhale/blob/main/config.example.toml">config.example.toml</Link>
@@ -193,7 +193,7 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
</h2>
<p className="text-ink-soft mt-3 leading-[1.9] tracking-wide">
<code className="inline">codewhale</code> Model Context Protocol
<code className="inline">~/.deepseek/mcp.json</code>
<code className="inline">~/.codewhale/mcp.json</code>
<code className="inline">codewhale mcp</code> <code className="inline">mcp_&lt;server&gt;_&lt;tool&gt;</code>
</p>
<pre className="code-block mt-5">
@@ -218,7 +218,7 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
<span className="font-cjk text-indigo text-2xl ml-2">Skills</span>
</h2>
<p className="text-ink-soft mt-3 leading-[1.9] tracking-wide">
<code className="inline">~/.deepseek/skills/&lt;name&gt;/</code>
<code className="inline">~/.codewhale/skills/&lt;name&gt;/</code>
<code className="inline">SKILL.md</code>Agent
Skill
</p>
@@ -253,7 +253,7 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
<p className="text-ink-soft mt-3 leading-[1.9] tracking-wide">
使 <code className="inline">codewhale auth set --provider &lt;id&gt;</code>
<code className="inline">crates/tui/src/config.rs</code> <code className="inline">ApiProvider</code>
v0.8.45 {facts.providers.length}
{facts.providers.length}
</p>
<div className="hairline-t hairline-b mt-5">
{facts.providers.map((p) => (
@@ -265,13 +265,9 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
))}
</div>
<p className="mt-5 text-ink-soft leading-[1.9] tracking-wide">
CodeWhale DeepSeek Moonshot/KimiOpenRouterNVIDIA NIM
AtlasCloudWanjie ArkNovitaFireworks SGLang/vLLM/Ollama
Kimi Code API Key 使 <code className="inline">providers.moonshot.base_url</code>
<code className="inline">https://api.kimi.com/coding/v1</code>,模型为
<code className="inline">kimi-for-coding</code>Kimi/Moonshot API Key 使
<code className="inline">https://api.moonshot.ai/v1</code> 和
<code className="inline">kimi-k2.6</code>
CodeWhale
<strong> OpenRouter</strong><strong> Hugging Face</strong> <strong> </strong>
API
</p>
</section>
@@ -377,7 +373,7 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
{ group: "Git / diag / test", tools: "git_status · git_diff · diagnostics · run_tests" },
{ group: "Sub-agents", tools: "agent_open · agent_eval · agent_close — persistent sessions, parallel execution, bounded result retrieval via var_handle" },
{ group: "Recursive LM (RLM)", tools: "rlm_open · rlm_eval · rlm_configure · rlm_close — sandboxed Python REPL with peek/search/chunk/sub_query_batch helpers" },
{ group: "MCP", tools: "mcp_<server>_<tool> — auto-registered from ~/.deepseek/mcp.json" },
{ group: "MCP", tools: "mcp_<server>_<tool> — auto-registered from ~/.codewhale/mcp.json" },
].map((row) => (
<div key={row.group} className="grid md:grid-cols-12 gap-0 hairline-t py-3 px-4 hover:bg-paper-deep transition-colors min-w-0">
<div className="md:col-span-3 font-display text-sm font-semibold">{row.group}</div>
@@ -407,9 +403,8 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
))}
</div>
<p className="mt-5 text-ink-soft leading-relaxed">
Sandbox: {facts.sandboxBackends.join(", ")}. On Windows, CodeWhale does not advertise
OS-level filesystem isolation yet, but keeps the same approvals, workspace boundary,
and terminal runtime protections. <code className="inline">/trust</code> lifts the workspace boundary.
Sandbox: {facts.sandboxBackends.join(", ")}. Workspace boundary defaults to{" "}
<code className="inline">--workspace</code>. <code className="inline">/trust</code> lifts the boundary.
</p>
</section>
@@ -418,7 +413,7 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
Configuration <span className="font-cjk text-indigo text-2xl ml-2"></span>
</h2>
<pre className="code-block mt-5">
{`# ~/.deepseek/config.toml
{`# ~/.codewhale/config.toml
api_key = "sk-..."
base_url = "https://api.deepseek.com"
default_text_model = "${facts.defaultModel ?? "deepseek-v4-pro"}" # default; deepseek-v4-flash is the fast / sub-agent option
@@ -434,7 +429,7 @@ default_timeout_secs = 30
[[hooks.hooks]]
event = "session_start" # or: tool_call_before / tool_call_after
command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change / on_error / shell_env`}
command = "~/.codewhale/hooks/pre.sh" # / message_submit / mode_change / on_error / shell_env`}
</pre>
<p className="mt-4 text-sm text-ink-soft">
Full reference: <Link className="body-link" href="https://github.com/Hmbown/CodeWhale/blob/main/config.example.toml">config.example.toml</Link>.
@@ -447,7 +442,7 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
</h2>
<p className="text-ink-soft mt-3 leading-relaxed">
<code className="inline">codewhale</code> speaks the Model Context Protocol both ways: as a client (loads
servers from <code className="inline">~/.deepseek/mcp.json</code>) and as a server
servers from <code className="inline">~/.codewhale/mcp.json</code>) and as a server
(<code className="inline">codewhale mcp</code>). Tools surface as <code className="inline">mcp_&lt;server&gt;_&lt;tool&gt;</code>.
</p>
<pre className="code-block mt-5">
@@ -471,7 +466,7 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
Skills <span className="font-cjk text-indigo text-2xl ml-2"></span>
</h2>
<p className="text-ink-soft mt-3 leading-relaxed">
A skill is a folder under <code className="inline">~/.deepseek/skills/&lt;name&gt;/</code>
A skill is a folder under <code className="inline">~/.codewhale/skills/&lt;name&gt;/</code>
with a <code className="inline">SKILL.md</code> at the root. The agent loads skill names + descriptions on
startup and can pull in the full body via the Skill tool when relevant.
</p>
@@ -505,7 +500,7 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
<p className="text-ink-soft mt-3 leading-relaxed">
Switch with <code className="inline">codewhale auth set --provider &lt;id&gt;</code>. The
table below is a live projection of the <code className="inline">ApiProvider</code> enum
in <code className="inline">crates/tui/src/config.rs</code> v0.8.45 currently has {facts.providers.length} providers.
in <code className="inline">crates/tui/src/config.rs</code> currently {facts.providers.length} providers.
</p>
<div className="hairline-t hairline-b mt-5">
{facts.providers.map((p) => (
@@ -517,14 +512,9 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
))}
</div>
<p className="mt-5 text-ink-soft leading-relaxed">
Open-model platform direction: CodeWhale stays DeepSeek-first while shipping Moonshot/Kimi,
OpenRouter, NVIDIA NIM, AtlasCloud, Wanjie Ark, Novita, Fireworks, and self-hosted
SGLang/vLLM/Ollama paths.
Kimi Code membership API keys use <code className="inline">providers.moonshot.base_url</code>
set to <code className="inline">https://api.kimi.com/coding/v1</code> with
<code className="inline">kimi-for-coding</code>; Kimi/Moonshot Platform API keys use
<code className="inline">https://api.moonshot.ai/v1</code> with
<code className="inline">kimi-k2.6</code>.
Open-model platform direction: CodeWhale is expanding support for
<strong> OpenRouter</strong>, <strong> Hugging Face</strong>, and <strong> self-hosted</strong> models,
giving you full sovereignty over model choice from cloud APIs to local deployments.
</p>
</section>
@@ -557,4 +547,4 @@ command = "~/.deepseek/hooks/pre.sh" # / message_submit / mode_change /
)}
</>
);
}
}
+10 -12
View File
@@ -23,7 +23,7 @@ const faqEn: FaqItem[] = [
q: "What is CodeWhale?",
a: (
<>
CodeWhale is a terminal-native coding agent for open-source and open-weight models. It runs from the <code className="inline">codewhale</code> command, streams reasoning blocks, edits local workspaces with approval gates, and can auto-route each turn to the right model and thinking level. DeepSeek V4 is the first-class model path; v0.8.45 also ships Moonshot/Kimi, OpenRouter, NVIDIA NIM, OpenAI-compatible, AtlasCloud, Wanjie Ark, Novita, Fireworks, SGLang, vLLM, and Ollama paths.
CodeWhale is a terminal-native coding agent for open-source and open-weight models. It runs from the <code className="inline">codewhale</code> command, streams reasoning blocks, edits local workspaces with approval gates, and can auto-route each turn to the right model and thinking level. DeepSeek V4 is the first-class model path; OpenRouter is ready. Hugging Face, self-hosted, and other open-model surfaces are on the roadmap.
</>
),
sources: ["README.md", "docs/ARCHITECTURE.md"],
@@ -112,13 +112,12 @@ codewhale doctor # full connectivity check`}
<p className="mb-2">CodeWhale ships with these built-in providers:</p>
<ul className="list-disc pl-5 space-y-1 text-sm text-ink-soft mb-3">
<li><strong>DeepSeek</strong> — first-class, native API. Reasoning streaming, cache metrics, thinking effort control.</li>
<li><strong>Moonshot/Kimi</strong> — Kimi Code and Kimi/Moonshot Platform API-key modes.</li>
<li><strong>OpenRouter</strong> — unified API for DeepSeek models and more.</li>
<li><strong>OpenAI-compatible</strong>, <strong>NVIDIA NIM</strong>, <strong>AtlasCloud</strong>, <strong>Wanjie Ark</strong>, <strong>Novita</strong>, <strong>Fireworks</strong>, <strong>SGLang</strong>, <strong>vLLM</strong>, <strong>Ollama</strong></li>
<li><strong>OpenAI</strong>, <strong>NVIDIA NIM</strong>, <strong>Novita</strong>, <strong>Fireworks</strong>, <strong>sglang</strong>, <strong>vLLM</strong>, <strong>Ollama</strong></li>
</ul>
<p>
Set the corresponding env var (e.g. <code className="inline">OPENROUTER_API_KEY</code>) and your provider in <code className="inline">~/.deepseek/config.toml</code>.
SGLang, vLLM, and Ollama can also run against self-hosted OpenAI-compatible endpoints.
Hugging Face, ZenMux, and self-hosted OpenAI-compatible endpoints are on the roadmap.
</p>
</>
),
@@ -157,7 +156,7 @@ default_text_model = "openrouter/deepseek/deepseek-v4-pro"`}
Yes. Use the <code className="inline">vllm</code>, <code className="inline">sglang</code>, or <code className="inline">ollama</code> providers with your local endpoint.
For OpenAI-compatible endpoints (llama.cpp server, text-generation-webui, Aphrodite, etc.), you can use the <code className="inline">openai</code> provider with a custom <code className="inline">base_url</code>.
CodeWhale also respects <code className="inline">DEEPSEEK_ALLOW_INSECURE_HTTP=true</code> for local HTTP endpoints.
Direct Hugging Face TGI discovery remains roadmap work.
Full Hugging Face TGI/vLLM integration is on the roadmap.
</>
),
sources: ["#574", "#1303", "docs/CONFIGURATION.md"],
@@ -212,7 +211,7 @@ default_text_model = "openrouter/deepseek/deepseek-v4-pro"`}
a: (
<>
CodeWhale runs entirely on your machine. No telemetry, no cloud processing of your code.
Sandbox backends: <strong>seatbelt</strong> (macOS), <strong>landlock</strong> (Linux). Windows keeps the same approval and terminal runtime protections, but does not advertise OS-level filesystem isolation yet.
Sandbox backends: <strong>seatbelt</strong> (macOS), <strong>landlock</strong> (Linux), restricted tokens (Windows).
Workspace boundaries default to <code className="inline">--workspace</code>. <code className="inline">/trust</code> lifts them.
Approval mode is configurable per session. All credential/approval/elevation events are written to <code className="inline">~/.deepseek/audit.log</code>.
</>
@@ -337,7 +336,7 @@ const faqZh: FaqItem[] = [
q: "CodeWhale 是什么?",
a: (
<>
CodeWhale 是一个面向开源模型的终端原生编程智能体。通过 <code className="inline">codewhale</code> 命令启动,流式输出推理块,在有审批门槛的情况下编辑本地工作区,并可为每个回合自动选择最合适的模型和推理深度。DeepSeek V4 是一级模型路径;v0.8.45 也内置 Moonshot/Kimi、OpenRouter、NVIDIA NIM、OpenAI 兼容、AtlasCloud、Wanjie Ark、Novita、Fireworks、SGLang、vLLM 和 Ollama 路径
CodeWhale 是一个面向开源模型的终端原生编程智能体。通过 <code className="inline">codewhale</code> 命令启动,流式输出推理块,在有审批门槛的情况下编辑本地工作区,并可为每个回合自动选择最合适的模型和推理深度。DeepSeek V4 是一级模型路径;OpenRouter 已就绪。Hugging Face、自托管等开放模型接口已在路线图中
</>
),
sources: ["README.md", "docs/ARCHITECTURE.md"],
@@ -425,13 +424,12 @@ codewhale doctor # 完整连接检查`}
<p className="mb-2">CodeWhale </p>
<ul className="list-disc pl-5 space-y-1 text-sm text-ink-soft mb-3">
<li><strong>DeepSeek</strong> API</li>
<li><strong>Moonshot/Kimi</strong> Kimi Code Kimi/Moonshot API key </li>
<li><strong>OpenRouter</strong> API访 DeepSeek </li>
<li><strong>OpenAI </strong><strong>NVIDIA NIM</strong><strong>AtlasCloud</strong><strong>Wanjie Ark</strong><strong>Novita</strong><strong>Fireworks</strong><strong>SGLang</strong><strong>vLLM</strong><strong>Ollama</strong></li>
<li><strong>OpenAI</strong><strong>NVIDIA NIM</strong><strong>Novita</strong><strong>Fireworks</strong><strong>sglang</strong><strong>vLLM</strong><strong>Ollama</strong></li>
</ul>
<p>
<code className="inline">OPENROUTER_API_KEY</code> <code className="inline">~/.deepseek/config.toml</code>
SGLangvLLM Ollama OpenAI
Hugging FaceZenMux OpenAI 线
</p>
</>
),
@@ -470,7 +468,7 @@ default_text_model = "openrouter/deepseek/deepseek-v4-pro"`}
使 <code className="inline">vllm</code><code className="inline">sglang</code> <code className="inline">ollama</code>
OpenAI llama.cpp servertext-generation-webui 使 <code className="inline">openai</code> <code className="inline">base_url</code>
CodeWhale <code className="inline">DEEPSEEK_ALLOW_INSECURE_HTTP=true</code> HTTP
Hugging Face TGI 线
Hugging Face TGI/vLLM 线
</>
),
sources: ["#574", "#1303", "docs/CONFIGURATION.md"],
@@ -525,7 +523,7 @@ default_text_model = "openrouter/deepseek/deepseek-v4-pro"`}
a: (
<>
CodeWhale
<strong>seatbelt</strong>macOS<strong>landlock</strong>LinuxWindows OS
<strong>seatbelt</strong>macOS<strong>landlock</strong>LinuxWindows
<code className="inline">--workspace</code><code className="inline">/trust</code>
// <code className="inline">~/.deepseek/audit.log</code>
</>
+31 -26
View File
@@ -15,7 +15,7 @@ const FALLBACK_STATS: RepoStats = {
forks: 0,
openIssues: 0,
openPulls: 0,
contributors: 99,
contributors: 98,
fetchedAt: new Date().toISOString(),
};
@@ -87,15 +87,15 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
<h1 className="font-display tracking-crisp">
{isZh
? "面向开源模型的终端编程智能体。"
: "The terminal coding agent for open models."}
? "DeepSeek V4 的最强智能体运行框架。"
: "The most agentic harness for DeepSeek V4."}
</h1>
<p className="mt-6 text-lg text-ink-soft leading-relaxed max-w-2xl">
<span className="font-cjk text-indigo font-semibold">CodeWhale</span>
{isZh
? " 是面向 DeepSeek V4 及其他开放权重模型的终端原生编程智能体。它读改文件、跑测试、调用 MCP 服务器,并通过审批、工作区边界和平台沙箱控制风险。"
: " is a terminal-native coding agent for DeepSeek V4 and other open-weight models. It reads and edits files, runs tests, calls MCP servers, and controls risk through approvals, workspace boundaries, and platform sandboxes."}
? " 是围绕 DeepSeek V4 Pro 和 Flash 构建的运行框架。规则、工具、证据和反馈循环——帮助模型持续工作,并且不断进步。DeepSeek V4 参与了部分编写。更好的框架让 V4 更有效,更有效的 V4 又让框架变得更好——这是个正向循环。"
: " is a harness built around DeepSeek V4 Pro and Flash. Rules, tools, evidence, and feedback loops that help the model keep working — and keep improving. DeepSeek V4 helped write parts of it. A better harness makes V4 more effective, and a more effective V4 makes the harness better — it loops."}
</p>
<div className="mt-8 flex flex-wrap items-stretch sm:items-center gap-3">
@@ -155,7 +155,7 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
)}
</pre>
<div className="mt-3 flex items-center justify-between text-[0.7rem] font-mono text-ink-mute">
<span>{isZh ? "Linux / macOS / Windows x64" : "Linux / macOS / Windows x64"}</span>
<span>{isZh ? "需要 Node 或 Rust 1.88+" : "needs Node or Rust 1.88+"}</span>
<Link href={isZh ? "/zh/install" : "/install"} className="text-indigo hover:underline">{isZh ? "其他方式 →" : "other ways →"}</Link>
</div>
</div>
@@ -178,48 +178,48 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
{isZh ? (
<>
<div className="p-6">
<div className="eyebrow mb-3">01 · </div>
<h3 className="font-display text-xl mb-3"></h3>
<div className="eyebrow mb-3">01 · </div>
<h3 className="font-display text-xl mb-3"></h3>
<p className="text-sm text-ink-soft leading-[1.9]">
Claude CodeCodex CLI
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">02 · </div>
<h3 className="font-display text-xl mb-3">DeepSeek V4 </h3>
<div className="eyebrow mb-3">02 · </div>
<h3 className="font-display text-xl mb-3"></h3>
<p className="text-sm text-ink-soft leading-[1.9]">
DeepSeek APIMoonshot/KimiOpenRouterNVIDIA NIMvLLMSGLang
LSP
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">03 · </div>
<h3 className="font-display text-xl mb-3">PlanAgentYOLO</h3>
<div className="eyebrow mb-3">03 · </div>
<h3 className="font-display text-xl mb-3"></h3>
<p className="text-sm text-ink-soft leading-[1.9]">
Plan Agent YOLO macOS 使 seatbeltLinux 使 landlockWindows
</p>
</div>
</>
) : (
<>
<div className="p-6">
<div className="eyebrow mb-3">01 · terminal agent</div>
<h3 className="font-display text-xl mb-3">A coding agent, not a chat box</h3>
<div className="eyebrow mb-3">01 · constitutional</div>
<h3 className="font-display text-xl mb-3">User intent above everything</h3>
<p className="text-sm text-ink-soft leading-relaxed">
Same loop as Claude Code or Codex CLI: reads, edits, runs tests, reports back. Keyboard-driven, lives in your terminal.
Live evidence above assumptions. Verification above confidence. A clear chain of authority so the model never guesses which instruction to follow.
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">02 · open models first</div>
<h3 className="font-display text-xl mb-3">DeepSeek V4, deeply integrated</h3>
<div className="eyebrow mb-3">02 · feedback-driven</div>
<h3 className="font-display text-xl mb-3">Failure is signal, not a dead end</h3>
<p className="text-sm text-ink-soft leading-relaxed">
Native DeepSeek API: reasoning streaming, cache metrics, thinking-effort control. Moonshot/Kimi, OpenRouter, NVIDIA NIM, vLLM, and SGLang are also supported.
Failed commands, failing tests, LSP errors. The harness makes failure legible. Each beat is information the model can tune against, turn after turn.
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">03 · controlled</div>
<h3 className="font-display text-xl mb-3">Plan, Agent, YOLO</h3>
<div className="eyebrow mb-3">03 · self-correcting</div>
<h3 className="font-display text-xl mb-3">Recovery built into the environment</h3>
<p className="text-sm text-ink-soft leading-relaxed">
Plan reads only. Agent asks before risky ops. YOLO auto-approves. macOS uses seatbelt, Linux uses landlock; Windows keeps the same approval and terminal protections.
Sub-agents, rollback, session forks, handoffs. The model doesn't have to get everything right the first time. Recovery is built into the environment.
</p>
</div>
</>
@@ -260,6 +260,11 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
? "100:1 "
: "100-to-1 is not a throughput benchmark. It is a contribution shape: one prompt, many agent-hours, one small patch, one maintainer review."}
</p>
<p className={`mt-4 text-sm text-ink-soft ${isZh ? "leading-[1.9] tracking-wide" : "leading-relaxed"}`}>
{isZh
? " DeepSeek V4 V4 "
: "The harness does the heavy lifting: constitutional prompts, structured trust, feedback loops, and handoffs that survive the session. The model is free to focus on the task. And because DeepSeek V4 helped build this harness, each improvement makes V4 more effective within it which makes the next improvement easier."}
</p>
<div className="mt-6 flex flex-wrap gap-3">
<Link href={isZh ? "/zh/contribute#recursive-harness" : "/contribute#recursive-harness"} className="px-4 py-2 bg-ink text-paper font-mono text-sm uppercase tracking-wider hover:bg-indigo transition-colors">
{isZh ? " " : "Run the prompt "}
@@ -325,7 +330,7 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
B -->|tool call| T["read_file · edit_file · grep<br/>apply_patch · exec_shell<br/>mcp_&lt;server&gt;_&lt;tool&gt;"]
T -->|approval Y/N| P["审批对话框<br/>approval dialog"]
P --> B
T -->|exec| S["平台控制<br/>seatbelt · landlock · approvals"]
T -->|exec| S["沙箱<br/>seatbelt · landlock · win32"]
classDef accent fill:#e9eefe,stroke:#0e0e10,stroke-width:1px;
classDef api fill:#0e0e10,stroke:#0e0e10,color:#ffffff;
class C api;
@@ -337,7 +342,7 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
B -->|tool call| T["read_file · edit_file · grep<br/>apply_patch · exec_shell<br/>mcp_&lt;server&gt;_&lt;tool&gt;"]
T -->|approval Y/N| P["Approval<br/>dialog"]
P --> B
T -->|exec| S["Platform controls<br/>seatbelt · landlock · approvals"]
T -->|exec| S["Sandbox<br/>seatbelt · landlock · win32"]
classDef accent fill:#e9eefe,stroke:#0e0e10,stroke-width:1px;
classDef api fill:#0e0e10,stroke:#0e0e10,color:#ffffff;
class C api;
+13 -13
View File
@@ -26,12 +26,12 @@ const tracksEn = [
{ title: "Sub-agent parallel execution", note: "agent_open / agent_eval / agent_close; up to 10 concurrent sessions with bounded result handles" },
{ title: "RLM batched processing", note: "Persistent sandboxed Python REPL with 116 cheap parallel children for long-input analysis" },
{ title: "Three operating modes", note: "Plan (read-only), Agent (default), YOLO (auto-approved); orthogonal suggest / auto / never approval" },
{ title: "Per-platform controls", note: "seatbelt (macOS), landlock (Linux); Windows keeps approvals and terminal/runtime protections while OS sandbox work remains tracked" },
{ title: "Per-platform sandbox", note: "seatbelt (macOS), landlock (Linux); Windows containment via restricted tokens (limited)" },
{ title: "Durable sessions + tasks", note: "Save, resume, rollback; background task queue with replayable timelines under ~/.deepseek/tasks/" },
{ title: "Bidirectional MCP", note: "Consume tools from external servers; expose as server via `codewhale mcp`; ~/.deepseek/mcp.json" },
{ title: "Bidirectional MCP", note: "Consume tools from external servers; expose as server via `deepseek mcp`; ~/.deepseek/mcp.json" },
{ title: "Skills + unified slash palette", note: "~/.deepseek/skills/ auto-loading; /help, /mode, /status, /config, /trust, /feedback" },
{ title: "v0.8.45 provider surface", note: "DeepSeek, NVIDIA NIM, OpenAI-compatible, AtlasCloud, Wanjie Ark, OpenRouter, Novita, Fireworks, Moonshot/Kimi, SGLang, vLLM, and Ollama" },
{ title: "Moonshot/Kimi API-key setup", note: "Kimi Code plan and Kimi/Moonshot Platform API-key paths for Moonshot/Kimi sessions" },
{ title: "OpenRouter provider", note: "First-class OpenRouter integration with 300+ models across dozens of providers" },
{ title: "Multi-provider support", note: "Hot-swap between providers (DeepSeek, OpenAI, Anthropic, OpenRouter) per session" },
],
},
{
@@ -43,8 +43,8 @@ const tracksEn = [
{ title: "Memory typed store", note: "SQLite + FTS5 backend with graph-structured agent memory and multi-signal recall (#534#536)" },
{ title: "Feishu / Lark bot", note: "Chat-platform frontend over the existing runtime API (#757)" },
{ title: "Chinese-market & i18n", note: "Locale-aware UI, platform refinements, region-specific search backends (#755)" },
{ title: "Model Lab", note: "Curated model discovery and benchmarking for open-weight and self-hosted workflows" },
{ title: "Provider billing and catalogs", note: "/balance capability layer plus richer live model catalogs for providers that expose listing endpoints" },
{ title: "Hugging Face model discovery + Model Lab", note: "Browse, download, and manage models from Hugging Face Hub directly in the TUI" },
{ title: "ZenMux / OpenAI-compatible providers", note: "Bring any OpenAI-compatible endpoint (vLLM, LiteLLM, Ollama, local) as a first-class provider" },
],
},
{
@@ -92,12 +92,12 @@ const tracksZh = [
{ title: "子 Agent 并行执行", note: "agent_open / agent_eval / agent_close;最多 10 个并发会话,通过 var_handle 有界读取结果" },
{ title: "RLM 批量处理", note: "持久沙箱 Python REPL,支持 1–16 路廉价并行子调用,处理长文本分析" },
{ title: "三种运行模式", note: "Plan(只读)、Agent(默认)、YOLO(自动批准);审批模式正交(建议/自动/拒绝)" },
{ title: "跨平台控制", note: "seatbeltmacOS)、landlockLinux);Windows 保留审批与终端运行时保护,OS 沙箱仍在跟踪中" },
{ title: "跨平台沙箱", note: "seatbeltmacOS)、landlockLinux);Windows 通过受限令牌实现基础隔离(功能有限)" },
{ title: "持久化会话 + 后台任务", note: "保存、恢复、回滚;后台任务队列,可回放时间线,位于 ~/.deepseek/tasks/" },
{ title: "双向 MCP 协议", note: "消费外部服务器工具;通过 `codewhale mcp` 暴露为服务器;~/.deepseek/mcp.json" },
{ title: "双向 MCP 协议", note: "消费外部服务器工具;通过 `deepseek mcp` 暴露为服务器;~/.deepseek/mcp.json" },
{ title: "技能 + 统一命令面板", note: "~/.deepseek/skills/ 自动加载;/help、/mode、/status、/config、/trust、/feedback" },
{ title: "v0.8.45 提供商表面", note: "DeepSeek、NVIDIA NIM、OpenAI 兼容、AtlasCloud、Wanjie Ark、OpenRouter、Novita、Fireworks、Moonshot/Kimi、SGLang、vLLM、Ollama" },
{ title: "Moonshot/Kimi API-key 设置", note: "Kimi Code 会员与 Kimi/Moonshot 平台 API key 路径" },
{ title: "OpenRouter 提供商", note: "原生集成 OpenRouter,支持 300+ 模型,覆盖数十个提供商" },
{ title: "多提供商支持", note: "按会话动态切换提供商(DeepSeek、OpenAI、Anthropic、OpenRouter" },
],
},
{
@@ -109,8 +109,8 @@ const tracksZh = [
{ title: "记忆类型化存储", note: "SQLite + FTS5 后端,图结构 Agent 记忆,多信号召回(#534#536" },
{ title: "飞书 / Lark 机器人", note: "基于现有 runtime API 的聊天平台前端(#757" },
{ title: "中国市场与国际化改进", note: "本地化 UI、平台优化、区域搜索引擎(#755)" },
{ title: "模型实验室", note: "面向开放权重和自托管工作流的模型发现与基准测试" },
{ title: "提供商账单与目录", note: "/balance 能力层,以及对支持列表接口的提供商提供更完整的实时模型目录" },
{ title: "Hugging Face 模型发现 + 模型实验室", note: "在 TUI 中直接浏览、下载和管理 Hugging Face Hub 上的模型" },
{ title: "ZenMux / OpenAI 兼容提供商", note: "将任意 OpenAI 兼容端点(vLLM、LiteLLM、Ollama、本地模型)作为一级提供商接入" },
],
},
{
@@ -339,4 +339,4 @@ export default async function RoadmapPage({ params }: { params: Promise<{ locale
)}
</>
);
}
}
+3 -3
View File
@@ -33,13 +33,13 @@ const cjk = Noto_Serif_SC({
});
export const metadata: Metadata = {
title: "CodeWhale · 深度求索 终端",
title: "CodeWhale · DeepSeek V4 智能体运行框架",
description:
"Terminal-native coding agent for open-source and open-weight models across providers. DeepSeek V4 is first-class. Community site for installation, docs, roadmap, and live activity.",
"The most agentic harness for DeepSeek V4. Constitutional hierarchy, structured trust, verification, and recovery — rules, tools, and feedback loops that help the model keep working.",
metadataBase: new URL("https://codewhale.net"),
openGraph: {
title: "CodeWhale",
description: "Terminal-native coding agent for open-source and open-weight models across providers.",
description: "The most agentic harness for DeepSeek V4. Constitutional hierarchy, structured trust, verification, and recovery.",
url: "https://codewhale.net",
siteName: "CodeWhale",
type: "website",