关于 deskctl
deskctl 是供 Linux X11 Agent 使用的非交互式桌面控制命令行工具。它采用观察、等待、操作、验证的循环,并提供稳定的 JSON 输出以供程序处理。
主要功能
- 01控制 Linux X11 桌面
- 02观察并标注屏幕快照
- 03等待窗口条件满足
- 04按标题、类名或 ID 选择窗口
- 05命令提供稳定的 JSON 输出
适用场景
- 01自动化 Agent 的桌面交互
- 02操作前等待指定窗口出现
- 03以程序方式解析命令结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ harivansh-afk/ deskctl --skill deskctl安装后在 Claude Code 中输入/deskctl确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/commands.mdruntime-contract.mdworkflows/observe-act.shpoll-condition.sh详细介绍
deskctl
适用于 Linux X11 Agent 的非交互式桌面控制 CLI。
所有输出均遵循 references/runtime-contract.md 中定义的运行时契约。使用 --json 调用时,每条命令都会返回稳定的 JSON 信封。需要以编程方式解析输出时,请使用 --json。
快速开始
npm install -g deskctl
deskctl doctor
deskctl snapshot --annotate
如果通过 npm 安装了 deskctl,之后可使用以下命令更新:
deskctl upgrade --yes
Agent 工作循环
每次桌面交互都遵循:观察 -> 等待 -> 操作 -> 验证。
deskctl snapshot --annotate # observe
deskctl wait window --selector 'title=Chromium' --timeout 10 # wait
deskctl click 'title=Chromium' # act
deskctl snapshot # verify
可复用的脚本请参见 workflows/observe-act.sh。轮询循环请参见 workflows/poll-condition.sh。
选择器
ref=w1 # snapshot ref (short-lived)
id=win1 # stable window ID (session-scoped)
title=Chromium # match by title
class=chromium # match by WM class
focused # currently focused window
像 chromium 这样的裸字符串会进行模糊匹配,但遇到歧义时会失败。建议使用显式选择器。
参考资料
- references/runtime-contract.md - 输出契约、稳定字段、错误类型
- references/commands.md - 所有可用命令
工作流
- workflows/observe-act.sh - 主要的观察-操作循环
- workflows/poll-condition.sh - 轮询屏幕上的条件
评论
支持 Markdown