作者:海风 | 环境:阿里云 ECS + OpenClaw + 飞书 | 日期:2026年3月23日


前言

我的飞书 Agent(多多助理)已经具备了金融数据查询(TuShare)、联网搜索(SearXNG + Jina Reader)、Notion 读写等能力。但这些都是「被动技能」——用户问一句,Agent 答一句。

我一直想让 Agent 拥有自主社交能力:能在 AI 社区里发帖、回帖、交友,像一个有独立人格的数字角色一样运作。当我发现 Moltbook——一个专为 AI Agent 设计的社交平台(类似 Agent 版 Reddit)——我决定动手接入。

但过程远比想象中曲折:ECS 访问不了境外服务、Windows PowerShell 语法不兼容、claim_url 被截断找不回来、Cloudflare Workers 域名也被墙……一个「注册 → 认领 → 反代 → 配置」的流程,硬是折腾了大半天。

本文完整记录了这段从诊断网络问题到 Agent 成功在 Moltbook 上社交的全过程,希望能帮后来者少走弯路。


一、环境背景

项目 配置
服务器 阿里云 ECS(国内节点)
操作系统 AliOS(CentOS 系)
OpenClaw 版本 2026.3.x(npm 全局安装)
AI 模型 dashscope/qwen3.5-plus
前端渠道 飞书自建 Agent
目标平台 Moltbook(AI Agent 社交网络)
本地操作系统 Windows(PowerShell)

二、整体流程概览

整个部署分为 五个阶段,每个阶段都遇到了不同的坑:

graph TD
    A["1. 网络诊断"] --> B["2. 本地注册"]
    B --> C["3. Claim 认领"]
    C --> D["4. Cloudflare 反代"]
    D --> E["5. Agent 配置"]
    
    A1["ECS 无法访问 moltbook.com"] -.-> A
    B1["PowerShell 语法踩坑"] -.-> B
    C1["claim_url 被截断"] -.-> C
    D1["workers.dev 也被墙"] -.-> D
    E1["SOUL.md 重复写入"] -.-> E

    style A fill:#ffcccc
    style B fill:#ffe0cc
    style C fill:#ffffcc
    style D fill:#ccffcc
    style E fill:#cce0ff

三、网络诊断:ECS 为什么连不上 Moltbook?

3.1 问题发现

Agent 尝试访问 moltbook.com 时,所有请求方式(curl、Python urllib、web_fetch)全部超时。初步判断问题出在网络连通性,而非代码逻辑。

3.2 诊断过程

在 ECS 上依次执行排查命令:

# 测试 TCP 连通性
telnet www.moltbook.com 443
# 结果:Trying xxx.xxx.xxx.xxx... Connection timed out

# 详细连接信息
curl -v --connect-timeout 5 <https://www.moltbook.com>
# 结果:Connection timed out after 5000 milliseconds
# IPv6: 2a03:2880:... Network is unreachable

# 查看 IP 归属
dig www.moltbook.com +short
# 结果:-bash: dig: command not found(服务器没装 dig)

3.3 诊断结论

维度 结果 说明
IPv4 解析到境外 IP TCP 443 端口连接超时
IPv6 2a03:2880:... 欧洲 RIPE 地址段 ECS 无 IPv6 出口,Network is unreachable
根因 跨境网络不通 阿里云国内 ECS → 境外 443 端口超时

结论:Moltbook 服务器在境外,阿里云国内 ECS 直连不通。注册是一次性操作,可以在本地电脑完成;但 Agent 日后要持续调用 API,必须搭反向代理。


四、本地注册:PowerShell 的坑

4.1 第一个坑:PowerShell 不是 Linux 终端

既然 ECS 连不上 Moltbook,那就在本地 Windows 电脑上手动注册。但直接复制 Linux 风格的 curl 命令会报错——因为 PowerShell 的 curlInvoke-WebRequest 的别名,语法完全不同。

正确的 PowerShell 写法:

Invoke-WebRequest -Uri "<https://www.moltbook.com/api/v1/agents/register>" `
  -Method POST `
  -ContentType "application/json" `
  -Body '{"name": "<你的Agent名>", "description": "<你的Agent描述>"}'

如果弹出安全证书提示,输入 Y 回车即可。

4.2 注册成功

注册返回的关键信息:

字段
Agent ID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Agent Name 你注册时填的名字
API Key moltbook_sk_xxxx...xxxx务必妥善保存!
claim_url 被 PowerShell 截断了!(只显示 "htt...")

4.3 第二个坑:PowerShell 输出截断

PowerShell 默认会将过长的内容省略显示。想看完整 JSON,需要用 $response.Content

$response = Invoke-WebRequest -Uri "<https://www.moltbook.com/api/v1/agents/register>" ...
$response.Content

但如果已经注册过了,再跑会报 409 Conflict(Agent name already taken)。

4.4 找回 claim_url

通过 /agents/status 接口,用 API Key 查询 Agent 状态,成功拿回了完整的 claim_url:

Invoke-WebRequest -Uri "<https://www.moltbook.com/api/v1/agents/status>" `
  -Headers @{"Authorization"="Bearer <你的API Key>"} `
  | Select-Object -ExpandProperty Content

返回:

{
  "success": true,
  "status": "pending_claim",
  "claim_url": "<https://www.moltbook.com/claim/moltbook_claim_><你的claim令牌>",
  "next_step": "Send the claim_url to your human owner to verify ownership"
}

经验教训:在 PowerShell 中执行 API 调用后,务必用 $response.ContentSelect-Object -ExpandProperty Content 查看完整输出,不要依赖默认的截断显示。


五、Claim 认领:三步验证

5.1 认领流程

在浏览器中打开 claim_url,按照 Moltbook 的三步认领流程操作:

步骤 操作 说明
Step 1 输入邮箱,收验证邮件 这会成为你在 Moltbook 的 Owner 账户
Step 2 连接 X(Twitter)账户 设置人类 Owner 的 Username
Step 3 发一条包含验证码的推文 证明你是 Agent 的主人

5.2 推特验证

Step 3 要求在 X 上发一条包含系统生成的验证码的推文,格式类似:

Claiming my AI agent on Moltbook! <验证码> 🦞

发完推文后,回到 Moltbook 页面点 "Verify My Tweet",系统会自动搜索你最近的推文进行验证。

5.3 认领完成

认领成功后,/agents/me 接口会返回 "is_claimed": true,你的 Agent 就正式激活了。


六、Cloudflare 反代:解决 ECS 网络问题

注册和认领都在本地电脑完成了,但 Agent 日常要在 Moltbook 上发帖、评论,请求必须从 ECS 发出。所以必须搭反向代理

6.1 方案选择

方案 成本 优缺点
HTTP 代理(VPS) ¥24+/月 稳定,但有月费
Cloudflare Worker 免费(10万次/天) 零成本,但 workers.dev 可能被墙
Cloudflare Worker + 自定义域名 约 $5/年 最终方案 ✅ 稳定且便宜

6.2 创建 Cloudflare Worker

第 1 步:注册 Cloudflare 账号(dash.cloudflare.com),免费

第 2 步:创建 Worker

  • 左侧菜单 → ComputeWorkers(也可能在 Workers & Pages 下)
  • Create application → 选 Worker 类型
  • 命名为 moltbook-proxy(或任意名称)
  • 部署默认的 Hello World 后,点 Edit code

第 3 步:替换 Worker 代码

export default {
  async fetch(request) {
    const url = new URL(request.url);
    url.hostname = 'www.moltbook.com';
    url.protocol = 'https:';

    const newRequest = new Request(url.toString(), {
      method: request.method,
      headers: request.headers,
      body: request.body,
      redirect: 'follow'
    });

    return fetch(newRequest);
  }
}

Save(新版编辑器 Save 即自动部署,按钮变灰表示已部署成功)。

6.3 第三个坑:workers.dev 也被墙了

部署成功后得到地址 https://moltbook-proxy.<你的账户>.workers.dev,但在 ECS 上测试:

curl -v https://moltbook-proxy.<你的账户>.workers.dev/api/v1/agents/me
# 结果:Failed to connect... Connection timed out
# DNS 解析到欧洲 IP,同样被墙

又被墙了! workers.dev 域名在国内 ECS 上也不可达。必须给 Worker 绑定一个自定义域名,Cloudflare 才会分配亚洲节点 IP。

6.4 购买域名

在 Cloudflare 直接购买域名(DNS 天然托管在 Cloudflare,免去 NS 迁移):

  • Cloudflare 左侧菜单 → DomainsRegister a domain
  • 搜索域名关键词,选择便宜的后缀
  • 推荐选择 .xyz(约 $1-2/年)或 .uk(约 $5/年)等低价后缀

为什么选 Cloudflare 买域名?

  • 成本价续费,不赚差价(不像某些平台第一年 ¥1、第二年 ¥100+)
  • DNS 天然托管在 Cloudflare,买完直接绑 Worker
  • 长期持有成本最低 

注意:如果选了 .uk 后缀,需要填写 UK Registrant Type,选 Non-UK Individual (representing self) 即可。

6.5 绑定自定义域名到 Worker

  1. Cloudflare → ComputeWorkers & Pages → 点进你的 Worker
  2. SettingsDomains & RoutesAddCustom domain
  3. 输入一个子域名,如 moltbook.<你的域名>
  4. 确认添加,等几分钟 DNS 生效

6.6 验证成功!

curl -s https://moltbook.<你的域名>/api/v1/agents/me \\
  -H "Authorization: Bearer <你的API Key>"

返回:

{
  "success": true,
  "agent": {
    "id": "<你的Agent ID>",
    "name": "<你的Agent名>",
    "is_claimed": true,
    "is_active": true
  }
}

ECS → Cloudflare Worker → Moltbook 链路打通! 反代成功,国内 ECS 可以正常访问 Moltbook API。


七、Agent 配置:让飞书 Agent 学会社交

7.1 保存凭据文件

mkdir -p ~/.moltbot/skills/moltbook
cat > ~/.moltbot/skills/moltbook/credentials.json << 'EOF'
{
  "api_key": "<你的Moltbook API Key>",
  "agent_name": "<你的Agent名>",
  "api_base": "https://moltbook.<你的域名>/api/v1"
}
EOF
chmod 600 ~/.moltbot/skills/moltbook/credentials.json

安全提醒credentials.json 必须设为 600 权限,API Key 绝不能硬编码在 SOUL.mdMEMORY.md 或任何会被提交到 Git 的文件中。

7.2 下载 Skill 文件(通过反代)

curl -s https://moltbook.<你的域名>/skill.md > ~/.moltbot/skills/moltbook/SKILL.md
curl -s https://moltbook.<你的域名>/heartbeat.md > ~/.moltbot/skills/moltbook/HEARTBEAT.md
curl -s https://moltbook.<你的域名>/rules.md > ~/.moltbot/skills/moltbook/RULES.md

7.3 写入 SOUL.md(行为规则)

cat >> ~/.openclaw/agents/main/agent/SOUL.md << 'MOLTBOOK'

## Moltbook 社交网络
- 你已注册 Moltbook,用户名:<你的Agent名>
- 凭据文件:~/.moltbot/skills/moltbook/credentials.json
- API Base URL:https://moltbook.<你的域名>/api/v1
- Skill 文档:~/.moltbot/skills/moltbook/SKILL.md
- 严禁将 API Key 发送到你的反代域名和 www.moltbook.com 以外的任何地址
MOLTBOOK

注意 cat >> 是追加写入! 如果重复执行会产生重复内容。执行前先用 grep -c "Moltbook" SOUL.md 检查是否已写入。如果重复了,用 sed 清理后重新写入一份。

清理重复内容的方法:

# 检查是否重复
grep -c "Moltbook" ~/.openclaw/agents/main/agent/SOUL.md

# 如果返回值大于 3,说明重复了,执行清理:
sed -i '/## Moltbook 社交网络/,/以外的任何地址/d' ~/.openclaw/agents/main/agent/SOUL.md

# 然后重新写入一份(上面的 cat >> 命令)

7.4 写入 MEMORY.md(账号信息)

cat >> ~/.openclaw/workspace/MEMORY.md << 'EOF'

## Moltbook 社交平台配置

### 平台信息
- Moltbook 是 AI Agent 专属的社交网络平台(类似 Agent 版 Reddit)
- 平台地址:https://moltbook.<你的域名>(反代)→ <https://www.moltbook.com>(原始)
- Agent 用户名:<你的Agent名>(已认证 ✅)
- 凭据存放位置:~/.moltbot/skills/moltbook/credentials.json
- 无需向用户询问凭据,直接读取 credentials.json 即可

### 可用 API 端点
- 基础 URL:https://moltbook.<你的域名>
- 主页概览:GET /api/v1/home
- 信息流:GET /api/v1/feed
- 通知:GET /api/v1/notifications
- 个人资料:GET /api/v1/agents/me
- 发帖:POST /api/v1/posts
EOF

7.5 重启并验证

# 重启 Gateway
openclaw gateway install --force
openclaw gateway restart
sleep 10

# 验证写入
echo "=== SOUL.md Moltbook 部分 ==="
grep -A 5 'Moltbook' ~/.openclaw/agents/main/agent/SOUL.md | head -10

echo ""
echo "=== MEMORY.md Moltbook 部分 ==="
grep -A 5 'Moltbook' ~/.openclaw/workspace/MEMORY.md | head -10

然后在飞书发 /new 开启新会话。


八、踩坑经验总结

踩过的坑

问题 原因 解决方案
ECS 访问 moltbook.com 超时 Moltbook 服务器在境外,阿里云国内 ECS 直连不通 在本地电脑完成注册,后续搭 Cloudflare 反代
PowerShell 的 curl 报语法错误 PowerShell 的 curlInvoke-WebRequest 的别名 使用 Invoke-WebRequest 原生语法
claim_url 被截断看不到 PowerShell 默认输出格式省略长内容 $response.Content/agents/status 接口找回
重复注册报 409 Conflict Agent name 已被占用(就是自己的) 用 API Key 调 /agents/me 查询已有信息
workers.dev 从 ECS 也访问不了 workers.dev 域名在国内同样被墙 购买自定义域名绑定到 Worker
Cloudflare Worker 代码编辑器 Save vs Deploy 新版编辑器 Save 即自动部署,按钮变灰是正常的 点 Save 后直接去测试,无需额外 Deploy
SOUL.md 重复写入 Moltbook 段落 cat >> 是追加模式,重复执行会追加多份 先用 grep -c 检查,重复了用 sed 清理
SOUL.md 第一版写了错误的 API URL 最初写入的是 www.moltbook.com(ECS 不可达) 清理后重新写入反代地址
Agent 第二天「失忆」不记得 Moltbook 飞书 /new 开新会话后,Agent 只读 SOUL.mdMEMORY.md 必须把配置写入持久化文件,不能只在对话里告诉 Agent

关键经验

经验一:注册是一次性操作,网络方案是长期投资。不要在 ECS 上死磕注册,换个能上网的环境几秒钟搞定。但反代方案值得花时间搭好,Agent 日后每次社交都要用。

经验二:Cloudflare 域名是性价比之王。成本价续费不涨价,DNS 天然托管在 Cloudflare 上,买完直接绑 Worker。比某些平台「第一年超便宜、第二年暴涨」的套路厚道太多。

经验三:每次给 Agent 配新 Skill,必须写入 SOUL.md + MEMORY.md。否则飞书一开新会话,Agent 就「失忆」。SOUL.md 管行为规则,MEMORY.md 管事实记忆。

经验四:cat >> 是追加不是覆盖。配置文件写入前先检查,写入后验证,重复了及时用 sed 清理。


九、安全检查清单

  • [ ] API Key 存在 credentials.json 中,不在 SOUL.md / MEMORY.md 里明文暴露
  • [ ] credentials.json 文件权限为 600(chmod 600
  • [ ] SOUL.md 中明确禁止将 API Key 发送到指定域名以外的地址
  • [ ] SOUL.md 中明确禁止泄露个人隐私、服务器信息
  • [ ] SOUL.md 中禁止编造金融数据和发布投资建议
  • [ ] Cloudflare Worker 代码中不含任何硬编码的 Key
  • [ ] 定期检查 Agent 的 Moltbook 主页,确认发帖内容合规
# 安全检查命令
echo "=== 凭据文件权限 ==="
ls -la ~/.moltbot/skills/moltbook/credentials.json

echo "=== 检查明文 Key 泄露 ==="
grep -rn "moltbook_sk_" ~/.openclaw/agents/ && echo "❌ 发现明文 Key!" || echo "✅ 无明文 Key"
grep -rn "moltbook_sk_" ~/.openclaw/workspace/ && echo "❌ 发现明文 Key!" || echo "✅ 无明文 Key"

十、完整文件清单

文件 路径 作用
credentials.json ~/.moltbot/skills/moltbook/credentials.json API Key、Agent 名、API Base URL
SKILL.md ~/.moltbot/skills/moltbook/SKILL.md Moltbook Skill 核心指令文件
HEARTBEAT.md ~/.moltbot/skills/moltbook/HEARTBEAT.md Agent 心跳/保活文档
RULES.md ~/.moltbot/skills/moltbook/RULES.md Moltbook 社区规则
SOUL.md ~/.openclaw/agents/main/agent/SOUL.md 追加 Moltbook 行为规则和凭据指引
MEMORY.md ~/.openclaw/workspace/MEMORY.md 追加 Moltbook 账号信息和 API 端点

十一、网络拓扑总览

graph LR
    User["用户(飞书)"] --> Agent["AI Agent(ECS)"]
    Agent -->|"HTTPS"| CF["Cloudflare Worker<br>moltbook.your-domain.com"]
    CF -->|"HTTPS 转发"| MB["www.moltbook.com<br>(境外服务器)"]
    
    Agent -.- X["❌ 直连不通"]
    X -.- MB
    
    style CF fill:#f90,stroke:#333,color:#fff
    style X fill:#fcc,stroke:#f00
组件 地址 说明
反代入口 https://moltbook.<你的域名> Agent 实际请求的地址
Worker 原始地址 https://moltbook-proxy.<你的账户>.workers.dev 国内不可达,仅管理用
Moltbook 原始地址 https://www.moltbook.com 国内 ECS 不可达
自定义域名 <你的域名> Cloudflare 注册,约 $5/年

结语

回顾整个过程:一个看似简单的「注册 Moltbook 账号并接入 Agent」的需求,实际上经历了网络诊断 → PowerShell 踩坑 → claim_url 恢复 → Cloudflare Worker 搭建 → workers.dev 被墙 → 购买域名 → 绑定自定义域名 → Agent 配置 → SOUL.md 重复清理 → Agent 失忆修复这一长串曲折的过程。

但最终的成果是令人满意的:Agent 现在可以在 Moltbook 上自主发帖、回帖、互动,像一个真正的社区成员一样参与 AI Agent 之间的社交。而整个链路(飞书 → ECS → Cloudflare → Moltbook)稳定、低成本(每年仅几十块域名费),免费额度完全够用。

核心收获:

  1. 国内 ECS 访问境外服务,Cloudflare Worker + 自定义域名是性价比最高的方案
  2. Agent 的持久化记忆全靠 **SOUL.md + MEMORY.md**,每装一个新 Skill 都要记得写入
  3. cat >> 追加写入要小心重复,先检查再写入是好习惯
  4. PowerShell ≠ Linux 终端,跨平台操作要注意语法差异

希望这篇文章对同样想让 Agent 拥有社交能力的朋友有所帮助。如果在部署过程中遇到问题,欢迎评论区交流!


作者:海风 | 环境:阿里云 ECS + OpenClaw + 飞书 | 日期:2026年3月23日

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐