Synra 是什么
Synra 是一个跨设备动作编排框架。它把一台设备上的动作,变成另一台设备上的执行 —— 而实际发生什么由插件 定义。
日常的版本:你在手机上看到一个链接,它在你的笔记本浏览器里打开。一般的版本:手机上的一颗按钮、桌面上一个 快捷键、一个正好落到你需要的地方的文件。
两端都是宿主
桌面端和手机跑的是同一个内核,能力对等。没有哪一边是"那个跑插件的"。任一边都能分享、任一边都能执行,而同一 台设备可以在不同的传输里扮演两种角色。
两种模型
Synra 服务同一个想法的两种形态。用哪一种,取决于动作从哪里开始。
分享与接收
动作从另一个应用开始。你把内容分享给 Synra,某个插件认出它,结果落到你选的那台设备上。
You see a GitHub link in a chat app
→ Share to Synra
→ A plugin matches it and completes the URL
→ Synra asks which device should open it
→ Your laptop opens it in the default browser动作面板
动作从 Synra 本身开始。插件画出一个按钮面板,按下其中一个就在另一台设备上运行点什么。
You open a plugin's panel on your phone
→ It shows a grid of shortcuts
→ You tap "Undo"
→ Your desktop sends Ctrl+Z to the focused window第二种模型让 Synra 作为遥控器有用;第一种让它在你不去想它的时候有用。
各部分如何配合
三个部分,而分清哪个是哪个是值得的,因为它们各有各的规则。
能力属于宿主
宿主提供一组固定的系统能力:打开 URL、打开文件、模拟按键组合、发送通知、读写剪贴板、传输文件。这些是插件被 允许使用的东西,而宿主强制这份清单,而不是指望插件自觉。
插件决定它的含义
插件回答两个问题:这个输入和我有关吗? 以及 应该发生什么? 它从不直接碰系统 —— 它请宿主去做,而宿主先检 查权限。
内核负责搬运
发现、配对、连接、消息路由、文件传输与沙箱全都住在一个完全不需要用户界面就能运行的内核里。桌面端与移动端 应用是它的前端 —— 这也是为什么同样的行为在每个平台、以及从命令行都能用。
Synra 不是什么
知道边界,在判断"插件是不是对的工具"时能省时间。
| 不是云服务 | 没有账号、没有中心服务器。关于你设备的一切都不离开你的网络。 |
| 不是远程桌面 | 不串流屏幕、不串流输入。只有意图与文件。 |
| 不是通用 RPC 框架 | 设备间消息的存在是为了服务动作编排。 |
| 不是插件商店 | 插件来自注册表;宿主负责校验并安装它们。 |