Skip to content
sealppPublic

About

A separate Windows workspace for AI agents.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

BackDesk

BackDesk

给 AI 一张 Windows 桌面,把你的桌面留给自己。
A separate Windows workspace for AI agents.

使用场景 · 功能亮点 · 快速开始 · MCP 接入 · 兼容性

BackDesk 让 AI 通过 MCP 在单独的 Windows 子会话(Child Session) 中操作应用。你继续使用主桌面,需要时打开本机监视器查看进度、接管操作,再交还给 AI。

后台工作,随时可见;需要你时,随时接管。

Windows x64 · 当前版本 0.1.11(实验版) · AGPL-3.0-only

为什么需要 BackDesk

让 AI 操作电脑,常常意味着你要暂时把电脑让出来:应用窗口来回切换,鼠标和键盘被占用,想插手处理一步,又担心与 AI 的操作撞在一起。另起一个 Windows 会话后,登录、自启动软件和输入法又会增加准备工作。

BackDesk 把这些环节连起来:按需启动子桌面,准备运行环境,通过 MCP 交给 AI 使用。 你可以随时查看、接管,也可以把应用现场保留到下一次连接。

使用场景

AI 做桌面任务,你继续工作

你正在写代码或处理消息,还有一项需要在 Windows 应用中反复录入信息的任务。你想把重复步骤交给 AI,手头的工作也能继续。

给已接入 BackDesk 的 AI 客户端布置任务,桌面工具在单独的子会话中执行。AI 的应用窗口与操作留在子桌面,你在主桌面继续工作,需要时打开监视器查看进度。

流程需要你确认,接手后再交还

任务进行到需要你登录、确认信息或手动处理弹窗的一步。你希望处理好当前页面,就让 AI 接着做。

打开监视器,点击「接管」完成操作,再点击「交还」。人工接管期间,BackDesk 拒绝 AI 的桌面工具调用;交还后,AI 可以重新观察当前画面,从同一份应用现场继续任务。

客户端重连,应用现场继续保留

AI 客户端需要重启或重连,子桌面里的工作还没结束。你希望连接恢复后,从当前进度接着做。

BackDesk 在 MCP 断开时保留宿主与子桌面,已打开的应用继续保留。重新连接后,让 AI 使用新的工具会话并重新观察窗口,就可以从当前应用现场继续操作。

功能亮点

本机监视器,让后台任务看得见

按需打开监视器,以只读模式查看子桌面和运行状态。窗口缩放时保持画面比例,也可开启等比放大,让较小的桌面更容易看清;显示缩放保持子桌面的原有分辨率。

监视器关闭或最小化后回到只读,后台宿主与桌面继续运行。画面放大默认关闭,记住上次选择;系统不支持时,入口会显示为不可用。

Child Session 初始化,从登录到可用桌面

将子会话登录、Cua Driver 启动、首帧检查和输入准备串成一次初始化流程,准备完成后再报告就绪。

连接 MCP 和发现工具时保持轻量。首次实际调用桌面工具,或显式调用 backdesk_start 时,才会尝试建立或复用受管理的子桌面;监视器可以随后按需打开。

自启动优化,减少与任务无关的干扰

新建子桌面时,默认尽量跳过 Explorer 的常规自启动程序,减少登录时额外打开的软件。需要的应用仍可主动启动,已有桌面在复用时保留现场。

输入法优化,少做一轮输入环境准备

初始化时优先选择当前语言下已启用的 Windows 系统输入法或键盘布局,帮助减少输入环境差异带来的干扰。已有合适配置时保留原选择,准备结果可通过状态查看,也支持手动重试。

人工接管,让人和 AI 轮流操作

通过「接管 / 交还」切换控制权。接管期间拒绝 AI 的桌面工具调用,交还后 AI 可重新观察并继续;桌面工具操作进行中时,接管入口暂不可用,避免同时操作。

MCP 接入,延续已有的 AI 工作流

提供 stdio MCP 服务,把桌面工具接入支持该协议的 AI 客户端。内置配置界面可复制 Codex TOML 或通用 JSON,应用观察、截图和输入等能力由固定版本的 Cua Driver 提供。

断线保留现场,结束由你决定

MCP 连接与子桌面的生命周期分别管理。客户端断开时释放该连接的代理与操作权,应用继续留在子桌面中;明确选择「结束」时,才注销受管理子桌面并关闭其中的应用。

快速开始

1. 获取完整便携包

当前尚未发布 GitHub Release,可先从源码构建生成便携包。完整包包含 .NET 运行时和固定版本的 Cua Driver,无需另外安装运行时。请保留 driver/ 和其他随附文件。

2. 启用 Windows 子桌面

首次使用前,在便携包目录下以管理员身份打开 PowerShell,运行:

.\BackDesk.exe enable | Out-Host

如果提示需要重新登录,请保存工作,完整注销 Windows 后再登录。锁屏或重启 AI 客户端不能替代注销。

3. 接入 AI 客户端

双击 BackDesk.exe 打开监视器,在右上角的「MCP 配置」中选择格式并复制到客户端。也可以在 PowerShell 中生成配置:

# Codex TOML
.\BackDesk.exe config | Out-Host

# 通用 MCP JSON
.\BackDesk.exe config --json | Out-Host

4. 给 AI 第一个桌面任务

配置生效后,可以先给 AI 一个简单任务:

请通过 BackDesk 启动子桌面,打开记事本,输入一段测试文字,并截图确认结果。

需要查看进度时打开监视器,或让 AI 调用 backdesk_show。需要自己操作时,点击「接管」,处理完再「交还」。

若 Windows 无法自动登录,请在监视器内输入当前 Windows 账户的账户密码;PIN 不适用于该密码字段。登录与排障中说明了记住密码和重试方式。

MCP 与桌面控制

操作 行为
查看状态 / backdesk_status 读取状态,不启动宿主或子桌面
启动 / backdesk_start 建立或复用受管理的子桌面
打开监视器 / backdesk_show 打开或显示监视器,不创建子桌面
接管 / 交还 切换只读观看与人工输入;接管时拒绝 AI 的桌面工具调用
关闭或最小化监视器 回到只读,后台宿主和子桌面继续运行
MCP 断开 释放该连接的代理与操作权,保留宿主和子桌面
结束 / backdesk_stop 注销受管理子桌面,关闭其中的应用
托盘「结束桌面并退出」 / quit 注销子桌面并退出宿主

结束桌面前请保存工作。 注销会丢失未保存的应用状态,保存到磁盘的文件仍保留。手动结束后,需显式调用 backdesk_start 或点击「启动」再次开始;当前不自动按空闲时间注销。

MCP 重连后,请使用新的 Cua 工具会话,重新观察窗口并刷新控件引用。旧控件索引与旧会话标签属于原连接,不能作为恢复凭证。

常用命令:

.\BackDesk.exe status | Out-Host
.\BackDesk.exe start | Out-Host
.\BackDesk.exe stop | Out-Host
.\BackDesk.exe quit | Out-Host
.\BackDesk.exe doctor | Out-Host
.\BackDesk.exe prepare-input | Out-Host

登录与排障

BackDesk 关闭系统原生凭据弹窗。自动登录不可用时,在监视器内使用账户密码登录;后台请求不会主动弹出登录窗口,也不会在失败后循环尝试密码。

勾选「记住密码并自动登录」后,密码会在子桌面登录成功后由 Windows 凭据管理器保存在当前用户下,可在设置中「忘记密码」。不勾选时只用于本次登录。密码不会进入 MCP 请求、命令行、普通配置或日志。

登录后最多等待 15 秒取得首次画面。组件或画面暂不可用时,保留已完成的登录,可通过「启动」重试。监视器提供诊断入口,也可运行 doctor 查看状态与日志位置。

诊断和状态文件位于 %LOCALAPPDATA%\BackDesk\,包含按进程记录的日志和最近一次启动失败的阶段。

初始化选项

以下选项默认开启,可在当前环境的 settings.json 中按需关闭,并在下一次相应初始化时生效。当前环境目录可通过诊断中的日志路径找到。

选项 默认行为 关闭方式
skipStartupApps 新建子桌面时,尽量跳过 Explorer 的常规自启动程序 设为 false,下次新建子桌面时生效
preferSystemInputMethod 初始化时优先选择同语言、已启用的 Windows 系统输入法或键盘布局 设为 false,下次初始化时生效
自启动优化的作用范围

这是依赖 Windows 内部行为的实验性兼容处理,不能保证覆盖所有软件。它只创建目标子会话的临时状态标记,正常结束时清理本次创建且仍为空的标记,已有状态保持原样。进程被强制终止时,可能留下临时会话状态,直到对应用户注册表卸载。复用已有桌面时不补做自启动清理。

输入法准备与手动重试

输入法准备发生在首帧之后、报告就绪之前,只作用于子桌面的当前输入状态。它不会安装或启用输入法,也不修改账户的默认输入法配置。没有合适候选或切换未确认时,会保持或尝试恢复原输入法。

MCP 状态的 inputMethod 字段报告准备结果,无法确认恢复时会明确标记。相同子桌面的重连不会重复切换。可以在子桌面已就绪、处于只读模式时运行 prepare-input 重试,命令返回 JSON 结果,不会新建或注销桌面。

跨语言真实环境和新登录时的输入法回退仍需更多实测,切换输入法不能保证解决所有输入兼容问题。

兼容性与当前边界

当前为 0.1.11 实验版,聚焦单个桌面的连接与生命周期。

  • 已验证环境:Windows 11 Pro(build 26300)。Windows 10 为兼容目标,尚未实测;不同 Windows 登录方式与账户组合仍需更多验证。
  • 已验证流程:子桌面截图、临时测试窗口输入与点击、重复启动复用、MCP 断开重连保留现场,以及结束后注销和进程清理。输入样例中,主桌面的鼠标与前台窗口保持不变。
  • 主会话锁屏:当前不支持锁屏期间的通用桌面交互,执行 GUI 任务时请保持主 Windows 会话已解锁。隐藏监视器与锁屏是不同状态;锁屏后仍能截图或完成个别控件操作,不代表通用键鼠输入可用。
  • 并发范围:同一登录环境只管理一个子桌面,同时只接受一个桌面操作,冲突直接返回 busy。
  • 隔离边界:子桌面共享 Windows 账号和系统配置,不提供虚拟机级隔离。

源码构建

需要 Windows x64 和 .NET 10 SDK:

git clone https://github.com/sealpp/BackDesk.git
cd BackDesk
dotnet build BackDesk.slnx
dotnet run --project tests/BackDesk.Checks
.\scripts\package.ps1

打包脚本校验锁定的 Cua 压缩包和可执行文件,生成包含运行时的目录、ZIP 和 SHA-256 文件。默认目录为 artifacts/BackDesk-0.1.11-win-x64/;输出目录必须尚不存在,可用 -OutputDirectory 指定新目录。

下载受限时,可仅为组件下载指定代理:

.\scripts\package.ps1 -ProxyUrl http://127.0.0.1:7890 -OutputDirectory artifacts\BackDesk-local

欢迎通过 Issues 反馈使用场景、兼容性问题和功能建议。

致谢

感谢 cua-child-mcp 项目及其作者 LexaTang 的开源贡献与分享。

依赖与上游声明见 NOTICE 和 third-party/;Cua 固定版本见 component lock。

许可证

Created by seal++.

Licensed under GNU AGPL v3.0 only.

About

A separate Windows workspace for AI agents.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages