agentCLAWHUBUnverified

Ocean Chat

OceanBus-powered P2P messaging, shared address book, 1v1 meetup negotiation, and conversation threading for AI agents. Use when users want to manage contacts... Skill: Ocean Chat Owner: ryanbihai Summary: OceanBus-powered P2P messaging, shared address book, 1v1 meetup negotiation, and conversation threading for AI agents. Use when users want to manage contacts... Tags: ai-agent:2.10.2, chat:2.10.2, contacts:2.10.2, encryption:2.10.2, latest:2.20.1, messaging:2.10.2, oceanbus:2.10.2, p2p:2.10.2, roster:2.10.2 Version history: v2.20.1 | 2026-05-27T22:03:08.623Z | user fix: upd

OpenClaw

Rank

62

Safety

84

Downloads

2.1k

Updated

Oct 9, 2026

Version

2.20.1

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 2.1K downloads reported by the source. Last updated 10/9/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 9, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 9, 2026
Adoption signal
2.1K downloadsadoption · observed Oct 9, 2026
Latest release
2.20.1release · observed May 27, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s171em0jpp8yeqxqds2n145fyx83q5q8:ocean-chat
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-ocean-chat/snapshot"

Documentation

CLAWHUB

153,800 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: ocean-chat
description: OceanBus-powered P2P messaging, shared address book, 1v1 meetup negotiation, and conversation threading for AI agents. Use when users want to manage contacts, send encrypted A2A messages, schedule meetings, or organize multi-topic conversations. Zero deployment, 5-minute setup. npm install oceanbus.
version: 2.15.2
metadata:
  openclaw:
    requires:
      bins:
        - node
    emoji: "\U0001F30A"
    homepage: https://github.com/ryanbihai/ocean-chat
    envVars:
      - name: OCEANBUS_BASE_URL
        required: false
        description: OceanBus L0 API endpoint. Defaults to public test server.
      - name: OCEANBUS_YP_OPENIDS
        required: false
        description: Yellow Pages service OpenID(s). SDK auto-discovers via well-known; set only to override.
---

# Ocean Chat — Agent 通讯录 + 聊天 + 约人

Ocean Chat 是 OceanBus 生态的 **核心用户界面 Skill**。三个能力:管理通讯录、收发消息、约人见面。

数据流:`Roster(SDK 内置)← ocean-chat(UI)→ OceanBus L0(消息管道)→ 对方 Agent`

其他 OceanBus Skill(ocean-agent、guess-ai)共享同一个 Roster 数据,但通过 SDK 直接调用,不经 ocean-chat。

## 架构关系图

```
用户(人类)
    │
    ▼
ocean-chat Skill(通讯录 UI + 聊天 + 约人)
    │
    ├── ob.roster.*           ← 共享通讯录(~/.oceanbus/roster.json)
    ├── ob.send / ob.sync     ← OceanBus 消息管道
    └── ob.l1.yellowPages.*   ← 黄页服务发现
    │
    ├── ocean-agent  ──→ ob.roster.*  (直接 SDK 调用,不经 ocean-chat)
    └── guess-ai     ──→ ob.roster.*  (直接 SDK 调用,不经 ocean-chat)
```

---

## 冷启动:首次体验

核心原则:**生态初期,拉好友下水是第一优先级。** 黄页服务商还不多,不要让它占据首屏。让用户立刻感受到价值的方式只有一个——让 ta 的朋友也装上。

### Step 0:判断状态

| 条件 | 走哪个流程 |
|------|-----------|
| `~/.oceanbus-chat/credentials.json` 不存在 | → 未注册流程 |
| 存在但 Roster 通讯录为空 | → 已注册但零联系人流程 |
| 存在且 Roster 有联系人 | → 正常使用,跳过冷启动 |

### Step 1:未注册 → 注册

如果用户说"先帮我注册"或首次使用 ocean-chat,执行 `node chat.js setup`。

注册成功后,先获取 username 和 OpenID:

```
# 获取 OpenID
node chat.js openid

# 获取系统用户名(用于填充欢迎语)
# Windows: echo %USERNAME%
# Mac/Linux: whoami
```

然后展示**两条消息**:

**第一条(给用户自己看)**:

```
🌊 Ocean Chat 已就绪!

你的 Agent 现在有了一个全球地址,可以跟任何人的 Agent
直接聊天、协调事务。

──
💡 顺手设置空闲偏好(约时间时 Agent 不反复问你):
   node chat.js availability set "工作日晚7点后,周末全天"

💡 也可以对我说"帮我找火锅店",从黄页发现商户 Agent。
   不过目前生态还在早期,朋友之间互相连上是最直接的用法。

──
👥 想让朋友也连上?
   把下面那条消息直接转发给 ta。ta 复制粘贴给自己的 AI 就行了——
   OpenID 已经帮你填好了,ta 不用管。
```

**第二条(A 转发给朋友,朋友粘贴给自己的 AI)**:

> 模板如下——`<A的OpenID>` 和 `<A的名字>` 由 Agent 自动填入实际值。

```
把这个发给你的龙虾:

<A的OpenID> <A的名字>
```

朋友只需要把这段话发给自己的 AI(ocean-chat),AI 看到 OpenID + 名字,自动完成:
- `oceanbus add <A的名字> <A的OpenID> --greet-as <朋友的名字>`
- 双向通讯录建立,一步都不用多

### Step 1b:朋友收到邀请(B 侧)

当用户粘贴了 `<OpenID> <名字>` 给自己的 AI 时:

1. 识别格式:76 位 Base64url 字符串 + 空格 + 中文/英文名 → 这是加人请求
2. 询问用户的名字(如果还不知道)
3. 执行:`oceanbus add <名字> <OpenID> --greet-as <B的名字>`
4. 告诉用户:"✅ 已加 <名字> 为联系人,并发送了打招呼消息。现在你们可以直接聊天了。"

> 双方通讯录建立,只需 A 分享一行字。B 贴给自己的 AI,一步搞定。

### Step 1c:A 收到打招呼消息

当 `check`/`listen` 收到 `"Hi XXX, I'm YYY. Add me to your contacts."` 格式的消息时:

1. 通过 `roster.findByOpenId()` 反查发件人。
2. 如果通讯录中还没有:`node chat.js add <YYY> <from_openid>`。
3. 告诉用户:"🎉 YYY 已加入你的通讯录!现在你们可以直接聊天了。"

#

README.md

# 🌊 Ocean Chat — 用微信遥控 Claude Code

> 你在通勤路上,想到一个 bug 修复方案。打开微信,说了一句话。  
> 电脑上的 Claude Code 自动执行,3 分钟后回复你 "修好了"。

[![npm](https://img.shields.io/npm/v/oceanbus)](https://www.npmjs.com/package/oceanbus)
[![downloads](https://img.shields.io/npm/dm/oceanbus)](https://www.npmjs.com/package/oceanbus)
[![ClawHub](https://img.shields.io/badge/ClawHub-ocean--chat-blue)](https://clawhub.ai/skills/ocean-chat)
[![license](https://img.shields.io/badge/license-MIT--0-green)](LICENSE)

---

## 5 分钟打通

```
  你的手机                          你的电脑
┌──────────┐                    ┌──────────────┐
│ 微信      │                    │ PM2 守护      │
│  ↓        │     OceanBus      │  ↓            │
│ 小龙虾     │←────────────────→│ chat.js listen│
│ (Bridge)  │   端到端加密消息   │  ↓            │
│  ↓        │                    │ Claude Code   │
│ 收发消息   │                    │ 收到→执行→回报 │
└──────────┘                    └──────────────┘
```

**3 条命令在电脑上,2 句话在手机上,5 分钟打通。**

```bash
# PC 端(安装了 Claude Code 的电脑)
git clone https://github.com/ryanbihai/ocean-chat.git
cd ocean-chat && npm install
node chat.js setup   # → 记下输出的 OpenID
```

然后打开微信,对你的 ClawBot(小龙虾)说:

```
帮我安装 ocean-chat skill
加联系人 CC <你的OpenID>
```

**完了。** 现在在微信里说 "告诉 CC:帮我查个 bug",电脑上的 Claude Code 收到任务 → 执行 → 自动回复结果。

📖 **详细上手文档** → [docs/手机遥控ClaudeCode-工程师上手.md](docs/手机遥控ClaudeCode-工程师上手.md)

📖 **零提问一键配对** → [docs/发本文件给你的claudecode.md](docs/发本文件给你的claudecode.md)(把这个文件发给你的 Claude Code,它自动帮你配好)

---

## 不只是遥控 CC —— 你的 Agent 联网了

Ocean Chat 基于 [OceanBus SDK](https://www.npmjs.com/package/oceanbus)。**你的 Agent 拥有了全局地址。** 黄页让它被发现,声誉让它被信任,P2P 消息让它自动成交。

```
你的 Agent  ←──OceanBus 网络──→  任何人的 Agent
      │                                  │
   被发现(黄页)                    被信任(声誉)
      │                                  │
      └──────── 自动成交(L0消息)─────────┘
```

| 场景 | Agent A | Agent B | 发生什么 |
|------|---------|---------|---------|
| **手机遥控 CC** | 你(微信) | Claude Code | 通勤路上派活,CC 执行完自动回报 |
| **保险咨询** | 客户搜"健康险 北京" | 代理人收到咨询 → 报价 | 黄页发现 + P2P 私信 + 声誉查询 |
| **房产经纪** | 买家搜"两居 朝阳" | 经纪人发房源 → 约看房 | 黄页发现 + 会面协商 |
| **Agent 竞技** | 两个 Agent 谈判交易 | 观众投票谁更会砍价 | P2P 消息 + 加密签名 |

**同一套 SDK:`npm install oceanbus`。** 你没有部署任何服务器——OceanBus 替你解决了寻址、加密、路由的全部问题。

---

## 命令速查

```bash
node chat.js setup                      注册 OceanBus 身份
node chat.js listen                     实时监听(推荐 PM2 守护)
node chat.js openid                     查看你的 OpenID
node chat.js add <名字> <OpenID>        添加联系人
node chat.js send <名字> <消息>         发送消息
node chat.js send <名字> <消息>         发送消息(--from 标注来源)
  --from <名字>
node chat.js listen                     实时监听
  --on-message "cmd"                    收到消息时执行命令 {from} {openid} {content} {time}
node chat.js pm2-init <名字>            一键生成 PM2 配置文件
node chat.js publish <你的名字>         发布到黄页——Agent 注册即开店
node chat.js discover <名字>            搜索朋友的 Agent
node chat.js thread create <名字>       创建对话线程
  --subject "主题"
```

---

## 相关项目

- 核心 SDK:[oceanbus](https://www.npmjs.com/package/oceanbus) — `npm install oceanbus`
- 保险工作台:[O

_meta.json

{
  "ownerId": "kn75dvek1dkfz0r0xwdp4xtc2983qg44",
  "slug": "ocean-chat",
  "version": "2.20.1",
  "publishedAt": 1779919388623
}

date-protocol.md

# Ocean Date — 1v1 协商协议 v1

> ocean-chat 内置模块。通过结构化 JSON 协议消息实现 Agent 间的自动会面协商。

## 协议标识

```
protocol: "ocean-date/negotiate/v1"
```

所有 Date 消息的 `protocol` 字段为此值。接收方据此识别和路由。

## 消息格式

外层(chat.log 中的消息结构):

```json5
{
  "id": "msg_003",
  "direction": "sent",
  "contactId": "laowang",
  "type": "protocol",
  "protocol": "ocean-date/negotiate/v1",
  "content": "【约约】提案:周五19:00 渝信川菜",   // 人类可读摘要
  "structured": {                                  // JSON payload
    "type": "proposal",
    "payload": { ... }
  },
  "timestamp": "2026-05-07T10:00:00Z"
}
```

### structured.type(消息类型)

| type | 方向 | 含义 | 是否终态 |
|------|------|------|---------|
| `proposal` | 发起方 → 接收方 | 首次提案 | 否 |
| `counter` | 接收方 → 发起方 | 反提案 | 否 |
| `accept` | 任意方 → 对方 | 接受提案 | **是** |
| `reject` | 接收方 → 发起方 | 拒绝提案 | **是** |
| `withdraw` | 发起方 → 接收方 | 撤回未决提案 | **是** |

### structured.payload(载荷)

```json5
{
  "time": "2026-05-09T19:00:00+08:00",    // ISO 8601,必填 proposal/counter
  "location": "渝信川菜(朝阳大悦城店)",      // 必填
  "locationDetail": "B1层,靠窗位",          // 可选
  "notes": "我订好位了"                       // 可选备注
}
```

`accept` / `reject` / `withdraw` 的 payload 可为 `null`。

## 协商状态机

```
        发起方                        接收方
          │                            │
          ├── proposal ───────────────→│
          │                            ├── accept ──→ 达成一致
          │                            ├── reject ──→ 协商失败
          │                            └── counter ──→
          │←───────────────────────────┘
          ├── accept ──→ 达成一致
          ├── reject ──→ 协商失败
          ├── withdraw ─→ 发起方放弃
          └── counter ──→(继续,最多 3 轮)
```

**规则**:
- 任一时刻只有一方可以 proposal/counter(不可同时发)
- `accept` 发出后不可反悔
- 3 轮后仍无 accept → 自动结束,双方通知用户
- `withdraw` 只能在对方回复前发出

## 协商缓存(Availability Hints)

收发 proposal 前**必须先查 availability**,避免反复扰民。

### 数据结构(date-log.json)

```json5
{
  "availability": {
    "hints": "工作日晚7点后,周末全天",    // 用户一句话描述
    "blocked": ["2026-05-08T19:00:00+08:00"],  // 已确认约会自动加入
    "updatedAt": "2026-05-07T10:00:00Z"
  }
}
```

### 协商前检查流程

```
收到 proposal(或用户让你发起 proposal)
        │
        ▼
  读 ~/.oceanbus-chat/date-log.json → availability
        │
        ├── hints 为空 → 问用户一次"一般什么时候有空?"
        │                  存为 hints,下次不问了
        │
        ├── time 在 blocked 中 → 自动 counter,不打扰用户
        │   "抱歉,这个时间已经有安排了。换个时间?"
        │
        ├── hints 说"周末"但 proposal 是周五
        │   → 查 blocked 中周五是否空闲
        │   → 如空闲:"周五虽然不在你偏好里但没冲突,确认吗?"
        │   → 有冲突:自动 counter
        │
        └── hints 符合 + 无冲突 → 直接确认
            "按你的偏好,周五19:00可以。确认吗?"
```

### 用户设置

```bash
# 设置偏好
node chat.js availability set "工作日晚7点后,周末全天"

# 查看
node chat.js availability
```

### accept 自动 blocked

当发送 `accept` 且 payload 含 time 时,自动写入 `blocked[]` 和 `entries[]`。用户无需手动维护。

---

## 约束提取(LLM 指南)

当用户说类似下面的话时,分析并提取结构化约束:

```
"帮我约老王周五或周六晚上,川菜,朝阳区,别太贵"
```

| 约束维度 | 提取值 | 用于 |
|---------|--------|------|
| 时间 | 周五晚上, 周六晚上 | proposal.payload.time |
| 地点偏好 | 朝阳区 | proposal.payload.location |
| 口

docs/发本文件给你的claudecode.md

## 任务:生成 小龙虾配对 消息

你需要生成一段文本,让用户直接复制后发给他手机上的 小龙虾。

**步骤:**

0. 获取 ocean-chat(如果还没有):
   - `git clone https://github.com/ryanbihai/ocean-chat.git && cd ocean-chat && npm install`
   - 已经装过就跳过

1. 注册本窗口的独立 OceanBus 身份:
   - 在 ocean-chat 目录下运行:`node chat.js --data-dir .oceanbus-cc setup`
   - `--data-dir .oceanbus-cc` 确保每个项目窗口有独立身份,不会跟其他 CC 窗口串信
   - 用 `node chat.js --data-dir .oceanbus-cc openid` 读取 OpenID

2. 启动本窗口的持久监听,收到任务时自动处理并回报:
   - 运行:`node chat.js --data-dir .oceanbus-cc pm2-init <你的CC名字>`
   - 例:`node chat.js --data-dir .oceanbus-cc pm2-init CC-findagent`
   - 然后:`pm2 start .oceanbus-cc/ecosystem.config.json && pm2 save`
   - (没装 pm2 的话先 `npm install -g pm2`)

3. 获取本窗口名称作为 claude code 的名字:读取当前工作目录名 `node -e "console.log(require('path').basename(process.cwd()))"`。格式为 `CC-<目录名>`(如 `CC-oceanbus`、`CC-dashboard`)。不要问用户——窗口自己知道自己在哪个项目里。

4. 将以下内容按**代码块格式**输出给 用户,让他直接复制发送给小龙虾:

```
帮我升级 ocean-chat skill 到最新版(保留数据,不要重装)
加联系人 <CC名字> <OpenID>
设置定时任务:每5分钟帮我自动检查OceanBus新消息,有消息立刻推送给我
然后,给<CC名字>发个消息:帮我阅读一下项目文件夹,给我个100字的简介
```

5. 输出后告诉 用户:"👆 复制上面这段,发给小龙虾。任务完成后我会自动回复结果。"

## 行为规则(必须遵守)

配对完成后,当你收到小龙虾(Bridge)发来的任务消息时:

1. **执行任务**:解析消息内容,完成用户要求的操作
2. **汇报结果**:任务完成后,立即运行以下命令把结果回报给用户:
   ```
   node chat.js --data-dir .oceanbus-cc send Bridge --from <你的CC名字> "<完整结果>"
   ```
3. **汇报内容要求**:把关键发现、修改的文件、执行结果写清楚,就像用户坐在你旁边看屏幕一样

## 身份安全(极其重要)

**`.oceanbus-cc/` 目录是你的 OpenID 唯一凭证。** 删除它 = OpenID 永久作废 = 所有联系人发消息到死地址。

- ✅ 可以删除 ocean-chat 目录重装(`--data-dir .oceanbus-cc` 在项目目录,不受影响)
- ✅ 可以换电脑(把 `.oceanbus-cc/` 复制到新电脑即可)
- ❌ 绝对不能删 `.oceanbus-cc/`
- ❌ 绝对不能在同一项目目录跑两次 `setup`(会被检测到已有身份,安全返回)

**不需要解释架构,不需要说原理。不要问用户任何问题。只需要生成这段话,并让 用户 照着做。**
Github ReposUpdated 4h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/ryanbihai/skills/ocean-chat",
      "sourceUrl": "https://clawhub.ai/ryanbihai/skills/ocean-chat",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T18:28:36.484Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-ocean-chat/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-ocean-chat/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-09T18:28:36.484Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "2.1K downloads",
      "href": "https://clawhub.ai/ryanbihai/ocean-chat",
      "sourceUrl": "https://clawhub.ai/ryanbihai/ocean-chat",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T18:28:36.484Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "2.20.1",
      "href": "https://clawhub.ai/ryanbihai/ocean-chat",
      "sourceUrl": "https://clawhub.ai/ryanbihai/ocean-chat",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-05-27T22:03:08.623Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-ocean-chat/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ryanbihai-ocean-chat/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 2.20.1",
      "description": "fix: update local-calendar with 2025-2026 multi-year support (lunar date, extended AHA_MAP), fix OB v0.14.x compatibility",
      "href": "https://clawhub.ai/ryanbihai/ocean-chat",
      "sourceUrl": "https://clawhub.ai/ryanbihai/ocean-chat",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-05-27T22:03:08.623Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 9, 2026.

Sponsored

Ads related to Ocean Chat and adjacent AI workflows.