API 与集成

wesclaw 提供本机 HTTP 模式和 JSON-RPC 协议,支持与外部工具和自动化脚本集成。


概述

wesclaw 桌面版内置了两种对外接口:

接口模式用途适用场景
wesclaw serve本机 HTTP 服务自动化脚本、CI/CD 集成、其他应用调用
JSON-RPC (stdio)Electron 主进程通信扩展开发、深度集成

wesclaw serve — 本机 HTTP 模式

启动 serve 模式

wesclaw serve

默认监听 http://localhost:8080(端口可配置)。

主要端点

健康检查

GET /health

# 响应
{
  "status": "ok",
  "engine": "ready"
}

发送消息

POST /v1/chat
Content-Type: application/json

{
  "session_id": "my-session",
  "agent_id": "assistant",
  "messages": [
    {
      "role": "user",
      "content": "你好,帮我查看一下今天的待办事项"
    }
  ]
}

响应为 SSE(Server-Sent Events)流:

event: delta
data: {"type": "text", "content": "好"}

event: delta
data: {"type": "text", "content": "的"}

event: done
data: {"reason": "end_turn"}

会话管理

# 列出会话
GET /v1/sessions

# 获取会话消息
GET /v1/sessions/{session_id}/messages?limit=50

# 删除会话
DELETE /v1/sessions/{session_id}

# 中断当前 Run
POST /v1/sessions/{session_id}/interrupt

记忆操作

# 列出记忆
GET /v1/memory?layer=about_me&limit=20

# 搜索记忆
POST /v1/memory/search
{
  "query": "用户偏好",
  "layer": "about_me",
  "limit": 10
}

# 记忆计数
GET /v1/memory/counts

Agent 管理

# 列出 Agent
GET /v1/agents

# 获取单个 Agent
GET /v1/agents/{agent_id}

# 创建/更新 Agent
POST /v1/agents
{
  "id": "my-agent",
  "name": "我的助手",
  "system_prompt": "你是一个友好的 AI 助手。"
}

Provider 管理

# 列出可用模型
GET /v1/providers

# 测试 Provider 连接
POST /v1/providers/test
{
  "provider_name": "openai",
  "mode": "chat"
}

认证

serve 模式默认仅监听 localhost,无需认证。如需开放到局域网,建议:


JSON-RPC 协议

协议说明

wesclaw 桌面版的 Electron 主进程与 Go 后端通过 stdio JSON-RPC 通信。这是 wesclaw 内部的主要通信协议。

消息格式

请求:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "sidebar/listConversations",
  "params": {
    "limit": 20
  }
}

响应:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "conversations": [...]
  }
}

常用方法

方法名说明
chat/send发送对话消息
chat/cancel取消当前 Run
sidebar/listConversations列出对话列表
sidebar/availableModels获取可用模型列表
auth/me获取当前登录信息
settings/get获取设置
settings/update更新设置

流式通知

对话流式回复通过 JSON-RPC 通知(notification)推送:

{
  "jsonrpc": "2.0",
  "method": "chat/stream",
  "params": {
    "request_id": "req-123",
    "type": "delta",
    "data": {
      "content": "你好"
    }
  }
}

自动化场景示例

使用 curl 发送消息

# 启动 serve 模式(如果未启动)
wesclaw serve &

# 发送消息并接收 SSE 流
curl -N -X POST http://localhost:8080/v1/chat \
  -H "Content-Type: application/json" \
  -d '{
    "session_id": "auto-session-001",
    "agent_id": "assistant",
    "messages": [{"role": "user", "content": "今天天气怎么样?"}]
  }'

Python 脚本集成

import requests
import json

BASE_URL = "http://localhost:8080"

# 发送消息(SSE 流式接收)
def chat(session_id: str, message: str):
    resp = requests.post(
        f"{BASE_URL}/v1/chat",
        json={
            "session_id": session_id,
            "agent_id": "assistant",
            "messages": [{"role": "user", "content": message}],
        },
        stream=True,
    )
    
    full_response = ""
    for line in resp.iter_lines():
        if line:
            line = line.decode("utf-8")
            if line.startswith("data: "):
                data = json.loads(line[6:])
                if data.get("type") == "text":
                    full_response += data["content"]
    
    return full_response

# 使用示例
result = chat("my-session", "帮我总结一下今天的工作")
print(result)

与 Shell 脚本集成

#!/bin/bash
# 每日总结脚本

SESSION_ID="daily-summary-$(date +%Y%m%d)"
MESSAGE="请帮我回顾一下今天的对话,做一个简短的总结。"

# 发送请求
curl -s -X POST http://localhost:8080/v1/chat \
  -H "Content-Type: application/json" \
  -d "{
    \"session_id\": \"$SESSION_ID\",
    \"agent_id\": \"assistant\",
    \"messages\": [{\"role\": \"user\", \"content\": \"$MESSAGE\"}]
  }" | while IFS= read -r line; do
    echo "$line"
  done

与 Alfred / Raycast 集成

可以创建自定义工作流,通过 HTTP API 快速向 wesclaw 发送消息:

  1. 创建新的工作流/脚本命令
  2. 脚本内容调用 http://localhost:8080/v1/chat
  3. 将 AI 回复显示在通知或剪贴板中

与其他工具集成

与 cron / launchd 集成

结合操作系统的定时任务工具,实现自动化 AI 操作:

# cron 示例:每天早上 9 点让 AI 检查邮件
0 9 * * * curl -X POST http://localhost:8080/v1/chat \
  -H "Content-Type: application/json" \
  -d '{"session_id":"morning-check","agent_id":"assistant","messages":[{"role":"user","content":"请检查新邮件并给我一个摘要"}]}'

与 Webhook 集成

可以用 wesclaw 作为 Webhook 消费端:

  1. 使用 serve 模式启动
  2. 外部服务(如 GitHub、Slack)配置 Webhook 指向 wesclaw
  3. wesclaw 接收 Webhook 事件后触发 AI 处理

与 MCP 服务集成

wesclaw 内置 MCP(Model Context Protocol)客户端,可以连接外部 MCP 服务器扩展 AI 能力。详见 MCP 配置。


注意事项

安全

限制

SaaS 版差异

SaaS 云端版本不提供本机 serve 模式。API 集成通过 WES 平台 API 实现,需要 JWT 认证。


下一步