Skip to main content
Glama
codepilot

codepilot

by ronronner02

CodePilot-Agent

Введите URL GitHub-репозитория — на выходе вы получите три вещи: архитектурный отчёт с привязкой каждого вывода к конкретному файлу, однораундовый code Q&A по этому репозиторию и code review по трём категориям проверок: структура / обработка ошибок / безопасность. Функция анализа репозитория также предоставляется наружу в виде MCP server, его might напрямую вызывать клиенты вроде Claude Code или Cursor.

Чем он отличается от аналовов

Каждый вывод в отчоте обяан сводиться к конктерному пути файла, и это проверяет программой, а не огранинием в пrompte. Указанный путь должен реально существововать, номер строки должен находиться в пределах действительного числа строк файла. Ее выводы, не прошедшие проверку, отбрасываются и учитываются в разделопуском отчо. Поэтому здесь не появится фраз вроде «проектом использет многослойную архитекттуру, структура кода понятна» — таке можно сказать о любом репозитории.

Related MCP server: Gitingest-MCP

Архитектура

仓库地址 → clone 与语言识别 → 静态解析层(tree-sitter)
                                    ↓
                        结构骨架:符号表 · 依赖图 · 模块聚类 · 入口点
                                    ↓
              ┌─────────────────────┼─────────────────────┐
              ↓                     ↓                     ↓
     Planner 定深挖范围        Reviewer 三类检查      切块与向量索引
              ↓                     ↓                     ↓
   模块子 Agent 并行分析         评审发现            单轮代码问答
              ↓
      汇总 + 引用校验 → 架构报告

Определённые части получаются определенёными инструментами: деерево файлов, граф импортов, кластеризация модулей, точки входы, распознание техностека — всё это выдача статического разбораPare, без LLM. Только то, что требует суждений, передаётся агентам — Planner решает, какие модули копать глубже, модульные субагенты читают код, candidate коды Reviewer, локализованных через AST, отдаются на решение моделе.

RAG обслуживает только цепочкий Q&A. Вопросы об архитуктуре (сколько слоёв, кто от коже зависит, где определяется входа) — это графе вопросы, их не нельзя отвить через подобие ембеддинго.

Быстрый старт

С Docker (рекомендуемая)

cp .env.example .env
# 编辑 .env,至少填 DEEPSEEK_API_KEY
docker compose up --build

Откройте http://localhost.

Оба порта привязаны только к 127.0.0.1 — на бэкенде нет слóя аутентификации (сосзнатная решение для локального однопользовательского запуска), а он может клонировать любый репозиторий и тратW. Если хотите доступ к репозиторию, нужнto добавить аутентификацию, не менτον просто на 0.0.0.0.

Индексный кэш хранится в именоном томе codepilot-data, Heсхзается после перезапуска контейнера, повторный анализ того же репозитория возьмёт из кэша и пропустительный векторизацию.

Локальная разработка

# 后端
pip install -e ".[dev]"
python -m uvicorn backend.main:get_app --factory --port 8000

# 前端(另开一个终端)
cd frontend && npm install && npm run dev

Фронтенд на http://localhost:5173, проси Vite переннаправляет /api на 8000.

Конфигурация

Скопируйте .env.example в .env. Обязателен только один пунк:

变量

Значение

DEEPSEEK_API_KEY

API-ключ для LLM. Название переменной сохранено от DeepSeeK, но подойдёт любой endoint, совместимый с протоколом OpenAI

Частье настраиваемые:

变量

По умолчанию

Значение

DEEPSEEK_BASE_URL

https://api.deepseek.com

OpenAI-совместимый endoint

LLM_MODEL_FLASH

—

Категоготя фан-out (частье, низкое суждиение): анализ модулей

LLM_MODEL_PRO

—

Категoria сумарникая (режéc тость э, требует суждений): Planner, решenable по ревью, свод отчет

EMBEDDING_PROVIDER

local

С провайдером local при первом запуске скачается модель; со api — через удалённый сервис

LLM_MAX_CONCURRENT

2

Число одновременных LLM-запросов в трат. Черес промежуточный шлюз слишком высокая конвеurrency вызывает таймаут на верный стороне

MAX_PARSEABLE_FILES

1500

входной порог. В TypeScript проектх число файлов по природе выше, чем в Python-проекте того же размера, можн придётся увелиить

.env не хранится в версии конльном репозитории и не попадает в образ — .dockerignore исключает его, а compose добавляет значения через env_file в время выпол нения.

docker compose config as a видит секреты записью. При разборе конфи workers compose подставляет значения из env_file, так что в выводе этой команды будет настоящий лключ. когда решаете проблему с конфигура may not не вставляйте его в issue, журнал или чат. Что посмотреть структуру без вывода значений, отфильтруйте блок с переменными окружения а потом смотр рите.

MCP server

не в контейнере (он работает по транспорту stdio, клиент сам запускает его процес). Способ настройки и список инструментов — backend/mcp_server/README.md.

Минимальная настрой (.mcp.json для Claude Code):

{
  "mcpServers": {
    "codepilot": {
      "command": "python",
      "args": ["-m", "backend.mcp_server.server"],
      "cwd": "/绝对路径/CodePilot-Agent"
    }
  }
}

Инструменты читают локальные дан уже пронализированных репозиториев, поэтому сначала отправите репозиторий на анализ через интерфейс или API.

Раз работ

python -m pytest              # 后端测试
python -m mypy backend        # 类型检查
cd frontend && npm test       # 前端测试
cd frontend && npm run build  # 前端构建(含类型检查)

Известные ограничения

Это осознанные решения, а не ниски:

Символьный разбор подерживается только Python и TypeScript. Файлы других языков влючаются в девево файлов и соответют в статистиकу размера, но не заносятся в табл. The report missing section lists personal no.

find_references — это текстовый поиск, ограниченный графом зависимостей, а не полноценный анализ исходных ссылок. Слóa разбора не извлекает точкивызовов, поэтому сначала он не индексирует символ table no. file define, а потом поят текстовый поиск по файлам, которые его импортают, — это гораздо точнее grep по всему репозиторию, но даёт совпадения с одноименными локальными переменными and comments. Инструмент содержит это примечание в ответе.

«Мёртвый код» не выделяется в отдельные находки. Критерий на уровне файл (нулеевая входящая degree) и не входная точка на базовых репозиториях почти 100% false positive — вызывающие кода тестов, конфигов, загрустителей находится за пределами репозито. Чтобы плноценнно это дела, нужен символьный анализ ссылок. Структурная проверка в ревьу даёт счётчики, но не сравформулируемый список.

Q&A однораундовый — контекст не сохраняется, query rewriting нет.

** нет слóя авторизации.** Backend API и MCP server предполагают, что работает локально для одного пользователя.

** Состояние задач анализа г on in memory.** After restart of service, unfinished tasks are lost; completed index cache remains, and re-submitting the same repo to hits in seconds. Also because backend always exactly one worker.

License

Не указана.

Related MCP Connectors

Related MCP Servers