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。

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

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

小夜