Sponsored by Deepsite.site

aica - AI Code Analyzer

Created By
dotneet9 months ago
aica(AI Code Analyzer) reviews your code using AI. Supports CLI and GitHub Actions.
Content

aica - AI Code Analyzer

Motivation

There are already excellent code review tools such as pr-agent and cursor. However, pr-agent relies on code hosting services like GitHub, which limits its usability, and cursor is not open source, meaning it cannot be fully customized or integrated with other tools.

So, I decided to create a new tool with the following characteristics:

  • Customizable
  • Open Source
  • Platform Independent

Features

  • AI Coding Agent
  • AI Code Review
  • MCP(Model Context Protocol) supported. stdio and SSE transports are supported.
  • Automatic knowledge retrieving for code review
  • Symbol based code search for retrieving knowledge
  • Vector based document search for retrieving knowledge
  • Generate summary of changes
  • Generate commit message
  • Create pull request with AI-generated title and body
  • Prompt customization
  • Slack notification
  • Single binary executable by bun build --compile
  • GitHub Actions integration. (See wiki page to setup actions.)

Install

Build and install a binary:

# Install bun before build aica.
#
# Official Install Document:
# https://bun.sh/docs/installation#installing

git clone https://github.com/dotneet/aica.git
cd aica

bun install
bun run build
cp ./dist/aica path-to-your-bin-directory

Setup GitHub Token:

# if GITHUB_TOKEN is not set, aica try to get token from `gh auth token`.
export GITHUB_TOKEN=your_github_token

Setup LLM:

# You can set the following items in your environment variables or aica.toml file.
# Configure at least one of the following providers:

# Anthropic (If you use agent, strongly recommend to use claude sonnet model)
export AICA_LLM_PROVIDER=anthropic
export ANTHROPIC_API_KEY=your_api_key
export ANTHROPIC_MODEL=claude-3-5-sonnet-20241022

# OpenAI
export AICA_LLM_PROVIDER=openai
export OPENAI_API_KEY=your_api_key
export OPENAI_MODEL=o3-mini

# Gemini
export AICA_LLM_PROVIDER=google
export GOOGLE_API_KEY=your_api_key
export GOOGLE_MODEL=gemini-2.0-flash

Configuration

You can customize the configuration by creating a aica.toml file.

See aica.example.toml.

aica.toml must be placed in one of the following directories.

  • root directory of the repository
  • ${HOME}/.config/aica/aica.toml
  • ${GITHUB_WORKSPACE}/aica.toml

Language

You can specify the language for AI output. The language can be specified either through AICA_LANGUAGE or in the language section of aica.toml. By default, the language is automatically detected from the LANG environment variable.

export AICA_LANGUAGE=Japanese

Priority:

  1. AICA_LANGUAGE
  2. language.language in aica.toml
  3. Automatic detection from LANG

Usage

Review

# review the diff from HEAD
aica review [options] [pattern]

# review specific files
aica review src/main.ts

# review the files matching the specific glob pattern
aica review "src/**/*.ts"

Options:

  • --dir: Target directory path
  • --slack: Send notification to Slack

Agent

# execute AI agent with a prompt
aica agent "your prompt here"

# execute AI agent with a instruction file
aica agent -f instruction.txt

# conversation mode. You can interact with AI agent by typing your prompt.
aica agent

This command executes a task using an AI agent. The agent automatically determines and executes the necessary actions based on the given prompt.

Recommend to use anthropic claude 3.5 sonnet for agent.

NOTE: This command has potential to break your file system. Please be careful.

Aica Agent as an MCP Server

# start a MCP server
aica mcp server

# start a MCP server with a config file
aica mcp server --config aica.toml

Reindex

# reindex the code and document databases
aica reindex

Summary

# generate a summary of the diff from HEAD
aica summary [options]

Options:

  • --dir: Target directory path

Commit Changes

This command commits changes with an AI-generated commit message.

# commit all changes(including untracked and unstaged changes) with an AI-generated commit message
aica commit [options] # commits all changes (including untracked and unstaged changes) with an AI-generated commit message

aica commit --staged # commits only staged changes with an AI-generated commit message

aica commit --push # commits all changes and pushes to remote repository

Options:

  • --staged: commit only staged changes.
  • --dryRun: Show result without execution
  • --push: Push to remote repository after committing

Create Pull Request

This command creates a pull request on GitHub.

# Creates a pull request. If there are changes, they will be committed automatically.
aica create-pr [options]

# Creates a pull request with only staged changes
aica create-pr --staged

Options:

  • --withSummary: Generate summary of diff from HEAD (default: true)
  • --body: Pull request body
  • --dryRun: Show result without execution
  • --staged: Only include staged changes

Generate Commit Message

# generate a one-line commit message based on the diff from HEAD
aica commit-message [options]

Options:

  • --dir: Target directory path

Show Configuration

# show current configuration
aica show-config [options]

Options:

  • --default: Show default configuration

Other Commands

  • aica --version: Show version information
  • aica --help [command]: Show help information for a specific command or general help

Add Context

.cursorrules and .clinerules are automatically added to the context. To customize the context, configure the [rules] section in aica.toml.

Additionally, .cursor/rules/*.mdc files are supported by default. This function can be disabled through the settings.

MCP(Model Context Protocol)

create a mcp.json file to define the MCP server.

example:

[
  {
    "name": "example-server",
    "type": "stdio",
    "command": "node",
    "args": ["./server.js"]
  },
  {
    "name": "example-server",
    "type": "sse",
    "url": "http://localhost:3001/sse"
  }
]

set setupFile in aica.toml like below.

[mcp]
setupFile = "mcp.json"

GitHub Actions

Setup

See wiki page for details.

Commands

You can interact with AI features by leaving comments with the following commands.

# edit the code with AI
/aica edit "your prompt here"

# update summary in the pull request body
/aica summary

# review the latest diff
/aica review
Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
Playwright McpPlaywright MCP server
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Serper MCP ServerA Serper MCP Server
WindsurfThe new purpose-built IDE to harness magic
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
Tavily Mcp
ChatWiseThe second fastest AI chatbot™
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
Amap Maps高德地图官方 MCP Server
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
CursorThe AI Code Editor
DeepChatYour AI Partner on Desktop
Context7Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.