Русский | English
Полноценный универсальный агент в одном статическом исполняемом файле на Go.
ReAct, инструменты для файловой системы и командной строки, MCP, навыки, опциональный OpenAI-совместимый API со встроенным интерфейсом, планировщик и долговременная память.
Удобный для IDE форк, который легко адаптировать к выбранному редактору.
Foxxy Agent основан на coddy-agent проекта Coddy (MIT). Этот форк сохраняет архитектуру исходного проекта и совместимость с его обновлениями, но меняет оформление дистрибутива (репозиторий, имя исполняемого файла и релизы) и упрощает адаптацию к IDE.
Что FoxxyCode добавляет к coddy-agent (см. полный список):
- Нативное настольное окно (WebView2) с системными уведомлениями, звуковым сигналом и пошаговым знакомством при первом запуске
- Глубокая интеграция с IDE — контекст открытых файлов (
<foxxycode_ide_context>), отслеживание терминала (@terminal), упоминание файлов перетаскиванием, выбор папки проекта и нативные встроенные diff в IntelliJ - Интерактивный браузерный инструмент — управляет настоящим Chrome через chromedp и возвращает модели снимки экрана (
-tags=browser); подробнее в разделе браузерного инструмента - Автоматическое сжатие контекста — по умолчанию автоматически суммирует длинные диалоги
- Русская локализация настроек и полный ребрендинг дистрибутива в
foxxyCode
FoxxyCode — совместимая с distroless среда выполнения агента: её можно помещать в минимальные образы (scratch, distroless, рабочие каталоги только для чтения), не устанавливая полноценную системную оболочку. Инструменты grep и glob используют системный ripgrep, когда он доступен, и переключаются на встроенные реализации на Go, когда его нет. Уровень среды (ACP RPC, сессии, промпты, провайдеры) не меняется, если ограничить набор инструментов или управлять агентом из автоматизации вместо IDE. Архитектура также рассчитана на контейнерные кластеры — множество экземпляров FoxxyCode в Docker с заданными оркестратором ограничениями, корневой ФС только для чтения и подключённым рабочим каталогом. При этом сохраняется полный контроль над каждым контейнером, как в системах класса agent OS или swarm-агентов, а не в едином общем пуле чатов.
- Возможности
- Быстрый старт
- Обновление
- Режимы работы
- Интеграция с редакторами и IDE
- Правила
- Навыки
- Интеграция MCP-серверов
- Шлюз мессенджеров
- Справочник по конфигурации
- Архитектура
- Документация
- Примеры (ACP через stdio)
- Постоянные сессии
- Разработка
- Лицензия
- Среда выполнения — прежде всего — ACP-сервер, жизненный цикл сессий, промпты, LLM-бэкенды, объединение MCP и готовый для distroless исполняемый файл
- Цикл ReAct — LLM чередует рассуждение, действие (вызов инструментов) и наблюдение за результатами; профиль кодинг-агента доступен из коробки
- Четыре режима работы —
agent(полный доступ к инструментам),plan(планирование без реализации),docs(защищённое редактирование Markdown-документации) иask(ответы и исследование без изменений) - Правила — автоматически находит
.cursor/rules/,.foxxycode/rules/,.claude/rules/,.codex/rules/и вложенные**/AGENTS.md(соглашение agents.md) в рабочем каталоге сессии; подробнее в разделе Правила - Навыки — slash-команды и пакеты
SKILL.mdизskills.dirs(по умолчанию:~/.agents/skills,~/.foxxycode/skills,${CWD}/.foxxycode/skills; более поздний каталог имеет приоритет); подробнее в разделе Навыки - Фоновые задачи —
run_commandумеет работать отдельно от хода (background: trueплюс собственная оценка моделиexpected_seconds);background_list/background_output/background_wait/background_stopзабирают результат позже, панель Фоновые задачи в UI показывает, что ещё выполняется, а диалог разрешений умеет расширить грант до целой программы (curl,git status), чтобы серия похожих вызовов спрашивала один раз; подробнее в разделе Фоновые задачи - Интеграция MCP-серверов — подключение любого MCP-сервера для доступа к дополнительным инструментам
- Несколько LLM-провайдеров — OpenAI, Anthropic, Ollama и любой OpenAI-совместимый API
- Мультимодальность и вложения — изображения и файлы можно прикреплять через поле ввода (📎), если в настройках модели указано
multimodal: true; файлы сохраняются в~/.foxxycode/sessions/<id>/assets/, передаются в контекст агента и отображаются в сообщении пользователя - Уровень рассуждения — для моделей с рассуждением (gpt-5, серия o, модели Claude с thinking) выпадающий список в поле ввода задаёт уровень (
minimal/low/medium/high), который преобразуется в OpenAIreasoning_effortили Anthropic extended-thinkingbudget_tokens; поддержка определяется автоматически по идентификатору модели и настраивается для каждой модели — см. Настройку - Протокол ACP — FoxxyCode работает как ACP-сервер (
foxxycode acp); его можно подключить к редактору или скрипту с ACP-клиентом (см. Интеграцию с редакторами и IDE) - Удалённое выполнение по SSH — встроенный инструмент
ssh_run_commandвыполняет команды на удалённых узлах через реализацию SSH на чистом Go, без внешнего исполняемого файла; аутентификация использует SSH-агент (SSH_AUTH_SOCK) или ключи из~/.ssh— см. Настройку - Поддержка Subversion наравне с git — когда в рабочей папке найдена рабочая копия SVN, рядом с чипом git появляется чип SVN (ветка
trunk/branches/<имя>и ревизия): ветку можно переключить на месте (svn switch) или выгрузить в отдельную папку-ветку. Агент работает через отдельные инструментыsvn_info,svn_status,svn_diff,svn_log,svn_list,svn_add,svn_revert,svn_resolve,svn_update,svn_commit,svn_switch,svn_merge,svn_checkout— изменяющие спрашивают разрешение. Определение git и svn независимо, поэтому папка-ветка SVN с git-репозиторием внутри работает с обеими системами. Отключается в настройках (vcs.svn.enabled); без установленного клиента svn всё просто скрыто — см. Настройку - Шлюз мессенджеров — опциональный адаптер Telegram-бота (
-tags gateway.telegram), отдельные сессии пользователей, режимы изоляции групп и ACL администраторов; архитектуру можно расширить для Discord, Slack и других сервисов — см. Шлюз мессенджеров
FoxxyCode работает как ACP-сервер (foxxycode acp). Obsidian, VS Code, Zed, скрипты и встроенный интерфейс foxxycode http выступают клиентами и используют одни и те же сессии в FOXXYCODE_HOME, если настроены на общий домашний каталог.
Указывайте в клиентах абсолютный путь к исполняемому файлу, не полагаясь на PATH: некоторые среды запускают агента через cmd /c или sh -c без пользовательского PATH (в Windows: %LOCALAPPDATA%\Programs\foxxycode\foxxycode.exe; см. docs/install.md).
Описание протокола: docs/acp-protocol.md. Примеры среды: examples/acp/.
Сборка из исходников (рекомендуется; требования перечислены в разделе «Другие способы установки»):
git clone https://github.com/hijera/foxxycode-agent
cd foxxycode-agent
make build TAGS="http ui scheduler memory"
make install # копирует build/foxxycode в ~/.local/bin или /usr/local/binВ Windows (или без GNU Make) используйте интерактивный мастер:
python scripts/build.py — русскоязычное консольное меню для сборки CLI, плагина IntelliJ, VS Code VSIX, выбора тегов и целевых платформ. Подробнее в docs/build.md.
Можно также скачать архив для своей платформы из GitHub Releases и добавить исполняемый файл foxxycode в PATH.
Создайте начальную конфигурацию: mkdir -p ~/.foxxycode && cp config.example.yaml ~/.foxxycode/config.yaml.
Windows. Поместите исполняемый файл в
%LOCALAPPDATA%\Programs\foxxycode\foxxycode.exe; конфигурация и сессии хранятся в%USERPROFILE%\.foxxycode\(используйте$env:USERPROFILE, а не$HOME). Команды агента выполняются черезpwsh, затем Windows PowerShell, затемcmd.exe; на Unix — черезbash, затемsh. Терминал, открытый во время установки, не увидит обновлённыйPATH— откройте новый или обновите переменную в текущем. Подробнее:docs/install.md.
Затем укажите ключ провайдера в ~/.foxxycode/config.yaml (или переменную среды OPENAI_API_KEY) и запустите foxxycode http для веб-интерфейса либо foxxycode acp для клиента редактора.
Docker — тот же полный исполняемый файл доступен в образе ghcr.io/hijera/foxxycode-agent: выполните docker compose up -d (см. Docker).
В дальнейшем обновляйтесь командой foxxycode update -y (см. Обновление).
Другие способы установки (сборка из исходников, Go install, ручная сборка)
Требования для сборки
- Go — та же минорная версия, что указана в
go.mod(сейчас 1.25). - Git — Makefile использует его для встраивания номера версии.
- Node.js / npm — нужны только при сборке с тегами
httpиui(Makefile запускаетui-buildдля встраиваемых ресурсов).
Установка через Go (минимальный модуль без тегов http / ui)
go install github.com/hijera/foxxycode-agent/cmd/foxxycode@latestПримечание: go install называет исполняемый файл по каталогу пакета (foxxycode). Чтобы получить foxxycode http, встроенный SPA, планировщик и память, используйте архив релиза или соберите проект из исходников (см. Установку).
Ручной вызов go build
Если TAGS содержит http и ui, сначала выполните make ui-build.
make ui-build
VERSION="$(make -s print-version)"
go build -tags=http,ui,scheduler,memory \
-ldflags "-X github.com/hijera/foxxycode-agent/internal/version.Version=${VERSION}" \
-o build/foxxycode \
./cmd/foxxycode/Минимальный исполняемый файл только с ACP: make build (без тегов http, UI, планировщика и памяти).
Настольное приложение Windows (GUI на WebView2; запускается двойным щелчком по foxxycode-desktop.exe):
make build-desktopНастольное приложение открывает проекты как папки: кнопка проекта в заголовке чата открывает нативный диалог выбора каталога Windows, новые чаты запускаются в выбранной папке, а недавние проекты сохраняются в ~/.foxxycode/projects.json (GET/PUT /foxxycode/project, GET /foxxycode/projects/recent). Если -cwd не указан явно, при запуске восстанавливается последний открытый проект.
Справочник по сборке: docs/build.md.
foxxycode -v выводит встроенную версию. foxxycode acp --help показывает параметры ACP (--home, --cwd, --config и другие).
В переменной TAGS для Makefile используйте пробелы (make build TAGS="http ui scheduler memory"), а в go build — запятые (-tags=http,ui,scheduler,memory).
| Тег | Что включает | Документация |
|---|---|---|
memory |
Компонент долговременной памяти (memory.enabled в YAML); вместе с http — REST для памяти сессии в /foxxycode/sessions/{id}/memory/* |
external/memory/README.md |
http |
foxxycode http, REST-шлюз, /docs, /openapi.yaml |
docs/http-api.md |
ui |
Встроенный SPA на / (требует http) |
docs/ui.md, DESIGN.md |
scheduler |
Демон планировщика и инструменты foxxycode_scheduler_*; вместе с http — REST /foxxycode/scheduler |
docs/scheduler.md, external/scheduler/README.md |
browser |
Интерактивные браузерные инструменты (foxxycode_browser_*: navigate/click/fill/hover/scroll/screenshot/evaluate), управляющие локальным Chrome/Chromium через chromedp; модель видит снимки страницы (browser.enabled в YAML) |
docs/browser-tool.md |
gateway.telegram |
Адаптер Telegram-бота — подкоманда foxxycode gateway, отдельные сессии пользователей и контроль доступа |
docs/gateway.md |
gateway |
Все адаптеры мессенджеров (надмножество gateway.telegram; позволяет добавлять Discord и Slack без изменений ядра) |
docs/gateway.md |
desktop |
Настольное приложение Windows на WebView2 (foxxycode desktop / foxxycode-desktop.exe; требует http, ui и Windows) |
docs/build.md |
Расширенное описание и соответствие Docker-сборке: docs/build.md.
Образы релизов публикуются в GitHub Container Registry под именем ghcr.io/hijera/foxxycode-agent (теги latest, X.Y.Z и другие; платформы linux/amd64 и linux/arm64). Для каждого SemVer-тега также создаются архивы GitHub Release для Linux, Windows, macOS Intel и Apple Silicon; подробнее в docs/build.md. Стандартный образ включает http, ui, scheduler и memory — тот же набор функций, что и make build TAGS="http ui scheduler memory".
1. Конфигурация и рабочий каталог (из корня репозитория или другого каталога, в котором хранится config.yaml):
cp config.example.yaml config.yaml
mkdir -p workspace foxxycode_home
# Отредактируйте config.yaml: нужен как минимум api_key одного провайдера
# (либо передайте OPENAI_API_KEY и другие переменные через Compose)2. Запуск через Compose (загрузка опубликованного образа без локальной сборки):
docker compose pull
docker compose up -dЧтобы собрать образ локально, используйте docker-compose.dev.yml: docker compose -f docker-compose.dev.yml up -d --build.
3. Откройте встроенный интерфейс в браузере на хосте:
http://127.0.0.1:12345/
SPA доступен по GET / после запуска foxxycode http. Выберите модель в поле ввода (YAML-бэкенды из GET /v1/models), режим agent, plan, docs или ask, затем отправьте сообщение. Интерфейс создаст сессию и начнёт потоковую передачу ответа через POST /v1/responses. Файловые и консольные инструменты агента работают в подключённом каталоге (./workspace → /workspace внутри контейнера). Редактор YAML в реальном времени: http://127.0.0.1:12345/#/settings.
Проверка без браузера: curl -sS http://127.0.0.1:12345/v1/models | head.
HTTP-интерфейс не защищён авторизацией — открывайте порт 12345 только в доверенных сетях. Все параметры Compose, тома и теги CI-образов описаны в docs/docker.md. Скрипт быстрой проверки: examples/httpserver/docker.sh.
FOXXYCODE_HOME(илиfoxxycode acp --home) — каталог состояния агента. По умолчанию~/.foxxycode. Процесс создаёт в нёмsessions/иskills/. Стандартный путь к конфигурации —$FOXXYCODE_HOME/config.yaml.FOXXYCODE_CWD(илиfoxxycode acp --cwd) — стандартный рабочий каталог сессии, когдаsession/newпередаёт пустое значениеcwd. По умолчанию это текущий каталог процесса при запуске. Если редактор передаёт путь вsession/new, используется именно он.
По умолчанию FOXXYCODE_HOME указывает на ~/.foxxycode. Если не задана переменная FOXXYCODE_CONFIG и не передан параметр --config, основным файлом конфигурации будет config.yaml в $FOXXYCODE_HOME/config.yaml.
Скопируйте пример и отредактируйте его:
mkdir -p ~/.foxxycode && cp config.example.yaml ~/.foxxycode/config.yamlЕсли $FOXXYCODE_HOME/config.yaml отсутствует, загрузчик может использовать config.yaml из текущего рабочего каталога процесса — это удобно при запуске из клона репозитория. Подробнее в docs/config.md.
Провайдеры и модели
providers— именованные бэкенды (type:openaiдля OpenAI и OpenAI-совместимых HTTP API,anthropicдля Anthropic,neuraldeepдля хаба NeuralDeep,codexдля ChatGPT OAuth через официальный Codex backend). Полеnameдолжно состоять из ASCII-букв, цифр, дефиса или подчёркивания и начинаться с буквы: оно становится префиксом идентификатора модели. Провайдеры с API-ключом принимаютapi_key(строка, выражение${ENV}или пустое значение для чтенияNAME_API_KEY) и опциональныйapi_base. Дляcodexвойдите через Sign In with ChatGPT во встроенном UI или выполнитеfoxxycode codex loginв терминале;api_keyиapi_baseигнорируются, а токены хранятся в$FOXXYCODE_HOME/providers/<name>/. Codex используется только как модельный backend: системный prompt, инструменты и разрешения остаются FoxxyCode. При отсутствии управляемого токена поддерживается fallback на~/.codex/auth.jsonот Codex CLI.models— доступные для выбора модели. Строкаmodelимеет вид<provider_name>/<api_model_id>, гдеprovider_nameсовпадает сproviders[].name. Доступные параметры:max_tokens,temperatureи опциональныйmax_context_tokens.agent— полеmodelвыбирает стандартную модель ReAct и должно совпадать с одной из записейmodels[].model. Параметрыmax_turnsиmax_tokens_per_turnограничивают один пользовательский запрос. Поверх этих ограничений работает защита от зацикливанияloop_guard(по умолчаниюtrue): поток ответа, выродившийся в повтор одного и того же фрагмента, обрывается (loop_stream_repeat_cycles), а инструмент, который запрашивают снова и снова с теми же аргументами, перестаёт выполняться (loop_tool_repeat_limit). Сначала модель подталкивают вернуться к задаче; ход, который продолжает зацикливаться послеloop_nudge_maxподсказок, завершается уведомлением.
Пример с провайдером openai и моделью gpt-5.4-mini; храните секреты в переменных среды, а не в Git:
providers:
- name: openai
type: openai
api_key: "${OPENAI_API_KEY}"
models:
- model: "openai/gpt-5.4-mini"
max_tokens: 400000
temperature: 0.2
agent:
model: "openai/gpt-5.4-mini"
max_turns: 35
max_tokens_per_turn: 128000Экспортируйте переменную, на которую ссылается YAML:
export OPENAI_API_KEY="sk-..."Другие варианты (Anthropic, Ollama, нестандартное значение api_base и значения из переменных среды по умолчанию) описаны в config.example.yaml и docs/config.md.
Официальные CLI-сборки публикуются в GitHub Releases (например, foxxycode_0.9.3_linux_amd64.tar.gz). Каждый релиз содержит полный набор функций сборки make build TAGS="http ui scheduler memory".
Команда foxxycode update загружает архив для текущей ОС и архитектуры и заменяет запущенный исполняемый файл с разрешением символических ссылок. Обычно так обновляют установку после make install (~/.local/bin/foxxycode) или локальный артефакт командой ./build/foxxycode update.
1. Посмотрите, какая версия запущена
which foxxycode
foxxycode -v2. Проверьте наличие нового релиза
foxxycode update --checkКод завершения 0 означает, что установлена последняя опубликованная версия X.Y.Z или новее. Код 1 означает, что доступен новый релиз.
3. Установите обновление
foxxycode update # спрашивает [y/N]
foxxycode update -y # без подтверждения4. Проверьте результат
foxxycode -v
foxxycode http --help # только если сборка содержит -tags=http (как официальные релизы)Основные параметры
| Параметр | Назначение |
|---|---|
--check |
Только проверить наличие обновления, ничего не загружая. |
-y / --yes |
Установить без подтверждения. |
--version X.Y.Z |
Установить конкретный релиз, а не только последний. |
--repo owner/name |
Использовать другой GitHub-репозиторий (по умолчанию hijera/foxxycode-agent). |
Примечания
- Обновляйте именно тот файл, который собираетесь использовать. Если
which foxxycodeуказывает на~/.local/bin/foxxycode, запускайтеfoxxycode updateиз этой установки, а не другую копию изPATH. $FOXXYCODE_HOMEс конфигурацией, сессиями и навыками не изменяется; заменяется только исполняемый файл.- Для сборки из исходников или изменения тегов используйте
make build. Для контейнеров —docker compose pull. Таблицы платформ, ограничения и другие способы обновления приведены в docs/update.md.
Режим полноценного выполнения задач. Агенту доступны все инструменты:
- чтение и запись файлов;
- выполнение команд оболочки с запросом разрешения;
- поиск по кодовой базе;
- вызов инструментов MCP-сервера.
Лучше всего подходит для генерации кода, рефакторинга, отладки и реализации новых функций.
Режим планирования и документирования с ограниченным набором инструментов:
- чтение и поиск в рабочем каталоге;
- использование оболочки и настроенных MCP-инструментов для исследования;
- сохранение и загрузка проектных планов специальными инструментами.
Когда план готов, самостоятельно переключитесь в режим agent для полноценной работы с инструментами и реализации.
Лучше всего подходит для архитектурного планирования, спецификаций, проектной документации и ревью кода.
Режим сопровождения документации с закрытым набором инструментов:
- запрос на ревью ничего не изменяет, если пользователь явно не попросил обновить файлы;
- можно читать и искать в рабочем каталоге, а затем сверять утверждения с реализацией и наблюдаемыми результатами тестов;
- файлы
.mdвнутри рабочего каталога сессии можно создавать и редактировать защищёнными инструментамиdocs_writeиdocs_edit; - недоступны оболочка, MCP, общие операции изменения файлов, инструменты планов и списков задач.
Markdown-инструменты запрещают выход за пределы рабочего каталога и переход по символическим ссылкам, защищают internal/prompts/, требуют явного согласия перед перезаписью существующего файла и принимают только непустое уникальное точное совпадение при точечном редактировании, кроме случаев намеренной замены всех совпадений. Для изменения исходного кода или конфигурации переключитесь в режим agent.
Лучше всего подходит для синхронизации README и docs/ с кодом, обновления руководств оператора и описания API.
Режим ответов на вопросы и исследования без изменения проекта:
- можно читать и искать в рабочем каталоге без инструментов записи файлов или документации;
- доступны защищённые read-only команды оболочки, web-поиск и чтение страниц, просмотр планировщика и MCP-инструменты с аннотацией
readOnlyHint: true; - цепочки команд, перенаправление вывода, подстановка команд и команды вне read-only списка отклоняются до выполнения;
- недоступны изменения планов и задач, мутации планировщика, SSH, управление браузером и изменение памяти.
Галочка Disable extended Ask tools в Settings → Tools управляет параметром tools.ask_disable_extended_tools и по умолчанию выключена. Если её включить, Ask скрывает shell, MCP, web и планировщик, оставляя чтение, поиск и дерево репозитория, вопросы и навыки.
Лучше всего подходит для ответов по репозиторию, ревью кода и проверки фактов без изменения состояния проекта.
Выберите режим в настройках сессии редактора или через session/set_config_option.
Если rules.auto_discover включён, правила проекта, передаваемые через {{.Rules}}, автоматически находятся внутри рабочего каталога сессии в .foxxycode/rules, .cursor/rules, .claude/rules, .codex/rules и вложенных **/AGENTS.md (соглашение agents.md; корневой AGENTS.md передаётся отдельно как вводная документация проекта). Подробнее в docs/rules.md.
Файлы правил часто используют frontmatter в стиле Cursor, например:
---
description: "Стандарты кода Go"
globs: ["**/*.go"]
alwaysApply: false
---
Пишите все комментарии на английском языке.
Для оборачивания ошибок используйте fmt.Errorf("context: %w", err).Slash-команды и пакеты SKILL.md, передаваемые через {{.Skills}}, расширяют агента предметными знаниями и специализированными процессами.
Стандартные каталоги (от низшего к высшему приоритету):
| Приоритет | Путь | Назначение |
|---|---|---|
| низший | ~/.agents/skills/ |
Общие навыки, установленные через npx skills или npx skillsbd и доступные всем агентам |
| ↑ | ~/.foxxycode/skills/ |
Навыки FoxxyCode; могут содержать символические ссылки на ~/.agents/skills/ |
| высший | ${CWD}/.foxxycode/skills/ |
Навыки проекта, переопределяющие одноимённые навыки из предыдущих каталогов |
Если навык с одним именем встречается в нескольких местах, более поздний каталог имеет приоритет.
Поиск и установка навыков:
- skills.sh — реестр сообщества; установка:
npx skills add <owner/repo@skill> - neuraldeep.ru/skills — реестр skillsbd, отобранный для FoxxyCode; установка:
npx skillsbd install <name> - Настройки → Навыки в веб-интерфейсе (
foxxycode http) — просмотр и установка из реестра skillsbd прямо в браузере
CLI:
foxxycode skills list # список установленных навыков и их состояние
foxxycode skills enable <name> # включить навык
foxxycode skills disable <name> # выключить навык без удаленияПолное описание см. в docs/skills.md.
Подключайте внешние инструменты через MCP по stdio (локальная команда),
http (Streamable HTTP с автоматическим откатом на legacy SSE) или sse.
Серверы можно задать глобально в config.yaml (mcp_servers) либо в
совместимом с Cursor файле ~/.foxxycode/mcp.json, локально для проекта в
./.foxxycode/mcp.json (более поздний уровень переопределяет сервер по имени)
или передать для конкретной сессии через ACP-клиент. Серверы целиком и отдельные
инструменты можно отключать в конфигурации, через REST API /foxxycode/mcp* или
в веб-интерфейсе Настройки → MCP-серверы.
Пример добавления GitHub MCP-сервера в конфигурацию:
mcp_servers:
- name: "github"
command: "npx"
args: ["-y", "@modelcontextprotocol/server-github"]
env:
- name: "GITHUB_PERSONAL_ACCESS_TOKEN"
value: "${GITHUB_TOKEN}"Тот же сервер в .foxxycode/mcp.json вместе с удалённым:
{
"mcpServers": {
"github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] },
"remote-tools": { "url": "https://mcp.example.com/mcp" }
}
}Локальный ./.foxxycode/mcp.json приходит вместе с чекаутом, то есть команду,
которую запустит сессия, выбирает репозиторий, а не вы. Поэтому такие записи
не запускаются до одобрения для конкретной рабочей папки
(mcp.project_trust: ask, значение по умолчанию):
foxxycode mcp listfoxxycode mcp trust <name>То же решение доступно через POST /foxxycode/mcp/{name}/trust и по кнопке-щиту
в разделе «Настройки → Серверы MCP». Одобрение привязано к рабочей папке и к
дайджесту объявления, поэтому правка записи спрашивает заново. Серверы из
config.yaml и ~/.foxxycode/mcp.json принадлежат вам и через гейт не проходят.
Для рабочей папки, которой вы уже доверяете (или для CI), поставьте
mcp.project_trust: allow в config.yaml либо передайте
--mcp-project-trust allow в foxxycode acp / foxxycode http — тогда это
подействует только на один процесс; deny не загружает серверы проекта вовсе.
Подробнее в руководстве по интеграции MCP.
Соберите проект с -tags gateway.telegram (только Telegram) или -tags gateway (все адаптеры), чтобы включить команду foxxycode gateway.
make build TAGS="gateway.telegram"
./build/foxxycode gateway --config ~/.foxxycode/config.yamlМинимальное дополнение к config.yaml:
gateways:
telegram:
enabled: true
token: "${TELEGRAM_BOT_TOKEN}"
admins: [YOUR_USER_ID]
default_access: "admins" # all | admins | group:<name>
default_isolation: "admin" # individual | shared | admin
rich_messages: true # Bot API 10.1 Rich Messages (нативный Markdown и блоки инструментов)Каждый пользователь или чат получает отдельную изолированную сессию. В группах бот отвечает только на упоминания и ответы на свои сообщения. Команда /clear без пробела начинает новую сессию.
При rich_messages: true бот использует Rich Messages из Bot API 10.1: весь Markdown агента (заголовки, таблицы, код, списки задач) отображается нативно, активность инструментов транслируется вместо заполнителя «Thinking…», а выполненные инструменты показываются в сворачиваемом блоке. Если сервер Bot API не поддерживает эту возможность, бот возвращается к прежнему форматированию. Подробнее в docs/gateway.md.
Полное руководство по уровням доступа, режимам изоляции групп, настройкам отдельных чатов и созданию новых адаптеров: docs/gateway.md.
Полное описание доступно в docs/config.md, таблицы отдельных полей — в docs/config-reference.md. JSON Schema включает автодополнение и проверку в редакторе через заголовок # yaml-language-server: $schema=... (см. config.example.yaml).
Основные настройки:
providers:
- name: local
type: openai
api_key: "${OPENAI_API_KEY}"
api_base: "${OPENAI_API_BASE}"
models:
- model: "local/gpt-4o"
max_tokens: 8192
temperature: 0.2
agent:
model: "local/gpt-4o"
max_turns: 30
tools:
require_permission_for_commands: trueACP-клиент (редактор / скрипт / CI) Мессенджер (Telegram и другие)
| |
JSON-RPC 2.0 через stdio Шлюз Hub (горутина адаптера)
| |
Уровень ACP-сервера session.Manager (общий)
| |
Менеджер сессий ─────────────────────────────┘
|
Цикл ReAct-агента
/ | | \
LLM Инструменты Навыки MCP
Полное описание см. в документации по архитектуре.
- Отличия FoxxyCode от coddy-agent — функции форка в сравнении с исходным проектом
- Дорожная карта — планы по версиям 0.3.x, 0.4.x и 0.5.x
- Сборка из исходников — требования,
make build, отличиеTAGSотgo build -tags, каталогbuild/foxxycode - Обновление FoxxyCode —
foxxycode update, артефакты релизов,PATHиmake install - Docker — образ GHCR,
docker compose, встроенный интерфейс по адресуhttp://127.0.0.1:12345/ - Архитектура — устройство системы и обзор компонентов
- Протокол ACP — справочник по протоколу и форматы сообщений
- Агент ReAct — устройство цикла ReAct и спецификации инструментов
- Конфигурация — полное описание файла конфигурации, таблицы полей и JSON Schema для проверки в редакторе
- HTTP API — REST-шлюз (
-tags=http) и встроенный интерфейс (-tags=http,ui), включая/foxxycode/configдля редактирования YAML в SPA (#/settings) - Встроенный интерфейс — функциональная спецификация, разработка через Vite и теги сборки
- DESIGN.md — токены и компоновка интерфейса (на английском языке)
- AGENTS.md — карта репозитория и памятка для автоматизированных участников
- Правила — правила проекта (
.cursor/rules,.foxxycode/rulesи другие) - Хуки Codex — как
.cursor/rules/*.mdcпопадают в сессию Codex CLI, работающую с этим репозиторием - Хуки OpenCode — детерминированная доставка
.cursor/rules/*.mdcв сессии OpenCode, работающие с этим репозиторием - Хуки ZCode — то же самое для сессий ZCode
- Навыки — slash-команды и
skills.dirs - Фоновые задачи — отсоединённые команды, пул задач, таймауты и грант на целую программу
- Интеграция MCP — руководство по MCP-серверам
- Шлюз мессенджеров — адаптер Telegram-бота, изоляция сессий, ACL и создание новых адаптеров
examples/acp/acp_e2e_todo.py — построчная JSON-RPC-среда для foxxycode acp ( stdbuf -oL, автоматический ответ на запрос разрешения, ответы с nil-result). Используйте её как основу для минимального клиента, а не объединяйте простые команды echo в конвейер.
examples/acp/acp_e2e_memory.py запускает build/foxxycode с изолированным FOXXYCODE_HOME и RPA_API_KEY, чтобы проверить чтение, сохранение и опциональную очистку Markdown-файлов в $FOXXYCODE_HOME/memory. Параметры описаны в docstring скрипта. Обзор всех примеров: examples/README.md.
По умолчанию foxxycode acp и foxxycode http сохраняют каждую сессию в $FOXXYCODE_HOME/sessions/<sessionId>/ (обычно ~/.foxxycode/sessions/): там находятся session.json, messages.json, каталог assets/, файл todos/active.md и каталог todos/archive/ для заменённых завершённых списков. Корневой каталог можно изменить через foxxycode acp --sessions-dir, foxxycode http --sessions-dir или sessions.dir в config.yaml. Если каталог сессий невозможно создать, запуск завершается ошибкой.
foxxycode sessions listвыводит сохранённые сессии и поддерживает фильтры--sessions-dirи--cwd.foxxycode acp --session-id <id>заставляет следующий вызовsession/newоткрыть сохранённое состояние этой папки, если оно существует, либо создать новую сессию с таким именем каталога.session/loadвосстанавливает историю и уведомляет клиента;session/listперечисляет сохранённые сессии для ACP-совместимых клиентов.
Инструменты foxxycode_todo_* синхронизируют активный список с todos/active.md. Полная замена через foxxycode_todo_plan_replace при наличии незавершённых пунктов отклоняется: сначала завершите их или выполните foxxycode_todo_plan_archive. Если все пункты имеют состояние completed, при замене прежний active.md перемещается в todos/archive/ под именем todo-<nanos>.md. Команда foxxycode_todo_plan_archive переводит открытые пункты в состояние completed, записывает todos/archive/plan_<unix_seconds>.md и очищает план сессии, если включено постоянное хранение.
Если сохранённый план не пуст, агент добавляет в шаблон системного промпта заголовок ### Current todo checklist и строки Markdown-списка. Встроенные шаблоны или файлы из prompts.dir используют настраиваемые имена agent.md, plan.md и docs.md, а для Ask — ask.md; для Ask также встроены варианты ask.openai.md и ask.gpt-oss.md. Вставка выполняется через {{if .TodoList}} … {{end}} и пропускается, когда список пуст. Перед каждым вызовом LLM в рамках одного запроса session/prompt FoxxyCode обновляет системное сообщение, поэтому созданный или изменённый ранее в том же эпизоде ReAct список сразу остаётся видимым.
# Запуск тестов
go test ./...
make test
# Примеры среды (см. examples/README.md):
# ./examples/build_foxxycode.sh && ./examples/test_acp.sh && ./examples/test_httpserver.sh
# Полнофункциональная локальная сборка (HTTP + UI + планировщик), как в Docker
make build TAGS="http ui scheduler memory"
./build/foxxycode -v # то же, что --version
# Запуск с отладочными логами в режиме ACP; доступны --log-output, --log-file, --log-format
foxxycode acp --log-level debug
# Только простая однострочная проверка (ответы могут не содержать JSON-RPC "result" при nil;
# для полноценной проверки используйте examples/acp/acp_e2e_todo.py)
echo '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":1,"clientCapabilities":{}}}' | foxxycode acpПроект распространяется по лицензии MIT. Полный текст находится в файле LICENSE в корне репозитория.
