{"_id":"@aimee1608/clawx","_rev":"2-7c7d8aa2014c554830dab51092246c59","name":"@aimee1608/clawx","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aimee1608/clawx","version":"0.1.0","keywords":["feishu","lark","claude","claude-code","bot","tmux","clawx"],"license":"MIT","_id":"@aimee1608/clawx@0.1.0","maintainers":[{"name":"aimee1608","email":"shuigongqian@sina.com"}],"homepage":"https://github.com/Aimee1608/clawx#readme","bugs":{"url":"https://github.com/Aimee1608/clawx/issues"},"bin":{"clawx":"dist/cli.js"},"dist":{"shasum":"0af42b6758e44d20a9c557844a358ec314b39dc6","tarball":"https://registry.npmjs.org/@aimee1608/clawx/-/clawx-0.1.0.tgz","fileCount":122,"integrity":"sha512-lcV4QEPOenQECFHxhRKY475SLLmquFseFSyC93vXjfTsL4mkj48IkF+8ELCExNY+fBBI16VhoX6iPEU0EwbXOw==","signatures":[{"sig":"MEQCIFhPJLsyDTm51eEc1lMVJfnyWzYtGl2TUkiJDTDdja6vAiB2FLm4jevELUpGL2ixsMEK8JwSu+D0TNXuHwK5RQ8LXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1420727},"type":"module","engines":{"node":">=20"},"gitHead":"3a3a88ab7e445b5ea32f07b752ad364eb1ee5cdc","scripts":{"dev":"tsx watch src/cli.ts start","test":"vitest run","build":"tsc","start":"tsx src/cli.ts start","web:dev":"pnpm -C web dev","typecheck":"tsc --noEmit","web:build":"pnpm -C web build","test:watch":"vitest","web:install":"pnpm -C web install","prepublishOnly":"pnpm build"},"_npmUser":{"name":"aimee1608","email":"shuigongqian@sina.com"},"repository":{"url":"git+https://github.com/Aimee1608/clawx.git","type":"git"},"_npmVersion":"11.6.2","description":"三端互通的 Claude Code 代理：把 Claude Code CLI 跑在持久化 tmux session 里，同时从终端、内嵌 web 控制台、Feishu(Lark) 话题对话同一个 claude REPL — 输入互通、回复实时投递。带 cron、Stop hook 回写、reactions 进度指示。","directories":{},"_nodeVersion":"24.13.0","dependencies":{"pm2":"^6.0.14","zod":"^3.24.1","open":"^11.0.0","uuid":"^10.0.0","axios":"^1.7.9","chalk":"^5.3.0","dotenv":"^16.4.7","js-yaml":"^4.1.1","cron-parser":"^5.5.0","@larksuiteoapi/node-sdk":"^1.61.1","@modelcontextprotocol/sdk":"^1.29.0","@anthropic-ai/claude-agent-sdk":"^0.2.121"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","vitest":"^4.1.5","typescript":"^5.7.3","@types/node":"^22.10.5","@types/uuid":"^10.0.0","@midscene/web":"^1.7.5","@types/js-yaml":"^4.0.9","@playwright/test":"1.59.1","zod-to-json-schema":"^3.25.2"},"_npmOperationalInternal":{"tmp":"tmp/clawx_0.1.0_1782279811493_0.43600665291380936","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aimee1608/clawx","version":"0.1.1","type":"module","description":"三端互通的 Claude Code 代理：把 Claude Code CLI 跑在持久化 tmux session 里，同时从终端、内嵌 web 控制台、Feishu(Lark) 话题对话同一个 claude REPL — 输入互通、回复实时投递。带 cron、Stop hook 回写、reactions 进度指示。","keywords":["feishu","lark","claude","claude-code","bot","tmux","clawx"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Aimee1608/clawx.git"},"bin":{"clawx":"dist/cli.js"},"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"scripts":{"dev":"tsx watch src/cli.ts start","start":"tsx src/cli.ts start","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","build":"tsc","web:install":"pnpm -C web install","web:dev":"pnpm -C web dev","web:build":"pnpm -C web build","prepublishOnly":"pnpm build"},"engines":{"node":">=20"},"dependencies":{"@anthropic-ai/claude-agent-sdk":"^0.2.121","@larksuiteoapi/node-sdk":"^1.61.1","@modelcontextprotocol/sdk":"^1.29.0","axios":"^1.7.9","chalk":"^5.3.0","cron-parser":"^5.5.0","dotenv":"^16.4.7","js-yaml":"^4.1.1","open":"^11.0.0","pm2":"^6.0.14","uuid":"^10.0.0","zod":"^3.24.1"},"devDependencies":{"@midscene/web":"^1.7.5","@playwright/test":"1.59.1","@types/js-yaml":"^4.0.9","@types/node":"^22.10.5","@types/uuid":"^10.0.0","tsx":"^4.19.2","typescript":"^5.7.3","vitest":"^4.1.5","zod-to-json-schema":"^3.25.2"},"gitHead":"ede8f5f008c4f89e0a6bc6c63cc7a269e62c5b20","_id":"@aimee1608/clawx@0.1.1","bugs":{"url":"https://github.com/Aimee1608/clawx/issues"},"homepage":"https://github.com/Aimee1608/clawx#readme","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-8QHrVTsziR+iDNPXQlPfl8SbgMRziw/O+Log1Cqt0lN/ZkhEhZHN4MPyTjAxBGDVBxEvqjRPf9Vsd/IB6jFxQg==","shasum":"0501fea43fe84ec0db5d364cb5d4e537ea58e924","tarball":"https://registry.npmjs.org/@aimee1608/clawx/-/clawx-0.1.1.tgz","fileCount":122,"unpackedSize":1423381,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCUFpcEICRiI/bNmQp9ncZBfvxO58OHahjcio98LlKQOQIhAJwd/3IilxZVQu2418wuO5lrZyo0A8Aq1lFiGU7Z7/DY"}]},"_npmUser":{"name":"aimee1608","email":"shuigongqian@sina.com"},"directories":{},"maintainers":[{"name":"aimee1608","email":"shuigongqian@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/clawx_0.1.1_1782281514611_0.9080374144059367"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-24T05:43:31.325Z","modified":"2026-06-24T06:11:54.927Z","0.1.0":"2026-06-24T05:43:31.679Z","0.1.1":"2026-06-24T06:11:54.813Z"},"bugs":{"url":"https://github.com/Aimee1608/clawx/issues"},"license":"MIT","homepage":"https://github.com/Aimee1608/clawx#readme","keywords":["feishu","lark","claude","claude-code","bot","tmux","clawx"],"repository":{"type":"git","url":"git+https://github.com/Aimee1608/clawx.git"},"description":"三端互通的 Claude Code 代理：把 Claude Code CLI 跑在持久化 tmux session 里，同时从终端、内嵌 web 控制台、Feishu(Lark) 话题对话同一个 claude REPL — 输入互通、回复实时投递。带 cron、Stop hook 回写、reactions 进度指示。","maintainers":[{"name":"aimee1608","email":"shuigongqian@sina.com"}],"readme":"# clawx\n\n把 Claude Code 跑成**持久会话**的编排器:单 agent 会话 + 多 agent 协作房间,从终端、飞书(Lark)、内嵌 web 三端共用同一个会话。\n\n## 是什么\n\n- **`clawx solo`** — 单 agent:把一个 claude(或 codex)会话跑在持久化 tmux 里,从终端、飞书话题、web 三端共用同一个 REPL。带 Stop-hook 回写、reactions 进度提示、cron 定时。\n- **`clawx room`** — 多 agent:基于 Claude Code 原生 Agent Teams 的协作房间,多个 agent(各有独立飞书 bot 身份)在飞书话题里对话、辩论,你随时插话。按**场景模板**(开发 / code review / 异常定位 / 头脑风暴 …)定制角色与流程。\n\n## 特性\n\n- 三端互通:终端 tmux ↔ 飞书话题 ↔ web(查看历史)\n- 单 + 多 agent 统一在一个 CLI 下\n- claude + codex(异质模型)双后端\n- 回合内流式(opt-in):claude 的中间叙述块实时投递到飞书,过程块(青绿 💭 卡)与最终答复(蓝色卡)一眼区分\n- cron 定时任务(定时跑 prompt / 提醒 / 扫描)\n- 场景模板系统(项目级 `.forge/templates/` + 全局)\n- DM agent:飞书私聊里直接对话、让 bot 自己管理会话\n\n## 前置\n\n- Node ≥ 20、pnpm、tmux\n- [Claude Code CLI](https://claude.com/claude-code)(`claude`)\n- 飞书自建应用:`solo` 需 1 个 app;`room` 多 bot 身份需多个(默认 3)个 app。**怎么建 app、开哪些权限、填配置 → 见 [docs/lark-bot-setup.md](./docs/lark-bot-setup.md)**\n\n## 安装\n\n**从 npm(推荐)**\n\n```bash\nnpm i -g @aimee1608/clawx       # 全局安装,命令为 `clawx`\n# 或免安装试用:npx @aimee1608/clawx --help\n```\n\n**从源码(开发 / 二次开发)**\n\n```bash\ngit clone https://github.com/Aimee1608/clawx.git\ncd clawx\npnpm install\npnpm build            # tsc → dist/\npnpm link --global    # 装全局 `clawx` 命令\n```\n\n装好后配置:\n\n```bash\nclawx init          # 交互式配置 solo 的飞书 app / chat / 工作目录\nclawx doctor        # 环境自检\nclawx room init     # room 多 bot fleet 交互配置(校验 token + 探 open_id → lark-apps.json)\n```\n\n## 用法\n\n### 单 agent\n\n```bash\nclawx solo [cwd]                # 新建会话并接管当前终端(tmux)\nclawx solo --resume <uuid>      # 续接已有 claude 会话\nclawx solo --agent codex [cwd]  # 用 codex 作后端\nclawx solo ls | kill <id> | prune\nclawx daemon start | stop | status | logs   # 后台常驻(飞书长连接)\nclawx web                       # 打开 web(查看会话与历史)\n```\n\n### 多 agent\n\n```bash\nclawx room . --template dev --brief \"给 X 模块加缓存\"   # 开发房\nclawx room . --template code-review --brief-file pr.md  # 代码审查房\nclawx room templates            # 列出可用模板\nclawx room ls | revive | kill <rid> | prune\nclawx room attach <rid>         # 重新进入某房间的 tmux\n```\n\n队长(team-lead)收到议题后先发「需求复述 + 方案 + 分工」@你确认,确认后才组队;辩论 / 协作过程镜像到飞书话题,你随时 @ 某个 bot 插话。\n\n## 配置\n\n> 飞书 app 怎么建、权限清单、配置字段 → **[docs/lark-bot-setup.md](./docs/lark-bot-setup.md)**\n\n| 用途 | 位置 |\n|---|---|\n| 单 app(solo / daemon) | `~/.config/clawx/config.json`(`clawx init` 生成) |\n| 多 bot fleet(room) | `~/.config/clawx/lark-apps.json`(手写,见 setup doc) |\n| 场景模板 | 项目级 `<cwd>/.forge/templates/<名>.md`,全局 `~/.config/clawx/templates/<名>.md` |\n| 代理 | 默认 `http://127.0.0.1:7890`,用 `CLAWX_PROXY_URL` 覆盖 |\n| web/daemon 端口 | 默认 `8124`(避开旧版 clawbot 的 `8123`,两者可并存),用 `CLAWX_WEB_PORT` 覆盖 |\n\n**多实例隔离**:设 `CLAWX_BRAND=<名>` 可跑一个完全隔离的实例(独立 config / data / tmux 前缀),和默认实例互不干扰 —— 适合拿一个一次性 brand 做开发 / 测试。\n\n## 环境变量速查\n\n全部可选,代码都有合理默认;个人 / 机器特定的值建议放本地 wrapper 或 shell rc,别写进仓库。\n\n**实例 / 路径**\n| 变量 | 作用 | 默认 |\n|---|---|---|\n| `CLAWX_BRAND` | 实例品牌,隔离 config/data/tmux | `clawx` |\n| `CLAWX_DATA_DIR` | 数据根目录 | `~/.local/share/<brand>` |\n| `CLAWX_SESSIONS_PATH` | solo 会话存储路径(空串 = 纯内存) | 数据目录下 |\n\n**代理**(claude API 通道)\n| 变量 | 作用 | 默认 |\n|---|---|---|\n| `CLAWX_PROXY_URL` | http(s) 代理目标 | `http://127.0.0.1:7890` |\n| `CLAWX_NO_PROXY` | no_proxy 列表 | 含 localhost / 飞书域名 |\n| `CLAWX_OVERRIDE_PROXY_PATTERN` | 正则,强制替换匹配到的继承代理(治公司代理漏入) | 空(不强制) |\n| `CLAWX_DISABLE_PROXY_INJECT` | `1` = 完全不碰 proxy | — |\n\n**web / daemon**\n| 变量 | 作用 | 默认 |\n|---|---|---|\n| `CLAWX_WEB_PORT` | web / daemon 端口 | `8124` |\n| `CLAWX_WEB_HOST` | 绑定地址(设 `127.0.0.1` 限本机) | `0.0.0.0` |\n| `CLAWX_WEB_PUBLIC_URL` | DM 深链用的公网 URL | — |\n\n**飞书 / tmux**\n| 变量 | 作用 |\n|---|---|\n| `CLAWX_TMUX_THREAD_CHAT_ID` | solo 新会话默认话题群 chat_id |\n| `CLAWX_LARK_CHAT_ID` | room chat_id 兜底(lark-apps 没配时) |\n| `CLAWX_USER_OPEN_ID` | 你的 open_id(@ 你用;通常首条 DM 自动学到) |\n| `CLAWX_TMUX_PROGRESS_EMOJI` | 进度反应表情(默认 `THINKING`) |\n| `CLAWX_TMUX_CMD` | tmux 二进制(默认 `tmux`) |\n\n**回合内流式**(claude 中间块实时投递,默认关)\n| 变量 | 作用 | 默认 |\n|---|---|---|\n| `CLAWX_STREAM_REPLIES` | `1` = 开启回合内流式中间回复 | 关 |\n| `CLAWX_STREAM_POLL_MS` | transcript 轮询间隔 | `700` |\n| `CLAWX_STREAM_TAIL_BYTES` | 每次只读 transcript 尾部窗口(控内存) | `524288`(512KB) |\n| `CLAWX_STREAM_MAX_MS` | 单回合流式兜底上限 | `1800000`(30min) |\n| `CLAWX_CARD_TITLE_CELLS` | 飞书回复卡片标题宽度预算(中文/emoji 算 2 宽) | `46` |\n\n**其他**\n| 变量 | 作用 |\n|---|---|\n| `CLAWX_REPL_WATCHDOG_MS` | REPL 看门狗轮询间隔(默认 `60000`) |\n| `CLAWX_DISABLE_CRON` | `1` = 关掉 cron 调度 |\n| `CLAWX_CODEX_HOOK_DUMP` | codex hook 调试转储(开发用) |\n\n## 许可\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}