---
read_when:
  - 添加或更改外部 CLI 集成
  - 调试 RPC 适配器（signal-cli、imsg）
summary: 外部 CLI（signal-cli、imsg）的 RPC 适配器和 Gateway 网关模式
title: RPC 适配器
x-i18n:
  generated_at: "2026-02-03T07:53:44Z"
  model: claude-opus-4-5
  provider: pi
  source_hash: c04edc952390304a22a3a4763aca00a0311b38d390477ec0be5fe485ec257fa7
  source_path: reference/rpc.md
  workflow: 15
---

# RPC 适配器

gensparx 通过 JSON-RPC 集成外部 CLI。目前使用两种模式。

## 模式 A：HTTP 守护进程（signal-cli）

- `signal-cli` 作为守护进程运行，通过 HTTP 使用 JSON-RPC。
- 事件流是 SSE（`/api/v1/events`）。
- 健康探测：`/api/v1/check`。
- 当 `channels.signal.autoStart=true` 时，gensparx 负责生命周期管理。

设置和端点参见 [Signal](/channels/signal)。

## 模式 B：stdio 子进程（imsg）

- gensparx 将 `imsg rpc` 作为子进程生成。
- JSON-RPC 是通过 stdin/stdout 的行分隔格式（每行一个 JSON 对象）。
- 无需 TCP 端口，无需守护进程。

使用的核心方法：

- `watch.subscribe` → 通知（`method: "message"`）
- `watch.unsubscribe`
- `send`
- `chats.list`（探测/诊断）

设置和寻址（首选 `chat_id`）参见 [iMessage](/channels/imessage)。

## 适配器指南

- Gateway 网关负责进程（启动/停止与提供商生命周期绑定）。
- 保持 RPC 客户端弹性：超时、退出时重启。
- 优先使用稳定 ID（例如 `chat_id`）而非显示字符串。
