Files
2026-07-13 12:37:06 +08:00

4.1 KiB

Android Permissions

MCA keeps the Android permission surface intentionally small.

Declared Permissions

Permission Why it is used
INTERNET Connect to user-configured cloud API endpoints, web search providers, ModelScope downloads, and the optional local API/web surfaces.
ACCESS_NETWORK_STATE Detect network availability before cloud calls, downloads, and local API status checks.

Files and Models

MCA does not request broad storage permissions in the manifest. File and model selection should happen through Android system pickers or app-managed storage. Model files, downloaded assets, and generated images remain on device unless the user exports, shares, or deletes them.

Cloud Requests

When a cloud chat or image engine is selected, prompts and request parameters are sent to the provider endpoint configured by the user. MCA does not bundle provider keys or model weights.

Web search is disabled until the user configures and enables a search provider in Settings. MCA supports manual, smart-auto, and always-on trigger modes. When a turn triggers keyword web search, MCA sends the search query to the configured SearxNG, Brave Search, Tavily, Jina Search, or custom JSON endpoint, then injects a shortened source summary into that turn only. If the user provides a direct URL, MCA can read that page after web search is enabled even when no search API is configured. Source URLs may be fetched to improve answer quality when page fetching is enabled. Provider endpoints may be self-hosted, but readable page fetching and direct URL reading block localhost, private LAN, link-local, and reserved addresses by default for safety. When Jina Search is selected with a key, MCA may use Jina Reader to retrieve cleaned Markdown for public pages whose direct readable content is too weak; this does not bypass the private-network guard. Multiple direct URLs, expanded search queries, and fetched page bodies are read concurrently to reduce latency. Successful keyword searches may be kept in a short in-memory local cache to reduce repeated provider requests; direct URL reads are not cached, and cache entries do not contain API keys. Search provider API keys are stored on device and encrypted with Android Keystore when available. Recent search diagnostics are stored locally for troubleshooting and can be cleared from the web search settings page; they include queries, status summaries, latency, trigger reasons, partial expanded-query warnings, source counts, source URLs, provider labels, source snippets, and closed-loop evidence showing whether prompt context and source-card data were produced, but not API keys. MCA also computes a local source quality score from usable source count, readable content length, independent hosts, and safety blocks; this score is used for diagnostics and prompt caution only. The web search test in Settings uses the current form values, so it can verify a provider or direct URL reading before saving the configuration or loading any chat model. The closed-loop self-test simulates one chat turn and records provider results, prompt context, source-card data, quality scoring, and cache status. The optional public JSON self-check filler uses a no-key public endpoint only to verify the integration path; user questions typed for that test are sent to that endpoint just like any configured provider. Custom JSON endpoints may return a top-level array, an object containing results, items, data, hits, or organic_results, or nested variants such as data.results; common URL and title fields such as html_url, story_url, full_name, and story_title are accepted. When smart query expansion creates multiple searches, MCA keeps successful sources even if one expanded query fails. Public SearxNG instances may rate-limit, block automated JSON requests, or change policy without notice; use a self-hosted SearxNG instance, Brave Search, Tavily, Jina Search, or another trusted endpoint for reliable keyword search.

Diagnostics

Diagnostic logs are local files. Review them before sharing because they may include model names, device information, prompts, generated text, or provider error messages.