Some checks failed
CI / build-check-test (push) Has been cancelled
Merge upstream/main (195 commits) while keeping sproutclaw-specific README, webui workflow docs, and restored upstream .pi prompt templates. Co-authored-by: Cursor <cursoragent@cursor.com>
118 lines
5.1 KiB
Markdown
118 lines
5.1 KiB
Markdown
# sproutclaw
|
||
|
||
`sproutclaw` 是一个面向服务器运维与开发工作的 Agent 助手,基于 pi-mono 改造,重点服务于日常服务器管理、Docker 部署、项目开发、故障排查和自动化工作流。
|
||
|
||
## 定位
|
||
|
||
- 服务器运维助手:协助 SSH 登录、服务状态检查、日志分析、配置调整和部署排障。
|
||
- 开发协作助手:理解本地项目结构,执行代码修改、测试验证和 Git 工作流。
|
||
- Docker 部署助手:按项目目录组织 `docker compose` 服务,关注数据持久化、端口规划和资源限制。
|
||
- 内网服务助手:适配 smallmengya、bigmengya、alycd 等内网服务器使用习惯。
|
||
- WebUI/TUI 双入口:保留控制台 TUI,同时扩展网页前端,方便在浏览器里管理会话和模型。
|
||
|
||
## 项目结构
|
||
|
||
| 路径 | 说明 |
|
||
| --- | --- |
|
||
| `packages/coding-agent` | 交互式 Agent CLI 与 TUI 主体 |
|
||
| `packages/agent` | Agent 运行时、工具调用和状态管理 |
|
||
| `packages/ai` | 多模型、多 provider 的 LLM 接入层 |
|
||
| `packages/tui` | 终端 UI 渲染库 |
|
||
| `.pi/agent/extensions/webui` | 本地扩展的网页对话入口 |
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
npm install
|
||
npm run build
|
||
npm run check
|
||
./test.sh
|
||
./pi-test.sh
|
||
```
|
||
|
||
运行本地源码版 Agent:
|
||
|
||
```bash
|
||
./pi-test.sh
|
||
```
|
||
|
||
启动 WebUI 时,在 TUI 中执行:
|
||
|
||
```text
|
||
/webui on 19133
|
||
```
|
||
|
||
关闭 WebUI:
|
||
|
||
```text
|
||
/webui off
|
||
```
|
||
|
||
## 说明
|
||
|
||
这个仓库是自用分支,默认会围绕树萌芽的服务器环境、部署规范和日常开发习惯进行调整。上游能力来自 pi-mono,后续会继续精简、增强并沉淀适合服务器运维开发场景的 Agent 工作流。
|
||
|
||
To learn more about pi:
|
||
|
||
* [Visit pi.dev](https://pi.dev), the project website with demos
|
||
* [Read the documentation](https://pi.dev/docs/latest), but you can also ask the agent to explain itself
|
||
|
||
## Share your OSS coding agent sessions
|
||
|
||
If you use pi or other coding agents for open source work, please share your sessions.
|
||
|
||
Public OSS session data helps improve coding agents with real-world tasks, tool use, failures, and fixes instead of toy benchmarks.
|
||
|
||
For the full explanation, see [this post on X](https://x.com/badlogicgames/status/2037811643774652911).
|
||
|
||
To publish sessions, use [`badlogic/pi-share-hf`](https://github.com/badlogic/pi-share-hf). Read its README.md for setup instructions. All you need is a Hugging Face account, the Hugging Face CLI, and `pi-share-hf`.
|
||
|
||
You can also watch [this video](https://x.com/badlogicgames/status/2041151967695634619), where I show how I publish my `pi-mono` sessions.
|
||
|
||
I regularly publish my own `pi-mono` work sessions here:
|
||
|
||
- [badlogicgames/pi-mono on Hugging Face](https://huggingface.co/datasets/badlogicgames/pi-mono)
|
||
|
||
## All Packages
|
||
|
||
| Package | Description |
|
||
|---------|-------------|
|
||
| **[@earendil-works/pi-ai](packages/ai)** | Unified multi-provider LLM API (OpenAI, Anthropic, Google, etc.) |
|
||
| **[@earendil-works/pi-agent-core](packages/agent)** | Agent runtime with tool calling and state management |
|
||
| **[@earendil-works/pi-coding-agent](packages/coding-agent)** | Interactive coding agent CLI |
|
||
| **[@earendil-works/pi-tui](packages/tui)** | Terminal UI library with differential rendering |
|
||
|
||
For Slack/chat automation and workflows see [earendil-works/pi-chat](https://github.com/earendil-works/pi-chat).
|
||
|
||
## Contributing
|
||
|
||
See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines and [AGENTS.md](AGENTS.md) for project-specific rules (for both humans and agents).
|
||
|
||
## Development
|
||
|
||
```bash
|
||
npm install --ignore-scripts # Install all dependencies without running lifecycle scripts
|
||
npm run build # Build all packages
|
||
npm run check # Lint, format, and type check
|
||
./test.sh # Run tests (skips LLM-dependent tests without API keys)
|
||
./pi-test.sh # Run pi from sources (can be run from any directory)
|
||
```
|
||
|
||
## Supply-chain hardening
|
||
|
||
We treat npm dependency changes as reviewed code changes.
|
||
|
||
- Direct external dependencies are pinned to exact versions. Internal workspace packages remain version-ranged.
|
||
- `.npmrc` sets `save-exact=true` and `min-release-age=2` to avoid same-day dependency releases during npm resolution.
|
||
- `package-lock.json` is the dependency ground truth. Pre-commit blocks accidental lockfile commits unless `PI_ALLOW_LOCKFILE_CHANGE=1` is set.
|
||
- `npm run check` verifies pinned direct deps, native TypeScript import compatibility, and the generated coding-agent shrinkwrap.
|
||
- The published CLI package includes `packages/coding-agent/npm-shrinkwrap.json`, generated from the root lockfile, to pin transitive deps for npm users.
|
||
- Release smoke tests use `npm run release:local` to build, pack, and create isolated npm and Bun installs outside the repo before publishing.
|
||
- Local release installs, documented npm installs, and `pi update --self` use `--ignore-scripts` where supported.
|
||
- CI installs with `npm ci --ignore-scripts`, and a scheduled GitHub workflow runs `npm audit --omit=dev` plus `npm audit signatures --omit=dev`.
|
||
- Shrinkwrap generation has an explicit allowlist for dependency lifecycle scripts; new lifecycle-script deps fail checks until reviewed.
|
||
|
||
## License
|
||
|
||
MIT
|