QuickDesk
简体中文 · English
QuickDesk(快捷桌面)是一个可安装、可分发的 DeepSeek Harness 桌面助手插件。它把 “全局快捷键 → 一句话任务 → 桌面 computer-use 执行”的入口封装成一个独立插件包: 快捷键、语言、任务协议、状态浮窗都可以直接在 DSH 设置页里调整,不需要手改 YAML。
QuickDesk is an installable, distributable desktop-assistant plugin for DeepSeek Harness. It packages the “global hotkey → one-sentence task → desktop computer-use execution” loop as a standalone plugin: shortcuts, language, task protocol and the status HUD are all editable on the DSH settings page — no YAML editing required.
平台 Platform:Windows 10/11 + PowerShell 5.1(仅 Windows · Windows-only)
依赖 Requires:
dsh-computer-use-win或其它提供桌面工具的 computer-use 插件,作为桌面执行后端 · a desktop computer-use provider is required
仓库:https://github.com/aofchas/dsh-quickdesk(Windows 专用,PowerShell 5.1 + WinForms)
功能
- 全局快捷键:默认
Ctrl+Alt+Space,任何程序前台下呼出半透明输入框;按配置的提交键执行,取消键关闭。 - DSH 设置页:设置 → Plugins → QuickDesk,直接修改快捷键、语言、状态浮窗、工作目录、任务协议、步数预算、审批选项;保存写入当前 profile 的配置,无需编辑
cordis.patch.yml。 - 完成优先的任务协议:每条任务前自动附加内置说明(按语言取
locale/<language>.json的prompt):- 完成即停:目标状态出现(结果页已加载 / 文字已输入 / 文件已保存)就结束,不再滚动、截图、读取页面;
- 默认不写总结:最终只回 1 行结果;除非用户明确要求“告诉我/总结/列出内容”,否则禁止复述页面内容;
- 步数预算:目标 10 步内完成,插件在
maxSteps步后强制中止(默认 20); - 工具纪律:UIA 优先、截图最多 2 张且仅兜底、禁止用
pwsh/grep/read等文件工具处理页面内容; - 仍然要求用用户可见的 Chrome 操作网页,不可逆动作前先询问。
- 中英双语:
language: auto跟随系统语言(中文系统用中文,其他用英文),也可强制zh/en;输入框、状态浮窗、审批弹窗、设置页和任务协议都走同一套文案。 - 单行状态浮窗:置顶、鼠标穿透的一行状态条;运行中显示“第 N/20 步 · 动作”,结束显示“已完成 · N 步 · X 秒”;超过步数上限显示“已停止 · 超过 20 步上限”。
- 审批弹窗:需要确认的操作在右下角弹出,默认 Enter 通过、Backspace 拒绝;按键也可配置。
- 桌面后端自检:提交任务前确认已注册桌面 computer-use 工具;没有安装
dsh-computer-use-win(或其他桌面工具提供方)时直接提示,不浪费一轮会话。 - 新会话默认自动审查(Auto review),任务在默认工作区创建。
为什么是 QuickDesk
同样是“让 AI 操作桌面”,QuickDesk 解决的是调用入口和 token 成本这两个最实际的问题:
- 不用打开聊天窗口写 prompt:任何程序前台下按
Ctrl+Alt+Space,说一句话就执行;任务跑在独立会话里,不打断你当前的对话。 - 按“完成”而不是“总结”结账:默认完成即停、只回 1 行、页面内容不赘述;同一个 YouTube 搜索任务从 53 次工具调用降到约 10 步(12 张截图 → ≤2 张)。
- 步数预算是硬约束:
maxSteps超限直接取消本轮(默认 20),模型没法靠无限验证/翻页烧 token;HUD 会显示停止原因。 - 桌面操作不靠猜坐标:UIA 优先 + 截图兜底,减少“截图→看像素→点击”的循环。
- 中英双语自动切换:界面、状态条、审批弹窗、任务协议全部本地化,英文用户开箱即用。
- 装得上、看得见、停得下:DSH 设置页可视化配置;单行 HUD 显示步数/耗时;审批弹窗把不可逆操作交回给你。
- 不绑架其他插件:不 import、不修改 computer-use 插件,也不偷偷改别人的设置;桌面后端缺失时明确提示。
完整的市场提交文案(中英双语、分类/标签/权限说明/对比表)见 docs/market-copy.md。
界面
设置 → Plugins → QuickDesk,所有选项可视化编辑:


安装
要求:Windows 10/11、PowerShell 5.1、DSH(web 或 desktop profile),以及一个提供桌面工具的
computer-use 插件(推荐 dsh-computer-use-win)。
从 npm 安装(推荐):
# Web profile(DSH 插件市场一键安装用的就是这条命令)
dsh plugin --profile web add dsh-quickdesk
# DSH Desktop 也可以装到 desktop profile
dsh plugin --profile desktop add dsh-quickdesk
也可以从 GitHub Release 下载 dsh-quickdesk-1.2.0.tgz,在 DSH「插件 → 添加插件」中选择安装,
或从本地源码目录安装(在仓库根目录执行,把 . 换成实际克隆目录也可以):
dsh plugin --profile desktop add .
安装/升级后完全退出并重启 DSH。重启后在「设置 → Plugins → QuickDesk」里可视化调整所有选项。
发布
- 变更记录:CHANGELOG.md
- 发布流程与市场提交:docs/PUBLISHING.md
- 市场提交文案(中英):docs/market-copy.md
配置
在 DSH 设置页修改(推荐)
重启 DSH 后打开「设置 → Plugins → QuickDesk」:快捷键、语言、状态浮窗、工作目录、任务协议、步数预算、审批选项都能直接编辑。保存写入当前 profile 的配置层(即 cordis.patch.yml 中对应的 quickdesk 行),下次启动继续生效;大部分改动即时生效,只有快捷键或状态条位置变化会让浮窗 sidecar 重启约 1 秒。
通过 profile patch 覆盖(高级 / 分发默认值)
需要锁定默认值、批量分发或做 GitOps 时,仍可在 ~/.dsh/profiles/<profile>/cordis.patch.yml 整行覆盖 id: quickdesk 的 config(Loader 是整行替换,未写的字段会回落到插件内默认值):
- id: quickdesk
name: dsh-quickdesk
config:
hotkey: Ctrl+Alt+Space
submitKey: Enter
cancelKey: Escape
approveKey: Enter
rejectKey: Backspace
language: auto
statusCorner: top-right
statusEnabled: true
statusLingerMs: 20000
workspaceDirectory: ""
defaultPrompt: ""
maxSteps: 20
enforceMaxSteps: true
approvalPopup: true
popupTimeoutMs: 120000
autoPresetNewSessions: true
autoPresetName: auto
disableComputerUseUi: false
快捷键字段
| 字段 | 默认 | 作用 |
|---|---|---|
hotkey |
Ctrl+Alt+Space |
呼出 / 收起输入框(支持 Ctrl/Alt/Shift/Win + 字母/数字/F1–F24/Space 等) |
submitKey |
Enter |
提交任务(可写 Ctrl+Enter 这类组合键) |
cancelKey |
Escape |
关闭输入框 |
approveKey |
Enter |
审批通过 |
rejectKey |
Backspace |
审批拒绝 |
其他字段
| 字段 | 默认 | 含义 |
|---|---|---|
language |
auto |
auto 跟随系统语言;zh / en 强制语言(同时决定界面文案与内置任务协议) |
statusCorner |
top-right |
状态浮窗位置:top-right / top-left / bottom-right / bottom-left |
statusEnabled |
true |
是否显示单行状态浮窗 |
statusLingerMs |
20000 |
完成后保留时长 |
workspaceDirectory |
空 | 新会话工作目录;空 = DSH 默认工作区 |
maxSteps |
20 |
单个任务允许的工具调用步数上限;超过后 QuickDesk 直接取消这一轮(范围 5–200) |
enforceMaxSteps |
true |
是否强制执行步数上限;false 时只在 prompt 里提示预算 |
defaultPrompt |
空 | 空 = 内置当前语言的任务协议;非空则替换它,可用 {{MAX_STEPS}} 占位符 |
approvalPopup |
true |
是否接管审批弹窗 |
popupTimeoutMs |
120000 |
审批超时(自动拒绝) |
autoPresetNewSessions |
true |
新会话是否自动套用自动审查预设 |
autoPresetName |
auto |
预设名 |
disableComputerUseUi |
false |
可选:通过 DSH 设置服务尝试关闭 computer-use-win 的浮窗/接管提示/鼠标标签(仅 Host 端、尽力而为,默认关闭) |
以上字段都可以在 DSH 设置页直接修改;本表列出默认值、范围和语义,供分发默认值与排障时参考。
语言与文案
- 所有用户可见文案集中在
locale/zh.json和locale/en.json:meta.title/meta.description(DSH 插件管理器读取显示)、ui.*(输入框、状态条、审批弹窗)和prompt(默认任务协议)。 - 设置页自身的界面文案在
client.js的dictionaries里(同样中英双份),与 locale 文件保持同一套措辞。 - 新增语言:复制
locale/en.json为locale/xx.json,把language设为xx,并在quickdesk.mjs的LANGUAGES、client.js的dictionaries里登记。 - 自定义任务协议:既可在设置页的「任务协议」里写,也可在 profile patch 写
defaultPrompt: |;{{MAX_STEPS}}会被替换成当前maxSteps。
步数与 token 优化(v1.0.3 起)
实测:同一个「用 YouTube 搜索 智己LS8 Neo」任务,旧版 QuickDesk 跑了 53 次工具调用——搜索在第 10 步就完成了,后面 30 多步全是 screenshot + read_image 成对调用(12 张截图、12 次读图)以及 scroll / grep / pwsh,只为给页面内容写总结。
| 改动 | 效果 |
|---|---|
| prompt 改为「完成即停 + 默认不总结 + 只回 1 行」 | 目标状态出现就结束,不再为写总结继续读页面 |
prompt 禁止用 pwsh / grep / read 处理页面内容 |
去掉解析工具输出、枚举结果这类开发动作 |
| 截图预算:整场最多 2 张,且只有 UIA 读不到时才用 | 旧版 12 张截图 → 预期 ≤2 张 |
maxSteps 硬上限(默认 20,超限取消本轮) |
模型想继续也会被中止;HUD 显示「已停止 · 超过 20 步上限」 |
读取控件优先 find / element_info,不整树导出 |
避免一次几十 KB 的 accessibility_tree 转储 |
调参:
- 简单任务想更省:
maxSteps: 12; - 复杂表单 / 多窗口任务:
maxSteps: 40,或enforceMaxSteps: false(只保留 prompt 提示); - 默认就是「不总结页面内容」;如果某类任务确实需要内容清单,在任务里明确说「列出 / 总结 / 告诉我内容」。
与 dsh-computer-use-win 的配合
- QuickDesk 不 import、不修改 computer-use 插件;只通过 DSH 工具注册表判断“桌面工具是否存在”。
- 提交任务前会检查
mcp__*__list_windows这类桌面工具;缺失时状态条提示 「未检测到桌面操控工具 · 请先安装 dsh-computer-use-win」,不会启动会话。 - 如需隐藏 computer-use 插件自己的浮窗/接管提示:
- 推荐在它的设置页关闭(
progressOverlayEnabled/indicatorEnabled/cursorIndicatorEnabled); - 也可以把
disableComputerUseUi设为true让 QuickDesk 在启动时尽力代劳;当前 DSH 在 HMR 激活期间会拒绝该写入,此时只记录警告,不影响其他功能。
- 推荐在它的设置页关闭(
UIA 优先与本地 skill
QuickDesk 的默认 prompt 要求模型优先用 UIA 语义操作。仓库内还附了一份本地 UIA 使用手册:skills/uia/SKILL.md(工具映射、UIA pattern、 兜底阶梯、微软文档链接),可以按需提供给会话或作为团队约定。
解耦设计(DSH / computer-use 插件升级后依然可用)
- 不 import 任何 DSH 包,也不 import
dsh-computer-use-win;所有 DSH 交互都在compat.mjs里,通过ctx.get动态使用服务。 - 没有硬依赖注入:
sessionController、permissionPresets、approval、tools等缺失时插件仍然加载,只是对应能力降级并写日志。 - 会话创建只有一个入口:
compat.mjs的submitTask()。DSH 升级若改了sessionController.create/prompt,只改这一个函数(见 COMPATIBILITY.md)。 - 工具名通用处理:状态条和桌面后端检测只剥离
mcp__<server>__前缀,不假设是 wincu;换任何 computer-use 提供方都能用。 - 文案是数据:界面文字和任务协议都在
locale/*.json,改文案不用改代码;代码只保留渲染/替换逻辑。 - 设置页是标准的 Config 机制:Host 导出 schemastery
Configschema,DSH 设置服务据此暴露quickdesk配置命名空间;client.js只负责渲染表单和提交字段补丁。没有 settings 服务的 DSH 会退化为 YAML 配置,插件仍可用。 - 界面独立:输入框/状态条/审批弹窗是独立 PowerShell 进程,与 DSH 进程解耦;DSH 升级不影响 UI。
开发与自检
node scripts/selftest.mjs # 44 项离线自检:文案一致性、语言解析、协议渲染、步数预算、取消 API、桌面工具识别、Config schema 与设置页接线
node --check client.js # 设置页客户端语法检查
热键无效时
- 日志在
%LOCALAPPDATA%\dsh-quickdesk\launcher.log:RegisterHotKey registered=True+low-level hook installed=True表示两条热键路径都开着;- 按热键后应出现
hotkey fired via ...和input shown;没有这两行说明按键没有到达 QuickDesk(常见原因:前台窗口是管理员权限窗口、被输入法/键盘软件拦截、或 sidecar 正在随插件重载重启)。
- QuickDesk 依赖 DSH 运行;DSH 退出后全局热键不可用。
- 冲突时改
cordis.patch.yml的hotkey:(如Ctrl+Alt+K),重载/重启 DSH。
已知限制
- Windows 专用;需要 PowerShell 5.1 + WinForms(系统自带)。
- 首次安装或升级到带设置页的版本后,需要完全退出并重启 DSH 才会出现设置页;此后修改设置即时生效(快捷键/状态条位置改动会重启浮窗约 1 秒)。
- QuickDesk 运行期间全局快捷键生效;退出 DSH 后不可用。
- 状态条跟踪最近一次由 QuickDesk 发起的任务;多任务并发时显示最新任务。
- 步数上限命中时本轮会被取消,不会输出完成说明;复杂任务记得调高
maxSteps。 - 电脑操控同一时间只允许一个会话使用桌面(computer-use 插件自身的互斥);其他会话在用时,新任务会失败并提示。
- 内置文案目前只有中文和英文;其他系统语言回落到英文。
安全
- 审批弹窗接管所有
approval/request;不需要时把approvalPopup设为false。 - 单行状态浮窗置顶且鼠标穿透,不会挡住点击。
- 全局快捷键被占用时,sidecar 记录
hotkey-unavailable,换一个组合即可。 - 默认不修改任何其他插件的设置;
disableComputerUseUi是显式 opt-in。 - 任务协议只是模型指令,不替代 DSH 的权限策略;危险操作仍请在会话权限/审批层控制。
- 步数上限只是终止「超预算的验证/总结」,不降低权限、不会自动批准任何操作。
License
本项目采用 MIT License 开源,允许自由使用、修改、分发和商用,保留版权与许可声明即可。
- 完整许可文本:LICENSE
- 版权归属:Copyright (c) 2026 Gaoyuan Zhang (aofchas)
- 第三方说明:QuickDesk 不捆绑第三方运行时代码;运行时依赖的 DeepSeek Harness 及其客户端包遵循各自许可证,见
THIRD_PARTY相关上游文档。
No comments yet. Be the first to write one.