Repository navigation
Replies: 3 comments
桌面端后续设计:按远端能力提供完整菜单,并明确操作结果在当前定制分支基础上补充设计。本文仅讨论 Desktop;手机体验另行处理。 已有源码包括:设备/工作区/会话分组与地球仪标识(a1a9fdd172),以及在已配对电脑上注册现有目录、在远端工作区创建会话(c968fa9061)。这些不等于远程会话已经具有完整的本机右键菜单,也不包含远程文件浏览器。源码参考: 建议的用户流程连接设置显示设备名称、连接状态、刷新与重连。首次允许访问后保存设备授权,重新打开客户端时自动尝试恢复;目标离线时保留上次目录并标注更新时间。网络可达、DSH 服务可用、已获授权分别判断,不能因为同一个账号或处于同一 Tailnet 就默认为已授权。 主侧栏统一呈现本机和远程工作区,包含空工作区。使用设备身份 + 工作区/会话身份作键,名称和 IP 仅用于显示或寻址。右键菜单使用同一动作定义,具体执行目标由资源所属 Host 决定:
“菜单一致”指动作含义和位置一致,不是把本机所有权限无条件暴露给远端。建议 Host 发布协议版本和操作能力,Client 据此启用菜单;旧版或能力缺失显示“该设备暂不支持”,不猜测 API。 断线与恢复契约目前 PairedDevices 的写操作请求会生成 rpcId,但不能把这个 transport id 当成已实现的业务幂等。新增写操作应携带稳定 operationId,由所属 Host 记录受理/执行/完成状态,同一身份与相同参数的重试返回原结果;参数不同则拒绝。幂等记录保留时间与容量需显式配置。 发送后失联显示“结果待确认”,重连先查操作状态和会话投影。若对端不支持结果查询,不自动重发写操作。Stop 未确认显示“停止请求待确认”;断开连接不代表远端执行已停止。撤销授权应关闭现有访问并停止自动重试,不能继续展示为在线。 实现与验收目录、操作与状态由 Host service/controller 拥有,Client 通过现有 typed RPC、导航和菜单槽位消费;Desktop 主进程只承担系统凭据、固定证书身份的连接与原生窗口。优先复用现有 peer/principal 授权边界;扩展不写入 agent loop。预期错误有稳定类型,由接收端本地化显示。 独立验收:两台设备同名/相同会话 ID 不串线;空工作区可见;授权撤销;旧版能力降级;断线前后新建只发生一次;Stop 的确认状态;离线列表不伪装实时;远端路径不落到本机执行;关闭设置页后无泄漏轮询。关键模型可见效果应由持久会话记录重建。 上述新增能力是设计,尚未完成跨平台/真实网络全矩阵验证。希望维护者先反馈能力协商和写操作结果查询是否应放在现有 peer/controller 边界。 |
|
补充 Android 连接界面的本地实现进展。 设置中的连接入口现在打开与聊天界面同主题的设备面板:设备卡片、连接状态、刷新、连接/重新授权、查看对话以及自动重连开关集中展示。账号与二维码诊断保留为次级入口。侧栏先展示已缓存的远程设备与工作区,再后台刷新;空工作区也会显示,避免被误认为未同步。返回键优先关闭面板或抽屉。 连接状态只在面板打开且应用处于前台时定时刷新,关闭即停止;页面不接触设备凭据,首次授权边界保留。 本地 .20261020.7 Android APK 已签名并核对版本、架构与 65 个界面资源;Java 测试、浏览器界面测试和多尺寸检查通过。尚未在用户手机及实际跨设备网络中验收,因此不宣称所有重连或手机布局问题都已解决,也不宣称手机具备完整桌面端能力。 实现提交:Myoontyee/deepseek-harness@890f80a。此次未发布新的公共 Release。 |
|
本地 Android/配对会话功能进展,区分已验证与待实测部分。 Android 使用外层安全内容容器处理系统栏、刘海和键盘区域;设备目录读取使用独立执行队列,等待共享通道最多 3 秒,原生目录操作总预算 20 秒。会话列表先读取,工作区信息失败不抹掉会话;失败分类保留缓存并区分通道忙、授权、证书、超时等状态。“刷新中”“读取失败”“成功但没有对话”分开呈现,不再刷新时同时显示没有对话。 Windows 侧区分远程工作区和会话菜单,加入置顶、重命名、分叉、归档/恢复、复制 ID、带已配对设备身份的链接、复制/打开所属电脑工作目录等操作。链接只解析当前安装中已有授权的设备;没有授权时明确失败,不把远端 ID 误作本机会话。工作区移除只操作注册;旧版设备提供的合成目录分组不开放注册修改。 新增完整会话投送:从本机会话选择本机或已授权电脑及其现有文件夹,复制已保存日志、子会话、已发送批注和引用的图片/文件,保留源会话。不可变源快照、256 KiB 分块、摘要校验、稳定操作 ID 和目标回执使同参数重试收敛;新身份导入、关闭运行尾部、取消继承排队输入,不自动激活 Agent。目标目录保留恢复快照并登记副本工作区。格式不兼容、缺少必要消息解释器或附件、图片策略不同、字节冲突和超限会明确拒绝。默认 64 MiB、32 个会话;各日志是其自身保存边界,不是同时刻进程快照。不复制账号凭据、模型配置、未发送草稿或整个工作区。 验证包括嵌套父子关系、分叉会话再次投送、使用副本后的重试、真实图片卸载历史与附件字节;另通过真实固定证书 HTTPS 和授权设备连接,将会话送入另一独立 Host 库,验证错误证书和未授权请求不会到达后端。打包后的本机 UI 完成实际投送并产生持久回执。该网络验收运行在同一物理机器的独立 Host,不冒充两台真实设备全流程。 Android 0.2.1-rc.2.20261021.4 已完成界面/Go/Java 检查及签名构建,版本码 2026102104,69 个包内资源与当前构建一致,沿用原安装签名可覆盖升级。用户手机的状态栏、键盘和实际重连仍待安装后验证;没有卸载、清数据或重置配对,也不宣称手机网络问题已全面解决。本次未发布公共 Release。 |
Uh oh!
There was an error while loading. Please reload this page.
I have implemented a private-network multi-device prototype on top of official dsh-v0.2.1-alpha.3.
The user-facing flow is a Devices and conversations entry: optionally discover devices from the installed Tailscale client, pair a computer with a one-use invitation approved on that computer, then search and open its conversations under a visible device name. Conversations stay on their original computer and tasks execute there; this does not copy remote history into the local session store. Phone pairing now has a locally generated QR code and an Android scanner.
Discovery is separate from authorization. No tailnet admin key is required. Device grants are stored using the local operating-system encryption service. TLS certificate identity and validity are checked before sending pairing or device credentials. Remote conversation windows have no local Desktop preload/native APIs, and revocation denies subsequent access. The original Host authentication cookie remains on its computer.
Validation: The downloaded Windows installer, launched with isolated profiles, and a real HTTPS gateway exercised file quotations, exact annotation input received by a local test model, native QR rendering, remote conversation listing/opening, a task sent through the remote window, and revocation. A separate transport test rejects a changed certificate before transmitting credentials. This is local multi-instance validation, not physical cross-platform qualification; Android camera scanning still needs testing on a real phone.
Limits: both computers and DSH must remain running; Tailscale presence alone does not prove DSH or SSH is available. Discovery currently uses private IPv4 addresses. No public relay, wake-on-LAN, background phone push, or iOS application is included. Remote conversation selection by fragment requires this customization on the remote Desktop too.
Implementation: https://github.com/Myoontyee/deepseek-harness/commit/46a7396c53
Build: https://github.com/Myoontyee/deepseek-harness/actions/runs/38708999628
Release: https://github.com/Myoontyee/deepseek-harness/releases/tag/custom-v0.2.1-alpha.3.20261015.7
Would the maintainers prefer a first-class Desktop device API for this workflow, or a smaller extension surface for pairing and remote conversation navigation?
All reactions