Создание безопасного локального ИИ-агента для кодинга на Node.js
ИИ-агенты звучат сложно. Но это не так.
Агент — это просто LLM, подключенная к циклу, инструментам и правилам безопасности.
Я создал локального агента для кодинга, используя Node.js и Mistral через Ollama. Вам не нужны платные API-ключи. Всё работает локально на вашем компьютере.
Агент помогает вам разобраться в ваших JavaScript-проектах. Он может: • Перечислять файлы проекта • Читать файлы проекта • Искать текст • Объяснять код • Находить баги • Предлагать изменения в коде
Главный принцип — безопасность. Агент может просматривать файлы, но не может их редактировать. Он лишь возвращает предложение патча (patch proposal), которое вы должны проверить. Это позволяет человеку оставаться в цикле управления (human in the loop).
Как работает агент: Обычный чат-бот следует простому пути: Пользователь задает вопрос -> Модель отвечает
Агент следует циклу: Пользователь задает вопрос -> Модель выбирает инструмент -> JavaScript запускает инструмент -> Модель видит результат -> Модель отвечает
Ключевые паттерны, использованные в этом проекте: • Цикл агента (Agent loop): процесс повторяется до тех пор, пока модель не даст окончательный ответ. • Вызов инструментов (Tool calling): модель запрашивает выполнение определенных JavaScript-функций. • Белый список инструментов (Tool allowlist): запускаются только одобренные инструменты. • Системный промпт (System prompt): правила, которые диктуют модели, как себя вести. • Протокол действий JSON (JSON action protocol): модель отвечает структурированными данными. • Граница безопасности (Safety boundary): доступ к файлам ограничен корнем вашего проекта.
Безопасность — в приоритете. Я использовал функцию под названием safeResolve, чтобы предотвратить обход путей (path traversal). Это гарантирует, что агент не сможет получить доступ к файлам за пределами папки вашего проекта. Я также установил ограничения на размер файлов, чтобы защитить контекстное окно модели.
Структура проекта: • src/cli.js: точка входа в терминале. • src/agent.js: основной цикл и диспетчеризация инструментов. • src/ollama.js: локальный API-клиент. • src/tools.js: безопасные инструменты для работы с файловой системой. • test/tools.test.js: тесты безопасности и поведения.
Вы можете запустить этот проект с помощью Node.js и Ollama. Используйте Mistral или попробуйте специализированные модели для кодинга, такие как Qwen2.5-Coder или DeepSeek-Coder, для достижения лучших результатов.
Создавайте полезные инструменты. Делайте их узкоспециализированными. Позвольте коду обеспечивать границы безопасности.
Источник: https://dev.to/gaurav101/building-a-safe-local-ai-coding-agent-with-nodejs-46ol