快乐快乐快乐~
HappyClaw
自托管、多用户、智能体优先的 Claude Code 工作台
让 Claude Code 通过 Web 与 8 种消息渠道长期在线,在宿主机或 Docker 沙箱中安全执行任务。
介绍 · 功能 · 快速开始 · 渠道 · 架构 · 开发 · 贡献
访问官网 · API 文档 · 运行时架构 · 权限矩阵 · 生产部署 · 问题反馈
HappyClaw 是一个基于 Claude Agent SDK for TypeScript 的自托管 AI 智能体系统。它把完整的 Claude Code 运行时封装成一个可持续运行的多用户服务,让你可以从浏览器、飞书、Telegram、QQ、钉钉、微信、企业微信、Discord 或 WhatsApp 使用同一套智能体、工作区、能力和自动化任务。
HappyClaw 不是一个简单的聊天 API Wrapper。智能体运行在真实的 Claude Code 环境中,可以读写项目文件、执行终端命令、使用浏览器、调用 MCP、加载 Skills,并在多个独立工作区和会话之间保持清晰的权限与上下文边界。
| 模块 | 主要能力 |
|---|---|
| 智能体 | 主 HappyClaw 对话式创建/编辑、自定义智能体、头像、结构化提示词、AI 优化、版本历史与恢复 |
| 工作区 | 智能体归属、宿主机/容器执行、独立目录、项目环境变量、项目 Claude 上下文、多会话 |
| 能力治理 | 用户 Skills、系统/用户 MCP、Claude Code Plugins 与最终生效预览;智能体工具权限完整开放 |
| 消息渠道 | 飞书、Telegram、QQ、钉钉、微信、企业微信、Discord、WhatsApp,多账号、扫码登录、工作区/会话绑定 |
| 模型提供商 | Anthropic 官方与第三方兼容端点、多 Provider、轮询/加权/故障转移、健康检查、会话粘性 |
| 定时任务 | Cron、固定间隔、一次性任务,智能体/Script 执行,隔离上下文,幂等立即运行,通知重试 |
| 记忆与文件 | Workspace Memory(事实、决策、经验、待跟进)、来源与修订、CAS 编辑、搜索、文件与终端 |
| 用量与计费 | Token 分类统计、智能体/工作区/模型筛选、明细与 CSV 导出、订阅、余额、兑换码与配额 |
| 运维与安全 | RBAC、邀请注册、登录设备、审计日志、运行监控、Docker 镜像管理、备份与安全恢复 |
| 客户端体验 | 实时流式输出、工具轨迹、Markdown/Mermaid/KaTeX、消息分享图片、响应式布局与 PWA |
HappyClaw 使用统一的 智能体 → Workspace → Runtime Session 层级:
智能体(身份、提示词、Skills、MCP)
└── Workspace(项目目录、执行模式、环境变量、渠道挂载)
├── Workspace Memory(跨 Session 的事实、决策、经验、待跟进)
├── Main Session(工作区主会话)
├── Runtime Session(独立对话或渠道原生话题)
└── Scheduled Run(定时任务的普通或隔离运行)| 模式 | 适用对象 | 行为 |
|---|---|---|
| Host | 管理员授权的宿主机工作区 | 直接在指定本机目录运行,适合已有代码仓库和本机工具链 |
| Container | 普通成员与需要隔离的工作区 | 在非 root Docker 容器中运行,使用独立工作目录和预装工具链 |
普通成员不能把容器工作区降级为宿主机执行。Script 定时任务也只允许管理员在有权限的 Host 工作区运行。
管理员可在 设置 → 宿主机集成 开启“管理员纯宿主机模式”。开启时,当前管理员拥有的 工作区和定时任务会统一迁移为 Host,后续也不能再选择 Docker;普通成员继续使用 Docker 隔离。关闭开关只恢复混合模式的选择能力,不会自动迁回已有工作区。
每个自定义智能体都可以配置:
配置页可以针对具体工作区预览最终生效能力,包括项目 CLAUDE.md、.claude/skills、项目 MCP、用户能力和同名覆盖来源。
HappyClaw 区分不同层级的能力来源:
| 来源 | 说明 |
|---|---|
| 内置能力 | 随 HappyClaw 或智能体容器提供的基础工具与 Skills |
| 用户 Skills | 从技能市场、HTTPS Git 仓库或 ZIP 导入,按用户隔离并记录来源与版本 |
| 项目上下文 | 工作区目录里的 CLAUDE.md、.claude/skills 和 MCP 配置 |
| 用户 MCP | 当前用户维护的 MCP Server,只进入允许使用它的智能体 |
| 系统 MCP | 管理员维护,默认仅管理员可用,显式共享后普通成员才能使用 |
| Claude Code Plugins | 系统 catalog 与用户启用状态分离,通过版本化运行快照加载 |
内置 MCP 工具覆盖消息发送、定时任务、渠道查询、Skill 管理和记忆读写;实际开放的工具会根据用户权限、智能体策略、工作区模式和渠道上下文动态裁剪。
每个用户都可以为同一渠道创建多个 Bot 账号,并为渠道会话显式选择绑定目标。 连接账号或发现聊天不会自动绑定,也不会触发回复。账号身份会写入渠道地址和 mount, 发送时不会借用其他 Bot 的凭据。
| 渠道 | 接入方式 | 主要能力 |
|---|---|---|
| 飞书 | App ID / App Secret,WebSocket | 流式卡片、图片与文件、Reaction、群聊 @ 控制、话题映射 |
| Telegram | Bot Token,Long Polling | Markdown/HTML、长消息分片、图片与文件、代理配置 |
| App ID / App Secret,WebSocket | 私聊、群聊 @Bot、图片消息、配对码绑定 | |
| 钉钉 | Client ID / Client Secret,Stream | AI Card 流式回复、图片与文件、群聊 @ 控制 |
| 微信 | Web 界面扫码,iLink | 二维码授权、媒体收发、Typing、断线恢复 |
| 企业微信 | Bot ID / Secret,WebSocket | Markdown 流式回复、图片与文件、群聊 @ 控制、配对码绑定 |
| Discord | Bot Token,Gateway | 私聊与服务器频道路由、多账号隔离、频道信息查询 |
| Web 界面扫码,Baileys | 二维码登录、文本与媒体、会话持久化、断线恢复 | |
| Web | 浏览器与 WebSocket | 实时 Markdown、文件、终端、工具轨迹、PWA |
渠道账号的凭据和扫码会话按用户、账号隔离。绑定规则为:
飞书的“是否需要 @”与“响应所有人/仅主人”是两个独立维度。普通群始终沿用所绑定的 Session,需要 @ 时也不会另建话题 Session。话题群按话题隔离上下文。
每条输入独立保存回复来源:私聊、群聊、话题回复回到收到该输入的同一聊天、话题和 Bot 账号;Web 输入只在对应 Web Session 回复。多个渠道可以共享一个 Session, 但不同来源的输入分批执行,旧渠道归属或后续输入不能改写当前回复目标。
在已经绑定且支持斜杠命令的渠道中,可以使用 /list、/status、/where、/bind、/unbind、/new、/clear 和 /fresh 管理当前上下文。/fresh [备注] 会开启新的 SDK 窗口并写入零摘要交接说明,旧历史仍留在库中。飞书里,Agent 忙碌时的普通消息会静默自然排队;在群聊中真实 @Bot /steer 可立即引导当前任务,真实 @Bot /break 可停止当前任务并取消此前已经排队的消息。两条 Runtime 控制命令只接受精确小写形式。写操作受工作区 owner 和渠道发言者策略约束。
HappyClaw 可以同时配置多个 Claude Provider,并为新会话按策略选择健康的 Provider。
| 类型 | 配置方式 |
|---|---|
| Anthropic 官方 | Claude OAuth、一键登录、setup-token / .credentials.json 或 API Key |
| 第三方兼容端点 | 填写 API Endpoint、Auth Token 和模型名称,可启用 1M 上下文 |
第三方 Provider 会自动预填 Claude Code 兼容环境变量,包括主模型映射、上下文窗口、自动压缩、超时和非必要流量设置。高级设置会展示所有预填值,用户可以编辑、恢复默认值或增加自定义 Header 等环境变量。
负载均衡支持:
定时任务使用与交互会话相同的智能体、工作区和执行策略:
group 注入工作区主会话;isolated 每次创建独立队列、Claude session 和 IPC 命名空间。runId,网络重试不会重复执行。REST 接口和状态字段见 API 文档。
macOS 可以使用 OrbStack 或 Docker Desktop,Linux 可以使用 Docker Engine。
Claude Code CLI 不需要单独安装。项目依赖中已经包含与 Claude Agent SDK 配套、版本锁定的 Claude Code 运行时。
git clone https://github.com/riba2534/happyclaw.git
cd happyclaw
make start首次启动会自动安装三端依赖、编译后端/Web/Agent Runner,并在 Docker 可用时拉取最新的多架构智能体镜像。启动完成后打开:
首次访问按照向导完成:
make dev开发模式同时启动后端和 Vite 前端:
| 命令 | 说明 |
|---|---|
make start |
构建必要产物并以前台生产模式启动 |
WEB_PORT=8080 make start |
使用自定义端口启动 |
make status |
查看端口、健康状态、日志文件和 Docker 容器 |
make stop |
停止当前端口上的 HappyClaw 服务 |
make docker-pull |
拉取 GitHub Actions 发布的最新 Agent 镜像 |
make install-host-tools |
安装 Host 工具并刷新 Host/Container 共用的内置 Skills |
make backup |
创建一致性运行数据备份 |
make restore FILE=happyclaw-backup-xxx.tar.gz |
停止服务后恢复指定备份 |
make help |
查看完整命令列表 |
Agent 镜像只在 GitHub Actions 中构建和发布,用户机器不执行 docker build。
make dev 和 make start 启动时都会从 Docker Hub 拉取 CONTAINER_IMAGE;
也可以提前直接执行:
docker pull riba2534/happyclaw-agent:latestmain 分支每次推送都会重新构建
riba2534/happyclaw-agent(amd64/arm64)。两个架构会分别在 GitHub 原生 x64
与 ARM64 Hosted Runner 上并行构建,不使用 QEMU 模拟。每个 runner 先推送没有
用户标签的 digest candidate,真实启动不可变 Runner、执行本地 fake provider
SDK/CLI query,并在首次调用 agent-browser 后验证 /json/version;两边都验证通过
后才合并、签名并提升 git- 和 latest manifest。默认 core 镜像不携带未启用
的 Headroom Python 依赖;配置了 headroom MCP 的智能体会选择同版本
-headroom 镜像。Claude Code、Claude Agent SDK、agent-browser、feishu-cli、uv
和 Headroom 均使用源码锁定版本;实际安装版本记录在镜像内的
/usr/local/share/happyclaw-tool-versions.txt,需要回滚时也可以通过 Docker
build args 在发布工作流中指定精确版本。
HappyClaw 优先通过 Web 设置管理配置,不要求用户维护一组庞大的环境变量。
| 页面 | 内容 |
|---|---|
| 设置 → 模型与提供商 | 官方/第三方 Provider、密钥、模型、1M 上下文和负载均衡 |
| 设置 → 消息渠道 | 渠道账号、扫码登录、连接状态和会话绑定 |
| 设置 → 主 HappyClaw | 默认智能体的 Skills 与 MCP |
| 设置 → 执行与容量 | 超时、并发、上下文窗口和运行限制 |
| 设置 → 宿主机集成 | 管理员纯宿主机模式、Host 目录与 Claude 上下文来源 |
| 设置 → 注册策略 | 开放注册、邀请码注册或关闭注册 |
| 设置 → 用户与访问 | 用户、权限、邀请码与审计日志 |
| 变量 | 默认值 | 说明 |
|---|---|---|
WEB_PORT |
3000 |
Web、REST API 与 WebSocket 端口 |
WEB_SESSION_SECRET |
自动生成并持久化 |
暂无开放 Issues,或尚未同步最近议题。