tkinter-desktop:Tkinter 原生桌面应用全生命周期 DSH 技能插件

前言

在 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/ 等配套资源。

核心能力(已核实)

  1. 全生命周期工作流:SKILL.md 定义入口、铁律与步骤;Agent 从脚手架到打包有统一依据。
  2. 界面铁律:写控件代码前要求阅读 references/official-docs/ 的 ttk 官方转档(README 中称 HARD-GATE);界面设计默认只用 pygubu 的 .ui + Builder。
  3. 质量门禁:pytest、无头 GUI 冒烟(scripts/smoke_test_gui.py)、release_gate.py 等,交付前自动校验。
  4. 打包脚本:scripts/build_windows_exe.ps1 产出 EXE,并引用 references/08-packaging.md 处理 hidden-import。
  5. 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 的快速路径可概括为:

  1. 读取 SKILL.md。
  2. 界面仅用 pygubu;业务层 Repository + Controller。
  3. 跑 pytest、无头冒烟与 release gate。
  4. 执行 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/
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye