better-LVGL-for-dsh:面向 dsh 的离线 LVGL 8.4 知识技能包

前言

用 agent 写 LVGL 代码,最常见的失败模式是 API 版本混用。模型训练时见过的 v9 内容远多于 v8.4,生成的代码经常两边都沾:lv_display_create()(v9)和 lv_disp_drv_t(v8)出现在同一段里,或者调用 v8.4 中根本不存在的 lv_async_call()。对目标环境锁死在 v8.4 的项目,这类问题只能靠人逐行排查。

DSH 的理念是「一切皆插件」,技能(skill)机制正好可以承载这类领域知识。下面介绍 sa998aaron 维护的 better-LVGL-for-dsh,它把 agent 钉在 LVGL v8.4 事实上。

这是什么

better-LVGL-for-dsh 是面向 DeepSeek Harness(dsh)的离线 LVGL 8.4 知识技能包,当前版本 0.1.0,MIT 许可证。它在 ctx.skills 上注册 9 个按需加载的技能,让 agent 写出正确的 LVGL v8 API 代码,并重点避免混入 v9 API。知识以离线形式打包在技能文件里。

能力路径与目录结构

先看这个包是怎么接进 dsh 的。能力路径是:Cordis 插件 → 运行时把技能注册到 ctx.skills → 内置的 dsh-tool-skill 消费者 → 模型可见的技能目录与 skill 加载器。

技能格式遵循 Agent Skills 标准(SKILL.md + YAML frontmatter),纯 ESM、零依赖、无构建步骤。仓库结构如下:

better-LVGL-for-dsh/
├── package.json        # dsh.bundle 声明
├── cordis.patch.yml    # Cordis 组合 patch 
├── index.js            # 入口扫描 skills/ 并逐个注册到 ctx.skills
└── skills/<name>/SKILL.md

九个技能的覆盖范围

技能 覆盖内容
lvgl84 入口与路由:v8/v9 API 混淆锚点、技能地图、最小可运行骨架
lvgl84-core 对象模型、屏幕、创建/删除、坐标/对齐/尺寸、flags、滚动
lvgl84-widgets 全部 30+ 内置 widget 速查:创建函数与各 widget 专属 API
lvgl84-style 样式系统:共享与本地样式、part/state 选择器、主题、过渡
lvgl84-event 完整事件码表、user_data、事件冒泡、keypad/encoder 组、lv_msg
lvgl84-layout Flex 与 Grid 布局全覆盖,附 CSS 到 LVGL 对照表
lvgl84-porting lv_conf.h、显示 flush_cb、输入驱动、tick、双缓冲 + DMA、线程安全
lvgl84-pitfalls 症状→原因→修复表:花屏、卡死、OOM、点击失效、CJK 字体
lvgl84-migration v7→v8.4 迁移:改名/移除的 widget、重写的样式/事件/驱动

lvgl84 是入口,其余按主题拆分。所有技能按需加载,agent 用到哪个主题就读哪份。

安装与启用

从 GitHub 安装:

dsh plugin --profile web add github:sa998aaron/better-LVGL-for-dsh

或从本地克隆安装:

dsh plugin --profile web add <本仓库绝对路径>

安装后需要重载 profile。重载后 lvgl84-* 技能会出现在模型可见的技能目录里并按需加载;也可以用 /lvgl84-style 这类手势显式调用某个技能。

验证是否生效

让 agent 写一个简单界面:

Write an LVGL 8.4 UI with a title bar and three buttons.

如果生成的代码使用 lv_obj_create / lv_obj_set_flex_flow / lv_obj_add_event_cb,而不是 v9 的 lv_display_create,说明插件已经在起作用。

自建技能

这个包也支持往里面加自己的技能。在 skills/<kebab-case-name>/SKILL.md 创建文件,frontmatter 写 namedescription,可选 whenToUse,正文为 Markdown:

---
name: my-skill
description: 一句话说明它是什么、什么时候用。
whenToUse: 可选的触发描述
---

正文(Markdown)……

重载插件后,apply 时会重新扫描目录,新技能随之注册。

适用场景与注意事项

适合两类人:用 dsh 做 LVGL v8.4 开发的 agent 工作流;以及从 v7 迁移到 v8.4 的项目,可以直接用 lvgl84-migration

注意两点:

1、插件以当前 dsh 进程的权限运行。安装第三方插件前,建议先读一遍源码和许可证。这个仓库结构简单——一个 index.js 入口、一份 cordis.patch.ymlskills/ 下的 Markdown 技能文件,过一遍成本不高,许可证为 MIT。

2、安装后必须重载 profile 才生效,这一步容易漏。

小结

这个插件做的事情很集中:把「LVGL 该用 v8 API、别混 v9」这条经验固化成可分发、可按需加载的技能,而不是每次都在提示词里反复叮嘱。目录页:https://www.skillhub.cn/plugins/sa998aaron/better-LVGL-for-dsh(社区维护的独立站点,与 DeepSeek / 幻方无官方从属关系);源码仓库:https://github.com/sa998aaron/better-LVGL-for-dsh。

羽毛球分组比赛记分
小程序二维码

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

小夜