捎话

Verified safeOpen sourceExclusive
—
No reviews reviews
3
downloads
7.0
android

AI summary

Local-first peer-to-peer messaging and private Agent collaboration over LAN or IPv6, with encrypted public connections, file transfer, group chats, and offline message queuing. LAN connections use plaintext; public IPv6 connections require TLS and mutual certificate pinning.

Generated by AI. May contain inaccuracies.

About this app

Local-First 去中心化端对点传讯与私有 Agent 协同底座(近场 LAN + 远场 IPv6 双模)

Local-First 去中心化端对点传讯与私有 Agent 协同底座(近场 LAN + 远场 IPv6 双模) 无需公网服务端 · 公网通道 TLS + 双向公钥指纹锁定(局域网走明文) · 突破物理局域网 · 数据主权完全归属私有设备 · 跨平台 (Android / iOS / macOS / Linux / Windows)

架构定位与多端支持 捎话 (Relay) 是一套基于 Kotlin Multiplatform 与 Compose Multiplatform 构建的 Local-First 去中心化端对点传讯与私有 Agent 协同底座:

核心协议(Core Runtime):纯 Kotlin 实现的点对点通讯协议运行时(UDP 快速发现与状态同步、TCP 权威长报文/文件块流、基于 PPE-1 Phase 2.0 的 Agent 协同总线),与 UI 框架完全解耦,支持跨端复用。

近场 + 远场双模通信,传输安全分两档:

近场(局域网):UDP 广播 + mDNS 零配置发现,毫秒级直连;局域网内走明文,明文永不出局域网; 远场(公网 IPv6):全球单播 IPv6(GUA)直连,走 TLS + 双向 SPKI pin,fail-closed —— 验不过就不连,绝不退回明文出网。身份是 EC P-256 自签名证书(私钥不变、证书到期自动续签);二维码把主机 pin 交给手机,复合二维码内置候选池(lan_v4 / lan_v6 / public_v6)自动优选路由。 「局域网」只有一条判据:isLanAddress(私网 ∨ 与本机同 /64 ∨ 链路本地/ULA)。IPv6 的 GUA ≠ 公网可达:中国宽带家庭 LAN 常分配 2408:...::/64 这类全局地址,按地址分类它「像公网」,其实与本机同段网 —— 只认私网会把局域网明文长连接静默关掉(详见 docs/public-transport-security.md §11)。 公网直连的前提:对端路由器放行 IPv6 入站。本应用不做打洞、不代改网络设置。 移动端(Mobile App):基于 Compose Multiplatform 开发,面向 Android 与 iOS 平台提供符合原生设计规范与安全沙盒机制的现代移动界面。

自研桌面端(Compose Desktop):独立桌面客户端(desktopApp),共享底层业务状态与组件库,支持宽屏自适应双栏交互与多任务操作。

无头 Agent 节点与可插拔驱动(Agent Node & Drivers):解耦底层通信与模型运行时,支持 NativeRelayDriver、DsBotDriver、OpenAiDriver 及 MCP 扩展工具接入,提供本地 HTTP 控制面与 WebSocket 网关。

支持哪些连接方式 四条通路,区别只在**「怎么找到对方」**——找到之后的加密规则与消息语义完全相同:

通路 自动发现 首次需要扫码 前提 同一个局域网(IPv4) ✅ UDP 广播 + 子网广播 不需要 同一广播域 同一个局域网(IPv6) ✅ mDNS / 同 /64 不需要 同上 公网 IPv6 直连 ❌ 广播出不了网段 需要(码里带 GUA) 对端路由器放行入站 Tailscale ❌ 点对点隧道,无广播域 需要(码里带隧道地址) 两端在同一 tailnet ZeroTier(桌面 ↔ 桌面) ✅ 子网广播 不需要 同网段、同 ZT 网络 ZeroTier(手机参与) ❌ 见下 需要 同上 为什么「手机参与」就不同:广播能否到达应用,取决于平台怎么递送。

Android 上,只有绑定通配地址(0.0.0.0)的 socket 收得到广播(绑具体地址只收单播, 本机实测);而 Android 的 ZeroTier 是 VPN 隧道,官方说明是「没有显式绑定到 ZeroTier 设备 的应用收不到组播/广播」。二者叠加,手机上不依赖隧道广播做发现。 桌面端 ZeroTier 是带广播的二层网卡(macOS 的 feth 有广播地址),所以桌面之间可以靠 子网广播互相发现。 配对之后就不太依赖「发现」了:双方会把各自全部可用地址(含 Tailscale / ZeroTier 隧道段) 告知对方,并每 30 秒向已知地址单播一次心跳。所以设备换网(局域网 ↔ 蜂窝)之后会自动恢复, 不需要重新扫码,也不需要手动填地址。

如实说明恢复窗口:换网后能否立刻恢复,取决于那张覆盖网自己多久重连(ZeroTier 在手机上 换网后可能需要数分钟,尤其息屏或后台受限时)。这段时间里对端显示离线,消息排队等它回来。

换机 / 重装要重新扫码:节点身份跟着安装走,重装后是一台「新设备」,原来的配对与群成员 关系都不再指向它。这时能救场的正是上面那条——同网段的广播发现,或扫一次码。

核心特性 近场 + 远场双模点对点直连:无需第三方打洞中继服务器,局域网与 IPv6 公网均支持原生点对点加密直达;二维码内置 SPKI 指纹防止任何中间人监听。 PPE-1 思考流与推理交互:原生解耦 <think> 思考流与正式回复流,支持毫秒级耗时统计与自适应折叠卡片组件(ThinkingBlock)。 结构化工具调用与人机回环(HITL)审批:从生硬 JSON 升级为 L1/L2/L3 三级安全卡片,支持入参 Diff 详情抽屉、一键批准/本次免审与 5 分钟超时闭环保护。 工作区上下文感知与会话分段:移动端常驻显示绑定工作区与 Git 分支,支持切换工程目录并触发会话分段(Session Segmentation),物理隔离上下文并大幅节省 Token。 去中心化群聊人机混合协同:将本地 Agent 抽象为虚拟群成员(Virtual Peer),支持 @Agent 意图精准路由、Chief 编排调度与群顶部实时工作态广播(GroupProgress)。什么时候会真的叫醒 Agent:跟主机的私聊每条都算;群里要 @DSH 点名,或(工作区群里)回复 Agent 那条 —— 群里别人之间的闲聊不会触发执行。 移动端 MCP 治理与动态 ACL:可视化检视主机加载的 MCP 工具与执行能力,支持手机端下发动态 ACL 开关(如外出禁用 Bash 执行),即时生效无需重启。 零服务器本地系统通知:基于离线增量游标同步与 Android / iOS 系统原生通知通道,在完全无公网推送服务下实现任务完成与审批唤醒。 大文件安全传输与断点续传(含跨网):分块流式传输与断点续传;接收端支持沙盒打开、系统级分享,以及图片与音频的原位预览。跨网时另开第二条 TCP 复用同一条链路(file-ctl / 裸流 / 续传),公网必须 TLS + 双向 pin。 长连接下行通道(K1 / K2):手机主动拨主机并维持一条 TCP 长连接,承载下行推送与低延迟控制。局域网走明文(K1),公网走 TLS + 双向 pin(K2);公网必须 TLS,验不过就拒,不存在降级成明文出网这条路。没有需要用户配置的开关:手机在哪张网上就用哪条路,换网(Wi-Fi ↔ 蜂窝 ↔ 飞行模式)自动切换,不需要手动重拨。 后台保活与省电:Android 前台服务(remoteMessaging)保证后台可达;Doze 期间降频;有数据往来时免心跳,并保留保底 Ping(2×心跳 < 45s 判死),既不误杀也不白耗电。 离线排队与可靠投递:对端离线期间消息严格保序入队,对端上线握手后自动发起可靠补发。 排队有边界(见下文「已知限制」):只为「认识过的设备」长期保留,从未握过手的对象只留 24 小时,超过 3 天仍送不出去的条目会被淘汰。 本地系统通知:支持跨平台系统级通知(Android Notification / iOS UserNotifications / 桌面通知),支持静音时段与专注模式,无需公网推送服务器。

License

GPL-3.0

About this version

Version
0.1.0 (1)
Size
38.02 MB
Requires Android
7.0
Target SDK
24
Architecture
x86, x86_64, arm64-v8a, armeabi-v7a
Downloads
3
Updated
Oct 23, 2026
Package
app.relay
Languages1
English

Similar apps

Ratings & reviews

—
0 ratings
  • 5
    0
  • 4
    0
  • 3
    0
  • 2
    0
  • 1
    0

Write a review

Tap a star to rate this app