> 当前状态:Butler v5 是唯一活动产品主线;Butler v4 已退役并只读归档(ADR-0001)。 [![CI](https://github.com/XiaZiHunDun/WFXM/actions/workflows/ci.yml/badge.svg)](https://github.com/XiaZiHunDun/WFXM/actions/workflows/ci.yml) # Butler v5 · 可扩展个人 AI 管家 > **English**: A self-hosted, single-owner personal AI butler with WeChat, CLI/API, tool execution, delegation, durable events, and governed extension points. **Butler v5** 是单 Owner、单信任域、本机自托管的个人 AI 管家。当前主入口是微信,CLI/API/WebSocket 提供运维、集成和异步结果通道。认知环、权限与数据均由本项目掌控,不依赖 Hermes `AIAgent` 或浏览器端 Agent Runtime。 [![Node.js 20](https://img.shields.io/badge/node-20-blue)](https://nodejs.org/) [![License: MIT](https://img.shields.io/badge/license-MIT-green)](LICENSE) --- ## 是什么 Butler v5 当前提供: - 微信 iLink 原生文本、图片、文件和语音入站,文本/图片/文件出站; - 稳定 conversation stream、多轮上下文与摘要压缩; - AgentKernel 驱动的 LLM + 结构化工具循环; - 工作区文件读取、具名命令执行和文件回传; - 子代理委派、PostgreSQL Outbox 与 WebSocket 异步推送; - PostgreSQL Event Store 生产持久化,PGlite 测试隔离; - 多 Provider LLM 与失败降级。 目标设计见 [Butler v5 DESIGN](butler-v5/DESIGN.md);生产调用链、已实现能力和已知缺口见 [v5 production architecture](docs/architecture/v5-production-architecture-2026-08.md)。 --- ## 核心能力 | 能力 | 生产实现 | | -------------- | -------------------------------------------------------------------- | | **微信** | `apps/api/ilink-poller` + `packages/adapters/wechat` | | **Agent Loop** | `apps/api/wechat-inbound-butler` + `packages/runtime/AgentKernel` | | **工具** | 历史、时间、摘要、文件读取、受限命令、微信文件发送、委派 | | **委派** | transactional outbox + subagent worker + WS push | | **记忆** | conversation event history + LLM/extractive compaction | | **数据** | PostgreSQL Event Store / Outbox / Snapshot / Projection;测试 PGlite | | **扩展边界** | Channel、MCP、浏览器、调度均按 Policy/ScopedGrant/Sandbox 条件准入 | --- ## 不是什么 Butler 不做多租户 SaaS、公开插件 Marketplace、Kubernetes 默认部署、无限制 shell、宿主机全桌面控制或浏览器端第二套 Loop。 但 MCP、隔离浏览器、本地控制面、多 Channel、定时自治和可观测不再整类否决;它们按“默认关闭、具名范围、短期 ScopedGrant、风险动作即时审批、沙箱与审计”条件准入。唯一边界入口见 [v5 product boundaries](docs/plans/decisions/v5-product-boundaries-2026-08.md)。 --- ## 架构一览 ``` Owner ──→ 微信 iLink / CLI / HTTP / WebSocket │ ▼ apps/api delivery shell │ ▼ runtime AgentKernel / EventBridge │ │ ▼ ▼ LLM/WeChat adapters persistence │ ▼ PostgreSQL Event Store ``` 目标架构:[Butler v5 DESIGN](butler-v5/DESIGN.md) · 当前实现:[v5 production architecture](docs/architecture/v5-production-architecture-2026-08.md) · 历史迁移:[ADR-0001](docs/adr/2026-08-08-v4-to-v5-supersession.md) --- ## 快速开始 ### 1. 安装 ```bash git clone https://github.com/XiaZiHunDun/WFXM.git cd WFXM cd butler-v5 pnpm install ``` ### 2. 配置 ```bash cp .env.example .env # 至少配置一个 LLM API Key。 # 原生微信另需 BUTLER_V5_ILINK_ENABLED=1 与 WECHAT_TOKEN。 ``` 示例:[butler-v5/.env.example](butler-v5/.env.example) ### 3. 运行 ```bash # 开发运行 pnpm --filter @butler/cli exec tsx src/index.ts start # 微信 QR 登录 pnpm --filter @butler/cli exec tsx src/index.ts wechat-login # 生产 systemctl --user status butler-v5-gateway.service ``` ### 4. 验证 ```bash pnpm format:check pnpm lint pnpm typecheck pnpm test bash scripts/typecheck-gate.sh ``` --- ## 当前操作面 - `GET /healthz`:服务健康; - `POST /v1/wechat/inbound`:微信/测试入站; - `POST /v1/ws/subscribe` + WebSocket:异步子代理结果; - `butler start`:启动 API、WS、worker 与可选 iLink poller; - `butler wechat-login`:iLink QR 登录并写入本地 env。 --- ## 仓库结构 ``` butler-v5/ ├── apps/api/ HTTP、WS、iLink poller、Loop、工具与 worker ├── cli/ start、wechat-login ├── packages/runtime/ AgentKernel、EventBridge、Decision、Delegate ├── packages/adapters/ LLM、WeChat 与外部协议 ├── packages/persistence/ Event Store、Outbox、Snapshot、Projection ├── packages/domain/ 纯类型与策略(按生产需求接入) └── scripts/cutover/ systemd、mock 与 E2E butler/ 已退役 v4,只读历史参考 docs/ 架构、决策与路线图 ``` --- ## 文档导航 | 读者 | 从这里开始 | | ----------------- | ------------------------------------------------------------------------------------------------------------------------------ | | **新用户 / 运维** | [v5 handoff](docs/architecture/v5-r10-handoff.md) | | **开发者** | [AGENTS.md](AGENTS.md) → [目标架构](butler-v5/DESIGN.md) → [当前实现](docs/architecture/v5-production-architecture-2026-08.md) | | **提需求 / 边界** | [v5 product boundaries](docs/plans/decisions/v5-product-boundaries-2026-08.md) | | **后续路线** | [post-boundary roadmap](docs/plans/active/v5-post-boundary-roadmap-2026-08.md) | | **文档体系** | [DOCUMENTATION.md](docs/DOCUMENTATION.md) | | **自托管** | [docs/deployment/SELF-HOSTING.md](docs/deployment/SELF-HOSTING.md) | | **本地 zero-LLM 试玩** | `cd butler-v5 && pnpm demo` | --- ## 参与开发 - 改 `butler-v5` 前请读 [AGENTS.md](AGENTS.md) 与 v5 本地规则 - 贡献约定:[CONTRIBUTING.md](CONTRIBUTING.md) - 治理:[CHANGELOG.md](CHANGELOG.md) · [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) · [SECURITY.md](SECURITY.md) - Cursor 规则:`.cursor/rules/` --- ## License MIT — 见 [LICENSE](LICENSE)。