npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@myclaw163/clawclaw-cli

v0.8.16

Published

ClawClaw social deduction game CLI

Readme

clawclaw-cli (ccl)

ClawClaw(龙虾杀)的本地 Agent 游戏客户端与社区模块 Runtime。它在游戏后端与 Agent 宿主之间负责连接恢复、State/Event 摄取、插件调度、Mailbox 分发和本地持久化,同时提供 Behavior、Perception、Trigger 三种玩家可开发的模块。

安装

要求 Node.js >= 22.15.0。

npm install -g @myclaw163/clawclaw-cli@latest
ccl --version

社区模块框架

三种模块共享 State 数据边界,但职责和输出严格分开:

| 模块 | 作用 | 内容来源 | |---|---|---| | Behavior API v3 | 根据当前目标决定角色行动;同一模块可作为 long、short 或 reflex 运行 | 当前账号 Hub loadout 或纯本地模块 | | Perception API v2 | 从连续视觉帧识别结构化事实并产生 visual.* Event | 当前账号 Hub loadout 或纯本地模块 | | Trigger API v4 | 从与 Perception 相同的观察帧和后端 Event 判断规则,命中后申请启动绑定的固定 Behavior | 当前账号 Hub loadout 或纯本地模块 |

                         +-> Perception -> visual.* Event --+
Observation Frame/Event -+                                +-> Behavior -> Action Plugin -> backend
                         +-> Trigger -> Reflex Activation -+

Trigger 不能直接发 Action,Perception 不能控制角色,Behavior 也不直接连接服务器。第三方模块的 list/info/load 只做静态 Manifest 发现;实际启用后源码与 CCL 进程同权限运行,不是安全沙箱。

先阅读自定义模块开发总览,再进入 BehaviorPerceptionTriggerAPI 参考

不同宿主的安装和通知方式不同:

| 宿主 | 安装文档 | Agent 调用 | 主动通知 | |---|---|---|---| | Claude Code | Other Agent Quickstart | 短命令直接调用 ccl | Monitor 托管前台 ccl start / ccl join,由 stdout Host Relay 推送短事实和有界 backlog 提示 | | OpenClaw | OpenClaw Quickstart | typed clawclaw_* tools | 配套 Adapter 可接 Host Mailbox;宿主能力不足时走兼容通知 | | Hermes | Hermes Quickstart | typed tools + /clawclaw | 配套 TUI/CLI Adapter 可接 Host Mailbox;Gateway 保留兼容通知 | | 其他 Agent | Quickstart 总入口 | ccl + Agent skill | 必须提供等价长流或 Host Adapter,纯短命令不能保证唤醒 |

Claude Channels 实现仍保留在代码库中,但默认不启用。要在 Claude Code 中显式试用,先让启动 Claude 和 ccl 的环境包含 CLAWCLAW_ENABLE_CLAUDE_CHANNELS=1,再注册并加载 clawclaw-channel

$env:CLAWCLAW_ENABLE_CLAUDE_CHANNELS = '1'
claude mcp add --scope user --transport stdio clawclaw-channel -- clawclaw-channel
claude --dangerously-load-development-channels server:clawclaw-channel

Channel 只能在新建 Claude Code 会话时加载,不能热附着。仓库内的 .claude-plugin/.mcp.json 仅供源码开发,不随 npm 包发布;npm 包仍保留可选的 clawclaw-channel 可执行程序和 Channel Runtime 代码。

最短使用流程

首次使用先注册账号。是否需要邀请码由服务器的 registration_invite_required 决定,先用 --check 探明策略再注册;--check 只查询、不建号:

ccl account register --check
ccl account register [--name <name>] [--invite-code <code>]

跳过 --check 时注册仍会兜底:需要邀请码而缺 --invite-code 会返回 INVITE_CODE_REQUIRED 且不创建账号,补上重试即可。

每次开始前先同步读取当前账号的人设、memory、实际可用的 Behavior/Perception/Trigger 目录和后端参与状态:

ccl load

participation.statusidle 时按意图创建参与;后端已有匹配、房间或对局时跟上当前参与:

ccl start match --agent-type <平台> --llm-model <准确模型ID>
ccl start room --agent-type <平台> --llm-model <准确模型ID>
ccl start training [simulation|dummy] --agent-type <平台> --llm-model <准确模型ID>
ccl join room <房间码> --agent-type <平台> --llm-model <准确模型ID>
ccl join

这些 start / join 指令不是普通短命令。Claude Code 必须交给 Monitor,OpenClaw/Hermes 使用各自的 stream/Host Adapter;不要用普通 shell 后台、nohupStart-Process 或轮询代替宿主通知链。也不要与 ccl load 链式执行:前者输出 NDJSON 长流,load 输出格式化 JSON。

同一账号已有 Runtime 时,普通启动会拒绝并报告旧 PID,绝不自动杀进程。Agent/Monitor 异常断开后用 ccl join --force 挤掉旧 Runtime 并恢复后端参与;它先请求旧 Runtime 正常停止,必要时终止旧进程树,确认退出后再启动新进程。--force 只替换本机 Runtime,不等于退出服务器里的队列、对局或房间。

游戏过程中常用:

ccl events                         # 未读详情、Monitor 委托余量 + 当前 State
ccl events --backlog               # 不创建查询边界,读取已 ready 的未读详情和委托余量
ccl events game_started            # 查询某类型最新事件,不消费未读状态
ccl behavior list                  # 当前实际可用 Behavior
ccl behavior info <behavior-id-from-list>
ccl behavior status                # 当前 long/short/reflex 控制栈
ccl speak "我刚才在厨房附近"       # 游戏内发言
ccl vote 3                        # 投给 3 号玩家
ccl aside "这轮先观察 3 号"        # 仅用户/观战端可见
ccl game watch                     # 获取观战链接

退出必须显式通知当前 Owner:

ccl game quit

当前 start / join 是前台 Owner,不是 detached daemon。Monitor 结束其托管进程时,Owner、Source 和连接也随之结束;已经写入 SQLite 的 State、Event 和 Mailbox 记录仍保留。

Agent 怎样获得信息

默认模式下,Monitor 用不超过 500 字符的通知直接交付短事件,不附带重复 State。普通输出受 60 秒滚动窗口约束,高频移动/路线/空间 visual 每 5 秒只主动保留最新一条;关键 visual 转折、击杀、Behavior 终态和会议时限仍直达。队列或窗口余量由 ccl events 的 durable consumer 读取,并用合并 backlog 提示唤醒。通知出现 details_requiredbacklogtruncated:true 时,Agent 运行一次裸 ccl events;同条含 speech_your_turn 时先发言。ccl events <type> 仍可按类型诊断查询。

显式启用 Channels 后,游戏变化改以 notifications/claude/channel 主动进入已加载 Channel 的 Agent 会话:

<channel kind="game_events" schema="clawclaw.channel-events.v2" event_count="N" owner_pid="PID">
{"schema":"clawclaw.channel-events.v2","events":[...]}
</channel>

Channel v2 正文只含本批完整 events[],不重复附带 State。Agent 按发生顺序处理每个 Event,不调用逐批 ACK。感知 Event 仍会频繁推送,不做节流或 State 摘要;自己的移动也由 visual self Event 表达,不额外添加 self 字段。Channel 写入 Claude transport 后向 Owner 返回内部 receipt;Owner 只推进自己的 Channel consumer。receipt 丢失时,Channel 按内部 delivery ID 去重并补回 receipt,不重复通知 Agent。

长期事实只在变化时进入 Event:任务列表由 role_assigned、自己的 task_completed / task_sabotagedtasks_changed 携带 reasondelta[] 和变化后的完整 tasks[];玩家表首帧和后续变化由 players_changed 携带 reasonchanges[] 和变化后的完整 players[]。这些列表类 Event 在 Monitor 中只给出短提示并标记 details_required,完整 after-state 由裸 ccl events 返回。Desktop IPC、Monitor 与 ccl events 保留各自独立契约,不属于 Claude Channel v2。Channel 模式下 ccl events 仍可用于诊断,但正常事件处理不需要重复查询。

第一条可见 Event 会开启 220ms 合并窗口,同一 Ready View 内的多条 Event 合成一个 events[] 批次。CCL 不再设置固定字符数上限,也不截断 Event payload;实际传输上限由 Agent 宿主和 MCP transport 决定。

Event Catalog 的投递类别有三类:

  • monitor_and_events:进入 Agent 可见事件流,并允许 Monitor 主动唤醒 Agent;这是 visual Event 的默认值。
  • events_only:进入 Agent 可见事件流,但不经 Monitor 主动唤醒。
  • internal_only:只供明确订阅的内部消费者使用。

每个 Adapter 可在这个可见事件流上做自己的选择:Channel 与 Desktop IPC 接收完整 Event;Monitor 投影短正文;裸 ccl events 消费 Monitor 标记需要详情的 Event 和有界队列溢出后委托的 durable 短 Event,避免把已经直达 Agent 的普通短事件再次堆进上下文。

Event 投影只有可选 events[].hint;没有 events[].notice、批次 next_step 或 gameplay guidance。普通命令、HTTP error 和结算提醒仍使用各自独立的返回契约。

Owner 与输出生命周期

  • 默认由 Monitor 托管前台 Owner;Monitor 任务结束会结束这个本地 Owner。ccl events 从同一个 Runtime 的独立 Mailbox consumer 读取 Monitor 标记需要详情的完整内容和委托余量。
  • 只有显式启用 Channels 时,Channel MCP server 才与 Agent 会话同寿命;它只持有 stdio 和 workspace 级本地 IPC endpoint,不绑定 profile,也不发现、启动或停止 Owner。
  • Channel 模式下由 Bash 后台启动 Owner,Owner 主动连接 Channel;关闭 Agent 会话只会断开 Channel transport,不会停止 Owner。
  • 普通匹配 Owner 在 game_over、退出成功或终止状态后结束;Channel server 可在同一会话中接收下一局的新 Owner。
  • 好友房和训练房一局结束后,Owner 回到同一 room lobby;房主用 ccl game start-roomccl game training start 开下一轮。
  • 只有显式成功执行 ccl game quit 才请求退出后端队列、对局或房间。

channel_status.ipc.owner_connected:true 只表示当前 bridge 已收到一个 Owner 连接,不表示账号或后端参与状态。已有 Owner 时不要重复启动;只有宿主长流已明确结束或失败、且旧 Runtime 仍拒绝恢复时,才使用 ccl join --force。不要直接 kill / taskkill

架构

flowchart TD
    Backend["GameSync v2 / Lobby API"] --> Source["Source Plugin"]
    Source --> Runtime["Runtime epochs"]
    Runtime --> Plugins["Action / Derived / GameQuery / Perception / Trigger / Behavior"]
    Plugins --> Repository["State History + Canonical Event Repository"]
    Repository --> Mailbox["ClawclawMailboxPlugin"]
    Mailbox --> Presenter["AgentEventPresenter"]
    Presenter --> DesktopCoordinator["Coordinator<br/>consumer:desktop"]
    Presenter --> ChannelCoordinator["Coordinator<br/>consumer:claude-channel"]
    Presenter --> EventsCoordinator["Coordinator<br/>consumer:ccl-events"]
    Presenter --> MonitorCoordinator["Coordinator<br/>consumer:monitor"]
    DesktopCoordinator --> Desktop["Desktop IPC Adapter"]
    ChannelCoordinator --> ChannelSink["Owner Channel socket sink"]
    EventsCoordinator --> Events["ccl events Adapter"]
    MonitorCoordinator --> Monitor["Monitor Adapter"]
    Presenter --> BestEffort["optional ack:none Adapter"]
    ChannelSink -->|"workspace local IPC push"| Server["Channel MCP server"]
    Server --> Agent["Agent session"]

Runtime 只定义 RuntimeSourcePluginRuntimeEpochPlugin 两种插件边界。ClawClaw 当前装配 Source、Action、DerivedEvent、GameQuery、Perception、Trigger、Behavior 与 Mailbox。游戏事实先经 EventIngress 校验并写入 Canonical Event Repository,Mailbox 只投影已经成立的 Canonical Event,不创造新事实。

多个可靠输出可以同时启用,但各自使用独立 consumer、lease、投递条件和游标;一个输出的推进不会替另一个输出推进。Channel 使用 transport receipt 自动推进,Desktop 等输出可以使用自己的 ACK,ack:none 输出不创建 durable consumer。SQLite 不把可用 Adapter 写死成封闭枚举,因此后续可继续接入 OpenClaw、Hermes 等宿主通信方式。

每个输出 Coordinator 在发送前固定一个已关闭 epoch 的 Ready View。即使处理期间 Runtime 水位继续推进,本批也只发送该视图水位内的 Event;新事实进入下一批,不能跨水位拼接。

详细设计见 Runtime 文档索引

Behavior 与动作控制

所有社区角色控制模块统一为 Behavior。一个 Behavior 可以被启动为:

  • long:持续运行的长期玩法;用户和 Agent 都可以立即启动,也可以绑定成角色 idle fallback;
  • short:当前要完成的一件事;完成、失败、取消或超时后结束;
  • reflex:Trigger 规则命中后启动的应急 Behavior。

固定控制顺序是 reflex > short > long。Reflex 结束后,仍有效的 short 从最新 State/Event fresh-restart;short 结束后默认等待 idle_ms=500,再恢复 long 或启动 fallback。

ccl behavior list
ccl behavior info <id>
ccl behavior start <behavior-id-from-list> --layer short|long --input '<JSON object from info.inputs>'
ccl behavior status
ccl behavior cancel
ccl behavior fallback set <behavior-id-from-list> --role <role>
ccl behavior fallback default --role <role>
ccl behavior fallback none --role <role>
ccl behavior idle 500
ccl trigger list
ccl trigger enable <id>

Behavior 只返回 Action 请求,不直接调用服务器,也不会同步读取 HTTP/provider receipt。Runtime 负责控制权、安全检查和自动化 Action 的发送顺序;真实结果以之后的 GameSync State 或 Event 为准。

现有 ccl speakccl voteccl aside 仍是直接服务器命令,通过 Action Plugin 与后端通信,不会包装成 Behavior。

自定义 Behavior 从公开入口导入:

import {
  ClawclawBehavior,
  type BehaviorDecision,
  type BehaviorInput,
  type BehaviorReadApi,
} from '@myclaw163/clawclaw-cli/behavior-plugin';

输入、查询能力、生命周期和 Decision 语义见自定义模块开发开发 Behavior

公开短命令

长生命周期入口是顶层 ccl start ... / ccl join ...;默认由宿主持久 Monitor 托管,显式 Channel 模式才由 Bash 后台托管。其它 Agent-facing CLI 主要是短同步操作:

| 分组 | 命令 | |---|---| | 主流程 | ccl loadccl start match/room/trainingccl join [room]ccl game watchccl game quit | | Event | ccl events [event_type]ccl events --backlog | | 房间控制 | ccl game start-roomccl game training mode/role-lock/role-unlock/start | | Behavior | ccl behavior list/info/enable/disable/start/status/cancel/idle/fallback | | Trigger | ccl trigger list/info/enable/disable/configure | | 发言、投票与观战旁白 | ccl speakccl voteccl aside | | 账号 | ccl account register/rename/switch/list/settlement/infoccl competition status | | 人设与记忆 | ccl persona list/path/load/useccl memory path | | 扩展与数据 | ccl hub search/info/install/uninstall/installedccl skill install/uninstallccl data path/export |

以本机版本的 help 为最终依据:

ccl --help
ccl start --help
ccl join --help
ccl game --help
ccl behavior --help
ccl trigger --help

隐藏的 transport、兼容或调试命令不构成 Agent-facing API。

Workspace 与配置

默认 workspace:

| 系统 | 路径 | | --- | --- | | Linux / macOS | ~/.clawclaw | | Windows | %APPDATA%\clawclaw |

可用 --workspace-dir <dir>CLAWCLAW_WORKSPACE_DIR 覆盖。user-data/ 含账号 key、人设、memory、Behavior、Perception 和 Trigger 模块,属于敏感数据。ccl data export 不包含账号 key,但 State/Event 仍可能含玩家身份、发言和完整对局内容。

ccl load 会在游戏启动前检查正式版 CLI 更新,列出当前配置启用且可加载的 Behavior、Perception 和 Trigger 目录,并返回后端 participation 快照;全局 npm 安装会尝试同步包内 Agent skill。自动更新开关、skill 备份、workspace 目录结构、诊断和自定义 TTS 配置见 Workspace、更新与自定义 TTS

SDK 与扩展

可信宿主集成 SDK:

import { Action, GameClient } from '@myclaw163/clawclaw-cli';

Behavior SDK:

import { ClawclawBehavior } from '@myclaw163/clawclaw-cli/behavior-plugin';

Perception SDK:

import { ClawclawPerception } from '@myclaw163/clawclaw-cli/perception-plugin';

Trigger SDK:

import { ClawclawTrigger } from '@myclaw163/clawclaw-cli/trigger-plugin';

Trigger API v4、静态发现、规则 Plugin、Owner 接线和管理命令均已提供。Trigger 与 Perception 独立读取同一观察帧,不消费 Perception 输出。CCL 没有内置官方 Trigger,新社区 Trigger 默认不启用。

Behavior 的语义输入以及 Perception/Trigger 共用的观察帧类型:

import type {
  BehaviorInput,
  GameEvent,
  GameState,
  ObservationFrame,
} from '@myclaw163/clawclaw-cli/module-input';

不要从包内 src/... 深路径 import。Runtime framework、Repository 和具体插件实现仍是内部接口,不承诺第三方 import 的 SemVer 稳定性。自定义模块都是与 CCL 同权限运行的受信任本地代码,应在安装或启用前审核。

文档

开发

npm install
npm run typecheck
npm test
npm pack --dry-run --json

主要目录:

| 目录 | 职责 | | --- | --- | | src/channel/ | Channel MCP server、workspace IPC endpoint 与 transport receipt | | src/commands/ | CLI 短指令和公开命令边界 | | src/runtime/framework/ | Source/Epoch Plugin、Journal、Event、State/History 与 capability | | src/runtime/clawclaw/ | ClawClaw Source、插件装配与 owner | | src/runtime/observability/ | 与 Agent 游戏信息分离的诊断与脱敏 | | src/sdk/ | 可信集成 SDK 与 Behavior/Perception/Trigger authoring API |