<< All versions

Skill v1.0.0

currentAutomated scan100/100
aohp-os/aohp/aohp-perception
──Details
PublishedOctober 24, 2026 at 01:26 PM
Content Hashsha256:1973ee594ff9e910...
Git SHA2104a86a705d
──Files
Files (1 file, 4.2 KB)
SKILL.md4.2 KBactive
SKILL.md · 63 lines · 4.2 KB

version: "1.0.0" name: aohp-perception description: Screenshots and UI hierarchy (windows/nodes) on a logical display via the aohp CLI. metadata: {"openclaw":{"emoji":"📸","requires":{"bins":["aohp"]},"os":["linux"]}}


AOHP perception

Capture JPEG screenshots and read UI hierarchy on a logical display (displayId: integer). The default hierarchy is compact HTML-like text with useful node attributes (id, bounds, text/desc/resourceId, action states); use `-o` only when you need the origin JSON.

Requires `aohp` on PATH (how it reaches the device is already set in the packaged `aohp` you run).

When to use

  • Screenshot the whole display, a rectangle, or a single node’s bounds: `aohp shot full`, `aohp shot region`, `aohp shot node`.
  • Read or filter the UI tree: `aohp ui tree`, `aohp ui find`.
  • Prefer the subcommands above. Use `aohp call <method> '<json>'` only if you need JSON fields the high-level commands do not expose; method names look like `<area>.<action>` (e.g. `ui.tree`, `shot.full`).

Workflow

  • UI hierarchy: run `aohp ui tree -d <displayId>` whenever you need node `id`, `bounds`, text, description, resource id, or action states. Default output is compact HTML; add `-o` / `--origin` only when you need the full origin JSON. `aohp ui find` matches nodes by text / description / resource-id when that is enough.
  • Screenshots: run `aohp shot …` whenever you need pixels. By default each shot writes a JPEG under `$TMPDIR` and prints a short JSON wrapper (see below)—use that path for vision tools.
  • Quote arguments that contain spaces or shell metacharacters when the command runs inside `exec`.

Commands (summary)

GoalCLI
Full-screen JPEG`aohp shot full -d <id> [-q 1-100]` — default save under `$TMPDIR` as `aohp_shot_full_<timestamp>.jpg`; `-O` sets the local path; `--inline` alone does not write or retain a local JPEG—pixels appear in stdout as a single `type: "image"` block; `-O` + `--inline` writes the file and adds `type: "image"` after the save-path text
Cropped JPEG`aohp shot region …` — same modes (default prefix `aohp_shot_region_`)
Node bounds JPEG`aohp shot node …` — same modes (default prefix `aohp_shot_node_`)
UI tree`aohp ui tree -d <id> [-f flags]` — compact HTML; `-o` / `--origin` returns the full origin JSON
Filter nodes`aohp ui find -d <id> [--raw] [-s text] [-D desc] [-R resource-id]`
Stubs`aohp ui focused`, `aohp ui input-text` (may be placeholders on some agents)

Alias: `aohp ui-tree` → `aohp ui tree`.

Output shape for `aohp shot …` (success)

Stdout is one JSON object with `content` (array) and `details` (object). When a local file is written, the first `content` item is `type: "text"` (includes `Saved image bytes to …` plus a short completion line). With `--inline` and no `-O`, `content` contains only the `type: "image"` block.

InvocationLocal JPEG file`type: "image"` in `content`
Default or `-O` onlyYes (default under `$TMPDIR` or your `-O` path)No — keeps `exec` output small
`--inline` onlyNoYes — the only content block; raw base64 in `data`, `mimeType` set
`-O` and `--inline` togetherYes, at your `-O` pathYes — second block after save-path text

`details`: fields from the agent reply except the duplicated huge `base64` string; `details.path` (when present) is the device-side capture path, not necessarily the path where you saved bytes locally—the local path is only in the `text` line above.

`aohp call …` for shot-related methods returns the plain agent JSON (not this wrapper), which is useful for automation but different from `aohp shot …` stdout.

Examples

bash
aohp ui tree -d 0
aohp ui tree -d 0 -o
aohp shot full -d 0 -q 85
aohp shot full -d 0 -O /tmp/cap.jpg
aohp shot full -d 0 --inline
aohp shot full -d 0 -O /tmp/cap.jpg --inline
All versions