@awiki/dsh-plugin:在 DeepSeek Harness 中接入 AWiki 身份與消息

前言

DeepSeek Harness(DSH)把模型、工具和工作區拆成可插拔模塊,但身份、私聊/羣聊、郵箱這類「帶賬號邊界」的能力通常不在覈心包裏。若要在 Agent 會話裏複用同一套 DID/Handle,同時讓模型通過工具讀寫會話與郵件,需要 Host 側服務、Rust SDK、Web 客戶端和 Agent 工具協同實現。

下面介紹社區插件 @awiki/dsh-plugin(SkillHub 條目 agentconnect/dsh-awiki)。它由 AgentConnect 維護,分類爲 admin-security,爲 DSH 提供 AWiki 身份註冊/恢復、即時消息 Web UI,以及供 Agent 調用的消息與郵件工具。

這是什麼

一句話定位:AWiki identity and messaging plugin for DeepSeek Harness——一個 npm 包同時安裝 Host Service、生產級 Rust SDK Provider、模型工具,以及帶可拖動「AWiki Me」入口的 Web 客戶端。

Rust SDK 獨佔管理 stateRoot 下的身份、SecretVault、數據庫、緩存與元數據。本發佈線採用乾淨切換,不導入舊 TypeScript SDK 的 identity.json;從舊版升級後需創建新的 Rust 身份。

當前 package.json 版本爲 0.3.5;GitHub 倉庫約 10 stars(截至 2026-08-27)。

核心功能

身份與本地狀態

在 Web UI 統一入口輸入 Handle 和手機號。Host 在發送驗證碼前分類 Handle:新 Handle 走註冊 OTP 並創建部署身份;已有 Handle 走 Recovery V4 OTP 並進入恢復流程。根 Agent 與子 Agent 共用最終身份。

OTP 流程保留驗證碼錶單,按服務端冷卻禁用重發;手機號與 OTP 不進入瀏覽器持久化、controller snapshot 或公開 Remote 結果。Recovery V4 到達 applied 後 Host 立即激活身份;歷史郵箱與模型賬本對賬當前不阻塞恢復。

賬戶菜單支持「退出登錄」(僅鎖本會話,保留加密身份與消息庫)和「重新進入本機身份」。切換身份需先確認永久清除本地 AWiki 數據。設置頁危險區域需輸入確認詞後,纔會清空本機身份、密鑰、令牌、註冊草稿與消息索引。

即時消息(Web UI)

  • 私聊與羣聊列表、未讀角標、最新消息預覽、持久化顯示名;Core SQLite 爲持久化真相源,local-first 渲染本地時間線,後臺補齊遠端歷史。
  • Web UI 建羣:私有發現、開放加入、傳輸保護,1–50 個初始 Handle 或 DID 成員;建羣后立即進入會話,個別成員失敗單獨提示。
  • 文本 + 單附件消息,Enter 發送、Shift+Enter 換行,樂觀氣泡按客戶端 message ID 對賬;圖片 SHA 校驗與三層有界緩存(瀏覽器 LRU、IndexedDB、Host 磁盤)。
  • 可拖動圓形入口、自適應彈窗、深色模式、會話記憶;用戶觸發的 AI 總結(最多 50 條最近或未讀),僅保留在本次運行期內存。

首版不包含端到端加密、多身份、建羣后管理、單消息多附件。

Agent 工具

消息(5 個):身份狀態、會話列表、歷史、需審批的文本發送、需審批的附件發送。

郵件 v1(5 個,按需):郵箱賬戶、收件箱、純文本讀取、需審批的標記已讀、需審批的純文本發送。無瀏覽器收件箱 UI,不以新郵件喚醒 Agent;awiki_mail_mark_readawiki_mail_send 每次執行需審批;發送只嘗試一次,超時返回 delivery-unknown

可選即時 listenerDSH_AWIKI_LISTENER_ENABLED=true 且配置 exact allowlist 後,allowlist 內私聊對端可續接 DSH Agent 會話,或使用 /new/status/help。Listener 只接受明文私聊文本。

可選託管模型(獨立包)

主包不再默認安裝 AWiki 託管模型 Provider。需要時在主包之外安裝 @awiki/dsh-model-proxy@latest:僅在 Harness 沒有任何可用模型時,首次引導纔在官方 API Key 步驟前提供 AWiki 託管 DeepSeek 選項(deepseek-v4-flashdeepseek-v4-pro)。只裝主包時,不會出現模型啓停、充值、用量或模型引導 UI。

安裝與啓用

在 DSH 項目根目錄執行 Profile 安裝命令(會同時添加包並激活 bundle layer;普通 npm i 不會激活 bundle):

dsh plugin --profile web add @awiki/dsh-plugin@latest

需要 AWiki 託管模型時再裝:

dsh plugin --profile web add @awiki/dsh-model-proxy@latest

請在常規 DSH base 和 Web app bundle 之後應用本包。主包 cordis.patch.yml 加入 AWiki Host Service、Rust SDK Provider 和 Summary Provider;瀏覽器客戶端由 DSH 根據包元數據自動注入。

插件默認連接公開租戶 awiki.ai,無需環境變量即可使用。自部署或覆蓋默認值時,可設置例如:

環境變量 用途 默認值
DSH_AWIKI_USER_SERVICE_URL AWiki user service 絕對 URL https://awiki.ai
DSH_AWIKI_STATE_ROOT Rust IM Core 狀態目錄 按 DSH profile 隔離,見 README
DSH_AWIKI_LISTENER_ENABLED 開啓私聊到 Agent 的 listener false
DSH_AWIKI_LISTENER_ALLOWED_PEERS exact Handle/DID JSON 數組 []

完整變量表見 GitHub README.zh.md

典型用法

1. 首次身份

  1. 安裝插件並啓動 DSH Web profile。
  2. 點擊左下角可拖動的 AWiki Me 入口,輸入 Handle 與手機號。
  3. 按提示完成註冊 OTP 或 Recovery V4 OTP;恢復已有 Handle 後 Host 會同步賬號投影並嘗試恢復羣成員身份。

2. Agent 讀取會話併發送(需審批)

Agent 可通過註冊的工具查詢身份、列出會話、拉取歷史;文本與附件發送工具需用戶審批後執行。具體工具名以插件註冊爲準(README 列出的五類消息工具與五類郵件工具)。

3. 同進程插件調用 ANP 身份認證

可信的 DSH Host 同進程插件可委託 AWiki 處理外部 HTTP 的 ANP 簽名與 Token,無需自行實現 challenge/重試:

const response = await ctx.awiki.externalHttpAuth.dispatch(
  new Request('https://api.example.com/orders', {
    method: 'POST',
    headers: { 'content-type': 'application/json' },
    body: JSON.stringify({ productId: '123' }),
  }),
  request => fetch(request),
)

回調函數仍是唯一網絡 transport owner;該 API 不進入 Browser Remote 或 Agent tools。

4. 可選:私聊觸發 Agent listener

啓用 listener 並配置 allowlist 後,allowlist 內對端的明文私聊可路由到共享 AWiki Workspace 上的 DSH Session。生產環境需評估會話隔離與工具審批策略。

適用場景與注意

適合誰

  • 已在或計劃使用 AWiki(awiki.ai 或自部署租戶)的 DSH 用戶,希望在 Harness 內完成身份、IM 與(可選)郵件,而不是另開客戶端。
  • 需要 Agent 在審批邊界內讀寫信箱、查會話、發消息的自動化場景。
  • 希望可選接入 AWiki 託管 DeepSeek 模型、且接受獨立 @awiki/dsh-model-proxy 包的用戶。

使用前務必瞭解

  • 插件以當前 DSH 進程權限運行,可訪問 stateRoot 下的密鑰與消息庫;安裝前應閱讀 源碼 與許可證。插件主體爲 MIT;Rust IM Core 運行時依賴爲 AGPL-3.0-only(見 THIRD_PARTY_NOTICES.md)。
  • SkillHub(skillhub.cn)是社區插件目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」思路,目錄站點獨立運營。
  • 首版限制:無 E2E 加密;身份恢復不重建歷史私聊(僅 Rust SDK 已保留的本地數據按 Core 規則遷移);郵件 v1 功能邊界見上文。
  • IM Core 狀態含訪問材料,應放在倉庫外並限制文件權限;不要在倉庫中提交 OTP、令牌、私鑰或 .env

鏈接

若你的 DSH 工作流需要統一 AWiki 身份、本地優先的消息界面,以及可審批的 Agent 消息/郵件工具,可按上述 Profile 命令安裝主包,再按需疊加 Model Proxy 與 listener 配置。

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

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

小夜