前言¶
在 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 中表格一致,主要包括:
- 應用與版本查詢:
rustore_apps_list、rustore_app_versions、rustore_version_info、rustore_version_status。 - 草稿生命週期:
rustore_draft_create、rustore_draft_update、rustore_draft_delete(刪除不可恢復)。 - 素材上傳:
rustore_upload_aab/rustore_upload_apk、512×512 圖標rustore_upload_icon、截圖上傳 / 列表 / 刪除(API v2)。 - 發佈與審覈:
rustore_publish_settings(INSTANTLY / DELAYED / MANUAL)、rustore_send_to_moderation(優先級 0…5)、rustore_manual_publish、rustore_version_archive。 - 輔助:
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 爲準: