Skip to content
Back to skills

Ocean Agent

ASecurity

OceanBus-powered AI workbench for insurance agents. Use when agents need Yellow Pages lead generation, customer intake and triage, follow-up reminders with draft messages, A2A meeting negotiation, and OceanBus reputation management. Zero server deployment. npm install oceanbus.

  • 11 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 10, 2026
devopsgobashnodegitapi

Works with

  • cursor
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 10, 2026

npx -y skills add luokai0/ai-agent-skills-by-luo-kai --skill ocean-agent --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ocean Agent?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ocean Agent
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/luokai0-ocean-agent/badge)](https://www.skillsdirectory.com/skills/luokai0-ocean-agent)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: ocean-agent
description: OceanBus-powered AI workbench for insurance agents. Use when agents need Yellow Pages lead generation, customer intake and triage, follow-up reminders with draft messages, A2A meeting negotiation, and OceanBus reputation management. Zero server deployment. npm install oceanbus.
version: 1.0.4
metadata:
  openclaw:
    requires:
      bins:
        - node
    emoji: "🌊"
    homepage: https://github.com/ryanbihai/ocean-agent
    envVars:
      - name: OCEANBUS_BASE_URL
        required: false
        description: OceanBus L0 API 端点,默认使用公共测试服务器。
---

# Ocean Agent — 保险代理人 AI 工作台

每天帮代理人回答三个问题:**今天找谁聊、聊什么、怎么约见面。** 基于 OceanBus 网络的黄页获客、线索承接、会面协商、声誉管理。

---

## 触发条件

当用户表达以下意图时激活本 skill:

- "帮我看看今天概览" / "今天有什么事" / "有哪些客户要跟进"
- "帮我跟进一下" / "该跟谁跟进" / "帮我看看线索"
- "帮我和XXX约个见面" / "帮我约XXX" / "帮我协商会面"
- "回顾一下今天" / "今天总结"
- "帮我查一下XXX的声誉" / "我的声誉怎么样"
- "帮我安装 ocean-agent" / "帮我设置" / "初始化"
- 有新客户从黄页发来消息时(listen.js 实时推送)

---

## 入驻流程

当用户首次使用(未注册或 `~/.oceanbus-agent/credentials.json` 不存在)时,先展示欢迎语,再按步骤引导。

### 欢迎语

安装完成后,首先展示:

```
🌊 欢迎使用 Ocean Agent!

从现在开始,你的 Agent 在 OceanBus 黄页上 24 小时帮你获客。

客户搜索"重疾险 北京"就能找到你。找到之后,Agent 自动帮你承接、
采集需求、跟进提醒,该见面了还能帮你跟客户 Agent 协商时间地点。

现在花 2 分钟完成入驻,你的 Agent 就上线了。

准备好了吗?我先帮你注册 OceanBus 身份。
```

然后立即进入步骤 1。

### 步骤 1:安装 skill

告诉用户:在 OpenClaw 中安装 ocean-agent 即可。用户对你说"帮我安装 ocean-agent",你运行:

```
openclaw skills install ocean-agent
```

安装后在 skill 目录执行 `npm install`。

### 步骤 2:注册 OceanBus 身份 + 填写档案

```bash
node scripts/profile.js setup
```

这是交互式脚本,依次询问:姓名、城市、区域、从业年限、擅长险种、公司、资质、服务特色。

**你的任务**:
- 每个字段给出简短提示。例如:*"擅长险种会变成黄页搜索标签,建议填你最拿手的 2-4 个,如:重疾险,医疗险"*
- 用户填完后展示档案摘要:

```
📋 你的档案预览:

  姓名: 张三
  地区: 北京·朝阳
  从业: 8年
  擅长: 重疾险、医疗险、寿险
  特色: 专注家庭保障规划,已服务500+家庭

要修改什么吗?
```

### 步骤 3:发布黄页

```bash
node scripts/profile.js publish
```

成功后展示:

```
✅ 你的 Agent 已在 OceanBus 黄页上线。

标签: insurance, 重疾险, 医疗险, 寿险, 北京, 朝阳
描述: 张三 | 平安人寿 | 擅长重疾险/医疗险/寿险 | 从业8年 | ...

客户搜索 "重疾险 北京 朝阳" 可以找到你。
```

### 步骤 4:黄页使用引导

发布成功后,**主动向代理人说明黄页怎么用**。这是获客的核心引擎,不能 setup 完就扔那。

**4.1 让代理人理解黄页的价值**

告诉代理人:

```
从现在开始,你的 Agent 在 OceanBus 黄页上 24 小时在线。

当有人搜索 "重疾险 北京"、"医疗险 朝阳" 时,你的 Agent
会出现在搜索结果里。客户看到你的档案,决定要不要联系你。

这跟百度排名不一样——黄页没有竞价排名,客户选你是因为
你的档案专业、你的声誉数据好、你的 Agent 响应快。
```

**4.2 教代理人查看自己的黄页**

```bash
node scripts/profile.js show
```

展示当前档案,让代理人确认信息准确。

**4.3 提醒代理人优化标签**

```
💡 获客技巧:

  标签决定了客户搜什么词能找到你。你当前的标签是:
    insurance, 重疾险, 医疗险, 寿险, 北京, 朝阳

  如果客户搜 "少儿险" 就找不到你——因为你没这个标签。
  如果你也做少儿险,记得把标签补上。

  另外,黄页描述中的前 80 个字最重要——那是客户在
  搜索结果里第一眼看到的内容。

  想调整的话,重新运行 node scripts/profile.js setup
  更新档案,然后 node scripts/profile.js publish 即可。
```

**4.4 解释心跳机制**

```
黄页条目 90 天无心跳会自动下架。别担心——我会在
到期前提醒你续约,一条命令的事。你也可以随时说
"帮我查黄页状态" 来确认。
```

### 步骤 5:建议开启监听

告诉代理人:

```
黄页已经在线了,现在让 Agent 帮你守着。

当有客户从黄页找到你并发来消息,我会实时通知你,
并自动帮你发送自我介绍和需求问卷——这样你不会错过任何线索。

你可以说 "帮我开启监听" 来启动。
```

当用户要求开启监听时:

```bash
node scripts/listen.js
```

---

## 日常操作指令

### 1. 今日概览

当用户说"看看今天概览"或"今天有什么事"时,执行:

```bash
node scripts/intake.js summary
```

然后将输出整理为以下格式展示:

```
╔══════════════════════════════════════════════════╗
║             📅 今日概览                           ║
╚══════════════════════════════════════════════════╝

🆕 新线索 (N)
  ● [姓名] · [来源] · [关注点] · [时间]

⚠️ 需跟进 (N)
  ● [姓名] — [阶段],[N]天未回 ⬆紧迫
  ● ...

📋 待确认会面 (N)
  ● [姓名] — [状态]

✅ 近期成交 (N)
  ● [姓名] — [时间],建议引导声誉标签

──
💡 今日建议优先: [排序]
```

格式规则:
- 用 `╔══╗` 双线框标记页面标题
- 用 `──` 单线分隔区块
- `●` 标记列表项,`·` 标记子项
- `🆕 ⚠️ 📋 ✅` 分别标记新线索、需跟进、待会面、已成交
- `⬆紧迫` 标注超时线索

### 2. 新客户消息

当 listen.js 推送新消息时,实时展示:

```
🔔 新客户咨询

来自: [姓名或OpenID简写]
时间: [时间]
内容:
  "[消息内容]"

──
🤖 已自动回复: 自我介绍 + 需求采集问卷

📋 评估: 🔵热 / 🟡温 / ⚪冷
  理由: [判断依据]
  建议: [下一步行动]
```

分级标准:
- **🔵 热线索** — 包含"多少钱""怎么买""帮我推荐""报价""现在投保"→ 建议立即跟进
- **🟡 温线索** — 包含"了解一下""想咨询""对比""看看" → 建议今日跟进
- **⚪ 冷线索** — 仅"你好""在吗" → 等待更多信息

### 3. 跟进清单

当用户说"帮我跟进"或"该跟谁跟进"时,执行:

```bash
node scripts/intake.js summary
```

提取超时线索,按紧迫度排序,为每个生成跟进卡片:

```
🔴 最紧迫 — 超过阈值,建议今日完成
──────────────────────────────────────────────

① [姓名] — [阶段] · [N]天未回
  上下文: [从 contacts.json 读取 history 和 notes,总结关键信息]
  最后联系: [日期]
  上次你说: "[最后一条发出的消息摘要]"
  
  💬 建议发送:
  ┌─────────────────────────────────────────────┐
  │ [根据上下文和阶段生成的具体消息草稿]          │
  └─────────────────────────────────────────────┘
  
  回复 "发①" 发送此消息

🟡 正常 — 在阈值内
──────────────────────────────────────────────
  [同上格式]

──
🎯 建议优先级: ① → ② → ③
```

**生成消息草稿的原则**:
- 先读取 `contacts.json` 中该客户的 `history` 和 `notes`,确保上下文准确
- 语气轻松,不是催单——是提供帮助
- 每个客户的消息要有差异,不能发跟上次一模一样的内容
- 如果阶段是"方案已发"且超时≥3天,可以试探性提出会面:"要不要约个时间当面聊一下,15分钟就能把方案讲清楚"

**超时阈值**:
| 阶段 | 阈值 |
|------|------|
| 新线索 | 1天 |
| 需求采集中 | 2天 |
| 方案已发 | 3天 |
| 待成交 | 2天 |

### 4. 发送消息

当用户确认发送(说"发"或"发送")时:

```bash
node scripts/intake.js reply <客户名|OpenID> <消息内容>
```

**务必使用通讯录中保存的稳定 OpenID**,而非消息中的临时 `from_openid`(OceanBus 会轮换发送者 ID)。

发送成功后更新该客户的 `last_contact` 时间。

### 5. 更新线索阶段

每次与客户沟通后,评估是否需要更新阶段:

```bash
node scripts/intake.js classify <客户名|OpenID> <阶段名>
```

阶段: `新线索` → `需求采集中` → `方案已发` → `待成交` → `已成交` → `已流失`

主动提醒代理人:*"[客户名] 已回复了需求问卷,建议更新阶段为'需求采集中'"*

添加客户备注:

```bash
node scripts/intake.js note <客户名|OpenID> <备注内容>
```

应记录的信息:保障需求、家庭结构、预算、已有保单、顾虑偏好、重要时间节点。

### 6. 会面协商

当用户说"帮我和XXX约个见面"时:

```
🤝 会面邀约 · [客户名]

当前状态: [简述当前阶段和该客户情况]

──
我会通过 OceanBus 向 [客户名] 的 Agent 发起会面协商。

你需要告诉我:
  ① 你的位置(如: 朝阳大望路)
  ② 你的时间偏好(如: 工作日下午、周末上午)
  ③ 见面目的(如: 讲解方案、需求分析、成交签约)

剩下——提案地点、发送请求、协商确认——我来处理。
```

然后通过 OceanBus 发送【会面请求】消息。协商完成后展示结果:

```
✅ 会面协商完成

📍 地点: [协商结果]
📋 轮次: [N]轮

──
📝 面谈准备:
  · [根据客户备注生成准备清单]
```

会面协商的消息协议沿用 ocean-chat 的 `【会面请求】→ 【会面建议】→ 【会面确认】` 格式,最多 3 轮。

### 7. 每日回顾

当用户说"回顾今天"时:

```
╔══════════════════════════════════════════════════╗
║             📊 今日回顾                           ║
╚══════════════════════════════════════════════════╝

今日:
  ● 新线索: [N]人
  ● 跟进完成: [N]人
  ● 会面协商: [N]人

管道变化:
  [列出各阶段人数增减]

──
📌 明天重点:
  [列出明日优先事项]
```

---

## 信任与声誉

### 查询声誉

用户说"查一下XXX的声誉"或"我的声誉怎么样"时:

```bash
node scripts/reputation.js check [OpenID|名字]
```

展示格式:

```
📇 声誉档案: [名字]

  ✅ Reliable: [N]次
  🏷️ 好评: [自由标签列表]
  ⚠️ Harassment: [N]
  🚫 Illegal: [N]

  评价: ✅良好 / ⚪数据较少 / ⚠️有风险
```

### 引导客户为你打标签(只出话术,不代操作)

成交后主动提醒代理人引导客户。**你只能给话术,不能替客户操作**——标签需要客户自己的 OceanBus 密钥签名,ocean-agent 无法代劳。

```
💡 [客户名] 已成交。建议引导客户为你打 OceanBus 声誉标签。

你可以这样说:
"感谢您的信任!如果您觉得我的服务还不错,
 能否在 OceanBus 上给我一个好评?这对其他客户选择我很有帮助。"

如果客户问怎么操作:
  客户需要有自己的 OceanBus Agent(可以安装 ocean-chat)。
```

**绝对不要**说"需要我帮你操作吗"或执行 `tag` 命令——你做不到,尝试只会用你自己的密钥给客户打标签,方向和意图完全相反。

### 代理人给客户打标签(确认闸门)

当代理人**主动**要给某个客户打标签时(如标记优质客户或问题客户),执行前必须展示确认屏:

```
┌──────────────────────────────────────────────┐
│ ⚠️  即将写入 OceanBus 声誉标签(公开不可撤回)  │
│                                              │
│  打标签人: 张三(你)                          │
│  被打标签人: 王先生                            │
│  标签内容: "沟通顺畅,需求明确"                 │
│                                              │
│  该标签公开可见,写入后不可撤回。               │
└──────────────────────────────────────────────┘

确认打标签?回复 "确认打标签" 继续
```

代理人明确确认后:

```bash
node scripts/reputation.js tag <客户OpenID> <标签内容>
```

---

## 黄页维护

### 查看黄页状态

```bash
node scripts/profile.js show
```

### 手动心跳

```bash
node scripts/profile.js heartbeat
```

### 更新档案

代理人的信息变了(换公司、新增擅长险种等),引导重新 setup 或直接修改 `~/.oceanbus-agent/profile.json` 后重新 publish。

**主动提醒**:每隔约 80 天提醒用户做一次心跳(黄页 90 天无心跳自动下架)。

---

## 输出规范

OpenClaw 是纯文字界面。所有输出必须遵循:

### 视觉层次

```
╔══ 双线框 = 页面级标题 ══╗
── 单线分隔 = 区块分隔
● 实心点 = 列表项
  · 空心点 = 子项
💬 对话气泡 = 消息草稿标识
┌─────────────────┐
│ 消息草稿用单线框  │
└─────────────────┘
```

### 信息节奏

- **实时推送**:新客户消息(不等用户问)
- **主动展示**:每日概览(早上首次打开时)
- **按需查询**:跟进清单、回顾、声誉(用户问了才展示)
- **轻提醒**:黄页心跳到期、声誉变化(一句话提一下,不铺开)
- **不说话时不打扰**:没消息就安静

### 操作确认

- "发①" / "发②" — 用户确认发送指定消息
- "发" — 发送最近一条待确认消息
- 所有对外消息(除自动首响)必须经用户确认后才发送
- **绝对不要**在用户未确认时发送任何个性化回复

---

## 约束规则

1. **人工闸门**:首响(自我介绍+问卷)可以自动发送。除此之外的所有消息——跟进、回复、方案——都必须先生成草稿展示,用户确认后才发送。

2. **稳定 OpenID 优先**:收到消息时 `from_openid` 是旋转的临时 ID。如果该联系人在通讯录中,回复时用通讯录保存的稳定 OpenID。未知联系人才直接用 `from_openid`。

3. **先读上下文再生成消息**:生成跟进消息前,必须先读取 `contacts.json` 中该客户的 `history` 和 `notes`,确保消息内容与历史一致。

4. **数据隔离**:所有数据存储在 `~/.oceanbus-agent/`,与 ocean-chat 的 `~/.oceanbus-chat/` 通过 `source` 字段隔离。

5. **不编造声誉数据**:展示真实的 OceanBus 声誉查询结果。如果查询失败(声誉服务可能尚未全量开放),如实说明,不伪造数据。

6. **会面协商最多 3 轮**:如 3 轮未达成一致,告诉用户:"自动协商未达成一致,建议你们直接沟通确定。"

---

## 示例对话

### 示例 1:早上查看概览

```
用户: 帮我看看今天概览

Agent:
╔══════════════════════════════════════════════════╗
║             📅 今日概览  5月5日 周三               ║
╚══════════════════════════════════════════════════╝

🆕 新线索 (2)
  ● 赵先生 · 从黄页来 · 咨询重疾险 · 30分钟前
  ● 陈女士 · 从黄页来 · 想给父母买医疗险 · 昨晚22:15

⚠️ 需跟进 (2)
  ● 王先生 — 方案已发,4天未回 ⬆紧迫
  ● 李女士 — 需求采集完成,2天未跟进

──
💡 今日建议优先: 赵先生(新·热) → 王先生(超时) → 李女士(正常)
```

### 示例 2:跟进客户

```
用户: 帮我跟进王先生

Agent:
① 王先生 — 方案已发 · 4天未回

  上下文: 32岁IT工程师,已婚有小孩,关注重疾险+医疗险
         已发送"平安e生保+重疾组合方案",预算8000/年
  最后联系: 5月1日

  💬 建议发送:
  ┌─────────────────────────────────────────────┐
  │ 王先生您好!上次的方案您看了吗?有疑问随时问我。│
  │ 要不要约个时间当面聊一下,15分钟就能把方案讲清楚 │
  │ 您看这周什么时间方便?                        │
  └─────────────────────────────────────────────┘

  回复 "发" 发送
```

### 示例 3:会面协商

```
用户: 帮我和钱先生约个见面,我在朝阳大望路,周末都可以

Agent:
🤝 会面邀约 · 钱先生

  当前: 方案已通过,客户说"可以考虑"
  你: 朝阳大望路,周末有空

  正在向钱先生的 Agent 发起会面协商...

[通过 OceanBus 发送【会面请求】,等待对方回复]

Agent:
✅ 会面协商完成

📍 地点: 国贸商城B1层星巴克
📋 轮次: 2轮

📝 面谈准备:
  · 带好钱先生的方案对比表
  · 准备好投保流程说明
  · 提前15分钟到,占安静位置
```

---

## 脚本速查

```bash
# 身份与黄页
node scripts/profile.js setup          # 注册 + 填写档案
node scripts/profile.js publish        # 发布/更新黄页
node scripts/profile.js show           # 查看黄页档案
node scripts/profile.js heartbeat      # 发送心跳
node scripts/profile.js unpublish     # 从黄页移除

# 线索管理
node scripts/intake.js check           # 查看新消息
node scripts/intake.js reply <oid> <msg>  # 回复客户
node scripts/intake.js classify <oid> <stage>  # 修改线索阶段
node scripts/intake.js note <oid> <text>  # 添加备注
node scripts/intake.js summary         # 线索管道总览

# 实时监听
node scripts/listen.js                 # 持续监听
node scripts/listen.js --once          # 检查一次后退出

# 声誉
node scripts/reputation.js check [oid]  # 查询声誉
node scripts/reputation.js tag <oid> <text>  # 打标签
```

---

## 数据存储

```
~/.oceanbus-agent/
├── credentials.json      # OceanBus 身份 (source: "ocean-agent")
├── profile.json          # 代理人档案
├── contacts.json         # 客户通讯录(含阶段、备注、历史)
├── cursor.json           # 消息同步游标
└── config.yaml           # 用户配置(可选)
```

---

## 依赖

- [OceanBus SDK](https://www.npmjs.com/package/oceanbus) `^0.2.1`
- Node.js
- 无需服务器、域名、数据库

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…