# OpenClaw 集成

**OpenClaw** 是一个强大的人工智能代理框架。通过将 MoreLogin 技能安装到您的 OpenClaw 工作区中，您的代理将能够完全自主管理浏览器和云手机。

## 先决条件

- [Node.js](https://nodejs.org/) v18 或更高版本
- [OpenClaw](https://github.com/openclaw-ai/openclaw) 已安装并初始化
- 在同一台计算机上运行的 MoreLogin 桌面应用（本地 API 位于 `http://localhost:40000`）


## 安装与设置

### 1. 安装 OpenClaw（如果尚未安装）

```bash
npm install -g openclaw
openclaw init    # Creates ~/.openclaw/workspace/
```

初始化后，工作区结构如下所示：

```
~/.openclaw/
├── workspace/
│   ├── skills/          ← Skill plugins live here
│   │   └── morelogin/   ← MoreLogin skill (you will create this)
│   ├── TOOLS.md         ← Tool configuration file
│   └── ...
└── config.yaml          ← OpenClaw global config
```

### 2. 安装 MoreLogin 技能

将官方技能库克隆到 OpenClaw 技能目录中：

```bash
# Clone the skill into the correct location
git clone https://github.com/MoreLoginBrowser/morelogin-local-api-skill.git \
  ~/.openclaw/workspace/skills/morelogin

# Install dependencies
cd ~/.openclaw/workspace/skills/morelogin
npm install
```

> **技能从哪里来？**
技能源代码托管在 GitHub 上：[MoreLoginBrowser/morelogin-local-api-skill](https://github.com/MoreLoginBrowser/morelogin-local-api-skill)。该存储库包含 OpenClaw 用于与 MoreLogin 交互的 CLI 包装器和 API 绑定。


### 3. 配置 OpenClaw 工具

将 MoreLogin 工具定义添加到您的 `~/.openclaw/workspace/TOOLS.md` 文件中：

```markdown
### Morelogin

- Install Path: /Applications/Morelogin.app (macOS) or C:\Program Files\MoreLogin (Windows)
- Default CDP Port: 9222
- Local API: http://localhost:40000
```

### 4. 验证安装

运行快速测试以确认技能已正确安装：

```bash
openclaw morelogin browser list --page 1 --page-size 5
```

如果 MoreLogin 应用程序正在运行，您应该会看到带有浏览器的 JSON 响应（或空列表）。

## 更新技能

要更新到最新版本：

```bash
cd ~/.openclaw/workspace/skills/morelogin
git pull origin main
npm install
```

升级前请检查[发行说明](https://github.com/MoreLoginBrowser/morelogin-local-api-skill/releases) 中的重大更改。

## CLI 命令参考

MoreLogin 技能将 CLI 命令直接公开给 OpenClaw 环境。代理在推理过程中自动调用这些，但您也可以手动运行它们进行测试。

### 浏览器

```bash
# List profiles
openclaw morelogin browser list --page 1 --page-size 20

# Start a profile (Returns debugPort for CDP connection)
openclaw morelogin browser start --env-id abc123def

# View running status
openclaw morelogin browser status --env-id abc123def

# Close profile
openclaw morelogin browser close --env-id abc123def
```

### 云手机

```bash
# List cloud phones
openclaw morelogin cloudphone list --page 1 --page-size 20

# Start/Stop
openclaw morelogin cloudphone start --id <cloudPhoneId>
openclaw morelogin cloudphone stop --id <cloudPhoneId>

# Get details (Includes ADB connection info)
openclaw morelogin cloudphone info --id <cloudPhoneId>

# Execute cloud phone command via ADB
openclaw morelogin cloudphone exec --id <cloudPhoneId> --command "ls /sdcard"
```

### 代理和组管理

```bash
# Proxy
openclaw morelogin proxy list
openclaw morelogin proxy add --payload '{"proxyIp":"1.2.3.4","proxyPort":8000,"proxyType":0}'

# Group
openclaw morelogin group list
openclaw morelogin group create --name "US-Group"
```

## 最小端到端示例

下面是一个完整的示例，它创建浏览器、启动它、通过 CDP 访问 URL，然后关闭浏览器 — 所有这些都由 OpenClaw 代理精心安排。

### 自然语言提示

> *“创建一个新的 MoreLogin 浏览器，打开 google.com，截取屏幕截图，然后将其关闭。”*


### 代理执行什么

```bash
# 1. Create a browser profile
openclaw morelogin browser create --name "demo-profile"
# → Returns: {"envId": "abc123def"}

# 2. Start the profile
openclaw morelogin browser start --env-id abc123def
# → Returns: {"debugPort": "9222", "webdriver": "/path/to/chromedriver"}

# 3. Connect via CDP (agent uses Puppeteer internally)
# The agent connects to ws://127.0.0.1:9222 and runs:
#   - page.goto("https://www.google.com")
#   - page.screenshot({path: "screenshot.png"})

# 4. Close the profile
openclaw morelogin browser close --env-id abc123def
```

### 等效脚本 (Node.js)

```javascript
const { execSync } = require('child_process');
const puppeteer = require('puppeteer-core');

async function main() {
  // 1. Create profile
  const createResult = JSON.parse(
    execSync('openclaw morelogin browser create --name "demo-profile"').toString()
  );
  const envId = createResult.data.envId;

  // 2. Start profile
  const startResult = JSON.parse(
    execSync(`openclaw morelogin browser start --env-id ${envId}`).toString()
  );
  const debugPort = startResult.data.debugPort;

  // 3. Connect via CDP and automate
  const browser = await puppeteer.connect({
    browserURL: `http://127.0.0.1:${debugPort}`,
    defaultViewport: null
  });
  const page = (await browser.pages())[0];
  await page.goto('https://www.google.com');
  await page.screenshot({ path: 'screenshot.png' });
  console.log('Screenshot saved.');

  // 4. Cleanup
  await browser.disconnect();
  execSync(`openclaw morelogin browser close --env-id ${envId}`);
  console.log('Profile closed.');
}

main().catch(console.error);
```

## 代理人如何推理

当您要求 OpenClaw 代理*“创建浏览器并登录 example.com”*时，代理将：

1. 调用 `openclaw morelogin browser create`（或等效 API）以获取 `envId`。
2. 调用 `openclaw morelogin browser start` 以获取 `debugPort`。
3. 使用 CDP 工具（如 Puppeteer/Playwright）连接到 `debugPort` 并执行登录步骤。
4. 通过 `openclaw morelogin browser status` 验证是否成功。


## 故障排除

| 症状 | 解决方案 |
|  --- | --- |
| `command not found: openclaw` | 确保 OpenClaw 已全局安装：`npm install -g openclaw` |
| `Error: connect ECONNREFUSED 127.0.0.1:40000` | 在运行命令之前启动 MoreLogin 桌面应用程序 |
| 技能目录缺失 | 运行 `openclaw init` 创建工作区，然后克隆技能 |
| 更新后数据过时 | 在 `git pull` 之后再次在技能目录中运行 `npm install` |