dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Mobile device capability plugin for DeepSeek Harness: MobileService seam, mock/mobile-mcp providers, agent tools (observe/open_app/tap/type/back), tiered execution policy
DeepSeek Harness 的移动设备能力插件:让 DSH Agent 通过统一的 MobileService
能力缝观察并操作手机。
Phase 1(已完成):MobileService 能力缝 + Mock + 5 工具 + Context/Policy 契约。 Phase 2(已完成):MobileMcpProvider 经 MCP 协议接真实 Android 模拟器,已实机验证。 不在范围内:自动聊天、联系人记忆、微信/小红书等上层应用。
用户:「看看当前手机屏幕是什么状态」
↓ DeepSeek Harness
↓ dsh-mobile plugin
mobile_observe()
↓ Mock Provider(phase 2: mobile-mcp)
结构化 ScreenState
↓
DSH 基于结果继续行动(open_app → tap → type(草稿)→ back)
src/
├── capability/ MobileService 定义 + ScreenState/UIElement 类型(核心资产)
├── providers/ mock.ts(脚本化聊天 App)| mobile-mcp.ts(MCP → 真实设备,已验证)
├── tools/ mobile_observe / open_app / tap / type / back
├── context/ system.ts(操作规程)+ runtime.ts(<mobile_runtime>)+ formatter.ts(唯一格式化出口)
├── policy/ Tier 0-4 权限(guard 硬拒绝 + pre-execute ask)
└── state/ MobileRuntimeState(派生投影,非 session)
docs/
├── CONTEXT_ENGINEERING.md Context 分类/预算/选择/污染防护
└── HARNESS_ARCHITECTURE.md 能力缝/工具面/权限面/生命周期/版本纪律
npm install
npm run typecheck
npm test
npm run build
dsh plugin --profile <name> add link:J:/ai/phone-agent/dsh-mobile
配置(可选):
# profile 的 cordis.yml 中该插件行
- id: mobile
name: dsh-mobile
config:
provider: mock # mock(默认,离线)| mobile-mcp(真实设备,已验证)
deviceId: emulator-5554 # 可选,mobile-mcp 专用;缺省取第一台在线设备
announceToAgent: true # 在 system prompt 中公告插件
enabled: true
输入「查看当前手机状态」,DSH 能自己选择
mobile_observe,拿到结构化 Mock ScreenState,并基于结果正确解释当前 UI。
mobile_swipe 工具暴露、截图观察、前台 App 感知(需 ADB provider)、多设备# 1. 构建 vendored mobile-mcp(npmmirror 缺 mobilecli,需官方 registry)
cd ../framework/mobile-mcp
npm install --ignore-scripts --registry=https://registry.npmjs.org
npx tsc
# 2. 启动模拟器(或接真机 adb)
& "$env:LOCALAPPDATA\Android\Sdk\emulator\emulator.exe" -avd Medium_Phone_API_36.0
# 3. 本包构建 + 离线测试
cd ../../dsh-mobile && npm run build && npm test
# 4. 真实设备冒烟(不动 DSH,直接打 provider)
node scripts/live-emulator-check.mjs
node scripts/live-tap-check.mjs