201 lines
8.9 KiB
Markdown
201 lines
8.9 KiB
Markdown
# dumpapp Command Guide
|
|
|
|
`tools/dumpapp` is a thin wrapper around Stetho `dumpapp`. It connects from your computer to the running Android app process and forwards the remaining arguments to the app-side dumper plugins.
|
|
|
|
This document covers the custom `dumpapp` commands registered by MnnLlmChat in debug builds. Stetho's built-in default commands are not listed here.
|
|
|
|
## Basic Usage
|
|
|
|
```bash
|
|
./tools/dumpapp <command> [args]
|
|
```
|
|
|
|
Examples:
|
|
|
|
```bash
|
|
./tools/dumpapp models list
|
|
./tools/dumpapp llm status
|
|
./tools/dumpapp openai start --model ModelScope/MNN/Qwen3___5-0___8B-MNN
|
|
```
|
|
|
|
## Connection Notes
|
|
|
|
- `-p` or `--process`: override the target Android process name. Default is `com.alibaba.mnnllm.android`.
|
|
- `ANDROID_SERIAL`: target a specific device when multiple devices are connected.
|
|
- `STETHO_PROCESS`: set the default process name through environment variables.
|
|
- `ANDROID_ADB_SERVER_PORT` or `ADB_SERVER_SOCKET`: override adb server connection settings if needed.
|
|
|
|
## Available Commands
|
|
|
|
### `models`
|
|
|
|
Inspect and maintain the app's model list and filesystem entries.
|
|
|
|
- `dumpapp models list [-v|--verbose]`: list models as they appear to the UI.
|
|
- `dumpapp models dump`: dump the raw current model-list state for debugging.
|
|
- `dumpapp models refresh`: force a model-list refresh.
|
|
- `dumpapp models tags [modelId|--all]`: print model tags and extra tags.
|
|
- `dumpapp models find <keyword>`: search models by id or display name.
|
|
- `dumpapp models files`: list `.mnnmodels/` entries and symlink targets.
|
|
- `dumpapp models unlink <modelId|name>`: remove only the outer symlink entry while preserving underlying data.
|
|
|
|
### `logs`
|
|
|
|
Control runtime logging verbosity and file logging.
|
|
|
|
- `dumpapp logs get`: show the current log level.
|
|
- `dumpapp logs set <LEVEL>`: change log level. Supported values are `VERBOSE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `ASSERT`.
|
|
- `dumpapp logs file enable`: enable file logging.
|
|
- `dumpapp logs file disable`: disable file logging.
|
|
- `dumpapp logs file status`: show whether file logging is enabled.
|
|
|
|
### `market`
|
|
|
|
Inspect and control the model market network source used by the app.
|
|
|
|
- `dumpapp market status`: show current market loading state.
|
|
- `dumpapp market allow on|off`: allow or block network-based market fetches.
|
|
- `dumpapp market env dev|prod`: switch the market endpoint environment.
|
|
- `dumpapp market refresh`: force-refresh market data from the network.
|
|
|
|
### `download`
|
|
|
|
Operate model downloads without touching the UI.
|
|
|
|
- `dumpapp download source`: show the current preferred download source.
|
|
- `dumpapp download source set <SOURCE>`: switch source. Aliases are `hf`, `ms`, `ml`.
|
|
- `dumpapp download test <modelId>`: start a test download for the given model.
|
|
- `dumpapp download check-update <modelId>`: check whether the remote model has updates.
|
|
- `dumpapp download status <modelId>`: print download state for one model.
|
|
- `dumpapp download delete <modelId>`: delete a downloaded model.
|
|
- `dumpapp download pause <modelId>`: pause an active download.
|
|
|
|
### `sana`
|
|
|
|
Run Sana image-generation models from the command line.
|
|
|
|
- `dumpapp sana list`: list installed Sana models.
|
|
- `dumpapp sana run <model_path> <prompt> [options]`: generate an image with a Sana model.
|
|
|
|
`sana run` options:
|
|
|
|
- `--output <path>`: output image path. Default is `/sdcard/sana_output.jpg`.
|
|
- `--input <path>`: input image path for img2img mode.
|
|
- `--steps <n>`: inference step count.
|
|
- `--seed <n>`: random seed.
|
|
- `--cfg <true|false>`: enable or disable CFG mode.
|
|
- `--cfg-scale <f>`: CFG scale.
|
|
- `--width <n>`: output width.
|
|
- `--height <n>`: output height.
|
|
|
|
### `diffusion`
|
|
|
|
Run non-Sana diffusion image models from the command line.
|
|
|
|
- `dumpapp diffusion list`: list available diffusion-capable models.
|
|
- `dumpapp diffusion run <modelId|modelPath> <prompt> [options]`: generate an image with a diffusion model.
|
|
|
|
`diffusion run` options:
|
|
|
|
- `--output <path>`: output image path. Default is `/sdcard/diffusion_output.jpg`.
|
|
- `--steps <n>`: inference step count.
|
|
- `--seed <n>`: random seed.
|
|
|
|
### `benchmark`
|
|
|
|
Run on-device LLM benchmark cases from adb.
|
|
|
|
- `dumpapp benchmark list`: list benchmarkable models.
|
|
- `dumpapp benchmark run <modelId> [options]`: run a benchmark for one model.
|
|
- `dumpapp benchmark status`: show the current benchmark state.
|
|
- `dumpapp benchmark stop`: stop a running benchmark.
|
|
|
|
`benchmark run` options:
|
|
|
|
- `--backend <cpu|opencl>`: select backend.
|
|
- `--prompt <n>`: prompt token count.
|
|
- `--gen <n>`: generated token count.
|
|
- `--repeat <n>`: repeat count.
|
|
- `--threads <n>`: thread count.
|
|
|
|
### `storage`
|
|
|
|
Inspect and clean app internal storage, especially mmap cache leftovers.
|
|
|
|
- `dumpapp storage list`: list internal storage directories.
|
|
- `dumpapp storage analysis`: print a summarized storage analysis.
|
|
- `dumpapp storage analysis detail`: print per-entry drill-down details.
|
|
- `dumpapp storage analysis <entryModelId>`: inspect a single storage entry.
|
|
- `dumpapp storage mmap`: list mmap cache directories.
|
|
- `dumpapp storage orphans`: find orphaned mmap caches.
|
|
- `dumpapp storage clean`: clean all orphan mmap caches.
|
|
- `dumpapp storage clean <path>`: clean one relative path under `filesDir`.
|
|
- `dumpapp storage verify`: output a machine-readable integrity check.
|
|
|
|
### `config`
|
|
|
|
Validate model config loading (guards issue #4259).
|
|
|
|
- `dumpapp config validate <modelId>`: verify config path is a file (not directory) and loadMergedConfig succeeds. Fails if settings would receive wrong path (e.g. model directory instead of config.json).
|
|
- `dumpapp config dump <modelId>`: dump merged config (config_path, llm_model, llm_weight, system_prompt). RESULT=FAIL if llm_model/llm_weight empty (corrupted).
|
|
|
|
### `llm`
|
|
|
|
Manage the OpenAI-service-side LLM runtime session.
|
|
|
|
- `dumpapp llm status`: show whether a runtime session exists and which model is active.
|
|
- `dumpapp llm ensure <modelId> [--force-reload]`: create or refresh the runtime session for a model.
|
|
- `dumpapp llm run <modelId> <prompt> [--force-reload] [--use-app-config]`: ensure the runtime session for a model, then execute one prompt. By default uses `LlmSession.submitFullHistory(...)` with base config only (no custom_config merge). With `--use-app-config`: aligns with ChatActivity—uses `ModelUtils.getConfigPathForModel`, merges custom_config.json, `useNewConfig=false`, and calls `LlmSession.generate(...)` (submitNative); useful for reproducing issues that occur in the app chat but not in dumpapp.
|
|
- `dumpapp llm thinking get`: read the current thinking-mode flag from the active runtime session.
|
|
- `dumpapp llm thinking set <on|off>`: enable or disable runtime thinking mode.
|
|
- `dumpapp llm mock-latex <on|off> [path]`: enable mocked streaming markdown output, optionally loading content from a file. The command name is historical; current smoke flows reuse it for LaTeX and markdown-table rendering.
|
|
- `dumpapp llm release`: release the active runtime session.
|
|
|
|
Note: `llm ensure` remains the lifecycle primitive for loading or switching the active model session. `llm run` is the direct execution entrypoint layered on top of it.
|
|
|
|
### `openai`
|
|
|
|
Control the app's OpenAI-compatible local API service.
|
|
|
|
- `dumpapp openai status`: show service state and current config.
|
|
- `dumpapp openai diag`: print service config plus runtime diagnostics.
|
|
- `dumpapp openai start [--model <modelId>]`: start `OpenAIService`, optionally with a specific model preselected.
|
|
- `dumpapp openai stop`: stop the service.
|
|
- `dumpapp openai reset-config`: reset API settings and regenerate a default API key.
|
|
- `dumpapp openai test-chat [msg]`: send a test message through the service to validate chat flow.
|
|
|
|
### `history`
|
|
|
|
Inspect stored chat-session history.
|
|
|
|
- `dumpapp history list`: list all sessions and chat-item counts.
|
|
- `dumpapp history show <sessionId>`: print all saved chat data for one session.
|
|
- `dumpapp history check <sessionId>`: run integrity checks for one session.
|
|
- `dumpapp history diag`: run diagnostics across all history data.
|
|
|
|
### `voice`
|
|
|
|
Test and validate Voice Chat capabilities (TTS/ASR).
|
|
|
|
- `dumpapp voice status`: check voice models status (TTS and ASR paths and readiness).
|
|
- `dumpapp voice tts init`: initialize the TTS service with the default model.
|
|
- `dumpapp voice tts test [text]`: run TTS on the given text and report audio generation metrics.
|
|
- `dumpapp voice tts destroy`: release the TTS service.
|
|
- `dumpapp voice tts status`: show TTS service internal state.
|
|
- `dumpapp voice asr status`: show ASR model path and configuration.
|
|
|
|
Note: Full ASR testing requires audio input (microphone). For end-to-end ASR validation, use the Voice Chat UI smoke test (`16_regress_voice_ui.sh`).
|
|
|
|
Examples:
|
|
|
|
```bash
|
|
dumpapp voice status
|
|
dumpapp voice tts init
|
|
dumpapp voice tts test "Hello, this is a TTS smoke test."
|
|
dumpapp voice tts destroy
|
|
```
|
|
|
|
## Source of Truth
|
|
|
|
The commands above are registered in `app/src/debug/java/com/alibaba/mnnllm/android/StethoInitializer.kt`, and their behavior is implemented in the dumper plugin classes under `app/src/debug/java/com/alibaba/mnnllm/android/debug/` (including `VoiceDumperPlugin.kt`) and `app/src/debug/java/com/alibaba/mnnllm/api/openai/debug/`.
|