快乐
运行的代码——从您的手机,浏览器或终端控制AI编码代理.
免费 开源 暗号任何地方.
安装
npm install -g happy
安装或更新 Happy 还安装了两个伴行的 CLI 证书
运行时间驱动器 : codex-multi-auth 进入 npm 的全局前缀 happy
本身,和 saycode-claude-swap 以 uv 安装,将 claude-swap 财务报告和审定财务报表
cswap 命令在 uv 的工具 bin 目录中 —— 快乐在那里寻找它们甚至
当目录不在时 PATH。两者都安装在准确的
快乐的版本需要而不是最新的 因为快乐检查这些
如果发现其他东西,则重新安装自己的被封存副本。 设定
HAPPY_SKIP_COMPANION_TOOLS=1 跳过此步骤; Happy 安装任一
当它需要的时候需要它。 快乐的安装也不可能失败
npm编号 :uv 或安装失败只是警告.
迁出
happy-coder软件包。 感谢 @franciscop (英语) 捐赠happy软件包名称 !
使用量
Claude 代码( 默认)
happy
# or
happy claude
这将:
- 启动 Claude 代码会话
- 显示要从移动设备或浏览器连接的 QR 代码
- 允许实时会话控制——所有通信都是端到端加密的
- 计算机在线时直接从手机或网络启动新会话
更多探员
happy codex
happy gemini
happy openclaw
# or any ACP-compatible CLI
happy acp opencode
happy acp -- custom-agent --flag
守护进程
守护进程是一个背景服务, 它继续运行在您的机器上 。 它让你可以远程地——从你的手机或网络应用——培育和管理编码会话,而不需要开放的终端.
happy daemon start
happy daemon stop
happy daemon status
happy daemon list
运行时自动启动守护进程 happy,所以你通常不需要手动管理.
不停地让守护进程穿越反弹
如果你想让守护进程在重启后自动回来——而不打开 happy 会话第一——从您 shell 配置开始, 从而继承您正常的用户会话上下文( PATH, keychain access, OAuth certain):
# ~/.zshrc or ~/.bashrc
if [[ -o interactive ]] && [[ -z "$HAPPY_DAEMON_CHECKED" ]]; then
export HAPPY_DAEMON_CHECKED=1
() {
local state=$HOME/.happy/daemon.state.json
local pid=$(grep -oE '"pid"[[:space:]]*:[[:space:]]*[0-9]+' "$state" 2>/dev/null | grep -oE '[0-9]+')
if [[ -z "$pid" ]] || ! kill -0 "$pid" 2>/dev/null; then
happy daemon start >/dev/null 2>&1
fi
} &!
fi
重启后的第一个交互 shell会触发启动;后续的贝壳会因为守护进程已经运行而短路.
macOS 用户 : 宁可采用这种外壳闪电法,而不是
launchd发射特工 一个启动代理运行在一个代理域,即 从您的 GUI/ Aqua 登录会话中脱离,这意味着捆绑claude-agent-sdk无法到达 macOS 密钥链并默默地失败认证( “ 未能认证 ” ) 。 API 错误: 401 终止,",duration_api_ms: 0) (中文(简体) ). 如果您必须使用已发射的, 您的包装必须读取 OAuth 访问符~/.claude/.credentials.json并导出为CLAUDE_CODE_OAUTH_TOKEN在执行守护进程之前,你需要自己处理符号旋转.
认证
happy auth login
happy auth logout
Happy使用密码密钥对进行认证——你的私人密钥留在你的机器上. 所有会话数据在离开设备前都会加密 .
要连接第三方代理 API :
happy connect gemini
happy connect claude
happy connect codex
happy connect status
图标
| 命令 | 说明 |
|---|---|
happy | 启动 Claude 代码会话( 默认) |
happy codex | 开始代码模式 |
happy gemini | 开始双子体 CLI 会话 |
happy openclaw | 开始 OpenClaw 会话 |
happy acp | 启动任何 ACP 兼容剂 |
happy resume <id> | 恢复上届会议 |
happy agent <verb> | 让人工智能人员检查并控制自有儿童会议 |
happy notify | 向设备发送按键通知 |
happy doctor | 诊断和解决问题 |
代理指挥
@buzzni/happy-cli 包括精确的相容性 @buzzni/saycode-cli
运行时间,所以乐乐开始的会话可以使用 happy agent 没有单独的
Saycode CLI安装. 此命令用于在 A 内部运行的 AI 代理
Happy/Saycode会话; 它在该会话环境外关闭失败 .
所支持的动词包括能力发现和自有儿童生命周期
操作,例如 whoami, (中文(简体) ), ls, (中文(简体) ), spawn, (中文(简体) ), prompt, (中文(简体) ), steer, (中文(简体) ), stop, (中文(简体) ), read, (中文(简体) ),
财务报告和审定财务报表 wait运行 happy agent --help 用于当前机器可读合同.
乐乐故意不安装顶层 saycode 二进制,所以
独立安装的 Saycode CLI 仍然未受影响.
高级
环境变量
| 变量 | 说明 |
|---|---|
HAPPY_SERVER_URL | 自定义服务器 URL( 默认 ): https://api.cluster-fluster.com(中文(简体) ) |
HAPPY_WEBAPP_URL | 自定义网络应用 URL( 默认 ): https://app.happy.engineering(中文(简体) ) |
HAPPY_HOME_DIR | 自定义 Happy 数据的主目录( 默认 ): ~/.happy(中文(简体) ) |
HAPPY_DISABLE_CAFFEINATE | 禁用 MacOS 睡眠预防 |
HAPPY_EXPERIMENTAL | 启用实验特性 |
沙盒(实验)
Happy可以在OS级沙盒内运行代理,以限制文件系统和网络访问.
happy sandbox configure
happy sandbox status
happy sandbox disable
从源头建楼
git clone https://github.com/slopus/happy
cd happy-cli
yarn install
yarn workspace happy cli --help
所需资源
- 节点.js >= 20.0.0
- 克劳德:
claude已安装的 CLI 登录( L) - 对于代码 :
codex已安装的 CLI 登录( L) - 对于双子座:
npm install -g @google/gemini-cli+ 键happy connect gemini
解决问题
Cannot find package '@slopus/happy-wire'
症状 :
Error [ERR_MODULE_NOT_FOUND]: Cannot find package '@slopus/happy-wire'
原因: 源包使用工作空间依赖性
@slopus/happy-wire: file:../happy-wire。安装或连接源
目录可以在没有运行时间的情况下直接离开全局软件包
依赖性.
从此检出中修正 :
# from the aplus-dev-studio repo root
cd vendor/happy/packages/happy-cli
corepack pnpm run cli:install
避免 npm install -g . 财务报告和审定财务报表 npm link 用于守护进程运行时间安装 。 供出版
工作,先准备一个干净的包裹并守护它:
tmp=$(mktemp -d)
corepack pnpm run build
node scripts/prepare-publish-package.cjs --out "$tmp/package"
node scripts/guard-publish-artifact.cjs "$tmp/package" --install-smoke
远程终端 - posix_spawnp failed. 在 macOS 上显示
症状(web-ui "Q" tab QQ守护进程日志):
[REMOTE-TERMINAL] terminal-open-fwd spawn failed: posix_spawnp failed.
原因: npm 提取 node-pty/prebuilds/darwin-{arm64,x64}/spawn-helper
不包含可执行文件位( n)0o644所以马科斯 posix_spawnp 拒绝
改为 execve() 这个 Linux 用户 forkpty + execvp 且不受影响.
自动修复: 运入 @namsangboy/[email protected]+ —— 说
postinstall在macOS上翻转了该位. 只是升级:
npm i -g @buzzni/happy-cli@latest
happy daemon stop && happy daemon start
手动修补(旧版)数字 :
chmod +x $(npm root -g)/@buzzni/happy-cli/node_modules/node-pty/prebuilds/darwin-arm64/spawn-helper
chmod +x $(npm root -g)/@buzzni/happy-cli/node_modules/node-pty/prebuilds/darwin-x64/spawn-helper
happy daemon stop && happy daemon start
或者从源头重建 (同样可行,但需要Xcode CLT):
xcode-select --install # if not already
npm i -g @buzzni/happy-cli@latest --build-from-source
其它
happy doctor运行平台诊断 并且是第一个尝试 在打开一个问题之前.- 守护进程日志
~/.happy/logs/*-daemon.logGrep 用于[REMOTE-TERMINAL]检查终端中继流量而不漏出 有效载荷体(只记录元数据) -bytesIn, (中文(简体) ),bytesOut, (中文(简体) ),exitCode, (中文(简体) ),signal, (中文(简体) ),durationMs) (中文(简体) ).
许可证
麻省理工学院