Skip to content

[Grok/dsh 69] 三平台原生能力验收 #201

Description

@Blackman99

Parent

#132

Ticket: 69

Status: ready-for-agent

User Stories: 18, 26, 53, 54, 69(见父规格)

What to build

三个平台的用户都能可靠使用已交付的键盘、鼠标、剪贴板、语音、文件/进程保护及终端恢复,并看到真实差异。

Acceptance criteria

  • 在可重复的真实平台环境执行能力矩阵和主要终端/SSH/tmux 场景,记录实际系统与终端版本。
  • 键位、图像/文本剪贴板、录音授权、进程取消、沙箱与终端复原检查真实效果,不以编译代替。
  • 已知平台不具备的参考能力明确展示,要求保护但无法执行时拒绝;无设备/无远端时不能假报通过。
  • 修复发现的回归并重验;本票是已有功能集成验收,新增重大能力另拆票,不隐藏在此票。

Blocked by

Delivery contract

用户于2026-09-20批准当前测试与任务拆分。按父规格的已安装产物/真实终端和公开协议测试验收;实际实现须带适用的文档、Changeset及必要检查。ready-for-agent表示任务已定义,不表示前置任务已完成,也不授权自动开始本轮实施、购买付费资源或发布软件版本。

Activity

  1. Blackman99 commented on Sep 28, 2026

    @Blackman99
    OwnerAuthor

    已集成:三平台能力矩阵(#201)

    集成提交:596d5af(已普通推送到 rewrite/grok-dsh-20260920,未改动 main)。

    实现内容

    • 矩阵入口:scripts/rust-capability-matrix.py + rust-platforms.yml 的 capability-matrix job(ubuntu-22.04 / macos-15 / windows-2022)。安装打包产物与注册表 dsh,记录 OS / 终端版本,每一格为 ok / refused / unavailable,缺设备或平台无法执行的能力从不静默通过。
    • 产品修复(矩阵暴露):
      • Linux:xclip/wl-paste 打不开显示时如实报「无法到达显示服务」,不再假报剪贴板为空;
      • Windows:/copy 向 clip.exe 写入带 BOM 的 UTF-16LE,中文不再乱码;
      • macOS:/copy 为 pbcopy 强制 UTF-8 locale(LANG 未设时中文曾变成 MacRoman);
      • macOS:关闭终端窗口在无 POLLHUP 时也可检测(stdin 可读且 FIONREAD=0 连续 3 次,间隔 200 ms)→ 客户端 exit 129,dsh 随之结束。
    • 新/扩 harness:rust-clipboard-pty-test.py、rust-tmux-pty-test.py;Unix PTY 脚本同时跑 Linux;Windows ConPTY 增加 keys/history、clipboard、voice doctor。
    • 文档:docs/rewrite/platform-capabilities.md、README / README.zh、CONTRIBUTING;Changeset rust-capability-matrix.md。

    检查(本地 box,Linux x64,/workspace/verify-logs/201-final3)

    • cargo fmt --check、pnpm typecheck、debug、clippy -A 通过;严格 clippy 仅 2 个已知错误。
    • test:rust:796 passed,4 个已知 Linux 失败(同基线)。
    • pnpm test:111 files;2684 passed / 8 skipped。
    • build + build:rust + check:rust-package + rust-install-test + plain-pipe 通过;e2e:177 passed / 1 skipped。
    • PTY:terminal / prompt / cancel / tmux / shell / voice / nav / screen / remote 全部通过;xvfb-run 下真实剪贴板 PTY 通过。

    真实运行(GitHub Actions,三平台能力矩阵)

    最终证据:ci/201-matrix-f #36446085443(含本票全部产品修复与 harness)。集成提交本身的运行 #36450015133(矩阵 job 仅在分支名含 matrix 时触发)。均为已打包 tarball + 注册表 dsh 0.1.5-rc.3 + 仓库 mock 模型。

    平台 Job 环境摘要 结果
    linux-x64 109017318192 Ubuntu 22.04.5,kernel 6.8,tmux 3.2a,X11 :99(xvfb) 矩阵 ok=true
    macos-arm64 109017318174 macOS 15.7.9,tmux 3.7c,pbcopy 可用 矩阵 ok=true(含 hangup ~2.3 s → 129)
    windows-x64 109017318245 Windows Server 2022 10.0.20348.5622 ConPTY 12 步全过

    中间证据(保留未删):ci/201-matrix #36431404509、-b #36434520361、-c #36435276789、-d #36438992649、-e #36442130080(mac hangup 已绿;remote_ssh 因 mid-frame 快照偶发失败,harness 改为等完整通知后 -f 绿)。

    每平台矩阵格

    单元格 Linux macOS Windows
    keys_prompt ok ok unavailable(ConPTY keys-history)
    mouse_nav ok ok unavailable(ConPTY)
    shell_tools ok ok unavailable(ConPTY shell/pwsh)
    cancel_turn ok ok unavailable(ConPTY cancel)
    screen_modes ok ok unavailable(ConPTY)
    terminal_restore_hangup_early_quit ok(hangup ~2.2 s → 129) ok(hangup ~2.3 s → 129) unavailable(Unix PTY)
    clipboard_real ok(xclip;无 XAUTHORITY → refused 显示不可达;CJK /copy) ok(osascript/pbcopy;空粘贴读 pasteboard;CJK) unavailable(ConPTY clipboard:UTF-16LE CJK + 图片粘贴 not available)
    voice_doctor unavailable(voice.platform-unverified,0 设备) ok(列出虚拟设备;实时录音未验证) unavailable(voice.platform-unverified)
    sandbox_profiles refused(坏 glob + Landlock/bubblewrap 限制,有明确文案) ok(坏 glob 拒绝;workspace 探针通过) refused(Windows 未实现)
    remote_ssh ok ok refused(Windows 无 --remote/wrap)
    tmux_real ok(tmux 3.2a;CJK;/copy→tmux buffer;鼠标;退出恢复) ok(tmux 3.7c;同上) unavailable(Unix-only)
    windows_conpty unavailable unavailable ok(install/headless/turn/file-approval/shell/cancel/resume/sandbox-refused/keys-history/clipboard/voice-doctor/install-update-rollback)

    对照验收标准

    • 记录三平台 OS / 终端版本与真实效果(矩阵 JSON 产物 + docs/rewrite/platform-capabilities.md)。
    • 键鼠、shell、取消、屏幕模式、终端恢复、真实剪贴板、voice doctor(无 fixture)、沙箱、SSH、tmux、Windows ConPTY 均有证据;缺设备 / 拒绝 / 不可用明确标注。
    • 产品侧跨平台差异已修并记入文档(显示不可达、clip.exe UTF-16LE、pbcopy UTF-8 locale、macOS hangup)。
    • 新发现的差异记入文档,未删功能、未事后放宽验收。

    已记录的差异

    • Linux:空括号粘贴与参考一致(Ignore);真实 GNOME / Wayland 桌面不进 CI(X11 用 xvfb)。
    • macOS:仅 ad-hoc 签名;麦克风列表 ≠ 录音(TCC / avfoundation);CI 只有虚拟声卡。
    • Windows:仅 ConPTY,未驱动 Windows Terminal / conhost / VS Code;剪贴板图片未实现;无 win32-arm64;dsh ACL 无法进入 %USERPROFILE% 内工作区;codsh-rust.exe 仍在跑时 npm 更新会 EBUSY。
    • 能力矩阵 job 仅在分支名含 matrix(及集成分支策略见 workflow)时跑。

    未改动

    • 未改动 main,未发布包/标签/Release,未改仓库设置或 secrets。
    • 草稿分支 ci/201-matrix … ci/201-matrix-f 保留未删。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions