Skip to main content

autofish-control

Control Android devices with Autofish via the af CLI. Use this skill when you need reliable observe-act-verify loops, ref-based tapping, overlay management, screenshots, and recovery steps.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
memohai/supermarket
آخر نشاط في المصدر
٩ أغسطس ٢٠٢٦ في ٠٤:٤٩
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٨
التفرعات
٨

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
autofish-control
description
Control Android devices with Autofish via the af CLI. Use this skill when you need reliable observe-act-verify loops, ref-based tapping, overlay management, screenshots, and recovery steps.
metadata
{"author":{"name":"MemohAI","email":""},"tags":["android","automation","cli","testing"],"homepage":"https://github.com/memohai/Autofish"}
license
Complete terms in LICENSE.txt
# Autofish Control Skill Use deterministic control with evidence at every step. ## When To Use - You need to navigate Android UI through Autofish (`af`). - You need stable replay using refs (`@nK`) instead of coordinates. - You need explicit verification after each action. ## Setup ```bash af config set remote.url "http://<IP>:<PORT>" af config set remote.token "<token>" af config set memory.db "$HOME/.config/af/af.db" af config set output.default "text" af config set artifacts.dir "$HOME/.config/af/artifacts" ``` Copy `IP`, `PORT`, and `token` from the Autofish Android app. For USB port forwarding, use the forwarded local address, for example `http://127.0.0.1:<PORT>`. Environment variables also work: `AF_URL`, `AF_TOKEN`, `AF_DB`, `AF_OUTPUT`, `AF_ARTIFACT_DIR`. - `af health` only requires URL. - `observe`, `act`, `verify`, `recover` require URL + token. - `af memory ...` is local-only and requires memory enabled. - `config list` and `config get remote.token` redact tokens as `<redacted>`. - Use `--output json` when parsing results in scripts. - Check `af --help` first if the installed CLI may be older than this skill. - If config/env is unavailable, put remote flags after the command group: `af --session <session> observe --url <url> --token <token> page`. Choose one session per task: ```bash SESSION="task-name" af --session "$SESSION" observe page --field screen --field refs --max-rows 80 ``` Do not reuse the default `default` session across unrelated tasks. ## Workflow Memory session rules: - `memory context` and `memory save` use the global `--session`. - `memory log` and `memory stats` filter with `--for-session <session>`. - `memory search` and `memory experience` query cross-session history; do not treat global `--session` as a filter for them. 1. Baseline: - `af --session <session> observe page --field screen --field refs --max-rows 80` - `af --session <session> memory context` - `af memory search --app <current-app>` - `af memory experience --app <current-app> --activity <current-activity> --page-fp "<page-fingerprint>"` 2. One-step execution: - Run exactly one action command. - Run `af --session <session> observe page` (add `--field refs` if needed). - Verify expected state. 3. Continue only from fresh observations. Do not run blind action chains. 4. After solving a non-trivial problem: - `af --session <session> memory save --app <pkg> --topic "<category>/<name>" --content "<what you learned>"` ### Memory Loop For experience learning, keep this exact order: 1. `observe` the starting page. 2. Run one `act`. 3. `observe` again. 4. Run one `verify`. `act` and `recover` invalidate the cached page fingerprint. A transition is recorded only when a fresh successful observation happens after the action and before verification. ### observe page Always returns: `topActivity`, `mode`, `hasWebView`, `nodeReliability`. | `--field` | What it adds | |---|---| | `screen` (default) | Row counts, fingerprint rows, and a JSON artifact path for full rows | | `refs` | Clickable ref aliases with `refVersion` | Use the returned `screen.artifact` saved path when full page rows are needed. `observe screenshot` and overlay commands are diagnostics only; they do not refresh memory context. `topActivity` is `null` when the service cannot confirm a stable value. Re-observe before acting. ## Tap Priority 1. `af --session <session> act tap --by ref --value @nK` 2. `af --session <session> act tap --by text|desc|resid --value "<value>" [--exact-match]` 3. `af --session <session> act tap --xy X,Y` Other actions exist for non-tap flows: `swipe`, `text`, `launch`, `stop`, `key`, `back`, `home`. ## Refs - Refresh refs on dynamic pages: `af --session <session> observe page --field refs`. - If ref tap fails with stale/unobserved errors, re-observe once and retry once. - Do not assume alias index stability after UI updates. - Do not auto-pick among ambiguous matching candidates. ## Verify Priority 1. `af --session <session> verify top-activity --expected "<activity>" --mode contains` 2. `af --session <session> verify text-contains --text "<text>"` 3. `af --session <session> verify node-exists --by text|desc|resource_id|class --value "<value>" [--exact-match]` `top-activity --mode` is `contains` or `equals`. `text-contains` is case-insensitive by default; use `--case-sensitive` only when exact case matters. On WebView-heavy pages (`hasWebView=true` or `nodeReliability=low`), prefer `text-contains`. Do not rely on node/ref structure inside WebView content. ## Recovery When state is uncertain: 1. `af --session <session> observe page --max-rows 120` 2. `af memory experience --app <pkg> --activity <act> --failure-cause <cause>` 3. Choose one recovery: - `af --session <session> recover back --times 1` for modal/back-stack drift. - `af --session <session> recover home` for lost navigation context. - `af --session <session> recover relaunch --package <pkg>` for app reset. 4. `af memory log --for-session <session> --status failed --limit 5` 5. Re-run baseline. ## Diagnostics ```bash af --session <session> observe overlay set --enable --mark-scope all --refresh on --refresh-interval-ms 800 af --session <session> observe screenshot --annotate --hide-overlay --max-marks 120 --mark-scope interactive af --session <session> observe overlay set --disable --mark-scope all --refresh off ``` Artifacts still write to disk when memory is disabled, but DB artifact ids may be absent. ## Memory Topic Conventions | Prefix | Purpose | |---|---| | `nav/` | Navigation paths between screens | | `pitfall/` | Known problems and workarounds | | `selector/` | Reliable selector strategies | | `recovery/` | Recovery strategies that worked | ## Guidelines - Favor refs over coordinates. - Keep `--session` stable and unique per task. - Each action must be followed by observation, then verification. - Use `af memory experience` before acting on unfamiliar pages. - Use `af --session <session> memory context` to inspect the current cached page fingerprint. - Use `af memory log --for-session <session>` and `af memory stats --for-session <session>` to inspect failures and session quality.
عرض على GitHub