前言¶
在 DeepSeek Harness(DSH)裏做聯網或知識型智能體時,筆記往往還在 Microsoft OneNote 裏:會議記錄、項目 wiki、個人日誌分散在不同筆記本中。把內容整份導出再餵給模型,既難同步,也容易把不該暴露的筆記本一併送進上下文。
下面介紹社區插件 dsh-plugin-onenote(維護者 hestudio-community):通過 Microsoft Graph 以只讀方式接入 OneNote,登錄一次後在設置頁勾選允許讀取的筆記本;未勾選的筆記本在插件層就被擋在 Graph 請求之外,智能體只能調用固定的四個讀工具,不能代你登錄或改白名單。
這是什麼¶
dsh-plugin-onenote 屬於 DSH 社區目錄中的「聯網工具」類插件。一句話定位:在 Harness 內讀取你選擇的 OneNote 筆記本內容。
與「把整個 OneDrive/筆記目錄交給模型」不同,該插件把邊界寫進實現:白名單保存在本地 settings.json,每次讀頁面前先解析頁面所屬筆記本並校驗白名單;即使用戶或頁面內容試圖誘導模型去讀其他筆記本,也沒有對應工具路徑可以繞過校驗。
核心功能¶
設置頁:登錄與白名單¶
唯一可以登錄、登出或修改可讀筆記本的地方是 Settings → Plugins → OneNote。界面大致包括:當前 Microsoft 賬號、可讀筆記本列表(勾選框)、刷新列表、保存。只有被勾選的筆記本可以被列出、搜索或讀取。
智能體工具(只讀)¶
智能體獲得四個只讀工具;它們不能登錄、登出或修改白名單——這些只能由用戶在設置卡片中操作。
| 工具 | 作用 |
|---|---|
onenote_status |
報告當前賬號與哪些筆記本可讀 |
onenote_list_pages |
在允許的筆記本內瀏覽:筆記本 → 分區 → 頁面 |
onenote_search |
先匹配頁面標題,再匹配最近修改頁面的開頭文本 |
onenote_read_page |
讀取單頁內容爲 Markdown(標題、列表、表格、鏈接、代碼等) |
頁面正文來自 OneNote 的 HTML 方言,插件內置解析轉爲 Markdown,不依賴第三方庫,也不下載媒體文件。
搜索與 Graph API 說明¶
OneNote 不支持僅應用身份(app-only)訪問,因此必須已登錄用戶,權限爲委託型 Notes.Read。Microsoft 已在 2024 年棄用 GET /me/onenote/pages?$search=,本插件因此在各允許筆記本內列出頁面元數據、本地匹配標題,再讀取最近修改頁面的開頭片段,成本可控且始終不離開白名單集合。
安裝與啓用¶
插件隨包提供公共 clientId,開箱可用。安裝任選其一(與 README 一致):
# 從插件管理器安裝(推薦)
dsh plugin install hestudio-community/dsh-plugin-onenote
# 或從 npm
dsh plugin install dsh-plugin-onenote
安裝完成後打開 Settings → Plugins → OneNote,按提示完成 Microsoft 登錄(設備碼流程),勾選允許智能體讀取的筆記本並保存。
運行環境要求(見 package.json):Node >=22,DSH 版本需滿足 >=0.2.0-rc.1 且落在 README 聲明的兼容區間內。許可證爲 MIT(當前資料中版本號爲 0.2.4)。
配置與狀態目錄¶
可選配置字段如下(通過 Cordis patch 覆蓋整行 config 時需寫全所需字段):
| 字段 | 默認值 | 含義 |
|---|---|---|
clientId |
內置公共應用 | Azure 應用程序(客戶端)ID |
tenant |
common |
租戶 ID 或域;common 支持工作與個人 Microsoft 賬號 |
maxPagesPerList |
100 |
onenote_list_pages 默認頁面數量上限 |
maxPageChars |
60000 |
onenote_read_page 默認 Markdown 字符上限 |
使用自有 Azure 應用註冊(個人以上場景更推薦)時,在 Azure 門戶註冊公共客戶端、開啓 Allow public client flows,添加 Graph 委託權限 Notes.Read、offline_access、User.Read,無需客戶端密鑰;工作賬號可能需要管理員一次性同意。將 clientId 寫入 patch,例如:
# ~/.dsh/cordis.patch.yml(作用於所有 profile)或某 profile 的 cordis.patch.yml
- id: onenote
name: 'dsh-plugin-onenote'
config:
clientId: 00000000-0000-0000-0000-000000000000
tenant: common
本地狀態位於 $DSH_HOME/onenote/(通常爲 ~/.dsh/onenote/),目錄權限 0600,包含 tokens.json(訪問與刷新令牌)、signin.json(進行中的設備碼登錄)、settings.json(筆記本白名單)。刪除該目錄可重置插件;不會向工作區寫入數據。
若登錄報錯 missing 'redirect_uri',README 說明常見原因是在設備登錄頁未先輸入完整郵箱而走了 Passkey/Hello 捷徑;修復方式是在瀏覽器中先手動輸入完整 Microsoft 賬號郵箱再下一步,或用 InPrivate/無痕窗口打開驗證鏈接。
典型用法¶
- 安裝插件並在 OneNote 設置頁完成登錄,勾選例如「Work」筆記本,保存。
- 在對話中讓智能體先調用
onenote_status,確認可讀筆記本名稱與系統提示一致。 - 用
onenote_search或onenote_list_pages定位分區與頁面,再用onenote_read_page拉取 Markdown 內容做摘要、對照任務或引用段落。
系統提示會向模型說明當前可讀筆記本名稱,並明確其餘筆記本故意不可讀。
適用場景與注意¶
適合:已在 OneNote 沉澱筆記、希望 DSH 智能體在明確邊界內只讀引用;需要設備碼登錄、按筆記本粒度授權的個人或小團隊場景。
注意:
- 插件以當前 DSH 進程權限運行,令牌與白名單在
~/.dsh/onenote/;安裝前請查看 GitHub 源碼與 LICENSE,確認符合你的安全與合規要求。 - DSH 生態強調「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係,不要當作官方應用商店。
- 僅只讀;不能通過智能體工具修改 OneNote 或擴大白名單。
結尾¶
dsh-plugin-onenote 把 OneNote 接進 DSH 的方式收斂爲:一次登錄、筆記本級白名單、四個讀工具。若你的知識庫在 OneNote 且需要可控的 Graph 只讀訪問,可按上文命令安裝並在設置頁完成授權。