aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Xin <patrick.xin.dev@gmail.com>2026-07-28 16:18:30 -0700
committerGitHub <noreply@github.com>2026-07-29 02:18:30 +0300
commitb7317c97ef605c45be826cc9efa0436dc0cd3838 (patch)
tree9e8b5c526e3266db15581890b8ef128d6e7caad5
parentbbe78f518b83f91e328accd9eb178d1610ab5080 (diff)
docs: add simplified chinese readme (#1990)
* docs: add simplified chinese readme * fix: publish simplified chinese readme * fix: require localized readme for releases * docs: publish simplified chinese readme --------- Co-authored-by: Can Celik <ogulcancelik@gmail.com>
-rw-r--r--.github/workflows/release.yml9
-rw-r--r--README.md4
-rw-r--r--README.zh-CN.md87
-rw-r--r--docs/next/README.md4
-rw-r--r--docs/next/README.zh-CN.md87
-rw-r--r--justfile1
-rw-r--r--website/scripts/docs-versions.integration.test.ts3
-rw-r--r--website/scripts/docs-versions.mjs8
8 files changed, 197 insertions, 6 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 024998d2..2fe55021 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -163,8 +163,11 @@ jobs:
with:
persist-credentials: false
- - name: Validate product announcement
- run: python3 scripts/changelog.py validate-product-announcement
+ - name: Validate release inputs
+ run: |
+ python3 scripts/changelog.py validate-product-announcement
+ test -f docs/next/README.md
+ test -f docs/next/README.zh-CN.md
release:
needs: [build, flake-check, validate-release-inputs]
@@ -377,7 +380,7 @@ jobs:
VERSION="${GITHUB_REF_NAME#v}"
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
- git add README.md docs/versions website/latest.json website/src/content/docs website/src/data/config-reference.json docs/next/product-announcement.json
+ git add README.md README.zh-CN.md docs/versions website/latest.json website/src/content/docs website/src/data/config-reference.json docs/next/product-announcement.json
git diff --cached --quiet || git commit -m "docs: update website manifest for v$VERSION"
for attempt in 1 2 3; do
git pull --rebase origin master
diff --git a/README.md b/README.md
index 671ca8aa..17caec57 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,10 @@
</p>
<p align="center">
+ English · <a href="README.zh-CN.md">简体中文</a>
+</p>
+
+<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-666666?labelColor=333333" alt="Apache 2.0 license" /></a>
<a href="https://github.com/ogulcancelik/herdr/releases"><img src="https://img.shields.io/github/downloads/ogulcancelik/herdr/total?labelColor=333333&color=666666" alt="total GitHub release downloads" /></a>
<a href="https://github.com/ogulcancelik/herdr/stargazers"><img src="https://img.shields.io/github/stars/ogulcancelik/herdr?labelColor=333333&color=666666&logo=github" alt="GitHub stars" /></a>
diff --git a/README.zh-CN.md b/README.zh-CN.md
new file mode 100644
index 00000000..3cac3207
--- /dev/null
+++ b/README.zh-CN.md
@@ -0,0 +1,87 @@
+# herdr
+
+
+<p align="center">
+ <img src="assets/logo.png" alt="herdr" width="100" />
+</p>
+
+<p align="center">
+ <a href="https://herdr.dev">herdr.dev</a> · <a href="#安装">安装</a> · <a href="https://herdr.dev/zh-cn/docs/quick-start/">快速开始</a> · <a href="https://herdr.dev/zh-cn/docs/">文档</a> · <a href="#赞助">赞助</a>
+</p>
+
+<p align="center">
+ <a href="README.md">English</a> · 简体中文
+</p>
+
+<p align="center">
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-666666?labelColor=333333" alt="Apache 2.0 license" /></a>
+ <a href="https://github.com/ogulcancelik/herdr/releases"><img src="https://img.shields.io/github/downloads/ogulcancelik/herdr/total?labelColor=333333&color=666666" alt="total GitHub release downloads" /></a>
+ <a href="https://github.com/ogulcancelik/herdr/stargazers"><img src="https://img.shields.io/github/stars/ogulcancelik/herdr?labelColor=333333&color=666666&logo=github" alt="GitHub stars" /></a>
+ <a href="https://github.com/ogulcancelik/herdr/releases/latest"><img src="https://img.shields.io/github/v/release/ogulcancelik/herdr?label=release&labelColor=333333&color=666666" alt="latest stable release" /></a>
+ <a href="https://formulae.brew.sh/formula/herdr"><img src="https://img.shields.io/homebrew/v/herdr?label=homebrew&labelColor=333333&color=666666" alt="Homebrew version" /></a>
+ <a href="https://x.com/herdrdev"><img src="https://img.shields.io/badge/follow-%40herdrdev-000000?logo=x&logoColor=white" alt="follow @herdrdev on X" /></a>
+</p>
+
+---
+
+https://github.com/user-attachments/assets/043ec09f-4bdd-41d5-aee0-8fda6b83e267
+
+**智能体复用器,住在你的终端里。**
+
+- **每个智能体一目了然**——`blocked`、`working`、`done`。真实的终端视图,而不是包装过的转述。
+- **分离后智能体继续运行**——从任意终端重新连接,或通过 ssh。会话在重启后依然保留。
+- **智能体也能使用 herdr**——纯 socket api:智能体可以创建窗格、读取输出、互相等待。[智能体技能 →](https://herdr.dev/zh-cn/docs/agent-skill/)
+- **键盘和鼠标都是一等公民**——tmux 风格的前缀键,*以及*点击、拖动、分割。按当下的场景选择,而不是被工具锁死。
+- **插件**——扩展窗格和工作流。[浏览插件市场 →](https://herdr.dev/plugins/)
+- **单个 rust 二进制,没有 electron**——运行在你已经在用的任何终端里。
+
+---
+
+## 安装
+
+```bash
+curl -fsSL https://herdr.dev/install.sh | sh
+```
+
+或者 `brew install herdr` · `mise use -g herdr` · Windows 测试版:`powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"` · [二进制文件](https://github.com/ogulcancelik/herdr/releases)
+
+然后在工作所在的目录启动它:
+
+```bash
+herdr
+```
+
+运行你的智能体、分割窗格,然后安心离开。`ctrl+b q` 分离,`herdr` 重新连接。[快速开始 →](https://herdr.dev/zh-cn/docs/quick-start/)
+
+## 文档
+
+所有文档都在 [herdr.dev/docs](https://herdr.dev/zh-cn/docs/):[快速开始](https://herdr.dev/zh-cn/docs/quick-start/) · [核心概念](https://herdr.dev/zh-cn/docs/concepts/) · [受支持的智能体](https://herdr.dev/zh-cn/docs/agents/) · [键盘](https://herdr.dev/zh-cn/docs/keyboard/) · [配置](https://herdr.dev/zh-cn/docs/configuration/) · [会话状态](https://herdr.dev/zh-cn/docs/session-state/) · [远程访问](https://herdr.dev/zh-cn/docs/persistence-remote/) · [集成](https://herdr.dev/zh-cn/docs/integrations/) · [插件](https://herdr.dev/zh-cn/docs/plugins/) · [socket api](https://herdr.dev/zh-cn/docs/socket-api/)
+
+## 赞助
+
+herdr 以全职方式公开开发。赞助将直接资助开发、稳定性,以及通往真正的智能体运行时之路。
+
+### 金牌
+
+<a href="https://terminaltrove.com/"><img src="assets/sponsors/terminal-trove.png" alt="Terminal Trove" width="200" /></a>
+
+[**→ 成为赞助者**](https://github.com/sponsors/ogulcancelik) · 企业/合作:hey@herdr.dev · 档位说明见 [SPONSORS.md](./SPONSORS.md)。谢谢 🐑
+
+## 智能体须知
+
+如果你是协助本仓库的 AI 智能体:在改动代码前阅读 [`AGENTS.md`](./AGENTS.md),在创建 issue 或 PR 前阅读 [`CONTRIBUTING.md`](./CONTRIBUTING.md)。
+
+## 开发
+
+```bash
+git clone https://github.com/ogulcancelik/herdr
+cd herdr
+cargo build --release
+
+just test # 单元测试
+just check # 格式检查、测试和维护性检查
+```
+
+## 许可证
+
+herdr 基于 [Apache License 2.0](LICENSE) 许可证发布。
diff --git a/docs/next/README.md b/docs/next/README.md
index 671ca8aa..17caec57 100644
--- a/docs/next/README.md
+++ b/docs/next/README.md
@@ -10,6 +10,10 @@
</p>
<p align="center">
+ English · <a href="README.zh-CN.md">简体中文</a>
+</p>
+
+<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-666666?labelColor=333333" alt="Apache 2.0 license" /></a>
<a href="https://github.com/ogulcancelik/herdr/releases"><img src="https://img.shields.io/github/downloads/ogulcancelik/herdr/total?labelColor=333333&color=666666" alt="total GitHub release downloads" /></a>
<a href="https://github.com/ogulcancelik/herdr/stargazers"><img src="https://img.shields.io/github/stars/ogulcancelik/herdr?labelColor=333333&color=666666&logo=github" alt="GitHub stars" /></a>
diff --git a/docs/next/README.zh-CN.md b/docs/next/README.zh-CN.md
new file mode 100644
index 00000000..3cac3207
--- /dev/null
+++ b/docs/next/README.zh-CN.md
@@ -0,0 +1,87 @@
+# herdr
+
+
+<p align="center">
+ <img src="assets/logo.png" alt="herdr" width="100" />
+</p>
+
+<p align="center">
+ <a href="https://herdr.dev">herdr.dev</a> · <a href="#安装">安装</a> · <a href="https://herdr.dev/zh-cn/docs/quick-start/">快速开始</a> · <a href="https://herdr.dev/zh-cn/docs/">文档</a> · <a href="#赞助">赞助</a>
+</p>
+
+<p align="center">
+ <a href="README.md">English</a> · 简体中文
+</p>
+
+<p align="center">
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-666666?labelColor=333333" alt="Apache 2.0 license" /></a>
+ <a href="https://github.com/ogulcancelik/herdr/releases"><img src="https://img.shields.io/github/downloads/ogulcancelik/herdr/total?labelColor=333333&color=666666" alt="total GitHub release downloads" /></a>
+ <a href="https://github.com/ogulcancelik/herdr/stargazers"><img src="https://img.shields.io/github/stars/ogulcancelik/herdr?labelColor=333333&color=666666&logo=github" alt="GitHub stars" /></a>
+ <a href="https://github.com/ogulcancelik/herdr/releases/latest"><img src="https://img.shields.io/github/v/release/ogulcancelik/herdr?label=release&labelColor=333333&color=666666" alt="latest stable release" /></a>
+ <a href="https://formulae.brew.sh/formula/herdr"><img src="https://img.shields.io/homebrew/v/herdr?label=homebrew&labelColor=333333&color=666666" alt="Homebrew version" /></a>
+ <a href="https://x.com/herdrdev"><img src="https://img.shields.io/badge/follow-%40herdrdev-000000?logo=x&logoColor=white" alt="follow @herdrdev on X" /></a>
+</p>
+
+---
+
+https://github.com/user-attachments/assets/043ec09f-4bdd-41d5-aee0-8fda6b83e267
+
+**智能体复用器,住在你的终端里。**
+
+- **每个智能体一目了然**——`blocked`、`working`、`done`。真实的终端视图,而不是包装过的转述。
+- **分离后智能体继续运行**——从任意终端重新连接,或通过 ssh。会话在重启后依然保留。
+- **智能体也能使用 herdr**——纯 socket api:智能体可以创建窗格、读取输出、互相等待。[智能体技能 →](https://herdr.dev/zh-cn/docs/agent-skill/)
+- **键盘和鼠标都是一等公民**——tmux 风格的前缀键,*以及*点击、拖动、分割。按当下的场景选择,而不是被工具锁死。
+- **插件**——扩展窗格和工作流。[浏览插件市场 →](https://herdr.dev/plugins/)
+- **单个 rust 二进制,没有 electron**——运行在你已经在用的任何终端里。
+
+---
+
+## 安装
+
+```bash
+curl -fsSL https://herdr.dev/install.sh | sh
+```
+
+或者 `brew install herdr` · `mise use -g herdr` · Windows 测试版:`powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex"` · [二进制文件](https://github.com/ogulcancelik/herdr/releases)
+
+然后在工作所在的目录启动它:
+
+```bash
+herdr
+```
+
+运行你的智能体、分割窗格,然后安心离开。`ctrl+b q` 分离,`herdr` 重新连接。[快速开始 →](https://herdr.dev/zh-cn/docs/quick-start/)
+
+## 文档
+
+所有文档都在 [herdr.dev/docs](https://herdr.dev/zh-cn/docs/):[快速开始](https://herdr.dev/zh-cn/docs/quick-start/) · [核心概念](https://herdr.dev/zh-cn/docs/concepts/) · [受支持的智能体](https://herdr.dev/zh-cn/docs/agents/) · [键盘](https://herdr.dev/zh-cn/docs/keyboard/) · [配置](https://herdr.dev/zh-cn/docs/configuration/) · [会话状态](https://herdr.dev/zh-cn/docs/session-state/) · [远程访问](https://herdr.dev/zh-cn/docs/persistence-remote/) · [集成](https://herdr.dev/zh-cn/docs/integrations/) · [插件](https://herdr.dev/zh-cn/docs/plugins/) · [socket api](https://herdr.dev/zh-cn/docs/socket-api/)
+
+## 赞助
+
+herdr 以全职方式公开开发。赞助将直接资助开发、稳定性,以及通往真正的智能体运行时之路。
+
+### 金牌
+
+<a href="https://terminaltrove.com/"><img src="assets/sponsors/terminal-trove.png" alt="Terminal Trove" width="200" /></a>
+
+[**→ 成为赞助者**](https://github.com/sponsors/ogulcancelik) · 企业/合作:hey@herdr.dev · 档位说明见 [SPONSORS.md](./SPONSORS.md)。谢谢 🐑
+
+## 智能体须知
+
+如果你是协助本仓库的 AI 智能体:在改动代码前阅读 [`AGENTS.md`](./AGENTS.md),在创建 issue 或 PR 前阅读 [`CONTRIBUTING.md`](./CONTRIBUTING.md)。
+
+## 开发
+
+```bash
+git clone https://github.com/ogulcancelik/herdr
+cd herdr
+cargo build --release
+
+just test # 单元测试
+just check # 格式检查、测试和维护性检查
+```
+
+## 许可证
+
+herdr 基于 [Apache License 2.0](LICENSE) 许可证发布。
diff --git a/justfile b/justfile
index e4010bcc..a3726db0 100644
--- a/justfile
+++ b/justfile
@@ -80,6 +80,7 @@ release-docs-check:
python3 scripts/config_reference_check.py
node website/scripts/docs-versions.mjs check
@test -f docs/next/README.md
+ @test -f docs/next/README.zh-CN.md
@if ! diff -u CHANGELOG.md docs/next/CHANGELOG.md; then \
echo "error: CHANGELOG.md differs from docs/next/CHANGELOG.md; finalize release notes before releasing"; \
exit 1; \
diff --git a/website/scripts/docs-versions.integration.test.ts b/website/scripts/docs-versions.integration.test.ts
index aede1957..c3f97bfe 100644
--- a/website/scripts/docs-versions.integration.test.ts
+++ b/website/scripts/docs-versions.integration.test.ts
@@ -19,9 +19,11 @@ describe('documentation release publishing', () => {
await write(root, 'website/src/data/config-reference.json', '{"stable":true}\n');
await write(root, 'website/latest.json', '{"version":"0.9.0"}\n');
await write(root, 'README.md', 'stable readme\n');
+ await write(root, 'README.zh-CN.md', 'stable readme zh-cn\n');
await write(root, 'docs/next/website/src/content/docs/index.mdx', 'next docs\n');
await write(root, 'docs/next/website/src/data/config-reference.json', '{"next":true}\n');
await write(root, 'docs/next/README.md', 'next readme\n');
+ await write(root, 'docs/next/README.zh-CN.md', 'next readme zh-cn\n');
git(root, ['init', '-q']);
git(root, ['config', 'user.email', 'test@example.com']);
@@ -35,6 +37,7 @@ describe('documentation release publishing', () => {
expect(await read(root, 'website/src/content/docs/index.mdx')).toBe('next docs\n');
expect(await read(root, 'website/src/data/config-reference.json')).toBe('{"next":true}\n');
expect(await read(root, 'README.md')).toBe('next readme\n');
+ expect(await read(root, 'README.zh-CN.md')).toBe('next readme zh-cn\n');
expect(await read(root, 'docs/versions/1.0.0/website/src/content/docs/index.mdx')).toBe('next docs\n');
const manifest = JSON.parse(await read(root, 'docs/versions/manifest.json'));
diff --git a/website/scripts/docs-versions.mjs b/website/scripts/docs-versions.mjs
index dbdccd77..7b6b0c24 100644
--- a/website/scripts/docs-versions.mjs
+++ b/website/scripts/docs-versions.mjs
@@ -240,9 +240,11 @@ export async function publishVersion(tag) {
await rm(stableReferencePath, { force: true });
}
- const nextReadme = `docs/next/README.md`;
- if (gitPathExists(tag, nextReadme)) {
- await writeFile(resolve(repoRoot, 'README.md'), git(['show', `${tag}:${nextReadme}`], { binary: true }));
+ for (const readme of ['README.md', 'README.zh-CN.md']) {
+ const nextReadme = `docs/next/${readme}`;
+ if (gitPathExists(tag, nextReadme)) {
+ await writeFile(resolve(repoRoot, readme), git(['show', `${tag}:${nextReadme}`], { binary: true }));
+ }
}
const entries = new Map(manifest.versions.map((entry) => [entry.version, entry]));