docs: 更新 README,修正过时内容
Some checks failed
CI / build-check-test (push) Has been cancelled

- 移除 .pi/ 目录条目(已 gitignore)
- 更新 WebUI 说明为独立 sproutclaw-web 服务
- 修正 build.sh/test.sh 说明和脚本引用错误
- 更新合并上游流程(直接 merge,不再用临时分支)
- 补充 Gitea remote 配置说明

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 20:56:31 +08:00
parent f1c5e7dc1d
commit 294ce75892

148
README.md
View File

@@ -8,7 +8,7 @@
- 开发协作助手:理解本地项目结构,执行代码修改、测试验证和 Git 工作流。
- Docker 部署助手:按项目目录组织 `docker compose` 服务,关注数据持久化、端口规划和资源限制。
- 内网服务助手:适配 smallmengya、bigmengya、alycd 等内网服务器使用习惯。
- WebUI/TUI 双入口:保留控制台 TUI同时扩展网页前端,方便在浏览器里管理会话和模型
- WebUI/TUI 双入口:保留控制台 TUI同时提供独立的网页前端(`sproutclaw-web`
## 项目结构
@@ -18,158 +18,168 @@
| `packages/agent` | Agent 运行时、工具调用和状态管理 |
| `packages/ai` | 多模型、多 provider 的 LLM 接入层 |
| `packages/tui` | 终端 UI 渲染库 |
| `.pi/agent/extensions/webui` | 网页对话入口React 前端 + `backend/` HTTP 服务 + systemd 集成 |
| `.pi/agent/extensions/*/index.ts` | sproutclaw 本地扩展(中文启动页、状态行、命令安装等) |
| `.pi/agent/prompts/` | 自定义 slash prompt`cl`/`is`/`pr`/`wr` 等) |
| `.pi/agent/skills/` | 可复用 SkillsGitea、SSH、GitHub 等) |
| `build.sh` | 使用已构建 `dist/cli.js` 启动 Agent |
| `sproutclaw` / `sproutclaw.bat` | 启动入口(从已构建 `dist/cli.js` 启动 |
| `build.sh` / `build.bat` | 同上,使用已构建版启动 |
| `test.sh` / `test.bat` | 从源码tsx启动用于开发调试 |
| `scripts/sync-upstream.sh` | 合并上游 pi-mono 更新 |
| `scripts/push-sproutclaw.sh` | 推送到 GitHub / Gitea |
> `.pi/agent/` 为本地持久化配置目录settings、auth、sessions、extensions、skills 等),已整体加入 `.gitignore`,不进入版本控制。
## 常用命令
安装依赖并构建:
```bash
npm install --ignore-scripts
npm run build
npm run check
```
从源码运行(开发调试,无需 build
```bash
./test.sh
././test.sh
```
运行本地源码版 Agent开发调试
从已构建版运行(日常更快
```bash
././test.sh
```
运行已构建版 Agent日常更快
```bash
npm run build
./build.sh
# 或
./sproutclaw
```
启动 WebUI 时,在 TUI 中执行
```text
/webui on 19133
```
关闭 WebUI
```text
/webui off
```
WebUI 前端单独构建:
检查代码
```bash
cd .pi/agent/extensions/webui/frontend && npm install && npm run build
npm run check
```
## WebUIsproutclaw-web
WebUI 是独立项目,位于 `../sproutclaw-web/`,通过 systemd 以服务形式运行。
构建后端:
```bash
cd ../sproutclaw-web
bash build.sh
```
构建前端:
```bash
cd ../sproutclaw-web/frontend
npm install && npm run build
```
管理服务:
```bash
systemctl start sproutclaw-web
systemctl stop sproutclaw-web
systemctl restart sproutclaw-web
systemctl status sproutclaw-web
```
## Git 分支策略
本仓库是 pi-mono 的 fork采用三层分支,同时维护**上游同步**和 **sproutclaw 定制**
本仓库是 pi-mono 的 fork同时维护**上游同步**和 **sproutclaw 定制**
| 分支 | 用途 |
| --- | --- |
| `main` | 稳定可跑版本:已合并的上游 + sproutclaw 定制,推送到 GitHub |
| `upstream-sync` | 临时同步分支:专门用来 `merge upstream/main`,解决冲突后再合回 `main` |
| `main` | 稳定可跑版本:已合并的上游 + sproutclaw 定制,推送到 GitHub / Gitea |
| `feature/*` | 日常开发WebUI、扩展、补丁等完成后 merge 进 `main` |
### Remote 配置
```text
origin → https://github.com/shumengya/sproutclaw.git (你的 GitHub
upstream → https://github.com/badlogic/pi-mono.git (上游 pi
gitea → ssh://git@git.shumengya.top:8022/shumengya/sproutclaw.git (内网备份,可选)
origin → https://github.com/shumengya/sproutclaw.git
upstream → https://github.com/badlogic/pi-mono.git
gitea → ssh://git@git.shumengya.top:8022/shumengya/sproutclaw.git
```
首次配置 upstream
```bash
git remote add upstream https://github.com/badlogic/pi-mono.git
git remote add gitea ssh://git@git.shumengya.top:8022/shumengya/sproutclaw.git
```
GitHub 网络不稳定时:
### 日常开发
```bash
export GIT_HTTP_VERSION=1.1
```
### 日常开发feature 分支)
```bash
./scripts/new-feature.sh webui-avatar-fix # 从 main 创建 feature/webui-avatar-fix
git checkout -b feature/my-fix
# ... 开发、测试 ...
git add <改动的具体文件> # 不要用 git add -A
git commit -m "fix(webui): agent avatar during tool calls"
git add <改动的具体文件>
git commit -m "fix: ..."
git checkout main
git merge feature/webui-avatar-fix
git merge feature/my-fix
./scripts/push-sproutclaw.sh
git branch -d feature/webui-avatar-fix # 合并后可删
git branch -d feature/my-fix
```
### 推送本地更新到 GitHub
### 推送到 GitHub / Gitea
```bash
git checkout main
./scripts/push-sproutclaw.sh
# 或手动
git push origin main && git push gitea main
```
### 合并上游 pi-mono 更新
```bash
./scripts/sync-upstream.sh
# 若有冲突,按下方规则解决后:
git fetch upstream
git merge upstream/main --no-commit --no-ff
# 解决冲突(见下方惯例),然后:
git add <resolved-files>
git commit
git checkout main && git merge upstream-sync
PI_ALLOW_LOCKFILE_CHANGE=1 git commit
./scripts/push-sproutclaw.sh
```
**合并冲突处理惯例:**
| 文件 | 处理方式 |
| 文件类型 | 处理方式 |
| --- | --- |
| `README.md`、sproutclaw 定制代码 | 保留本仓库版本 |
| `package-lock.json` | 采用 upstream再执行 `npm install --ignore-scripts` |
| `*.generated.ts` | 采用 upstream |
| `.pi/agent/extensions/` | 保留 sproutclaw 版本 |
| `package-lock.json` | 采用 upstream`npm install --ignore-scripts` |
| 测试/文档/新增上游功能 | 采用 upstream |
合并后必做:
```bash
npm install --ignore-scripts
npm run build
././test.sh
./test.sh
```
### sproutclaw 相对 upstream 的 intentional 改动
### sproutclaw 相对 upstream 的定制改动
合并上游时,以下定制**不要误删**
合并上游时,以下内容**不要误删**
- `showChangelogOnStartup` 设置项(关闭启动 What's New
- `.pi/agent/extensions/webui/` 网页 UI
- `.pi/agent/extensions/startup-chinese/` 等本地扩展目录
- `.pi/agent/extensions/webui/backend/` WebUI 后端模块化拆分
- 本 README(仅 sproutclaw 说明,不含上游文档)
- RPC 扩展:`reload` 命令、bash 流式输出(`bash_update`)、`get_extensions` 接口
- `sproutclaw` / `build.sh` / `test.sh` 等启动脚本
- `scripts/sync-upstream.sh``scripts/push-sproutclaw.sh` 等工具脚本
- 本 README 及中文版 CONTRIBUTING.md / SECURITY.md
## 本地配置
`.pi/agent/` 中以下内容**不进 Git**(含密钥/内网地址)
`.pi/agent/` 中以下内容不进 Git
- `settings.json` → 参考 `settings.example.json` 本地复制
- `models.json``auth.json`
- `sessions/`
- `models.json``auth.json``mcp.json`
- `sessions/``skills/``extensions/``prompts/`
首次部署:
```bash
cp .pi/agent/settings.example.json .pi/agent/settings.json
# 编辑 settings.json 填入 provider / model
# 编辑 settings.json 填入 provider / model / auth 信息
```
## 说明
这个仓库是自用 fork默认围绕树萌芽的服务器环境、部署规范和日常开发习惯调整。上游能力来自 pi-mono通过 `upstream-sync` 分支定期同步sproutclaw 定制在 `feature/*` 开发后合入 `main`
这个仓库是自用 fork默认围绕树萌芽的服务器环境、部署规范和日常开发习惯调整。上游能力来自 pi-mono通过 `git fetch upstream && git merge upstream/main` 定期同步sproutclaw 定制在 `feature/*` 开发后合入 `main`