Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기自托管、多用户、智能体优先的 Agent 工作台
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗HappyClaw 是一个基于 Claude Agent SDK for TypeScript 的自托管 AI 智能体系统。它把完整的 Claude Code 运行时封装成一个可持续运行的多用户服务,让你可以从浏览器、飞书、Telegram、QQ、钉钉、微信、企业微信、Discord 或 WhatsApp 使用同一套智能体、工作区、能力和自动化任务。
HappyClaw 不是一个简单的聊天 API Wrapper。智能体运行在真实的 Claude Code 环境中,可以读写项目文件、执行终端命令、使用浏览器、调用 MCP、加载 Skills,并在多个独立工作区和会话之间保持清晰的权限与上下文边界。
| 模块 | 主要能力 |
|---|---|
| 智能体 | 主 HappyClaw 对话式创建/编辑、自定义智能体、内置模板、复制与导入导出、头像、结构化提示词、AI 优化 |
| 工作区 | 智能体归属、宿主机/容器执行、独立目录、项目环境变量、项目 Claude 上下文、多会话、会话级 git worktree、只读代码 Review |
| 能力治理 | 用户 Skills、系统/用户 MCP、Claude Code Plugins 与最终生效预览;智能体工具权限完整开放 |
| 消息渠道 | 飞书、Telegram、QQ、钉钉、微信、企业微信、Discord、WhatsApp,多账号、扫码登录、工作区/会话绑定 |
| 模型提供商 | Anthropic 官方、ChatGPT 订阅、20 余家厂商预设与自定义兼容端点,一个连接多个模型,轮询/加权/故障转移 |
| 定时任务 | 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 隔离。关闭开关只恢复混合模式的选择能力,不会自动迁回已有工作区。
每个自定义智能体都可以配置:
智能体可以从内置模板新建、复制,或导出为 JSON 再导入;导入时引用不到的 Skill 或 MCP 会逐项列出,由用户确认去掉后再创建。
配置页可以针对具体工作区预览最终生效能力,包括项目 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 管理和记忆读写;实际开放的工具会根据用户权限、智能体策略、工作区模式和渠道上下文动态裁剪。
添加远端服务时,参见远端 MCP 配置与排查,按步骤填写 HTTP/SSE URL 与 Headers、选择作用域,并在指定智能体的最终生效能力中确认来源。
每个用户都可以为同一渠道创建多个 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 可以同时配置多个模型连接。一个连接对应一份凭据和一个地址,可以提供多个模型; 聊天和智能体按「连接 · 模型」选择。在「设置 → 模型配置」点「添加模型连接」,向导会依次 选择来源、连接、选择模型、测试并保存:
| 类型 | 配置方式 |
|---|---|
| Anthropic 官方 | Claude 订阅(OAuth、setup-token / .credentials.json)或 API Key |
| ChatGPT 订阅 | 登录 ChatGPT,按账号可用的模型目录选择模型和推理力度 |
| 厂商预设 | DeepSeek、智谱 GLM、Kimi、MiniMax、阿里云百炼、火山、腾讯、OpenRouter 等,只需填 API Key |
| 自定义兼容端点 | 填写地址和密钥,自动识别预设、判断认证方式、获取模型列表,可启用 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:latest
main 分支每次推送都会重新构建
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-<sha> 和 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 设置管理配置,不要求用户维护一组庞大的环境变量。
| 页面 | 内容 |
|---|---|
| 设置 → 模型配置 | 模型连接、每个连接的模型、连接测试和负载均衡 |
| 设置 → 消息渠道 | 渠道账号、扫码登录、连接状态和会话绑定 |
| 设置 → 主 HappyClaw | 默认智能体的 Skills 与 MCP |
| 设置 → 执行与容量 | 超时、并发、上下文窗口和运行限制 |
| 设置 → 宿主机集成 | 管理员纯宿主机模式、Host 目录与 Claude 上下文来源 |
| 设置 → 注册策略 | 开放注册、邀请码注册或关闭注册 |
| 设置 → 用户与访问 | 用户、权限、邀请码与审计日志 |
| 变量 | 默认值 | 说明 |
|---|---|---|
WEB_PORT | 3000 | Web、REST API 与 WebSocket 端口 |
WEB_SESSION_SECRET | 自动生成并持久化 | Web 登录会话签名密钥 |
CONTAINER_IMAGE | riba2534/happyclaw-agent:latest | 智能体容器镜像 |
CONTAINER_IMAGE_HEADROOM | 从 core 标签派生 -headroom | 启用 Headroom MCP 时使用的同版本能力镜像 |
CONTAINER_TIMEOUT | 1800000 | 容器硬超时,毫秒 |
IDLE_TIMEOUT | 1800000 | 容器空闲保活时间,毫秒 |
STUCK_RUNNER_FORCE_RESTART_MINUTES | 10 | IPC 债务强制恢复上限(整数分钟,范围 4–120;非法值回退默认) |
ADMIN_HOST_ONLY_MODE | false | 管理员工作区与任务强制使用宿主机 |
MAX_CONCURRENT_CONTAINERS | 20 | 最大并发容器数 |
MAX_FILE_SIZE_MB | 50 | Web 和 IM 入站文件大小上限 |
CORS_ALLOWED_ORIGINS | 仅 localhost | 公网部署的 WebSocket Origin 白名单 |
TRUST_PROXY | false | 位于可信反向代理后时设为 true |
TRUST_PROXY_HOPS | 1 | X-Forwarded-For 中可信代理层数(Cloudflare 在 Caddy 之前时设为 2) |
TZ | 系统时区 | 日志与定时任务时区(建议 IANA 名称,如 Asia/Shanghai);无效值回退并告警 |
HTTPS_PROXY / HTTP_PROXY | 未设置 | 独立配置 HTTPS/HTTP 出站代理;主进程与每个智能体容器都会使用,也接受对应的小写变量 |
NO_PROXY | 未设置 | 独立配置不走代理的地址列表,也接受 no_proxy |
Provider 与渠道凭据建议只在 Web 设置中填写。它们使用 AES-256-GCM 加密存储,相关 API 只返回是否已配置,不返回密钥明文。
容器代理值(包括 URL 中的用户名和密码)通过权限为 0600 的每容器运行时环境文件注入,不会出现在 docker run 参数或容器参数调试日志中。macOS 的 Docker Desktop/OrbStack 与 Windows Docker Desktop 会把代理 URL 中的 localhost、127.0.0.1、::1 改写为 host.docker.internal。Linux bridge 容器无法访问宿主机仅绑定在回环地址的代理;请将代理绑定到 Docker bridge 可达接口,并在代理变量中使用该接口的 IP 或 DNS 名称,否则容器会在启动前给出错误。
所有持久化运行数据默认位于 data/:
data/
├── db/messages.db # SQLite 主数据库(含 Workspace Memory v2)
├── config/ # 加密配置、密钥与系统设置
├── groups/ # 工作区目录和项目文件
├── memory/ # 旧版文件记忆,仅供离线迁移/归档
├── sessions/ # 主会话与 Runtime Session 的 Claude 数据
├── ipc/ # Runner 输入、工具请求和回执
├── skills/ # 用户 Skills
├── builtin-skills/ # 固定版本内置 Skills 清单
├── mcp-servers/ # 用户 MCP 配置
├── plugins/ # Plugin catalog、用户状态与运行快照
└── extra/ # Container 工作区持久工具数据
不要把 data/ 提交到 Git。迁移实例时优先使用 make backup 和 make restore;恢复流程会检查归档路径、文件类型、符号链接、清单和数据库完整性。
flowchart LR
Web["Web / PWA"] --> Core["HappyClaw Node Service"]
IM["8 个 IM 渠道"] --> Core
Core --> Auth["Auth / RBAC"]
Core --> Router["消息路由与会话队列"]
Core --> Scheduler["任务调度与恢复"]
Core --> DB[("SQLite + Workspace Data")]
Router --> Providers["Provider Pool"]
Scheduler --> Router
Providers --> Host["Host Runner"]
Providers --> Container["Docker Agent Runner"]
Host --> SDK["Claude Agent SDK / Claude Code"]
Container --> SDK
SDK <--> MCP["Built-in MCP / IPC"]
MCP --> Core
Core --> Stream["WebSocket / Channel Reply"]
Stream --> Web
Stream --> IM
主服务始终使用 Node.js 运行,负责认证、路由、队列、调度、渠道连接、Provider 池、用量和持久化。Docker 只用于隔离智能体执行环境,不承载 HappyClaw 主服务。
| 层 | 技术 |
|---|---|
| 主服务 | Node.js、TypeScript、Hono、WebSocket、SQLite |
| 智能体运行时 | Claude Agent SDK、Claude Code CLI、MCP、文件 IPC |
| Web | React 19、Vite、Tailwind CSS、Radix UI、Zustand、原生 SVG 图表、xterm.js |
| 渠道 | Feishu SDK、grammY、QQ Bot API、DingTalk Stream、企业微信智能机器人 SDK、Discord.js、Baileys、微信 iLink |
| 隔离执行 | Docker、非 root Node.js 容器、Chromium、常用开发与浏览器工具 |
| 质量保障 | TypeScript、Vitest、Prettier、GitHub Actions |
HappyClaw 会执行代码和访问第三方消息平台,部署前请理解以下边界:
0600。data/。完整接口权限见 ACL 权限矩阵。
Web 界面依赖 /ws 上的 WebSocket 推送流式输出和运行状态。反向代理必须放行
Upgrade 并把该连接的读超时设得足够长,否则前端会周期性弹出「连接中断,正在重连...」。
服务端已内置 30 秒心跳(ping/pong),既用于保活,也用于回收半开的死连接, 因此代理侧只需把读超时设得高于心跳间隔即可。nginx 示例:
location /ws {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600s; # 默认 60s 会掐断长连接
proxy_send_timeout 3600s;
}
注意 Connection 应固定为 "upgrade",不要写成 $http_connection——后者依赖
客户端如实发送该头部,行为不稳定。
若代理位于 Cloudflare 等平台之后,还需确认其空闲超时高于 30 秒心跳间隔。
上传大文件时另需放宽 client_max_body_size(不小于 MAX_FILE_SIZE_MB,并预留
multipart 开销)与 client_body_timeout。
位于反向代理之后必须设置 TRUST_PROXY=true,否则所有请求都显示为代理自身的地址:
代理在另一台主机时,全部用户共用同一个按 IP 的登录限流桶,几十次失败即可锁住所有人;
代理在本机(loopback)时,按 IP 的限流不生效。开启后,客户端 IP(登录限流与审计日志
使用)取自 X-Forwarded-For 中由可信代理追加的那一项:右数第 TRUST_PROXY_HOPS 个
(默认 1,即 Caddy 或 nginx 直接面向用户时)。更靠左的条目由客户端提供,不被信任。
密码哈希与校验(登录、注册、初始化、修改密码、管理员创建用户或重置密码)在一个有界的
bcrypt 工作线程池中执行,最多同时排队 32 个任务。超出的突发请求会立即收到 HTTP 503
(服务繁忙,请稍后重试,带 Retry-After: 1),且不计入登录或注册限流次数;
客户端稍后重试即可。
make install # 安装主服务、Web 与 Agent Runner 依赖
make dev # 启动开发环境
make typecheck # 三端类型检查 + 共享类型/Prompt 引用校验
make test # 运行 Vitest 测试
make format-check # 检查本次改动涉及文件的格式
make build # 构建后端、Web 与 Agent Runner
npm run self-test # 构建 + Agent Runner 自检 + 全量测试
项目只使用 Node.js/npm 工具链,不使用 Bun。主服务依赖 Node.js 的 HTTP Upgrade 与 ws 完成 WebSocket 握手。
happyclaw/
├── src/ # 主服务、路由、调度、渠道、权限与持久化
├── web/ # React Web/PWA
├── container/
│ └── agent-runner/ # Host/Container 共用的 Agent 执行器
├── shared/ # 主服务与前端/Runner 共享的事件类型源
├── scripts/ # 构建、校验、备份和恢复脚本
├── tests/ # 后端、前端契约、迁移与安全回归测试
├── docs/ # API、权限与设计文档
├── Makefile # 统一开发、构建和运维入口
└── data/ # 本地运行数据,不进入 Git
每个 Pull Request 都会执行:
npm ci 可复现安装。| 文档 | 用途 |
|---|---|
| Web API | REST API、认证、任务、渠道账号、智能体、用量等接口 |
| 运行时架构 | 模块边界、依赖规则和性能预算 |
| ACL 权限矩阵 | HTTP、WebSocket 与 IM 命令的权限要求 |
| 远端 MCP 配置与排查 | HTTP/SSE、Header、作用域、智能体生效确认与凭据保护 |
| Workspace Memory v2 | Workspace 知识边界、数据模型、并发和 UI 语义 |
| 智能体优先架构记录 | 智能体、工作区、运行会话与渠道挂载的迁移背景 |
| Plugin 自动化设计记录 | Claude Code Plugin catalog 与运行快照的历史设计 |
不一定。管理员只使用 Host 工作区时可以不安装 Docker;普通成员和所有 Container 工作区需要 Docker。
不需要。官方 Agent 镜像会在每次发布时安装最新稳定版 Claude Agent SDK 和
Claude Code,并把实际版本写入
/usr/local/share/happyclaw-tool-versions.txt。固定版本的内置 Skills 会在
make install、make dev 和 make start 时自动物化,并由 Host/Container
共用同一 Manifest;其他 Host 工具可通过 make install-host-tools 安装。
可以。在“设置 → 模型配置”点“添加模型连接”:常见厂商直接选预设,只填 API Key;其他兼容接口选“自定义兼容地址”,填写地址和密钥后系统会识别认证方式、获取模型列表并测试连接。1M 上下文及 Claude Code 兼容环境变量由系统预填,也允许在连接设置中编辑。
运行 make backup 创建一致性归档。在目标实例停止服务后运行 make restore FILE=<备份文件>。不要在服务运行时直接复制 SQLite 文件。
生产模式运行 WEB_PORT=8080 make start。开发模式需要同时设置后端端口和 Vite 的 API/WebSocket 代理目标。
两类旧安装可能需要此工具:一是 #666 之前的受支持版本曾把 WhatsApp @c.us
及 device @c.us 私聊留在 workspace main;二是曾在 #659 的 WhatsApp LID 分类
修复之前单独部署或 cherry-pick #655/schema v73 的非正式安装。升级到当前版本后运行
make leftover-direct-mounts。诊断严格只读,并且只接受当前 schema;发现残留或
存在无法自动判定的 WhatsApp alias 路由冲突时以退出码 2 返回。为保证读取完整且绝不
创建 SQLite sidecar,诊断前也必须先干净停止 HappyClaw。
修复前还必须停止 launchd/systemd 等进程守护,然后运行
make leftover-direct-mounts APPLY=1。修复会把可判定私聊迁到独立
channel_direct session,并永久清除受污染 workspace main 的模型恢复资格和
SDK/runtime session;不会创建备份,也不能安全撤销。工具若无法确认数据库无人占用,
会拒绝执行。如果同一 WhatsApp canonical 用户的多个 alias 指向不同 owner、workspace
或 session,工具会 fail closed;请按诊断输出人工解绑冲突 alias 后重试,不会自动猜测
应保留哪条路由。
欢迎提交 Issue 和 Pull Request:
main 创建功能分支。make typecheck && make test && make build。make format-check 通过。提交信息建议使用 Conventional Commits:
feat: add a new capability
fix: prevent duplicate task runs
docs: update provider setup guide
HappyClaw 是独立开源项目,与 Anthropic 及各消息平台不存在官方隶属、授权或背书关系。相关名称和商标归各自权利人所有。
MIT License © 2025–present riba2534