Inline ghost-text code completions. As you type, the plugin debounces, asks
an LLM for a completion at the cursor, and shows it as dimmed inline text via
IdeEditorService.showInlineSuggestion().
This plugin has no compile-time dependency on
ai-core; it resolves the inference service at runtime through the CodeOnTheGo plugin manager (SharedServices). Installai-corefirst, then this plugin, and configure a model in AI Assistant → AI Settings.
┌──────────────────────────┐
│ code-suggestions (this) │ ← content-change listener, debounce, ghost text
└────────────┬─────────────┘
│ SharedServices (runtime) → LlmInferenceService
▼
┌──────────────────────────┐
│ ai-core │ ← LLM inference (local llama.cpp / Gemini)
└──────────────────────────┘
- Inline ghost-text completions while typing
- 800 ms debounce to reduce LLM load
- LRU cache to avoid redundant calls
- Language-aware prompts (Kotlin, Java, Python, …)
- Graceful degradation when
ai-coreisn't loaded yet (binds lazily)
This plugin declares no plugin.permissions of its own — it only registers a
content-change listener and renders ghost text. Reading the configured
backend/model and any network access happen inside ai-core's process,
which declares those permissions.
The surrounding file content and cursor context are sent to the configured backend to generate a completion — on-device for Local, or to Google over HTTPS for Gemini. Choose the backend accordingly for sensitive code.
Prerequisites: Android SDK (API 33+), JDK 17. Create local.properties with
sdk.dir=.... No NDK or native toolchain.
cd code-suggestions-plugin
../gradlew assemblePlugin # release -> build/plugin/code-suggestions-plugin.cgp
../gradlew assemblePluginDebug # debug variantThe build resolves plugin-api.jar from the repo-root ../libs/.
- Build and install
ai-corefirst (see../ai-core/README.md). - Build this plugin, install
build/plugin/code-suggestions-plugin.cgpvia CodeOnTheGo's Plugin Manager, and restart the IDE. - Configure a model in AI Assistant → AI Settings.
CodeSuggestionsPlugin.kt— lifecycle, content-change listener, debounceSuggestionProvider.kt— prompt building, LLM call, LRU cache
GPL-3.0 — same as AndroidIDE / CodeOnTheGo.