agentic_huge_data_base / wiki
页面 jcode · 13 iOS 客户端与 WebSocket Gateway·DeepWiki 中文全文译文

13 · iOS 客户端与 WebSocket Gateway(iOS Client and WebSocket Gateway)

代理式研究运行时 · 聚焦本章的模块关系、源码依据与实现要点。

项目jcode 章节13 状态全文译文 模块接口与服务契约、界面与交互、测试、发布与运维、系统架构
源码线索
  • docs/IOS_CLIENT.md
  • docs/MOBILE_AGENT_SIMULATOR.md
  • docs/MOBILE_IOS_HOST_INTEGRATION.md
  • docs/MOBILE_SWIFT_AUDIT.md
  • ios/Sources/JCodeKit/Connection.swift
  • ios/Sources/JCodeKit/CredentialStore.swift
  • ios/Sources/JCodeKit/JCodeClient.swift
  • ios/Sources/JCodeKit/Protocol.swift
  • ios/Tests/JCodeKitTests/ClientTests.swift
  • ios/Tests/JCodeKitTests/ProtocolTests.swift
模块标签
  • 接口与服务契约
  • 界面与交互
  • 测试、发布与运维
  • 系统架构
  • 工作流与编排

章节正文

iOS 客户端与 WebSocket Gateway

iOS 客户端与 WebSocket 网关

相关源文件

本章引用的主要源码文件:

  • docs/IOS_CLIENT.md
  • docs/MOBILE_AGENT_SIMULATOR.md
  • docs/MOBILE_IOS_HOST_INTEGRATION.md
  • docs/MOBILE_SWIFT_AUDIT.md
  • ios/Sources/JCodeKit/Connection.swift
  • ios/Sources/JCodeKit/CredentialStore.swift
  • ios/Sources/JCodeKit/JCodeClient.swift
  • ios/Sources/JCodeKit/Protocol.swift
  • ios/Tests/JCodeKitTests/ClientTests.swift
  • ios/Tests/JCodeKitTests/ProtocolTests.swift
  • src/gateway.rs
  • src/gateway/auth.rs
  • src/gateway/registry.rs

jcode iOS 客户端是一款原生 SwiftUI 应用程序,旨在为 jcode 服务器提供移动端界面。虽然大语言模型(LLM)编排、工具执行和文件系统访问等繁重任务仍保留在桌面端/服务器端,但 iOS 应用支持远程交互、通过推送通知进行工具审批以及环境状态监控 docs/IOS_CLIENT.md:8-14。通信通过服务器上的 WebSocket 网关进行,该网关将网络流量桥接到内部代理运行时 src/gateway.rs:1-6

系统架构

该架构利用 WebSocket 网关将现有的基于换行符分隔的 JSON 协议通过 TCP 暴露出来。安全性通常通过 Tailscale(WireGuard)隧道运行网关来处理,该隧道提供点对点加密,无需将端口暴露到公共互联网 docs/IOS_CLIENT.md:40-42

高层组件映射
组件代码实体职责
WebSocket 网关src/gateway.rs监听 TCP :7643 端口,处理配对,并将 WebSocket 帧中继到服务器 src/gateway.rs:9-13
移动端核心jcode-mobile-core共享的 Rust 逻辑,用于状态机、协议适配器和语义化 UI docs/MOBILE_AGENT_SIMULATOR.md:43-51
iOS SDKJCodeKitjcode 协议和连接管理的 Swift 实现 ios/Sources/JCodeKit/JCodeClient.swift:119-122
凭证存储CredentialStore使用 servers.json 安全持久化存储服务器认证令牌 ios/Sources/JCodeKit/CredentialStore.swift:36-47
移动端模拟器jcode-mobile-sim用于代理驱动应用测试的 Linux 原生模拟器 docs/MOBILE_AGENT_SIMULATOR.md:53-60

来源:docs/IOS_CLIENT.md:23-94src/gateway.rs:34-47docs/MOBILE_AGENT_SIMULATOR.md:30-37

架构流程:iOS 到服务器

下图展示了移动端请求如何通过网关流入核心代理引擎。

jcode · 架构流程:iOS 到服务器 · 图 1
jcode · 架构流程:iOS 到服务器 · 图 1

来源:docs/IOS_CLIENT.md:23-94ios/Sources/JCodeKit/Connection.swift:3-37ios/Sources/JCodeKit/JCodeClient.swift:119-149src/gateway.rs:9-13

WebSocket 网关

网关是一个网络监听器,与 Unix 套接字并行运行。它将 WebSocket 帧转换为服务器 handle_client 循环期望的字节流格式 src/gateway.rs:63-71

实现细节
  • 端口:默认为 7643(手机键盘上的 "jc")src/gateway.rs:34-35
  • 协议:与 TUI Unix 套接字共享相同的 RequestServerEvent JSON 协议 ios/Sources/JCodeKit/Protocol.swift:5-150
  • 认证:根据存储在 ~/.jcode/devices.json 中的 DeviceRegistry 验证十六进制令牌 src/gateway/registry.rs:11-24
  • 传输:使用 tokio-tungstenite 进行 WebSocket 握手,并使用 UnixStream::pair() 桥接到内部服务器 src/gateway.rs:150-170
设备配对流程

配对通过使用一个短时效的 6 位代码在移动设备和服务器实例之间建立信任关系 src/gateway/registry.rs:43-47

jcode · 设备配对流程 · 图 2
jcode · 设备配对流程 · 图 2

来源:docs/IOS_CLIENT.md:98-119src/gateway/registry.rs:43-112ios/Sources/JCodeKit/CredentialStore.swift:61-65

JCodeKit SDK 与 iOS 应用

JCodeKit 是提供协议桥接的核心 Swift 框架。它定义了 JCodeClient,使用委托模式来更新 UI ios/Sources/JCodeKit/JCodeClient.swift:89-106

  • JCodeConnection:一个管理 URLSessionWebSocketTask 的 Actor。它每 20 秒处理一次自动心跳,并监控 .reloading 事件以指示服务器交接 ios/Sources/JCodeKit/Connection.swift:27-205
  • CredentialStore:管理 ServerCredential 对象列表,将其持久化存储到应用支持目录,并设置受限的文件权限 ios/Sources/JCodeKit/CredentialStore.swift:36-108
  • 协议映射:实现 Rust 中 RequestServerEvent 枚举的 Swift Codable 版本,包括对流式文本、工具执行和 Token 使用更新的支持 ios/Sources/JCodeKit/Protocol.swift:5-150

有关 SDK 和 SwiftUI 实现的详细信息,请参阅 JCodeKit SDK 与 iOS 应用

移动端模拟器与核心协议

该项目正在向 Rust 优先 的移动端架构过渡。目标是将应用状态、连接生命周期和聊天逻辑迁移到 jcode-mobile-core 中,以便可以通过 Linux 原生的 jcode-mobile-sim 进行测试 docs/MOBILE_AGENT_SIMULATOR.md:9-14

  • 语义化 UI:核心将生成一个确定性的 UI 树,代理可以无需 OCR 即可检查和交互(点击、输入、滚动)docs/MOBILE_AGENT_SIMULATOR.md:160-167
  • 测试:使用 mobile_simulator_tester.sh 和黄金夹具来验证协议处理和状态转换 docs/MOBILE_AGENT_SIMULATOR.md:176-179

有关模拟器和共享 Rust 核心的详细信息,请参阅 移动端模拟器与核心协议

构建与持续集成/持续部署(CI/CD)

iOS 项目通过 project.yml 文件(XcodeGen)进行管理,并使用 Codemagic 管线进行构建。该管线处理依赖关系、协议单元测试以及分发到 TestFlight docs/IOS_CLIENT.md:10-14

来源:ios/Tests/JCodeKitTests/ProtocolTests.swift:43-152docs/MOBILE_SWIFT_AUDIT.md:1-25