refactor(web): restrain homepage + tighten contribute around the 100-to-1 spine

Restructured the homepage so "What it actually is" sits directly before
"100-to-1", putting the spine back-to-back. Cut the redundant "Open
model platform" section (duplicated the provider chip list), the
fabricated "34k+ Stars / 98+ Contributors" cells in the Join block
(now uses real version / providers / license from facts.generated),
defensive "DeepSeek is not deprecated" copy, the speculative Unsloth
roadmap line, the stale hardcoded 2026-05-24 eyebrow, the margin
glyph, and a couple of hero pills. Today's Dispatch moves below the
diagram as a single editorial column (the live ticker already covers
recent activity). Contribute page drops the arbitrary "Section 05"
eyebrow and the double-language h1; recursive-harness intro mirrors
the homepage spine. EN/ZH parity preserved (6 sections home, 5
contribute, identical CTA structure).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hunter Bown
2026-05-24 11:31:40 -05:00
parent f592d7085a
commit 37a1d284a6
2 changed files with 282 additions and 304 deletions
+76 -13
View File
@@ -1,4 +1,5 @@
import Link from "next/link";
import { InstallCodeBlock } from "@/components/install-code-block";
import { Seal } from "@/components/seal";
export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
@@ -74,10 +75,45 @@ const stepsZh = [
},
];
const recursivePromptEn = `You are running inside CodeWhale on DeepSeek V4 Pro.
Improve CodeWhale itself by finding exactly one small, reviewable friction point in the harness, docs, tests, or contributor workflow.
Prefer bug fixes, regression tests, clearer docs, sharper error messages, or one narrow contributor-experience improvement. Do not change product direction, provider policy, telemetry, sponsorship, branding, auth, sandbox, release/publishing, or global prompts unless the maintainer explicitly asked for that exact scope.
Working rules:
1. Inspect the repo and current open issues before editing.
2. Choose one issue, TODO, failing test, docs ambiguity, confusing error, or repeated papercut.
3. State the exact target and why it is small enough to review.
4. Reproduce the problem when possible.
5. Make the minimum patch.
6. Run the smallest relevant checks first.
7. Stop after one patch.
Output: issue summary, files changed, checks run, risks or follow-up, and a suggested PR title.`;
const recursivePromptZh = `你正在 DeepSeek V4 Pro 驱动的 CodeWhale 中运行。
请改进 CodeWhale 本身:只找一个很小、可审查的摩擦点,范围可以是智能体框架、文档、测试或贡献流程。
优先处理 bug 修复、回归测试、文档澄清、错误信息改进,或一个很窄的贡献者体验问题。除非维护者明确要求,否则不要改产品方向、提供商策略、遥测、赞助、品牌、认证、沙箱、发布流程或全局提示词。
工作规则:
1. 编辑前先阅读仓库和当前 open issues。
2. 只选择一个 issue、TODO、失败测试、文档歧义、错误信息或重复出现的小摩擦点。
3. 先说明目标是什么,以及为什么它足够小、适合审查。
4. 尽可能复现问题。
5. 写最小补丁。
6. 先运行最小相关检查。
7. 一个补丁完成后就停止。
输出:发现的问题摘要、修改文件、已运行检查、风险或后续事项,以及建议的 PR 标题。`;
export default async function ContributePage({ params }: { params: Promise<{ locale: string }> }) {
const { locale } = await params;
const isZh = locale === "zh";
const steps = isZh ? stepsZh : stepsEn;
const recursivePrompt = isZh ? recursivePromptZh : recursivePromptEn;
return (
<>
@@ -86,14 +122,11 @@ export default async function ContributePage({ params }: { params: Promise<{ loc
<section className="mx-auto max-w-[1400px] px-6 pt-12 pb-8">
<div className="flex items-baseline gap-4 mb-3">
<Seal char="参" />
<div className="eyebrow">Section 05 · </div>
<div className="eyebrow"> · Contribute</div>
</div>
<h1 className="font-display tracking-crisp">
<span className="font-cjk text-indigo text-5xl ml-2">Contribute</span>
</h1>
<h1 className="font-display tracking-crisp"></h1>
<p className="mt-5 max-w-3xl text-ink-soft text-lg leading-[1.9] tracking-wide">
CLA
PR
CLA PR
</p>
</section>
@@ -113,6 +146,23 @@ export default async function ContributePage({ params }: { params: Promise<{ loc
</ol>
</section>
<section id="recursive-harness" className="mx-auto max-w-[1400px] px-6 py-16 grid lg:grid-cols-12 gap-10 min-w-0">
<div className="lg:col-span-4 min-w-0">
<Seal char="递" />
<div className="eyebrow mt-5 mb-3">100:1 · Recursive harness</div>
<h2 className="font-display text-3xl"> CodeWhale CodeWhale</h2>
<p className="mt-4 text-ink-soft leading-[1.9] tracking-wide">
100:1 DeepSeek V4 Pro
</p>
<Link href="https://github.com/Hmbown/CodeWhale/blob/main/docs/RECURSIVE_SELF_IMPROVEMENT.md" className="inline-block mt-5 font-mono text-[0.72rem] uppercase tracking-wider text-indigo hover:underline">
</Link>
</div>
<div className="lg:col-span-8 min-w-0">
<InstallCodeBlock cmd={recursivePrompt} copyLabel="复制" copiedLabel="已复制" />
</div>
</section>
{/* 规约 */}
<section className="mx-auto max-w-[1400px] px-6 py-16 grid lg:grid-cols-12 gap-10">
<div className="lg:col-span-5">
@@ -193,15 +243,11 @@ gh pr create --fill`}
<section className="mx-auto max-w-[1400px] px-6 pt-12 pb-8">
<div className="flex items-baseline gap-4 mb-3">
<Seal char="参" />
<div className="eyebrow">Section 05 · </div>
<div className="eyebrow">Contribute · </div>
</div>
<h1 className="font-display tracking-crisp">
Contribute <span className="font-cjk text-indigo text-5xl ml-2"></span>
</h1>
<h1 className="font-display tracking-crisp">Contribute</h1>
<p className="mt-5 max-w-3xl text-ink-soft text-lg leading-relaxed">
No CLA. No sponsor lockouts. The maintainer is one person; please be the kind of contributor
you'd want to receive. Specifically: small focused PRs, real test coverage, and prose that
tells the reviewer what you were thinking.
No CLA. No sponsor lockouts. One maintainer. Small, focused PRs land fastest please bring real test coverage and prose that tells the reviewer what you were thinking.
</p>
</section>
@@ -221,6 +267,23 @@ gh pr create --fill`}
</ol>
</section>
<section id="recursive-harness" className="mx-auto max-w-[1400px] px-6 py-16 grid lg:grid-cols-12 gap-10 min-w-0">
<div className="lg:col-span-4 min-w-0">
<Seal char="递" />
<div className="eyebrow mt-5 mb-3">100-to-1 model · </div>
<h2 className="font-display text-3xl">Let CodeWhale improve CodeWhale</h2>
<p className="mt-4 text-ink-soft leading-relaxed">
The 100-to-1 prompt turns DeepSeek V4 Pro's cached attention, tool use, and sub-agents into one small, reviewable patch — not a pile of ideas.
</p>
<Link href="https://github.com/Hmbown/CodeWhale/blob/main/docs/RECURSIVE_SELF_IMPROVEMENT.md" className="inline-block mt-5 font-mono text-[0.72rem] uppercase tracking-wider text-indigo hover:underline">
Full multilingual prompt →
</Link>
</div>
<div className="lg:col-span-8 min-w-0">
<InstallCodeBlock cmd={recursivePrompt} />
</div>
</section>
<section className="mx-auto max-w-[1400px] px-6 py-16 grid lg:grid-cols-12 gap-10">
<div className="lg:col-span-5">
<Seal char="规" />
+206 -291
View File
@@ -4,7 +4,6 @@ import { getDispatch, getEnv } from "@/lib/kv";
import { getFacts } from "@/lib/facts";
import { Ticker } from "@/components/ticker";
import { StatGrid } from "@/components/stat-grid";
import { FeedCard } from "@/components/feed-card";
import { Seal } from "@/components/seal";
import { MermaidDiagram } from "@/components/mermaid-diagram";
import type { CuratedDispatch, FeedItem, RepoStats } from "@/lib/types";
@@ -22,26 +21,26 @@ const FALLBACK_STATS: RepoStats = {
const FALLBACK_DISPATCH_EN: CuratedDispatch = {
generatedAt: new Date().toISOString(),
headline: "CodeWhale — the terminal coding agent for open models",
headline: "Quiet release week — install paths and contributor guides up to date.",
summary:
"CodeWhale runs in your terminal, talks to DeepSeek V4 and other open-weight models through any provider, and respects your filesystem. The dispatch below is regenerated by DeepSeek V4-Flash on a six-hour cron — you'll see real repo activity here once the cron runs.",
"This dispatch is regenerated by DeepSeek V4-Flash on a six-hour cron. Until the cron fills in fresh repo activity, the static links below are the best starting points.",
highlights: [
{ title: "Read the install guide", href: "/install", tag: "shipped", blurb: "npm, Cargo, Homebrew, direct download — pick your path." },
{ title: "Browse open issues", href: "https://github.com/Hmbown/CodeWhale/issues", tag: "opened", blurb: "Triaged on GitHub — start with anything labelled 'good first issue'." },
{ title: "Review the roadmap", href: "/roadmap", tag: "discussion", blurb: "What's confirmed, what's being weighed, what's been ruled out." },
{ title: "Install", href: "/install", tag: "shipped", blurb: "npm, Cargo, Homebrew, or a direct download." },
{ title: "Open issues", href: "https://github.com/Hmbown/CodeWhale/issues", tag: "opened", blurb: "Start with anything labelled good first issue." },
{ title: "Roadmap", href: "/roadmap", tag: "discussion", blurb: "What is confirmed, what is being weighed, what is ruled out." },
],
movers: [],
};
const FALLBACK_DISPATCH_ZH: CuratedDispatch = {
generatedAt: new Date().toISOString(),
headline: "CodeWhale — 面向开源模型的终端编程智能体",
headline: "本周发布平稳——安装路径和贡献指南已同步。",
summary:
"CodeWhale 运行在你的终端中,接入 DeepSeek V4 等开源模型,对文件系统保持克制。以下「今日要闻」由 DeepSeek V4-Flash 每六小时自动生成——仓库动态时会实时更新。",
"「今日要闻」由 DeepSeek V4-Flash 每六小时重新生成。在 cron 写入真实仓库动态之前,下面的固定链接是最实用的入口。",
highlights: [
{ title: "阅读安装指南", href: "/zh/install", tag: "shipped", blurb: "npm、Cargo、Homebrew直接下载——任选其一。" },
{ title: "浏览开放议题", href: "https://github.com/Hmbown/CodeWhale/issues", tag: "opened", blurb: "在 GitHub 上查看——从标记为 good first issue 的议题开始。" },
{ title: "查看路线图", href: "/zh/roadmap", tag: "discussion", blurb: "已确认、审议中、以及已排除的功能规划。" },
{ title: "安装", href: "/zh/install", tag: "shipped", blurb: "npm、Cargo、Homebrew,或直接下载。" },
{ title: "开放议题", href: "https://github.com/Hmbown/CodeWhale/issues", tag: "opened", blurb: " good first issue 标签开始。" },
{ title: "路线图", href: "/zh/roadmap", tag: "discussion", blurb: "已确认、审议中、以及已排除的功能。" },
],
movers: [],
};
@@ -72,33 +71,31 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
/* keep fallback */
}
const highlights = isZh && dispatch.highlightsZh ? dispatch.highlightsZh : dispatch.highlights;
return (
<>
<Ticker items={feed} />
{/* HERO */}
<section className="relative overflow-hidden">
<div className="margin-glyph right-[-2rem] top-[2rem] hidden lg:block"></div>
<section className="relative">
<div className="mx-auto max-w-[1400px] px-4 sm:px-6 pt-10 sm:pt-14 pb-12 grid lg:grid-cols-12 gap-10">
<div className="lg:col-span-8">
<div className="flex items-center gap-2 sm:gap-3 mb-6 flex-wrap">
<div className="lg:col-span-7">
<div className="mb-6">
<span className="pill pill-hot">DeepSeek V4 · 1M context</span>
<span className="pill pill-jade">OpenRouter</span>
<span className="pill pill-ghost">MIT licensed</span>
</div>
<h1 className="font-display tracking-crisp">
{isZh
? "开源模型的终端编程智能体。"
? "面向开源模型的终端编程智能体。"
: "The terminal coding agent for open models."}
</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 及其他开源/开放权重模型。它编辑文件、执行 Shell、调用 MCP 服务器、协调子智能体——并在你的文件系统沙箱内运行。DeepSeek API 直连、OpenRouter、Hugging Face 推理端点、自托管——任选你的接入方式。"
: " is a terminal-native coding agent for DeepSeek V4 and other open / open-weight models. It edits files, runs shells, calls MCP servers, coordinates sub-agents — and runs inside your filesystem sandbox. Native DeepSeek API, OpenRouter, Hugging Face inference, self-hosted — bring your own provider."}
? " 是面向 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 — all inside your filesystem sandbox."}
</p>
<div className="mt-8 flex flex-wrap items-stretch sm:items-center gap-3">
@@ -120,15 +117,8 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
>
{isZh ? "阅读文档" : "Docs"}
</Link>
<Link
href="/roadmap"
className="px-5 py-3 font-mono text-sm uppercase tracking-wider text-ink-mute hover:text-indigo transition-colors"
>
{isZh ? "路线图" : "Roadmap"}
</Link>
</div>
{/* Trust signals */}
<div className="mt-6 flex items-center gap-4 text-xs font-mono text-ink-mute flex-wrap">
<span>{isZh ? "独立维护者 Hmbown" : "Maintained by Hmbown"}</span>
<span className="hidden sm:inline">·</span>
@@ -138,42 +128,29 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
</div>
</div>
{/* hero side: install card */}
<div className="lg:col-span-4">
<div className="lg:col-span-5">
<div className="hairline-t hairline-b hairline-l hairline-r bg-paper p-5 relative">
<div className="absolute -top-3 left-4 bg-paper px-2 eyebrow">
{isZh ? "开始使用 · 一行安装" : "get started · 开始使用"}
{isZh ? "一行安装" : "one-line install"}
</div>
<pre className="code-block mt-2">
{isZh ? (
<>
<span className="comment"># npm Rust </span>{"\n"}
<span className="comment"># npm Rust </span>{"\n"}
<span className="prompt">$</span> npm install -g codewhale{"\n"}
<span className="prompt">$</span> codewhale{"\n"}
<br />
<span className="comment"># Cargo </span>{"\n"}
<span className="prompt">$</span> cargo install codewhale-cli --locked{"\n"}
<span className="prompt">$</span> codewhale{"\n"}
<br />
<span className="comment"># </span>{"\n"}
<span className="prompt">$</span> codewhale update{"\n"}
<br />
<span className="comment"># <span className="key">~/.deepseek/</span></span>
<span className="comment"># Cargo / Homebrew / </span>{"\n"}
<span className="comment"># <span className="key">/install</span></span>
</>
) : (
<>
<span className="comment"># npm install (recommended, no Rust toolchain)</span>{"\n"}
<span className="comment"># npm no Rust toolchain required</span>{"\n"}
<span className="prompt">$</span> npm install -g codewhale{"\n"}
<span className="prompt">$</span> codewhale{"\n"}
<br />
<span className="comment"># or Cargo install</span>{"\n"}
<span className="prompt">$</span> cargo install codewhale-cli --locked{"\n"}
<span className="prompt">$</span> codewhale{"\n"}
<br />
<span className="comment"># already installed? pull the latest</span>{"\n"}
<span className="prompt">$</span> codewhale update{"\n"}
<br />
<span className="comment"># first run sets up <span className="key">~/.deepseek/</span></span>
<span className="comment"># Cargo / Homebrew / direct download:</span>{"\n"}
<span className="comment"># <span className="key">/install</span></span>
</>
)}
</pre>
@@ -188,163 +165,140 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
<StatGrid stats={stats} />
{/* TODAY'S DISPATCH */}
{/* WHAT IT IS */}
<section className="mx-auto max-w-[1400px] px-6 py-16">
<div className="flex items-end justify-between mb-6 hairline-b pb-4">
<div>
<div className="eyebrow mb-2">{isZh ? "今日要闻" : "Today's Dispatch · 今日要闻"}</div>
<h2 className="font-display tabular text-ink-mute font-mono text-base">
{new Date(dispatch.generatedAt).toISOString().slice(0, 10)}
</h2>
</div>
<div className="text-right">
<div className="eyebrow">{isZh ? "由 … 编辑" : "Curated by"}</div>
<div className="font-mono text-sm">DeepSeek V4-Flash · 6h cron</div>
</div>
<div className="flex items-baseline gap-4 mb-8 hairline-b pb-4">
<Seal char="是" />
<h2 className="font-display">
{isZh ? "它到底是什么" : "What it actually is"}
</h2>
</div>
<div className="grid lg:grid-cols-12 gap-10">
{/* editorial */}
<div className="lg:col-span-7">
<article className="space-y-5">
<h3 className="font-display text-3xl leading-tight">
{isZh && dispatch.headlineZh ? dispatch.headlineZh : dispatch.headline}
</h3>
<p className={isZh ? "text-ink-soft leading-[1.9] tracking-wide text-[1.02rem]" : "text-ink-soft leading-relaxed text-[1.02rem]"}>
{isZh && dispatch.summaryZh ? dispatch.summaryZh : dispatch.summary}
</p>
<div className="hairline-t pt-5">
<div className="eyebrow mb-3">{isZh ? "要点" : "Highlights · 要点"}</div>
<ul className="divide-y divide-paper-line/40 hairline-t hairline-b">
{(isZh && dispatch.highlightsZh ? dispatch.highlightsZh : dispatch.highlights).map((h, i) => (
<li key={i} className="py-3 flex items-start gap-4">
<span className="font-mono text-[0.7rem] text-indigo uppercase tracking-widest pt-1 w-20 shrink-0">
{h.tag}
</span>
<div className="flex-1">
<Link href={h.href} className="body-link font-display text-lg leading-snug">
{h.title}
</Link>
<p className={`text-sm text-ink-soft mt-1 ${isZh ? "leading-[1.8]" : ""}`}>{h.blurb}</p>
</div>
</li>
))}
</ul>
<div className="grid md:grid-cols-3 gap-0 col-rule hairline-t hairline-b">
{isZh ? (
<>
<div className="p-6">
<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>
<p className="text-sm text-ink-soft leading-[1.9]">
DeepSeek APIOpenRouterNVIDIA NIMvLLMsglang
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">03 · </div>
<h3 className="font-display text-xl mb-3">PlanAgentYOLO</h3>
<p className="text-sm text-ink-soft leading-[1.9]">
Plan Agent YOLO seatbeltmacOSlandlockLinuxWindows
</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>
<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.
</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>
<p className="text-sm text-ink-soft leading-relaxed">
Native DeepSeek API: reasoning streaming, cache metrics, thinking-effort control. OpenRouter, NVIDIA NIM, vLLM, and sglang also supported.
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">03 · sandboxed</div>
<h3 className="font-display text-xl mb-3">Plan, Agent, YOLO</h3>
<p className="text-sm text-ink-soft leading-relaxed">
Plan reads only. Agent asks before risky ops. YOLO auto-approves. Sandboxed via seatbelt (macOS), landlock (Linux), restricted tokens (Windows).
</p>
</div>
</>
)}
</div>
{(isZh && dispatch.moversZh ? dispatch.moversZh : dispatch.movers).length > 0 && (
<div className="pt-2">
<div className="eyebrow mb-3">{isZh ? "进展" : "Movers · 进展"}</div>
<ul className="space-y-2">
{(isZh && dispatch.moversZh ? dispatch.moversZh : dispatch.movers).map((m) => (
<li key={m.number} className="flex items-baseline gap-3 text-sm">
<span className="font-mono text-indigo tabular">#{m.number}</span>
<Link href={m.href} className="font-medium hover:text-indigo">{m.title}</Link>
<span className="text-ink-mute"> {m.reason}</span>
</li>
))}
</ul>
</div>
)}
</article>
<div className="mt-8 hairline-t pt-6 flex flex-wrap items-baseline gap-x-6 gap-y-3">
<div className="eyebrow shrink-0">{isZh ? "内建提供商" : "Built-in providers"}</div>
<div className="flex flex-wrap gap-2">
{facts.providers.map((p) => (
<span key={p.id} className="font-mono text-xs px-2 py-1 hairline-t hairline-b hairline-l hairline-r text-ink-soft">
{p.label}
</span>
))}
</div>
{/* recent activity column */}
<aside className="lg:col-span-5">
<div className="hairline-t hairline-b hairline-l hairline-r bg-paper">
<div className="bg-ink text-paper px-4 py-2 flex items-center justify-between">
<div className="font-cjk text-sm tracking-wider">{isZh ? "最新活动" : "最新活动 · Recent activity"}</div>
<Link href={isZh ? "/zh/feed" : "/feed"} className="font-mono text-[0.7rem] uppercase tracking-wider hover:text-indigo">
{isZh ? "全部 →" : "All →"}
</Link>
</div>
<div className="px-4">
{feed.slice(0, 5).map((item) => (
<FeedCard key={item.url} item={item} />
))}
{feed.length === 0 && (
<div className="py-8 text-center text-sm text-ink-mute font-mono">
{isZh ? "暂无数据 · feed not loaded" : "feed not yet loaded · 暂无数据"}
</div>
)}
</div>
</div>
</aside>
</div>
</section>
{/* WHAT IT IS */}
{/* 100-TO-1 MODEL */}
<section className="bg-paper-deep hairline-t hairline-b">
<div className="mx-auto max-w-[1400px] px-6 py-16">
<div className="flex items-baseline gap-4 mb-8 hairline-b pb-4">
<Seal char="是" />
<h2 className="font-display">
{isZh ? "它到底是什么" : "What it actually is"}
</h2>
</div>
<div className="grid lg:grid-cols-12 gap-10 items-start">
<div className="lg:col-span-5">
<div className="flex items-baseline gap-4 mb-4">
<Seal char="百" />
<div className="eyebrow">{isZh ? "100:1 模型" : "100-to-1 model"}</div>
</div>
<h2 className="font-display">
{isZh ? "递归自我改进的开源智能体框架" : "A recursive harness, modelled at 100-to-1"}
</h2>
<p className={`mt-5 text-ink-soft ${isZh ? "leading-[1.9] tracking-wide" : "leading-relaxed"}`}>
{isZh
? "1948 年,Ralph Bown 用 100:1 的晶体管模型,把微小的结构讲清楚。CodeWhale 借用同样的形状:一个清晰提示词,把 DeepSeek V4 Pro 的缓存注意力、工具调用与子智能体凝结为一个可审查的小补丁。"
: "In 1948, Ralph Bown used a 100-to-1 model of the transistor to make a tiny structure legible. CodeWhale uses the same shape: one clear prompt turns DeepSeek V4 Pro's cached attention, tool use, and sub-agents into one small, reviewable patch."}
</p>
<p className={`mt-4 text-sm text-ink-mute ${isZh ? "leading-[1.9] tracking-wide" : "leading-relaxed"}`}>
{isZh
? "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>
<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 →"}
</Link>
<Link href="https://api-docs.deepseek.com/quick_start/pricing" className="px-4 py-2 font-mono text-sm uppercase tracking-wider text-ink-mute hover:text-indigo transition-colors">
{isZh ? "DeepSeek 价格 →" : "DeepSeek pricing →"}
</Link>
</div>
</div>
<div className="grid md:grid-cols-3 gap-0 col-rule hairline-t hairline-b">
{isZh ? (
<>
<div className="p-6">
<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>
<p className="text-sm text-ink-soft leading-[1.9]">
DeepSeek API OpenRouterHugging Face
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">03 · </div>
<h3 className="font-display text-xl mb-3">PlanAgentYOLO</h3>
<p className="text-sm text-ink-soft leading-[1.9]">
Plan Agent YOLO seatbelt (macOS)landlock (Linux)Windows
</p>
</div>
</>
) : (
<>
<div className="p-6">
<div className="eyebrow mb-3">01 · </div>
<h3 className="font-display text-xl mb-3">A coding agent, not a chat box</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.
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">02 · </div>
<h3 className="font-display text-xl mb-3">DeepSeek V4, deeply integrated</h3>
<p className="text-sm text-ink-soft leading-relaxed">
Native DeepSeek API is the first-class path: reasoning streaming, cache metrics, thinking effort control. OpenRouter, Hugging Face, self-hosted your call.
</p>
</div>
<div className="p-6">
<div className="eyebrow mb-3">03 · </div>
<h3 className="font-display text-xl mb-3">Plan, Agent, YOLO</h3>
<p className="text-sm text-ink-soft leading-relaxed">
Plan reads only. Agent asks for approval on risky ops. YOLO auto-approves. Sandboxed via seatbelt (macOS), landlock (Linux); Windows restricted tokens.
</p>
</div>
</>
)}
</div>
{/* Provider quick list */}
<div className="mt-8 hairline-t pt-6">
<div className="eyebrow mb-4">{isZh ? "内建提供商" : "Built-in providers"}</div>
<div className="flex flex-wrap gap-2">
{facts.providers.map((p) => (
<span key={p.id} className="font-mono text-xs px-2 py-1 hairline-t hairline-b hairline-l hairline-r text-ink-soft">
{p.label}
</span>
))}
<div className="lg:col-span-7 hairline-t hairline-b hairline-l hairline-r bg-paper">
<div className="bg-ink text-paper px-4 py-3 flex items-center justify-between gap-4">
<div className="font-mono text-sm uppercase tracking-widest">CodeWhale / 100:1</div>
<div className="font-cjk text-sm text-paper-deep/80">{isZh ? "演示模型" : "demonstration model"}</div>
</div>
<div className="grid sm:grid-cols-2 gap-0 col-rule">
{(isZh
? [
{ n: "01", t: "输入", d: "贡献者在 fork 中运行 CodeWhale,并给出递归改进提示词。" },
{ n: "02", t: "相互作用", d: "DeepSeek V4 Pro 读取代码库、调用工具、协调子智能体,前缀缓存让长程注意力保持低成本。" },
{ n: "03", t: "输出", d: "智能体返回一个可复现、可测试、可审查的小补丁。" },
{ n: "04", t: "反馈", d: "维护者审查、合并、发布。下一轮在更好的框架上开始。" },
]
: [
{ n: "01", t: "Input", d: "A contributor runs CodeWhale in a fork with the recursive harness prompt." },
{ n: "02", t: "Interaction", d: "DeepSeek V4 Pro reads the repo, uses tools, coordinates sub-agents; prefix caching keeps long attention cheap." },
{ n: "03", t: "Output", d: "The agent returns one reproducible, tested, reviewable patch." },
{ n: "04", t: "Feedback", d: "The maintainer reviews, lands, releases. The next run starts from a better harness." },
]
).map((item) => (
<div key={item.n} className="p-5">
<div className="font-mono text-[0.7rem] text-indigo uppercase tracking-widest mb-2">{item.n}</div>
<h3 className="font-display text-lg mb-2">{item.t}</h3>
<p className={`text-sm text-ink-soft ${isZh ? "leading-[1.9] tracking-wide" : "leading-relaxed"}`}>
{item.d}
</p>
</div>
))}
</div>
</div>
</div>
</div>
@@ -391,82 +345,48 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
}
/>
</div>
<p className="mt-3 text-xs font-mono text-ink-mute">
{isZh
? "示意图使用 Mermaid 标准格式渲染。"
: "Rendered with Mermaid standard syntax."}
</p>
</section>
{/* OPEN MODEL PLATFORM */}
{/* TODAY'S DISPATCH — slim editorial column */}
<section className="bg-paper-deep hairline-t hairline-b">
<div className="mx-auto max-w-[1400px] px-6 py-16">
<div className="flex items-baseline gap-4 mb-8 hairline-b pb-4">
<Seal char="开" />
<h2 className="font-display">
{isZh ? "开放模型平台" : "Open model platform"}
</h2>
<div className="mx-auto max-w-[1400px] px-6 py-14">
<div className="flex items-end justify-between mb-6 hairline-b pb-4 flex-wrap gap-3">
<div>
<div className="eyebrow mb-2">{isZh ? "今日要闻" : "Today's Dispatch"}</div>
<div className="font-mono text-sm tabular text-ink-mute">
{new Date(dispatch.generatedAt).toISOString().slice(0, 10)}
</div>
</div>
<div className="font-mono text-xs text-ink-mute">DeepSeek V4-Flash · 6h cron</div>
</div>
<p className="text-ink-soft max-w-3xl mb-8 leading-relaxed">
{isZh
? "CodeWhale 为 DeepSeek V4 构建了深度的一级集成——推理流、缓存指标、思考力度控制。同时,OpenRouter 已作为二级提供商就绪;Hugging Face 推理端点、自托管 OpenAI 兼容端点、本地模型服务也在规划中。目标明确:CodeWhale 应成为所有开放/开源编码模型的终端智能体。"
: "CodeWhale ships with deep first-class integration for DeepSeek V4 — reasoning streams, cache metrics, thinking effort control. OpenRouter is ready as a secondary provider. Hugging Face inference endpoints, self-hosted OpenAI-compatible endpoints, and local model serving are on the roadmap. The direction is clear: CodeWhale should be THE terminal agent for all open / open-weight coding models."}
</p>
<article className="grid lg:grid-cols-12 gap-x-10 gap-y-6 max-w-[1100px]">
<h3 className="lg:col-span-12 font-display text-2xl sm:text-3xl leading-tight">
{isZh && dispatch.headlineZh ? dispatch.headlineZh : dispatch.headline}
</h3>
<p className={`lg:col-span-7 text-ink-soft ${isZh ? "leading-[1.9] tracking-wide" : "leading-relaxed"}`}>
{isZh && dispatch.summaryZh ? dispatch.summaryZh : dispatch.summary}
</p>
<ul className="lg:col-span-5 space-y-3">
{highlights.slice(0, 3).map((h, i) => (
<li key={i} className="flex items-baseline gap-3">
<span className="font-mono text-[0.66rem] text-indigo uppercase tracking-widest w-16 shrink-0">
{h.tag}
</span>
<div>
<Link href={h.href} className="body-link font-display text-base leading-snug">
{h.title}
</Link>
<p className={`text-sm text-ink-soft mt-0.5 ${isZh ? "leading-[1.8]" : ""}`}>{h.blurb}</p>
</div>
</li>
))}
</ul>
</article>
<div className="grid md:grid-cols-3 gap-0 col-rule hairline-t hairline-b">
{isZh ? (
<>
<div className="p-6">
<div className="font-display text-xl mb-2 text-indigo">DeepSeek · </div>
<p className="text-sm text-ink-soft leading-[1.9]">
DeepSeek API FinDeepSeek
</p>
</div>
<div className="p-6">
<div className="font-display text-xl mb-2 text-indigo">OpenRouter · </div>
<p className="text-sm text-ink-soft leading-[1.9]">
OpenRouter DeepSeek API 使 OPENROUTER_API_KEY
</p>
</div>
<div className="p-6">
<div className="font-display text-xl mb-2 text-indigo"> · </div>
<p className="text-sm text-ink-soft leading-[1.9]">
Hugging Face vLLM / sglang / OllamaUnsloth 线
</p>
</div>
</>
) : (
<>
<div className="p-6">
<div className="font-display text-xl mb-2 text-indigo">DeepSeek · first-class</div>
<p className="text-sm text-ink-soft leading-relaxed">
Native DeepSeek API direct. Reasoning streaming, cache hit metrics, model auto-routing (Fin). DeepSeek is not deprecated.
</p>
</div>
<div className="p-6">
<div className="font-display text-xl mb-2 text-indigo">OpenRouter · ready</div>
<p className="text-sm text-ink-soft leading-relaxed">
Access DeepSeek models and more through OpenRouter. Unified API layer, usage-based billing. Set OPENROUTER_API_KEY and go.
</p>
</div>
<div className="p-6">
<div className="font-display text-xl mb-2 text-indigo">More · planned</div>
<p className="text-sm text-ink-soft leading-relaxed">
Hugging Face inference, self-hosted (vLLM / sglang / Ollama), Unsloth fine-tune adapters on the platform roadmap, not fully implemented yet.
</p>
</div>
</>
)}
</div>
<div className="mt-8 hairline-t pt-6 flex items-center gap-4">
<Link href="/roadmap" className="font-mono text-sm uppercase tracking-wider text-indigo hover:underline">
{isZh ? "查看完整路线图 →" : "Full roadmap →"}
</Link>
<Link href="/docs" className="font-mono text-sm uppercase tracking-wider text-ink-mute hover:text-indigo transition-colors">
{isZh ? "提供商配置文档 →" : "Provider config docs →"}
<div className="mt-8 hairline-t pt-4">
<Link href={isZh ? "/zh/feed" : "/feed"} className="font-mono text-xs uppercase tracking-wider text-indigo hover:underline">
{isZh ? "全部活动 →" : "All activity →"}
</Link>
</div>
</div>
@@ -474,26 +394,26 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
{/* JOIN IN */}
<section className="bg-ink text-paper">
<div className="mx-auto max-w-[1400px] px-6 py-16 grid lg:grid-cols-12 gap-10">
<div className="lg:col-span-5">
<div className="mx-auto max-w-[1400px] px-6 py-16 grid lg:grid-cols-12 gap-10 items-center">
<div className="lg:col-span-8">
<div className="eyebrow text-paper-deep/70 mb-3">{isZh ? "加入" : "Join in"}</div>
<h2 className="font-display text-paper text-4xl leading-tight">
{isZh ? "这是一个小项目。你的每个补丁都重要。" : "This is a small project. Your patch matters."}
{isZh ? "小项目。你的每个补丁都重要。" : "A small project. Your patch matters."}
</h2>
<p className={`mt-5 text-paper-deep/80 ${isZh ? "leading-[1.9]" : "leading-relaxed"}`}>
<p className={`mt-5 text-paper-deep/80 max-w-2xl ${isZh ? "leading-[1.9]" : "leading-relaxed"}`}>
{isZh
? "无 CLA,无赞助商锁定。维护者亲自阅读每一条内容议题公开环境下分类版本从 main 分支发布。"
: "No CLA. No sponsor lockouts. The maintainer reads everything personally. Issues triaged in the open. Releases cut from main."}
? "无 CLA,无赞助商优先通道。维护者亲自阅读每一条内容议题公开分类版本从 main 分支发布。"
: "No CLA. No sponsor lockouts. The maintainer reads everything personally, issues are triaged in the open, and releases cut from main."}
</p>
<div className="mt-6 flex items-center gap-3">
<div className="mt-6 flex flex-wrap items-center gap-3">
<Link
href="https://github.com/Hmbown/CodeWhale"
className="px-4 py-2 hairline-t hairline-b hairline-l hairline-r border-white/20 text-paper font-mono text-sm hover:bg-white/10 transition-colors"
>
Star on GitHub
{isZh ? "Star on GitHub" : "Star on GitHub"}
</Link>
<Link
href="/contribute"
href={isZh ? "/zh/contribute" : "/contribute"}
className="px-4 py-2 font-mono text-sm text-paper-deep/80 hover:text-paper transition-colors"
>
{isZh ? "参与贡献 →" : "Contribute →"}
@@ -501,24 +421,19 @@ export default async function HomePage({ params }: { params: Promise<{ locale: s
</div>
</div>
<div className="lg:col-span-7 grid sm:grid-cols-3 gap-px bg-paper/15">
{(isZh
? [
{ t: "34k+", d: "星标" },
{ t: "98+", d: "贡献者" },
{ t: `${facts.providers.length}+`, d: "提供商" },
]
: [
{ t: "34k+", d: "Stars" },
{ t: "98+", d: "Contributors" },
{ t: `${facts.providers.length}+`, d: "Providers" },
]
).map((s) => (
<div key={s.d} className="bg-ink p-6 text-center">
<div className="font-display text-4xl mb-1 text-jade">{s.t}</div>
<div className="font-cjk text-sm text-paper-deep/70">{s.d}</div>
</div>
))}
<div className="lg:col-span-4 font-mono text-sm text-paper-deep/80 space-y-2">
<div className="flex justify-between hairline-b border-white/15 pb-2">
<span className="uppercase tracking-widest text-[0.66rem] text-paper-deep/60">{isZh ? "版本" : "version"}</span>
<span className="tabular text-paper">{facts.version ?? "v0.8.x"}</span>
</div>
<div className="flex justify-between hairline-b border-white/15 pb-2">
<span className="uppercase tracking-widest text-[0.66rem] text-paper-deep/60">{isZh ? "提供商" : "providers"}</span>
<span className="tabular text-paper">{facts.providers.length}</span>
</div>
<div className="flex justify-between hairline-b border-white/15 pb-2">
<span className="uppercase tracking-widest text-[0.66rem] text-paper-deep/60">{isZh ? "许可证" : "license"}</span>
<span className="text-paper">{facts.license ?? "MIT"}</span>
</div>
</div>
</div>
</section>