hermes-conduit 是一个为 Hermes Agent 打造的纯原生 iOS 客户端,项目代号为 Conduit。无广告,无跟踪。
项目简介
Hermes Conduit 是一个用 SwiftUI 构建的 iOS 应用,它可以让你在 iPhone 或 iPad 上直接连接并控制你自己部署的 Hermes Agent。它的核心理念是提供一个免费、无广告、无追踪的移动端体验。
它直接连接到你的 Hermes 服务端,使用的是与桌面客户端相同的会话、配置和能力。这意味着你可以在电脑上开始一个对话,然后随时在手机上无缝衔接。
无需在您的技术栈中运行额外的中继服务,无需维护第二个进程,也无需中间环节引入故障点。
由于它们都连接到同一个控制面板,所以所有内容都是共享的。相同的会话、相同的配置文件和每个配置文件的设置、相同的计划任务、相同的功能开关、相同的连接器。在电脑上开始对话,中途用手机继续,继续操作,稍后再回到电脑继续。会话列表也相同,因为它们使用的是同一个数据库。
目前功能已基本与桌面客户端相同。支持实时聊天、工具检查、推理轨迹、斜杠命令、工作区文件浏览和会话分支。此外,还提供审批和完成回合的推送通知,无需您亲自观看。
主要功能
* 核心对话:支持流式聊天和完整的 Markdown 渲染(代码块、数学公式、Mermaid 图表、任务列表等)。
* AI 交互:可以查看 AI 的工具调用详情和推理过程,并支持切换模型和调整推理强度。
* 多媒体支持:支持语音模式(支持按键说话和本地语音识别)、图片、PDF 和文本附件的上传。
* 会话管理:支持会话分支、置顶和归档,方便你管理不同的对话。
* 高级控制:提供 Slash 命令、工作区文件浏览,以及一个能力(Capabilities)面板,用于开关技能、工具和 MCP 服务器。
* 多账户与监控:支持多账户登录和独立的账户设置,并可以查看定时任务和连接器状态。
* 移动端特性:支持推送通知(用于审批、任务完成等提醒)以及应用内的工具调用审批,无需打字即可批准或拒绝。同时支持 Face ID 应用锁和凭证安全存储。
⚙️ 系统要求与连接
* 系统要求:需要 iOS 17 或更高版本,支持 iPhone 和 iPad。
* 服务端要求:你需要有一个正在运行的 Hermes Agent 实例,并且启用了原生仪表盘(默认端口为 9119)。
* 连接步骤:在 App 的登录界面输入你的 Hermes 仪表盘地址(例如 http://your-server-ip:9119)和凭证即可。
* 重要提示:Conduit 连接的是 Hermes 的原生仪表盘,而非 WebUI。如果你的服务器不在本地网络,需要通过 Tailscale 或反向代理等方式使其可从手机访问。
推送通知设置
由于 iOS 的限制,App 无法维持后台长连接,因此推送通知依赖一个轻量级的中继服务(relay service)。
* 服务端配置:你需要在 Hermes 实例上安装一个配套的通知插件:
bash
hermes plugins install kaishi00/hermes-conduit-notifier --enable
hermes gateway restart
* App 内配对:完成服务端配置后,在 App 的 Settings > Notifications 中按照指引完成配对。* 中继服务器:App 默认使用一个共享的中继(
push.milim.dev),开箱即用。你也可以在设置中填入自己搭建的中继服务器地址。
️ 如何构建
如果你想从源代码构建,可以遵循以下步骤:
1. 克隆仓库:git clone https://github.com/kaishi00/hermes-conduit.git
2. 进入目录:cd hermes-conduit
3. 安装 XcodeGen:brew install xcodegen
4. 生成 Xcode 项目:xcodegen generate
5. 打开项目:open Conduit.xcodeproj
6. 在 Xcode 中设置你的开发团队(Signing & Capabilities),然后构建并运行。
构建要求 Xcode 16 或更高版本以及 iOS 17 SDK。
️ 技术架构
* UI 框架:纯 SwiftUI 构建,目标平台为 iOS 17+。
* 项目生成:使用 XcodeGen 从 project.yml 文件生成 Xcode 项目。
* 通信方式:App 在通过仪表盘登录认证后,会连接到 Hermes 仪表盘的 WebSocket 端点(/api/ws)进行通信。所有 RPC 调用都通过仪表盘路由,不会直接联系 Gateway。
* 核心文件:
* Conduit/Services/HermesClient.swift:WebSocket 客户端和 RPC 层。
* Conduit/Services/AppState.swift:应用的主要状态管理和会话生命周期管理。
总的来说,Hermes Conduit 为 Hermes Agent 的用户提供了一个功能完整、体验流畅的移动端选择,让你可以随时随地与自己的 AI 代理交互。