前言¶
在 DeepSeek Harness(DSH)里用智能体做桌面程序,常见结果是:目录结构随意、界面和业务缠在一起、打包 PyInstaller 反复踩坑,最后也不一定能交付可运行的 Windows EXE。若目标明确是 不依赖浏览器、不启本地 HTTP 服务 的原生 GUI,单靠通用对话很难复现同一套工程约束。
下面介绍的 tkinter-desktop(npm 包名 dsh-tkinter-desktop)把「需求澄清 → MVC 分层 → pygubu 界面 → SQLite → 测试门禁 → PyInstaller 打包」写成可加载的 Agent Skill,并以 Cordis Bundle 形式注册到 dsh 的 ctx.skills,便于在 Harness 会话里用 skill 工具按 SKILL.md 跑通整条链路。
这是什么¶
tkinter-desktop 由维护者 kuailexiaozixin 发布,仓库为 kuailexiaozixin/tkinter-desktop,在 SkillHub 目录中归类为客户端。技能遵循 Agent Skills 开放标准,仓库采用 MIT 许可证;当前 npm 插件版本为 2.0.0(见仓库内 package.json)。
它解决的核心问题是:为 AI Agent 提供标准化、可复现的 Tkinter/ttk 桌面开发流程,缓解「结构混乱、可测试性差、打包不稳定」——界面以 .ui 为唯一载体(pygubu Builder 加载),业务与数据层尽量保持零第三方依赖;默认交付物是原生桌面 EXE。
同系列另有 fasthtml-desktop(Web 桌面壳方案,技术栈与本技能互斥,可作对比选型)。
技术栈与分层约定¶
默认交付栈如下(摘自仓库 README):
| 层 | 选型 | 说明 |
|---|---|---|
| GUI | tkinter / ttk | Python 标准库 |
| 界面定义 | pygubu | 运行期用 pygubu.Builder 加载 .ui |
| 数据层 | sqlite3 | 标准库 |
| 打包 | PyInstaller | Windows EXE |
| 原生增强 | ctypes / pywin32 | 可选 |
架构上强调 MVC + Repository,Controller 支持无头测试;可选 Win32 能力增强。技能包内还带 pygubu/、ctypes/、pywin32/、tcl-tk/ 等参考子目录,以及 templates/、examples/、references/、scripts/ 等配套资源。
核心能力(已核实)¶
- 全生命周期工作流:
SKILL.md定义入口、铁律与步骤;Agent 从脚手架到打包有统一依据。 - 界面铁律:写控件代码前要求阅读
references/official-docs/的 ttk 官方转档(README 中称 HARD-GATE);界面设计默认只用 pygubu 的.ui+ Builder。 - 质量门禁:pytest、无头 GUI 冒烟(
scripts/smoke_test_gui.py)、release_gate.py等,交付前自动校验。 - 打包脚本:
scripts/build_windows_exe.ps1产出 EXE,并引用references/08-packaging.md处理 hidden-import。 - dsh 集成形态:自包含 Cordis Bundle;
resourceBase指向包根,SKILL.md及 references、examples 等随 npm 包安装,不依赖发布者机器路径。
适合场景(README 列举):库存管理、图像批处理、工具软件、内部系统等不依赖浏览器的桌面程序。
安装与启用¶
前置:已安装 dsh CLI(README 说明常与 pnpm 一同使用)。
从 npm 分发安装到指定 profile(示例为 web):
dsh plugin --profile web add dsh-tkinter-desktop
验证配置层是否注入插件,并启动 Web UI:
dsh --profile web --dump-config # 应看到 "# == dsh-tkinter-desktop" 层
dsh web
若不走 npm,可从 GitHub Release 下载归档。README 示例版本为 v1.8.2:
curl -L -o tkinter-desktop.zip \
https://github.com/kuailexiaozixin/tkinter-desktop/archive/refs/tags/v1.8.2.zip
unzip tkinter-desktop.zip
解压后推荐放入用户技能目录(默认 <dshHome>/skills,Linux 示例为 ~/.dsh/skills):
mkdir -p ~/.dsh/skills
mv tkinter-desktop-1.8.2 ~/.dsh/skills/tkinter-desktop
dsh web
亦可对解压目录执行本地插件安装:
dsh plugin --profile web add /绝对路径/tkinter-desktop-1.8.2
在支持 Agent Skills 的其他助手环境中,README 还给出了 marketplace 形式示例(非 dsh 专用):
# 以支持 AgentSkills 的助手为例(如 Claude Code)
/plugin marketplace add kuailexiaozixin/tkinter-desktop
移除 dsh 插件:
dsh plugin --profile web remove dsh-tkinter-desktop
典型用法¶
启动 dsh Web UI 后,用自然语言触发即可。README 示例:
「用 tkinter-desktop 技能,帮我做一个带 SQLite 的库存管理桌面程序,打包成 EXE。」
Agent 会通过 skill 工具加载本技能,并按 SKILL.md 完成从 templates/ 脚手架(含 bootstrap_project.ps1、run_dev.py)、MVC 编码、线程经 after() 回 UI,到门禁与打包的步骤。开发迭代时 README 建议优先对照 examples/ 中最接近的目标项目,非必要不自造轮子。
给 Agent 的快速路径可概括为:
- 读取
SKILL.md。 - 界面仅用 pygubu;业务层 Repository + Controller。
- 跑 pytest、无头冒烟与 release gate。
- 执行
scripts/build_windows_exe.ps1产出 EXE。
适用场景与注意¶
适合谁:需要在 DSH 里稳定产出 Tkinter/ttk + SQLite + PyInstaller EXE 的开发者或团队;希望 Agent 遵守 MVC、.ui 单载体和质量门禁,而不是每次即兴搭目录。
权限与安全:插件以当前 dsh 进程权限运行;安装前请自行审阅 GitHub 仓库 源码、LICENSE(MIT)及 THIRD_PARTY_NOTICES.md(examples/ 内含第三方完整源码,许可证各自独立)。DSH 社区目录站点(如 SkillHub 插件页)为独立生态入口,与 DeepSeek / 幻方无官方从属关系,不宜理解为官方应用商店。
环境说明:默认打包路径面向 Windows EXE;开发机需具备 Python 与 README 所述脚本依赖。peerDependencies 标明 @deepseek-ai/dsh-skill、@deepseek-ai/cordis 版本要求,安装失败时可对照本地 dsh 版本。
结尾¶
tkinter-desktop 把 Tkinter 桌面工程从「单次对话原型」收成可重复的技能包:界面 pygubu、数据 sqlite3、交付 PyInstaller EXE,并内置测试与发布门禁。在 Harness 中一条 dsh plugin 命令即可把技能挂进 profile,再由 Agent 按 SKILL.md 执行。
- 目录页:https://www.skillhub.cn/plugins/kuailexiaozixin/tkinter-desktop
- GitHub:https://github.com/kuailexiaozixin/tkinter-desktop
- DeepSeek Harness:https://deepseek-ai.github.io/deepseek-harness/