jcode — один из самых эффективных по памяти coding-агент
📂 Исходный код на GitHubОдин из самых эффективных по RAM coding-агент на Rust: векторная память с графом воспоминаний, мультиагентный swarm с автоматическим разрешением конфликтов, self-dev режим, встроенный браузерный инструмент и поддержка десятков провайдеров LLM.
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