dsh-d365-kit:讓智能體直接查詢 Dynamics 365 CE 環境

前言

做 Dynamics 365 CE / Dataverse 項目的團隊,日常卡頓通常不是寫不出代碼,而是拿不到環境信息:這個解決方案導到 SIT 會不會壓掉別的方案的定製,某個字段被哪些表單和視圖引用,兩個環境的同一張表單爲什麼不一樣,這次 MR 部署到 UAT 會不會出事。在自己電腦上跑腳本、翻 Power Platform 管理中心,或者手寫 Power Platform CLI 命令,都屬於「能做但很碎」。

下面介紹的 dsh-d365-kit 是維護者 iTanzhao 發佈的一個 DeepSeek Harness(DSH)插件 bundle,專門把這些查詢交給 DSH 智能體去做。它默認只讀,未授予能力時智能體只能看、不能改。

這是什麼

一句話定位:dsh-d365-kit 是 Dynamics 365 CE / Dataverse 的開發與部署助手,以 DSH bundle 形式安裝,把一個真實的 D365 組織變成智能體可以直接查詢的對象——元數據、解決方案分層、快照差異、引用關係、遷移風險、代碼改動影響,以及受控制的寫入。

用戶提供 URL、租戶、ClientId 和 secret,插件通過 Dataverse 接口訪問環境;智能體看到的是結構化的工具調用結果,而不是需要人肉解析的網頁或導出文件。

README 裏給的定位是十五個工具、一個設置頁,只讀爲默認。

核心功能

連接與環境

工具 作用
d365_envs 環境清單,檢查憑據是否完整;帶 check: true 時實際連一次
d365_configure 新增/編輯/刪除環境(URL、tenant、ClientId、secret),測試連通性
d365_health 掛起或失敗的後臺作業、正在導入發佈的任務、近期安裝的解決方案

元數據與解決方案分層

  • d365_metadata:覆蓋 19 種資源類型,包括實體、屬性、關係、表單、視圖、工作流、業務規則、插件、Web 資源、解決方案、組件、Custom API、站點地圖、選項集。
  • d365_layers:讀取 msdyn_componentlayer,回答某個組件被哪些解決方案覆蓋、哪一層在最上面、當前生效的是哪一層。

快照與差異

  • d365_sync:把環境的元數據拉成本地快照,逐個資源記錄「complete / truncated / failed」。
  • d365_diff:兩個快照之間的字段級差異(新增、刪除、修改),帶噪聲過濾和過期快照提醒。

影響分析與數據

  • d365_refs:反向查找。字段指向哪些表單/視圖/流程,Web 資源被哪些表單和事件引用,程序集對應哪些類型和步驟。
  • d365_data:業務記錄的 count / group by / sample,需要 data.read 能力。
  • d365_data_write:創建或更新單條業務記錄,對話中確認後才執行,需要 data.write 能力。

寫入

d365_write 支持新增、更新、刪除選項值和字段,重命名表,增刪系統視圖列。plan-* 動作只產出計劃,execute 需要人工確認,事後有可查詢的審計記錄。

遷移與檢查

  • d365_migrate:解決方案遷移風險評估,覆蓋分層遮蔽、缺失組件、選項值丟失、版本和 managed 狀態。
  • d365_contract:合約矩陣與漂移,比較程序集、插件類型、步驟、表單庫、handler、站點地圖、選項值,支持豁免和趨勢。
  • d365_code_check:讀取 GitLab MR,把 JS / C# 改動映射到目標環境,報告 blocker / warning / 需人工確認。JS 改動對應到 Web 資源和表單,C# 改動對應到程序集/類型/步驟/圖像。

運維

d365_reports:本地產物和磁盤佔用,按保留策略清理(默認 dry run),快照壓縮。

設置頁

DSH Web UI 的「設置 → D365 Toolkit」,共六個標籤頁:

  • Environments:環境清單、連接測試、默認環境
  • Permissions:按環境勾選能力(讀業務數據 / 各類寫入)、變更使用的解決方案、複製到其他環境
  • Plans:待確認的寫入計劃、近期變更記錄和發佈結果(可重新發布)
  • Data:各類產物的文件數、大小、保留策略,dry run 與清理,快照壓縮
  • GitLab:倉庫地址、默認項目、只讀 token(read_api)
  • General:保留快照數、默認行數上限、請求超時

界面語言跟隨 DSH(中/英)。環境清單和 d365_configure 走同一套存儲代碼,因此界面顯示和智能體讀取的結果一致。

安裝與啓用

前置條件:DSH 桌面端;能訪問 *.dynamics.com;一個只讀應用用戶(ClientId + secret)。

# 從 npm 安裝(最短路徑,可升級;包發佈後可用)
plugin_manager install_bundle target="dsh-d365-kit@0.22.1"

# 從 Git 安裝(不需要 registry,可固定 tag)
plugin_manager install_bundle target="git+https://<your-git>/<group>/dsh-d365-kit.git#v0.22.1"

# 從本地目錄安裝(link 模式,代碼改動立即生效)
plugin_manager install_bundle target="D:\path\to\dsh-d365-kit"

dsh-d365-kit@<版本> 從 npm registry 解析;單獨的 GitHub 倉庫要用 git+https:// 形式。倉庫自帶 .github/workflows/publish.yml,配置好 NPM_TOKEN 後,推 v* tag 就會發布到 npm。

裝完重啓一次 DSH,讓 Web 客戶端把設置頁代碼加載進模塊圖。然後在 設置 → D365 Toolkit → Environments 裏添加環境(key、URL、tenant、ClientId、secret),測連接後保存。默認只讀;需要讀業務記錄時,在 Permissions 下勾「Read business data」。

典型用法

1. 部署前評估解決方案

What are the risks of shipping this solution to SIT and UAT?

d365_migrate action=assess source=dev solution=ContosoBase targets=["sit","uat"]

報告回答:目標環境是否已有該解決方案、源版本是否更高、每個組件上誰的層會壓住誰(列出被遮蔽的解決方案)、選項集是否會丟值。結果落在 .d365/reports/migration-*.md。

2. 這個字段能不能刪

Who else still uses account.contoso_customertier? Also check how many records carry a value.

d365_refs   kind=field entity=account attribute=contoso_customertier
d365_data   action=group entity=account field=contoso_customertier

3. 兩個環境爲什麼不同

d365_sync environments=["dev","sit"]
d365_diff base=dev head=sit resources=["forms","views","attributes"]
d365_layers component=Account componentType=SystemForm

先拉兩個環境的快照,再做字段級差異,最後看這個組件被誰覆蓋。

4. MR 能不能上 UAT

d365_code_check mergeRequest="https://gitlab.example.com/contoso/powerapps/-/merge_requests/7759/diffs" targets=["uat"]

適用場景與注意

適合已經在用 DSH、並且需要頻繁跨環境對比和評估 D365 方案的人:解決方案分層遮蔽判斷、字段刪除前的影響面、跨環境差異定位、MR 部署前檢查、上下游插件註冊漂移。

幾點需要留意:

  1. 插件以當前 DSH 進程的權限運行,安裝前應檢查源碼(倉庫爲 MIT License,可直接看)和許可證,確認沒有超出預期的讀取範圍。
  2. 寫入類能力默認不授予,需要顯式在 Permissions 裏勾選,而且 execute 要人工確認。請把只讀憑據和寫入憑據分開管理。
  3. 元數據拉取和業務數據讀取受網絡與行數上限影響,快照可能被標記爲 truncated,發佈前先看 d365_sync 的記錄狀態。
  4. 聯網工具的可用性取決於 *.dynamics.com 的網絡通路和憑據有效性。

結尾

dsh-d365-kit 的價值在於把 D365 環境裏那些需要反覆人工查詢的信息變成智能體可調用的工具,並且把寫操作擋在人類確認之後。功能面較廣,實際用起來通常從只讀診斷開始。

目錄頁:https://www.skillhub.cn/plugins/iTanzhao/dsh-d365-kit

GitHub:https://github.com/iTanzhao/dsh-d365-kit

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

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

小夜