Computer Use plugin for DeepSeek Harness: read macOS app UI state (accessibility tree + screenshot) and drive it (click, type, scroll, drag) through a native daemon.
Strong tool definitions with clear naming (verb_noun pattern), comprehensive parameter schemas, and structured output. All 10 tools have descriptions (avg 150 chars) and typed input schemas. Output schemas are documented. Key gaps: no tool annotations (readOnlyHint/destructiveHint), limited error recovery guidance, and no parameter descriptions for some fields. Tool composition is excellent, each tool has one responsibility and chains naturally via app parameter. Approval flow is well-integrated but not exposed in schema.
Click an element by accessibility index, or at pixel coordinates from a screenshot, with an optional mouse button and click count.
Drag from one coordinate to another, or from an element to a coordinate.
Start an app use session if needed, then return the accessibility tree of the app's key window plus a screenshot URL. Call this once per assistant turn before interacting with an app, and again after each action to refresh element indices.
List the apps on this computer: currently running apps plus any used in the last 14 days, with bundle id, display name, recency and running state.
Perform a secondary action on an element (e.g. right-click menu).
Press a key or key combination (e.g. 'cmd+c', 'ctrl+alt+delete').
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). computer_use_list_apps and computer_use_get_app_state are read-only; all action tools are destructive. Annotations enable LLM safety reasoning and prevent accidental state mutations.
Parameter descriptions incomplete or missing for several action tools. 'mouse_button' in computer_use_click lacks description; 'pages' in computer_use_scroll lacks description; 'start'/'end' in computer_use_select_text lack descriptions. LLMs cannot infer parameter semantics from names alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Scroll within an element or at a coordinate.
Select text in an element by range or all.
Set the value of an element (e.g. a text field or slider).
Type text into the focused element.
Error handling lacks recovery guidance. Tools return ActionResult on success but no structured error responses are documented. If an action fails (e.g. element not found, app not running), the LLM has no guidance on what to do next (retry, call get_app_state, etc.).
Approval flow (requireAppApproval option) is implemented but not exposed in tool schemas or descriptions. LLMs cannot see that approval may be required, leading to unexpected blocking behavior.
Parameter constraints not fully specified. 'element_index' in multiple tools lacks min/max bounds; 'click_count' lacks range (should be 1 - 3 per description); 'pages' in scroll lacks range. Unbounded numeric parameters invite invalid LLM inputs.