“有空整理照片”不需要一个精确的预约时间;一条发给编程 Agent 的指令,却必须等对方准备好再送出。设计软件时,有些步骤可以省,有些步骤需要认真保留。
点点记、Tactic Remote 和 MadoHub 中都有这样的选择。下面分别说明遇到的问题、采用的做法,以及它们对使用方式的影响。
点点记:没定时间的事,也可以先记下来
读完一本书、整理旧照片,可能已经是你想做的事,只是还没决定哪天做。如果记录时必须填写日期,用户往往只能随手选一个。日历里于是多了一项看似确定、实际上还没安排的任务。
点点记 2.0 增加了“随时计划”。这类任务不要求固定时间,适合先收下这些待办。确定要开始时,再安排一段专注时间。有明确时刻的事项仍按时间记录,两种计划不必挤进同一种表单。
同一版本的快捷添加面板把类型、时长和提醒放到一次输入里;智能语音输入则从自然表达中识别日期、时间和重复规则。这里有两种不同的减少操作的方式:不确定的信息可以先不填,已经说清的信息交给软件整理。
例如,“明天晚上读书半小时”已经包含时间和时长,用户只需检查识别结果,修改有偏差的地方。对于“有空整理照片”,则没有必要为了通过表单检查而补出一个截止日期。设计输入方式时,先区分这两种意图,比统一减少几个按钮更重要。
Tactic Remote:终端停住了,不一定是在等任务
Tactic Remote 1.9 接入 Factory Droid 时,需要处理命令行工具启动期间的多种界面:更新提示、登录、目录信任询问,以及运行模式选择。它们都可能暂时停在屏幕上,但接下来能接受的输入并不相同。
如果手机把排队的任务说明直接发过去,文字就可能被送进登录提示或启动菜单。屏幕上能看到输出,只能证明内容已经传到手机,不能说明这项任务已经可以发送。
因此,适配工作包括识别启动状态,等 Droid 进入可以接收任务的交互状态,再发送排队中的指令。会话标识也要保留,切换项目或恢复连接时,才能对应到原来的工作。
这个选择也决定了手机端的范围。Droid 继续在开发机上使用仓库、依赖和登录状态,手机负责查看与交互。1.9 中的 Droid 使用终端模式;Claude Code 的结构化聊天和专用授权卡片不能直接算作 Droid 已有的功能。首次登录等步骤,也可能需要回到开发机完成。
新增一个 Agent 因而包含一组具体适配工作:启动时识别什么,何时发送输入,怎样找回同一会话,以及哪些步骤仍由原工具处理。用户切换 Agent 时能否继续熟悉的操作,要靠这些细节逐项接通。
MadoHub:换了桌面框架,本机能力仍单独管理
MadoHub 的 macOS 桌面端已经迁移到 Electron,React 负责画布和会话界面,终端、文件和持久化等能力由独立的 Rust Host 处理。迁移后的结构保留了这层分工,没有把原有 Rust 核心改写到界面进程里。
以界面请求一项本机操作为例,调用会经过受限的桥接接口,进入 Electron 主进程。主进程检查请求来自哪个窗口和页面,再校验参数;需要底层能力的请求才交给 Rust Host。界面没有直接开放 Node.js 集成,也拿不到一个可以任意发送消息的通用接口。
这带来实际的开发成本。增加一项能力时,界面、桥接接口、主进程和 Host 之间的约定需要一起更新;只在页面里接上一个按钮还不够。作为交换,每项本机操作有明确的入口,出错时也能区分是参数、调用权限,还是底层执行的问题。
当前 Host 协议还会核对版本与能力信息。界面和底层组件不匹配时,请求会被拒绝,而不是继续尝试执行。这类检查需要随打包一起验证,无法仅靠浏览器里的一次界面演示完成。
对使用者而言,Electron 或 Rust 本身不是功能。更具体的问题是:软件访问的是哪个工作目录,界面能调用哪些本机操作,版本不匹配时会发生什么。把这些问题落实到进程和接口,比笼统地声称“原生、安全、可靠”更有说明力。




