jcode — один из самых эффективных по памяти coding-агент

· 2 мин чтения
coding-agent agent-harness cli tui rust open-source multi-agent
📂 Исходный код на GitHub

Один из самых эффективных по RAM coding-агент на Rust: векторная память с графом воспоминаний, мультиагентный swarm с автоматическим разрешением конфликтов, self-dev режим, встроенный браузерный инструмент и поддержка десятков провайдеров LLM.

jcode — один из самых эффективных по памяти coding-агент

jcode — это open-source coding-агент и агентный «парнас» (harness) на Rust, позиционирующий себя как «самый эффективный по памяти» и «самый интеллектуальный» инструмент своей категории. Автор ставит во главу угла производительность и экономию ресурсов, что критично при масштабировании мультисессионных рабочих процессов: каждый запущенный агент съедает память, и на десятке параллельных сессий разница между инструментами становится огромной.

Проект распространяется под лицензией MIT, собирается из исходников через Cargo и доступен на Linux, macOS и Windows. Установка — одной командой через официальный скрипт https://jcode.sh/install (Homebrew на macOS, PowerShell на Windows).

Производительность и экономия RAM

Главное отличие jcode — агрессивная оптимизация каждой метрики. В README приведены замеры пропорциональной резидентной памяти (PSS) в сравнении с другими популярными инструментами.

1 активная сессия:

Инструмент PSS Сравнение
jcode (локальные эмбеддинги выкл.) 27.8 MB baseline
jcode 167.1 MB 6.0×
pi 144.4 MB 5.2×
Codex CLI 140.0 MB 5.0×
OpenCode 371.5 MB 13.4×
Claude Code 386.6 MB 13.9×

10 активных сессий:

Инструмент PSS Сравнение
jcode (локальные эмбеддинги выкл.) 117.0 MB baseline
jcode 260.8 MB 2.2×
pi 833.0 MB 7.1×
OpenCode 3237.2 MB 27.7×
Claude Code 2300.6 MB 19.7×

Дополнительная память на каждую новую сессию у jcode — всего ~10.4 MB (против ~318 MB у OpenCode и ~212 MB у Claude Code). Это значит, что десятки параллельных агентов в одном репозитории не обрушат память машины.

Отдельно измерена скорость запуска. Время до первого кадра у jcode — 14 мс, до первого ввода — 48.7 мс, что в десятки раз быстрее конкурентов (у Claude Code — 3.4 с до первого кадра). Интерфейс способен отрисовываться на частоте более тысячи кадров в секунду, что исключает мерцание.

Память агента

jcode реализует «человекоподобную» память. Каждый ход (каждое сообщение и ответ) эмбеддится в семантический вектор. На каждом шаге выполняется запрос к графу воспоминаний, который через косинусную близость находит релевантные записи и подмешивает их в контекст разговора. Это позволяет агенту автоматически вспоминать нужное, не сжигая токены и не вызывая инструменты памяти вручную.

Воспоминания периодически извлекаются фоновым «sideagent-ом» (по семантическому дрейфу, через K ходов с последнего извлечения, при завершении сессии) и складываются в граф. Агент также получает явные инструменты памяти — для активного поиска и сохранения, плюс поиск по прошлым сессиям для классического RAG. Периодически воспоминания автоматически консолидируются в фоновом режиме: проверяется их устаревание и конфликты.

Интерфейс: боковые панели, диаграммы, виджеты

Интерфейс включает боковую панель для вспомогательной информации: агент может загрузить туда файл и обновлять его в реальном времени, писать прямо в панель или использовать её как diff-вьювер. Панель и чат умеют рендерить диаграммы mermaid прямо в терминале. Для этого автор написал собственную библиотеку рендеринга, работающую в ~1800 раз быстрее и не имеющую зависимостей от браузера или TypeScript — mermaid-rs-renderer.

«Info-виджеты» показывают важную информацию, занимая только негативное пространство экрана, и уходят с дороги, если места нет. Есть собственная реализация скроллбека, а для плавного построгочного скролла создан собственный терминал Handterm с нативным scroll API (пока в разработке). По умолчанию интерфейс выровнен по левому краю; центрированный режим включается хоткеем Alt+C, командой /alignment или в конфиге. Эмодзи можно отключить через emoji = false в [display] в ~/.jcode/config.toml или переменной JCODE_NO_EMOJI=1.

Swarm: мультиагентная коллаборация

Можно запустить двух и более агентов в одном репозитории, и сервер будет автоматически управлять их взаимодействием. Когда агент A редактирует файл, который прочитал агент B («код уходит из-под ног»), сервер уведомляет агента B — тот может проигнорировать изменение или проверить diff на конфликт. Каждый агент умеет слать личные сообщения одному агенту, рассылать всем агентам сервера или только работающим в конкретном репозитории. Благодаря этому конфликты в параллельных сессиях разрешаются автоматически.

Агенты также могут автономно порождать собственные swarm-команды: у них есть инструмент, позволяющий нанять «тиммейтов» для параллельного выполнения задач. Главный агент становится координатором, порождённые — воркерами; группы, каналы сообщений и статусы завершения управляются автоматически. Работает как в headed, так и в headless режимах.

OAuth и провайдеры

jcode поддерживает OAuth-флоу по подпискам и множество интеграций провайдеров — можно использовать модели, за которые вы уже платите, и при необходимости откатываться на прямые API.

Встроенные логины: claude, openai (OpenAI/ChatGPT/Codex), gemini, copilot, azure, alibaba-coding-plan, fireworks, minimax, meta-muse, lmstudio, ollama, а также кастомный openai-compatible.

Для OpenAI-совместимых сервисов есть готовые именованные профили (openrouter, deepseek, kimi, moonshotai, opencode, huggingface, nebius и другие) — достаточно выполнить jcode login --provider <profile-id>, и jcode сам подставит base URL и переменную ключа. Остальные эндпоинты подключаются через jcode provider add или --provider openai-compatible, в том числе локальные серверы (localhost) без ключа. Поддерживаются vLLM, Ollama и LM Studio через стандартный OpenAI-API.

Примечательные возможности для сложных провайдеров:

  • JCODE_STREAM_IDLE_TIMEOUT_SECS — поднять таймаут для моделей, которые «молча думают» (по умолчанию 180 с, для высоких reasoning effort масштабируется автоматически).
  • context_window / context_limit на модель — задать окно контекста, когда у эндпоинта нет внятного /v1/models.
  • extra_body — внедрять нестандартные поля в тело чат-запроса (например, chat_template_kwargs для NVIDIA NIM DeepSeek reasoning-моделей).
  • Многоаккаунтность: /account позволяет быстро переключиться на вторую подписку, когда токены закончились.

MCP-конфиг

MCP-конфигурация хранится отдельно от config.toml: глобально в ~/.jcode/mcp.json, на уровне проекта в .jcode/mcp.json. Поддерживаются конфиги Claude Code (~/.claude.json, .mcp.json, .claude/mcp.json) — они читаются вживую при каждой загрузке, без устаревших снапшотов. При миграции с Codex CLI выполняется одноразовый импорт из ~/.codex/config.toml. Сейчас поддерживаются только stdio-серверы; HTTP/SSE распознаются и пропускаются с записью в лог.

Self-dev режим

jcode развивает идею кастомизации, не ограничиваясь плагинами: можно попросить агента войти в self-dev режим, и он начнёт модифицировать собственный исходный код. Вокруг этого выстроена развитая инфраструктура — агент умеет редактировать, собирать и тестировать свой код, затем перезагружать собственный бинарник и продолжать работу в ваших (возможно, многих) сессиях полностью автоматически.

Автор рекомендует для этого frontier-модель, поскольку кодовая база jcode непростая, и слабые модели могут вносить тонкие ломающие изменения. Подойдёт GPT 5.5 или последняя доступная frontier-модель.

Полезные мелочи

В README перечислены «дьявол в деталях» — недокументированные оптимизации:

  • Кэш Claude. Кэш Anthropic остывает через 5 минут; интерфейс предупреждает о холодном кэше и уведомляет о неожиданных cache miss, чтобы не тратить токены впустую.
  • Agent grep. Кастомный grep для агента: добавляет к результатам структурную информацию о файле (список функций, их смещения), позволяя агенту понять больше, не читая файл целиком, и адаптивно урезает вывод на основе того, что агент уже видел.
  • Интерливинг ввода. По умолчанию ввод перемежается с рабочим агентом, отправляясь так рано, как безопасно (не ломая KV-кэш). При Shift+Enter ввод ставится в очередь и отправляется после полного завершения хода агента.
  • Resume чужих сессий. Можно продолжить сессию из другого парнаса: поддержаны codex, claude code, opencode и pi.
  • Автоинъекция скиллов. Скиллы не загружаются все сразу: разговор эмбеддится в вектор, и при совпадении с памятью скилл автоматически подмешивается. Есть и ручной инструмент скиллов и запуск через слэш-команды.
  • Браузерная автоматизация. Встроен инструмент browser на базе Firefox Agent Bridge (действия: open, click, type, snapshot, fill_form, screenshot и др.), настраивается через jcode browser setup.

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

# Запуск TUI
jcode

# Одиночная команда без интерактива
jcode run "say hello"

# Продолжить сессию по запоминающемуся имени
jcode --resume fox

# Постоянный фоновый сервер с подключением клиентов
jcode serve
jcode connect

# Голосовой ввод из настроенной STT-команды
jcode dictate

jcode поддерживает интерактивный TUI, неинтерактивные запуски, постоянные сценарии сервер/клиент и диктовку через хоткеи без встроенного стека распознавания речи.

Планы

Автор отмечает, что агентам не нравится коммитить в «грязном» git-состоянии: по его мнению, git плохо приспособлен для мультиагентных рабочих процессов (worktrees — не решение), и здесь созрела возможность для нового git-подобного примитива. Также планируется ускорение сборки: инкрементальная debug-сборка занимает ~1 минуту, цель — 5–20 секунд за счёт рефакторинга и разделения крейтов. Готовится нативный iOS-апп, позволяющий работать с окружением личной машины через Tailscale, с функциями в стиле OpenClaw.

Полезные ссылки

Источник: https://github.com/1jehuang/jcode