dsh-plugin-artemis:在 DSH 裏用自然語言驅動 Google ARTEMIS 做 Android 自動化

前言

在 DeepSeek Harness(DSH)裏做 Android 操作時,常見做法是 adb 截圖加點按:屏幕理解、下一步點哪裏、點錯了怎麼糾,都壓在主對話模型上。短流程還能撐,跨 App、多分支、長鏈路就容易漂。Google 開源的 ARTEMIS 把元素定位(無障礙樹、OCR、視覺兜底)、Flash/Pro 兩檔執行、執行前校驗和軌跡回放做成一套移動 agent;社區插件 dsh-plugin-artemis(維護者 coolluo,分類:工作流)負責通過 MCP 把它接進 DSH,並補上「一次工具調用等到任務結束」的交互。下面介紹它是什麼、怎麼裝、怎麼用。

這是什麼

一句話:你說一句自然語言任務,ARTEMIS 在真機或模擬器上分步執行,DSH 通過插件拿回結果、截圖和逐步 trace。

插件不打包 ARTEMIS 本體,只啓動其 MCP 服務並暴露五個 artemis_* 工具;輕量 adb 點按仍可用其它工具,需要「專職司機」跑複雜 Android 流程時用本插件。

和裸 adb、和 ARTEMIS 原生 MCP 的差別

裸 adb 類工具把「看懂屏幕、決策、糾錯」留給主模型;ARTEMIS 在 agent 側系統化完成這些步驟。兩者可並存:簡單點按繼續 adb,複雜任務交給 ARTEMIS。

ARTEMIS 自帶的 MCP 裏 mobile_run_task 異步返回 trace_id,調用方需自行定時輪詢。本插件在 artemis_run_task 內輪詢 mobile_manage_task(默認等待 120 秒,可配),結束一次性返回 result / error 等;超時則返回 status:"running" 與 trace_id,由 artemis_task 續收,避免重複提交。還支持 exec.signal 取消、截圖經 DSH attachment store 進模型上下文,並附帶 skills/artemis/SKILL.md 指導模型選 Flash/Pro 與排障順序。

核心功能:五個工具

工具 作用 關鍵參數
artemis_run_task 派發任務並在同一次調用內等到結束 task、model(Flash/Pro)、device_serial、wait_seconds
artemis_task 收結果、中止或中途指導 action、trace_id、instruction、release_loop
artemis_device_state 查看設備層級或截圖 view_type、device_serial
artemis_trace 回放 trace:摘要、搜索、單步、動作疊加圖 action、trace_id、step_number
artemis_doctor 環境自檢(含 ARTEMIS mobile_diagnose),可嘗試修復 attempt_fix、probe_device、launch_avd、restart_server

典型對話形態(README 示例):

你: 打開設置 → 電池,讀出當前電量
DSH → artemis_run_task("打開設置→電池,讀出電量")
      └─ ARTEMIS: 截圖 → 無障礙樹 → 點設置 → 點電池 → 讀數值 → 校驗
DSH: 電量 53%,共 6 步,用時 41s(trace 可回放)

前置條件

安裝插件前需自行準備 ARTEMIS 運行環境(非插件安裝步驟的一部分):

需要 說明
ARTEMIS 源碼 克隆 google/artemis,並在配置裏填寫 artemisPath
Python 3.12+ 與 uv ARTEMIS 用 uv 管理環境;也可使用已裝好依賴的 python -m mcp_server
adb + Android 設備 USB 調試真機或已啓動模擬器(adb devices -l 爲 device)
模型 API key 寫入 ARTEMIS 的 .env:GEMINI_API_KEY 或 OpenAI 兼容的 OPENAI_API_KEY(可配 DeepSeek,見下文)
Node 20+ DSH 要求

安裝與啓用

包已發佈到 npm(包名 dsh-plugin-artemis)。在 DSH 中執行:

dsh plugin --profile desktop add dsh-plugin-artemis

將 artemisPath 指向本地 ARTEMIS 源碼目錄(含 mcp_server/、pyproject.toml),例如在 profile 的 cordis.patch.yml:

- insert:
    - id: dsh-artemis
      name: 'dsh-plugin-artemis'
      config:
        artemisPath: 'D:\Projects\artemis'

重啓 DSH 後對模型說「用 artemis 看看設備」,或調用 artemis_doctor 驗證環境。

配置項(插件側)

字段 默認 說明
artemisPath '' ARTEMIS 源碼目錄
command / args '' / [] 顯式啓動命令;留空則嘗試 uv run artemis mcp → python -m mcp_server
env {} 傳給 MCP 進程的額外環境變量
defaultModel Flash 默認執行檔
defaultDeviceSerial '' 默認設備 serial
defaultWaitSeconds / maxWaitSeconds 120 / 600 輪詢等待預算
pollIntervalMs 3000 輪詢間隔
callTimeoutMs / startupTimeoutMs 120000 / 180000 單次調用與首次握手超時
provideSkill true 是否註冊自帶 skill

改 ARTEMIS 的 .env 後,可調用 artemis_doctor({ restart_server: true }) 重連 MCP,無需重啓整個 DSH。

典型用法:DeepSeek Flash 替代 Gemini

ARTEMIS 需要能看屏幕的多模態模型,README 說明可用 DeepSeek 的 deepseek-flash(OpenAI 兼容接口)。

1、在 ARTEMIS 的 .env 中配置:

OPENAI_API_KEY=sk-你的DeepSeek key
OPENAI_BASE_URL=https://api.deepseek.com

2、在 config/artemis.jsonc 中將 default、nodes.object_detector、nodes.hopper 等路由改爲 openai / deepseek-flash,並按文檔關閉 video_analyzer、調整 flash/pro 的 explorer 模式;完整項見倉庫 docs/USING-DEEPSEEK.md。

3、注意兩處坑:agent.flash.step_summarizer 需設 "enabled": false,否則會誤建 Gemini 客戶端;若 key 改後不生效,可在插件配置中加 env: { ARTEMIS_STANDALONE: '1' } 繞開 ARTEMIS 常駐 daemon。

排障與限制

任何報錯可先跑 artemis_doctor;任務失敗可用 artemis_trace({ action: "view_summary", trace_id }) 看逐步動作,或查看返回中的 stderr_log / stdout_log。README 列出了 MCP 起不來、空 key 行被誤判爲已配置、無設備等常見現象與處理。

已知限制包括:僅 Android(無 iOS);任務 token 消耗在 ARTEMIS 側模型調用;一個 DSH profile 共享一個 MCP 進程;插件以當前 DSH 進程權限運行,安裝前應閱讀 MIT 許可的插件倉庫 與 Apache-2.0 的 ARTEMIS 源碼及許可證。

維護者在 Windows 11 + Android 模擬器 + DSH 0.2.1-rc.2 上驗證了安裝、五工具發現、artemis_run_task 與 trace 回放等路徑;真機 DeepSeek Flash 下「設置 → 電池 → 讀電量」約 5 步、28 秒量級(換模型後定位精度可能弱於 Gemini 生態下的官方 benchmark 表現)。

結尾

dsh-plugin-artemis 把 Google ARTEMIS 以 MCP 形式接入 DSH,用 artemis_run_task 把異步移動 agent 收成同步工具調用,適合需要自然語言派發、可驗證步驟與 trace 回放的 Android 工作流。插件目錄頁:skillhub.cn/plugins/coolluo/dsh-plugin-artemis;源碼與完整說明:github.com/coolluo/dsh-plugin-artemis。DSH 社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

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

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

小夜