lml2468/xclaw
GitHub: lml2468/xclaw
XClaw 是一个跨平台 agent 网关,将 Claude 等编码 agent 的 CLI 转化为统一事件流的持久化服务,并配有原生桌面应用。
Stars: 0 | Forks: 0
# 🐙 XClaw
**一个跨平台的 agent 网关。** XClaw 通过生成进程并规范化输出为统一的事件流,来驱动编码 agent 的 CLI —— 目前首要是 Claude
—— 并在其之上提供了一个简洁、原生的桌面应用程序体验。它用一个可以在任何地方运行的单个静态 Go 二进制文件取代了仅支持 Node 的 `claude-agent-sdk`。
[](https://github.com/lml2468/xclaw/actions/workflows/ci.yml)
[](LICENSE)



## XClaw 是什么?
像 Claude 这样的编码 agent 通常是作为 CLI 发布的。XClaw 将该 CLI 转化为一个**服务**:
它会生成 agent 进程,接收来自聊天平台的入站消息,将 agent 的 token/tool-calls 以规范化的事件流形式输出,并持久化会话,以便 agent 能从中断处继续。
`agent.Driver` 抽象下游的所有内容都只依赖于统一的 `AgentEvent` 词汇表 —— 而不依赖 Claude 的具体细节。**添加第二个 agent(Codex, Gemini, ……)只需编写一个新的 `Driver`,其他部分完全无需改动。**
整个项目是一个 Go workspace,包含三个针对同一契约进行版本控制的组件:
| | | |
|---|---|---|
| **`core/`** | `xclawd` daemon (网关) | Go,**单个静态二进制文件,零 cgo**,可交叉编译至 mac/linux/windows |
| **`desktop/`** | 桌面应用 | Go + **Wails v3** 后端,**Svelte 5 + TS** 前端 —— 一个轻量的 control-bus 客户端 |
| **`proto/`** | control-bus 契约 | 基于 Unix socket 的语言无关 NDJSON 封装,由两者共享 |
## 核心特性
- **与 Agent 无关的内核** —— `agent.Driver` 拼接层使得网关、router、存储和 control bus 完全不受任何特定 agent 细节的影响。
- **多机器人支持** —— 通过一个 `~/.xclaw/config.json` 即可运行多个机器人,每个机器人都在 `~/.xclaw/
|
|
## 架构
```
┌─ desktop/ (Wails v3 + Svelte) ─┐ ┌─ core/ — xclawd daemon ─────────────┐
│ spawns + supervises xclawd │ UDS │ router → gateway turn pipeline │
│ dials the control socket │◀──────▶│ agent.Driver (Claude) → AgentEvents │
│ folds xclaw:event → UI │ NDJSON │ store (SQLite) · sandbox · safety │
└────────────────────────────────┘ │ im/octo connector (WuKongIM + REST) │
proto/ — one contract ─────────┘
```
入站消息 → **router**(提及检测 · 机器人循环防护 · sessionKey · 频率限制 · 按会话加锁) → **store**(恢复 ID) → **sandbox**(cwd + 记忆 + 技能) → **buildSystemPrompt**(安全前缀 + SOUL/AGENTS + 名册) → **driver.Query** → 流式传输 `AgentEvent`s → 组装回复 → 持久化 + 发送。
有关完整的 pipeline、不变性和安全模型,请参阅 [`CLAUDE.md`](CLAUDE.md)。
## 快速开始
**前置条件:** Go 1.26+。对于桌面应用,还需要
[Wails v3 CLI](https://v3.wails.io):`go install github.com/wailsapp/wails/v3/cmd/wails3@latest`。
```
# 1) 构建并测试 Go core
cd core && go build ./... && go test ./...
# 2) 直接尝试 daemon —— stdin 上的 REPL(输入一条消息;/reset;Ctrl-D)
go run ./cmd/xclawd
# 3) 在开发环境中运行桌面应用(构建 core + `wails3 dev`)
zsh scripts/run-dev.sh --seed-config # writes a starter ~/.xclaw/config.json
zsh scripts/run-dev.sh --preview # UI preview: mock data, no daemon
# 4) 在任何地方交叉编译 daemon(零 cgo)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o /tmp/xclawd ./cmd/xclawd
```
### 打包桌面应用 (macOS)
```
# 构建 XClaw.app(+ .zip),将已签名的 xclawd 和 octo-cli 由内向外嵌入。
# 默认为 Ad-hoc;传入一个 identity 进行 Developer-sign,传入一个 profile 进行 notarize。
XCLAW_SIGN_IDENTITY="Apple Development: …" zsh scripts/package-desktop.sh
```
Windows/Linux 的 GUI 会在各自的操作系统上构建(`cd desktop && wails3 task package`);daemon 已经可以针对这三种系统进行交叉编译。
## 配置说明
只需一个 `~/.xclaw/config.json` 即可配置所有机器人 —— 参阅带有完整注释的
[`core/config.example.json`](core/config.example.json)。包含共享的顶层
`apiUrl`/`agent`/`rateLimit`/`context` 默认值,一个 `bots[]` 数组(其中每个条目都可以覆盖这些默认值)、可选的群组门控列表、按机器人配置的 `skills`,以及 `onBehalfOf`
角色克隆。机器人的角色设定/行为存放在 `~/.xclaw/标签:AI代理, Claude, CVE检测, EVTX分析, Golang, SBOM分析, Svelte, Wails, 即时通讯, 安全编程, 日志审计, 桌面应用, 跨平台网关