$ show phodal/auto-dev
AutoDev is a multi-platform AI-powered coding assistant that integrates with IntelliJ IDEA and VS Code, and also runs as a standalone desktop app, CLI, web app, and mobile app. Its core engine is a Kotlin Multiplatform (KMP) agent framework that orchestrates LLM calls, tool execution (file I/O, shell, web fetch, MCP servers), and code generation/refactoring. The architecture is modular: `mpp-core` provides shared agent logic, tool schemas, linters, and document parsing; IDE-specific plugins (`mpp-idea`, `mpp-vscode`) deliver chat panels, inline completions, code review, and database integration; `mpp-ui` is a Compose Multiplatform frontend for desktop/CLI/mobile; `mpp-server` is a Ktor-based remote agent server; `xiuper-ui` implements a novel spec-driven UI DSL (NanoDSL) for rendering agent output as interactive components. The system supports multiple LLM providers (OpenAI, Anthropic, Google, GitHub Copilot, etc.), MCP protocol for tool integration, and A2A (agent-to-agent) communication. It includes a custom DSL (DevIns/Shire) for defining agent behaviors, completions, and variable resolution. While primarily an application, it includes data processing components like code graph parsing, document indexing, NLP tokenization, and heuristic scoring models, giving it a hybrid character. The codebase is large and actively developed, with frequent releases and a rich set of features, though some platform-specific implementations are stubs and there is moderate technical drift from deprecated APIs and naming inconsistencies.
The LLM identified 4 files worth highlighting for reuse:
Defines a generic Linter interface and a ShellBasedLinter base class that wraps any CLI linter (ESLint, Pylint, Hadolint, etc.) by running a shell command and parsing its output with regex. The framework provides 19+ concrete linter implementations, each with its own regex-based output parser. This pattern is reusable in any project needing to integrate multiple static analysis tools: just add a new class extending ShellBasedLinter and provide the command and parser. The design is clean, testable, and platform-agnostic (shared across JVM and JS).
Implements a composite scoring model that combines multiple scorers (BM25, TypeScorer, NameMatchScorer, RRF, etc.) with configurable weights. The scorers are independent and can be extracted into any search/ranking system. The CompositeScorer aggregates scores and reranks results. This is a clean, reusable pattern for multi-criteria relevance scoring in search or code retrieval tasks.
Provides a complete parser and renderer for NanoDSL, a spec-driven UI definition language that allows agents to declare UI components (VStack, HStack, Card, Button, etc.) with two-way binding. The DSL is parsed into an intermediate representation (NanoIR) and rendered to platform-specific UI (Compose, React, etc.). This component is self-contained and could be extracted to any project needing dynamic UI generation from AI output, demonstrating non-obvious skill in designing a concise, extensible declarative UI format.
Implements an extensible tool registry where providers (BuiltinToolsProvider, McpToolAdapter, etc.) register themselves with a priority. The registry supports lookup by name, type, and bulk retrieval. This pattern is reusable for any plugin-based system needing dynamic tool discovery. The design uses a clean registry pattern with provider abstraction, avoiding tight coupling to specific tool implementations.