dsh-rustore:在 DSH 裏走 RuStore 發佈 API

前言

在 RuStore 上更新 Android 應用,通常要在控制台裏反覆操作:建版本草稿、傳 AAB/APK、補圖標和截圖、選發佈方式、送審、必要時手動上線。若你已經在用 DeepSeek Harness(DSH)做智能體或自動化流水線,更希望這些步驟能通過對話或腳本調用官方 Publishing API 完成,而不是每次切瀏覽器。下面介紹社區插件 dsh-rustore(維護者 YurinKonstantin,分類爲聯網工具),它把 RuStore 發佈鏈路封裝成 DSH 工具,並附帶獨立 MCP 服務器與 rustore 技能文檔。

這是什麼

dsh-rustore 面向 RuStore Publishing API:在 DSH 中註冊 22 個 rustore_* 工具,覆蓋草稿、上傳、發佈設置、 moderation 與版本歸檔等操作;同一套能力也可作爲 stdio MCP 服務器(無額外外部依賴)接到 Cursor、Claude Desktop、自研 Agent,或在 DSH 裏通過 @deepseek-ai/dsh-mcp-client 掛載。

倉庫:https://github.com/YurinKonstantin/dsh-rustore
社區目錄頁:https://www.skillhub.cn/plugins/YurinKonstantin/dsh-rustore(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。

當前 package 版本爲 0.3.1,許可證 MIT。

核心功能

插件側工具與 README 中表格一致,主要包括:

  1. 應用與版本查詢:rustore_apps_list、rustore_app_versions、rustore_version_info、rustore_version_status。
  2. 草稿生命週期:rustore_draft_create、rustore_draft_update、rustore_draft_delete(刪除不可恢復)。
  3. 素材上傳:rustore_upload_aab / rustore_upload_apk、512×512 圖標 rustore_upload_icon、截圖上傳 / 列表 / 刪除(API v2)。
  4. 發佈與審覈:rustore_publish_settings(INSTANTLY / DELAYED / MANUAL)、rustore_send_to_moderation(優先級 0…5)、rustore_manual_publish、rustore_version_archive。
  5. 輔助:rustore_categories_list、rustore_app_tags、設置與鑑權 rustore_settings_get / rustore_settings_set / rustore_auth_check。

卡片字段長度、截圖數量等約束,以及推薦發佈順序,寫在倉庫內技能文件 skills/rustore/SKILL.md;API 參數摘要見 docs/rustore-api-reference.md。

RuStore 的 JWE 令牌有效期爲 900 秒,由 keyId 與私鑰簽發。插件在配置裏保存密鑰,自行簽發並在過期前約一分鐘刷新;工具返回中對密鑰做了脫敏。

安裝與啓用

從 GitHub 安裝到 DSH profile

官方命令如下(將 <profile> 換成你的 profile 名):

dsh plugin --profile <profile> add github:YurinKonstantin/dsh-rustore

安裝後插件會通過 cordis.patch.yml 寫入 profile;bundle 內也提供現成片段,插件管理器安裝 bundle 時會合並。

通過 DSH 插件市場索引

DSH 讀取用戶自行添加的市場索引。本插件索引 URL 爲:

https://raw.githubusercontent.com/YurinKonstantin/dsh-rustore/main/market.json

在 Settings → Plugins → Discover → 添加索引 中填入,或在配置的 plugin-market.indexes 里加入該 URL。索引版本綁定具體 commit,便於可重複安裝。

配置 RuStore 密鑰

在 RuStore 控制台:公司(個人開發者則爲 開發者)→ API RuStore → 創建密鑰 → 勾選應用與發佈相關方法 → 生成後複製 Base64 私鑰(僅展示一次)與表格中的 keyId。

圖形界面(推薦)

Plugins 側欄 → 包 RuStore → rustore → 設置。可填 keyId、私鑰(密碼框;留空表示不修改)、可選 JWE 與 API 地址;支持 保存、檢查授權、刪除密鑰。值寫入 %USERPROFILE%\.dsh\rustore.json(權限 0600),立即生效。「檢查授權」會簽發令牌並讀取應用列表數量。

Profile 配置示例

- id: rustore
  name: dsh-rustore
  config:
    token: ""
    keyId: "354751"
    privateKey: ""
    privateKeyRef: RUSTORE_PRIVATE_KEY
    apiBase: https://public-api-m.rustore.ru
    mirrorBase: https://public-api.rustore.ru
    authUrl: https://public-api-m.rustore.ru/public/auth/
    timeoutMs: 120000
    settingsFile: ""

配置優先級:插件 config → DSH credentials 中的 RUSTORE_PRIVATE_KEY → 環境變量 RUSTORE_* → ~/.dsh/rustore.json。也可用 rustore_settings_set 從對話寫入同一文件。

驗證:rustore_settings_get(授權模式)或 rustore_auth_check(簽發令牌並列出應用)。

典型用法

在 DSH 對話中驅動發佈

經過上面的密鑰配置後,可按 SKILL 中的順序調用工具,例如:列出可訪問應用 → 創建或更新草稿 → 上傳 AAB/APK 與圖標、截圖 → rustore_publish_settings → rustore_send_to_moderation;審覈通過後按需 rustore_manual_publish。

具體字段與錯誤處理以 skills/rustore/SKILL.md 爲準,此處不重複枚舉。

獨立 MCP 服務器(不依賴 DSH 插件運行時)

在 shell 中設置環境變量並啓動:

$env:RUSTORE_KEY_ID = "354751"
$env:RUSTORE_PRIVATE_KEY = "MIIEvgIBADANBgkq..."
node mcp/server.mjs

傳輸爲 stdio、逐行 JSON-RPC。在 DSH 中可掛載爲:

- id: rustore-mcp
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: rustore
    transport: stdio
    command: node
    args: ['<路徑>/dsh-rustore/mcp/server.mjs']
    env:
      RUSTORE_KEY_ID: ''
      RUSTORE_PRIVATE_KEY: ''
    failOnStartupError: true

工具在 DSH 中顯示爲 mcp__rustore__<名稱>。

適用場景與注意

適合:已在 RuStore 註冊應用、希望用 Agent 或 CI 輔助完成版本草稿、包體與商店素材上傳、送審與發佈控制的 Android 開發者或發佈運維。

限制(README 明確說明):

  • Publishing API 只操作已有應用的版本;應用本體、開發者聯繫方式、隱私政策、測試賬號、TV 圖標等仍須在 RuStore 網頁控制台維護。
  • 官方 API 分佈在 public-api.rustore.ru 與 public-api-m.rustore.ru;客戶端在 404 時會自動嘗試鏡像主機。

安全:插件以當前 DSH 進程權限運行,會向 RuStore 公網 API 發起請求。安裝前請閱讀源碼與 MIT 許可證,確認密鑰存放方式(rustore.json、credentials、環境變量)符合你的安全策略;勿在日誌或對話中粘貼完整私鑰。

倉庫自帶 39 個單元測試(node --test test/),覆蓋鑑權、MCP 協議與插件註冊等,默認不訪問真實網絡。

結尾

dsh-rustore 把 RuStore 發佈 API 收成 DSH 可調用工具集,並可選 standalone MCP,適合把「上架 RuStore」納入 Harness 工作流。詳情與更新以 GitHub README 爲準:

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

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

小夜