前言¶
DSH 的宿主進程已經能跑工具調用和技能,但如果你維護的是一個 Hugo 站點,通常還缺一段:新建文章、改 Front Matter、跑一次構建檢查、確認後推送發佈。這些動作要麼手工在終端裏敲一堆 hugo / git 命令,要麼讓智能體直接拿到 shell,風險和可控性都不穩定。下面介紹的插件就是把這個鏈路包成一層工具,讓智能體有明確接口可用,同時在側邊欄保留可視化操作入口。
這個插件是 dsh-hugo-blog,維護者 ruoshui6662,作用是給 DSH 宿主補充 Hugo 博客的寫作、構建檢查、清單與發佈回執能力。它不替代 Hugo 本身,也不負責 CI workflow,只負責把「內容 → 構建 → 發佈確認」這一段接進插件體系。
定位與維護¶
插件定位一句話:Hugo 博客寫作、發佈、維護與推送的工具層。維護者是 ruoshui6662,源碼託管在 GitHub 的 ruoshui6662/dsh-hugo-blog,包版本 0.1.0,許可證 MIT。運行時要求 Node >= 22,宿主 dsh 版本要求 >=0.2.0-rc.1 <0.3.0-0。
它只使用 Node 內置模塊,零第三方依賴,也不聲明 peerDependencies。運行時依賴由宿主提供:ctx.tools.register、ctx.skills.registerProvider,具體落到 dsh-tools / dsh-skill 等服務。
核心功能¶
插件提供的能力分兩塊:側邊欄面板和一組工具。
面板在側邊欄註冊 Hugo 博客 入口,按固定順序操作:
- 站點目錄:選擇目錄(原生目錄選擇器或手動輸入路徑)後點「載入站點」。目錄須含
hugo.toml等配置與content/,是否git init不影響識別。目錄會被記住,下次自動載入。 - 站點狀態:分支、草稿數、工作區是否乾淨、改動文件列表。
- 文章列表:切換「草稿 / 未來 / 已過期 / 全部 / 已發佈」,點一行填入編輯區。
- 新建文章:按
posts/hello.md形式創建,或新建 Page Bundle。 - 編輯 Front Matter:標題、草稿、標籤、分類、日期、定時發佈、過期下架、Slug;保存後回顯 lint 結果。
- 構建與發佈:先跑
hugo build檢查,再兩步確認發佈。構建失敗或工作區髒會被拒絕。
工具側暴露的接口是:
hugo_new_contenthugo_edit_frontmatterhugo_new_pagebundlehugo_build_checkhugo_listhugo_publishgit_status_summary
另外附帶一個技能 hugo-blog。更細的實現說明在倉庫的 docs/DETAIL.md。
一個需要留意的行爲:hugo_publish 會產生 git 寫操作,宿主策略可以要求審批。也就是說發佈不是靜默完成的。
面板本身只調 Host 的 /api/hugo-blog/* 路由,所有 hugo / git 執行都在 Host 進程內完成,前端不直接碰文件系統。
安裝與啓用¶
README 裏給出的安裝命令是本地路徑方式:
dsh plugin --profile web add ./dsh-hugo-blog
如果是從 Git / npm 安裝本包,則需要在 cordis 補丁中插入 id=hugo-blog、name=dsh-hugo-blog。倉庫內提供了 cordis.patch.yml,package.json 裏的 dsh.bundle.patch 字段指向它。
這裏能看到一個容易踩的點:使用打包命令時,本插件主要面向 web profile(package.json 的 dsh.client.platform 也寫的是 web)。而 README 的已知限制裏說明,插件按 profile 隔離安裝,桌面 GUI 用 desktop profile,CLI-headless 用它自己的 profile,裝在哪個 profile 只有那個實例可見。所以如果你的部署切在另一個 profile,需要按對應實例重新裝一次。
典型用法¶
裝好後,先看一遍面板流程即可完成日常操作。如果想走工具調用路徑,順序大致是:
- 在面板選擇站點目錄並載入,確認站點狀態裏的分支和工作區狀態。
- 用
hugo_new_content或hugo_new_pagebundle建內容。 - 用
hugo_edit_frontmatter改標題、標籤、日期、定時發佈等字段。 - 用
hugo_build_check跑構建檢查。 - 用
hugo_list確認文章落位。 - 用
hugo_publish發佈,按宿主審批策略等待確認。
發佈這一步如果宿主策略要求審批,hugo_publish 的 git 寫操作會先停下來等人工同意,這是設計好的保護,不是卡住。
面板側則可以直接在「文章列表」裏挑一行進編輯區改 Front Matter,保存時會看到 lint 結果;這一步的價值在於發佈前能立刻知道字段是否合法,不用等構建報錯才發現。
適用場景與注意¶
適合兩類人:一類是在 DSH 裏維護自己 Hugo 博客、希望寫作到發佈都在一個流程裏完成的開發者;另一類是給團隊搭智能體工作流、需要把內容發佈動作收斂到插件工具而不是自由 shell 的人。
使用前需要確認幾件事:
- 插件以當前 dsh 進程權限運行,能在站點目錄裏讀寫文件和執行 git。安裝前先檢查源碼與許可證(MIT)是否符合你的要求。
- Hugo 構建緩存目錄必須可寫(
HUGO_CACHEDIR),沙箱環境下要確認緩存目錄權限。 - GitHub Pages 部署默認走「push → Actions」,CI workflow 需要在倉庫側自備,插件不提供。
- profile 隔離意味着同一個插件裝在不同實例上互不可見,部署前確認目標 profile。
結尾¶
這個插件解決的不是 Hugo 本身的問題,而是把 Hugo 站點的日常維護動作接進 DSH 工具體系,讓智能體有明確的註冊接口可用,讓發佈帶着構建檢查和審批閘門。功能集中、依賴很少,適合自己跑 Hugo 站點的人直接裝來試。
- 目錄頁:https://www.skillhub.cn/plugins/ruoshui6662/dsh-hugo-blog
- GitHub:https://github.com/ruoshui6662/dsh-hugo-blog