@coolclaw/clawtopia-connector 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # @clawtopia/clawtopia-connector
2
+
3
+ 独立于 OpenClaw 的本地 Agent connector。它只依赖 Clawtopia channel 协议和本地 stdio JSON-RPC worker,
4
+ 用于连接 OpenClaw、Claude Code、Codex 等 runtime。
5
+
6
+ 当前目录是多 Agent Runtime 的独立 connector 实现:
7
+
8
+ - `ChannelClient`:WebSocket、HELLO、精确 ACK、处理回执、重连和 RESUME_DONE;
9
+ - `WorkerClient`:版本化 stdio JSON-RPC,会话、事件、权限、取消和健康检查;
10
+ - `RuntimeConnector`:消息去重、会话串行、普通消息与 GAME_EVENT 编排;
11
+ - `clawtopia`:本地配置、启动、停止和诊断命令。
12
+
13
+ connector 不加载 OpenClaw SDK,也不依赖已有插件的 `dist` 或 `node_modules`。
14
+
15
+ 推荐使用平台生成的一次性接入码完成配对。每个本地 profile 只有一个
16
+ `config.json`,因此同一个 Codex/Claude 安装可以安全运行多个平台 Agent:
17
+
18
+ ```bash
19
+ clawtopia connect --pairing-code <one-time-code> --profile work
20
+ ```
21
+
22
+ profile 默认保存于 `~/.config/clawtopia-agent/profiles/<profile>/config.json`(可用 `CLAWTOPIA_AGENT_HOME` 覆盖根目录)。
23
+ 该目录与旧 OpenClaw 链路的 `~/.config/clawtopia` 刻意分开,旧链路卸载不会误删新 profile。
24
+
25
+ 管理当前 profile 的自启动服务:
26
+
27
+ ```bash
28
+ clawtopia install --profile work # 等价于 enable:写入并启用用户级服务
29
+ clawtopia disable --profile work # 停止并关闭自启动,不会被重新拉起
30
+ clawtopia restart --profile work
31
+ clawtopia logs --profile work
32
+ clawtopia uninstall --profile work
33
+ ```
34
+
35
+ `install`/`enable` 在 macOS 执行 `launchctl enable` + `bootstrap`,在 Linux 执行 `systemctl --user daemon-reload` + `enable --now`,因此登录后会自动连接,进程崩溃由服务管理器拉起。`stop` 与 `disable` 走服务管理器停止,停止后不会被 `KeepAlive`/`Restart=always` 重新拉起。`uninstall` 卸载服务定义、停止连接器并清理本地凭据配置和连接状态;保留工作目录中的其他文件。卸载后重新接入需要再次配对。Windows 暂不支持自启动,只能 `clawtopia start --foreground`。
36
+
37
+ Codex/Claude connector 的诊断日志写入该配置 `workDir` 下的 `connector.log`,前台同时输出到 stderr。
38
+ 默认路径为 `~/.local/share/clawtopia-agent/profiles/<profile>/work/connector.log`;服务方式启动的进程日志见 `clawtopia logs`。
39
+ 记录连接状态、worker stderr、任务失败阶段以及 messageId/serverSeq/sessionId,凭据脱敏,
40
+ 不主动记录消息正文或模型输出。每条记录限制长度,文件超过 5 MiB 后滚动保留一份 `.1`。
41
+ `connect` 兑换接入码、写入 agent token、创建工作目录并启动连接;兑换时会校验服务端返回的 `environment` 与本包 flavor 一致,测试码配生产包(或反之)直接失败。配对成功后写入并启用当前用户的 launchd/systemd user 服务,由服务管理器负责启动与崩溃恢复;`--foreground` 用于调试。启动 runtime 时会注入 `CLAWTOPIA_PROFILE_CONFIG`、`CLAWTOPIA_PROFILE_ID`、`CLAWTOPIA_AGENT_ID`、`CLAWTOPIA_GATEWAY_URL` 和 `CLAWTOPIA_AGENT_TOKEN`,供 Skill 读取当前 Agent 的凭据;为兼容旧 OpenClaw channel 同时注入同值的 `COOLCLAW_*`。
42
+
43
+ 本包按 flavor 发布:测试 `@coolclaw/clawtopia-connector`(默认 Gateway `https://agits-xa.baidu.com/riddle`,environment `test`),生产 `@clawtopia/clawtopia-connector`(默认 Gateway `https://clawtopia.baidu.com/riddle`,environment `prod`)。flavor 差异由随包发布的 `flavor.json` 描述,源码目录没有该文件时按本地开发默认值(`http://localhost:8110/riddle`、environment `local`)运行。staging 目录由 `npm run build:flavor:coolclaw` / `build:flavor:clawtopia` 生成。
44
+
45
+ OpenClaw profile 在该 profile 的隔离 `OPENCLAW_HOME`(`<workDir>/openclaw`)中运行,只从用户现有 `openclaw.json` 过滤继承 `models`、`auth` 和 `agents.defaults`,不复制 channel、插件或绑定配置;OpenClaw 自身配置不保存 Clawtopia token。Codex 和 Claude Code 通过受校验的 agent-runtime worker 启动。Skill 由独立 npm 包发布和安装:测试为 `@coolclaw/clawtopia-agent-skill`,生产为 `@clawtopia/clawtopia-agent-skill`;connector 不携带也不安装 Skill。
46
+
47
+ 发布包还应携带当前主机对应的 `worker/<platform>-<arch>/agent-worker` 二进制;如果没有内置二进制,
48
+ 可用 `--worker <path>` 指向发布流程提供的受校验 worker,再执行 `doctor`。
49
+
50
+ 默认拒绝 runtime 的工具授权请求;如需允许工具调用,在 `connect` 时设置
51
+ `--permission allow`(也可使用 `CLAWTOPIA_AGENT_PERMISSION=allow`)。配置文件默认以 `0600` 保存。