DvalinCode

by arthurpanhku (community) · Windows, macOS, Linux, OpenAI, Claude, DeepSeek, Groq, Ollama, любые OpenAI-совместимые модели, Claude Desktop, Claude Code, OpenCode

Assistant AI Assistants Open Source v0.17.0 · 09.08.2026 активный

Согласуемый, local-first AI coding-агент для регулируемых команд: политики контроля, управляемый MCP, пакеты доказательств, аудит-трейлы, безопасное устранение проблем, любая OpenAI-совместимая модель.

v0.17.0
09.08.2026 current

Инструкция по установке не найдена в README проекта — возможно, она описана только во внешней документации. Ссылки на репозиторий смотрите на вкладке «About».

показать оригинал переведено ИИ

DvalinCode

English · 中文 · 🌐 dvalincode.dev

Release Downloads Tests License OpenSSF Scorecard Platforms LLM Support English / 中文

Открытая инженерия безопасности для кода, написанного людьми и ИИ-агентами.
Обнаруживай. Исправляй. Проверяй.

Dvalin — это независимая среда выполнения безопасности между генерацией кода и его слиянием. Люди, кодинг-агенты и CI вызывают одну и ту же версионированную спецификацию для обнаружения, исправления и проверки; Dvalin нормализует данные сканеров, применяет шлюз с учётом базовой линии, сохраняет рабочий процесс безопасности и независимо проверяет исправление перед публикацией. Его встроенная способность к кодированию — это исполнитель исправлений — не граница доверия и не попытка конкурировать с каждым универсальным кодинг-агентом.

Dvalin может работать независимо, конкурировать в пересекающихся рабочих процессах безопасности приложений или взаимодействовать со специализированными системами, такими как Codex Security. Портативный экспорт SARIF от Codex Security может стать локальными кейсами исправлений Dvalin и пройти через тот же шлюз релиза, что и любой другой человек или агент. Dvalin отличается детерминированной базовой линией без учётной записи, открытым парком много-движковых сканеров, агент-нейтральными интерфейсами, локальной работой и аудиторскими доказательствами, связанными с политиками. Мы принимаем сильные идеи рабочих процессов там, где они улучшают результаты пользователей, сохраняя оба продукта опциональными. См. стратегию security-агента.


⏱️ 30 секунд, без установки, без ключа API

npx dvalincode security scan .
# After installing the package: dvalin scan .

Это всё. Он запускает встроенные правила для инъекций, захардкоженных секретов, XSS, eval и небезопасного использования оболочки в текущей директории и выводит найденное. Без учётной записи, без модели, без конфигурации, код не покидает вашу машину. Политика по умолчанию запускает только Dvalin Built-in, поэтому первое сканирование всегда работает. Добавляйте опциональные движки явно или просмотрите их фиксированные команды установки:

dvalin scanners list
dvalin scanners install semgrep       # review the command
dvalin scanners install semgrep --yes # execute it under Dvalin policy

Для инкрементального шлюза «без новых критических находок» зафиксируйте политику и базовую линию вместе с репозиторием:

dvalin init
dvalin baseline
dvalin scan

Это создаёт dvalin.security.json и .dvalin/baseline.json. Подавления требуют причину и могут иметь владельца и дату истечения срока. Вывод сканирования — это версионированный конверт с детерминированным результатом шлюза и возобновляемым ID рабочего процесса.

Или добавьте это на каждый pull request — устанавливать вообще ничего не нужно

# .github/workflows/security.yml
permissions:
  contents: read
  security-events: write
steps:
  - uses: actions/checkout@v5
    with:
      fetch-depth: 0        # so the scan can reach the base commit
  - uses: arthurpanhku/dvalincode@v0.17.0
    with:
      fail-on: high
      diff: true            # only report on what this PR changed

Находки отображаются инлайн в диффе pull request и в вашей вкладке Security. Без ключа API, без секретов, без модели — сканирование детерминировано и локально для раннера. Полный пример →

diff: true сообщает только о строках, изменённых в pull request, поэтому шлюз блокирует то, что этот изменение добавляет, а не всё, что репозиторий уже нёс ранее. Именно это и делает проверку применимой к кодовой базе, которая изначально не была чистой. Просто запустите её для сканирования всего репозитория.

Или позвольте вашему агенту вызвать её

Если код пишет агент, то проверять его должен кто-то другой, а не этот агент. DvalinCode — это MCP-сервер, поэтому любой агент, поддерживающий MCP, может:

claude mcp add dvalin -- npx -y dvalincode mcp-serve --workspace .

Одна команда настраивает редактор, которым вы реально пользуетесь:

npx dvalincode mcp-install cursor        # .cursor/mcp.json
npx dvalincode mcp-install vscode        # .vscode/mcp.json
npx dvalincode mcp-install claude-code   # .mcp.json

Форматы различаются так, что ошибка происходит незаметно — VS Code хранит свои серверы в servers, а Cursor — в mcpServers, — поэтому команда записывает правильный вариант и объединяет его с тем, что уже есть. Редакторы и MCP →

dvalin_scan принимает diff: "uncommitted", что позволяет сообщать только о том, что только что написал агент, а не обо всём, что уже было в репозитории — это разница между полезным ответом и стеной из ранее существовавших находок. Он никогда не запускает модель и не изменяет целевое рабочее пространство. Он записывает небольшой локальный рабочий процесс, чтобы агент мог получить одну находку по отпечатку и запросить независимое повторное сканирование через dvalin_get_finding и dvalin_verify_findings. Ответы включают MCP structuredContent; готовность сканера доступна через dvalin_list_scanners. Тот же сервер предоставляет dvalin_run_task в качестве дополнительного вспомогательного инструмента, а также инструменты для сессий и аудита.

Проверено на практике с Claude Code 2.1.226 и Codex 0.147.0 — реальный вызов инструмента против опубликованного пакета, а не просто завершение рукопожатия. Интеграции с агентами →

Где бы вы ни работали

Один сервер, доступ к которому осуществляется так, как ожидает каждый инструмент:

Среда Как Dvalin подключается
Claude Code dvalincode mcp-install claude-code, или claude mcp add · skill
Codex codex mcp add · интероперабельность SARIF с Codex Security
Cursor dvalincode mcp-install cursor
VS Code dvalincode mcp-install vscode · расширение для панели Problems — создано, но ещё не опубликовано
Windsurf · Zed stdio MCP через их собственные настройки — команда сервера
Любой MCP-клиент Реестр MCP: io.github.arthurpanhku/dvalincode
GitHub Actions Действие в Marketplace — находки прямо в diff pull request
Любая CI dvalin scan . --fail-on high, вывод SARIF для code scanning

Форматы конфигурации MCP не взаимозаменяемы — VS Code хранит свои серверы в servers, Cursor в mcpServers, и неверный вариант молча не работает — поэтому mcp-install записывает правильную структуру и объединяет её с уже существующей. Редакторы и MCP →

Или интегрируйтесь с Codex Security

Codex Security может экспортировать завершённое, запечатанное сканирование в формате SARIF. Импортируйте этот переносимый срез, не связывая Dvalin с приватным каталогом состояния Codex Security:

DVALIN_CODEX_SCAN_DIR=/tmp/codex-security-results
npx @openai/codex-security scan . --output-dir "$DVALIN_CODEX_SCAN_DIR"
npx @openai/codex-security export "$DVALIN_CODEX_SCAN_DIR" \
  --export-format sarif --source-root "$PWD" --output /tmp/codex-security.sarif

dvalin import /tmp/codex-security.sarif .
dvalin scan . --fail-on high

Импорт создаёт стабильные кейсы исправления Dvalin; --no-persist проверяет передачу без изменения бэклога. Храните оригинальный манифест Codex Security, находки и артефакты покрытия вместе — Dvalin импортирует проекцию находок SARIF, но не переписывает запечатанный пакет и не переинтерпретирует его покрытие. Руководство по интеграции →

Затем позвольте ей исправить найденное

dvalincode dvalin . --fix --verify --draft-pr

Этот шаг действительно использует модель — вашу модель, любую OpenAI-совместимую конечную точку. Она готовит точечные исправления в изолированном рабочем дереве, запускает ваши тесты и требует чистого повторного сканирования, прежде чем что-либо сможет перейти к черновику pull request. Она никогда не делает автоматический merge, и чистое сканирование никогда не рассматривается как доказательство того, что код безопасен.

Dvalin сканирует уязвимый пример OWASP NodeGoat с результатом 22/100 F и 10 находками, затем показывает чистое проверенное повторное сканирование с результатом 100/100 A

Эта анимация создана на основе реального приложения, а не макета. Входные данные — пример с лицензией Apache-2.0, адаптированный из OWASP NodeGoat, чей маршрут взноса обрабатывал текст, управляемый пользователем.

🛡️ Что на самом деле сделал этот запуск

Dvalin превращает доказательства с открытого сканера в контролируемый рабочий процесс сканирование → исправление → тест → повторное сканирование → черновик PR. Вот запуск из анимации выше, измеренный:

Реальный запуск, полученный из NodeGoat До После исправления Dvalin
Состояние безопасности (эвристика триажа) 22 / 100 · F 100 / 100 · A
Находки 10 (eval по 3 правилам, 2 движка) 0
Тесты 2 проходят 3 проходят, включая регрессионный тест на инъекции
Флот сканеров 4 / 4 завершено 4 / 4 завершено

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

  • Semgrep CE и его правила сообщества для семантического SAST.
  • Trivy для уязвимостей файловой системы, секретов и неправильной конфигурации.
  • OSV-Scanner с открытой базой данных OSV для уязвимостей зависимостей.
  • Встроенные правила DvalinCode с лицензией MIT, оркестрация исправлений, шлюзы тестирования и повторного сканирования, а также импорт SARIF 2.1 для других совместимых сканеров.

Сканеры находят и ранжируют доказательства. Настроенная модель предлагает изменения исходного кода; DvalinCode ограничивает эту работу, записывает diff, запускает тесты проекта, повторно сканирует измененное дерево и делает публикацию PR явной. Он не выполняет автоматическое слияние и не утверждает, что чистое сканирование доказывает отсутствие ошибок. Выберите модель с открытым весом через Ollama, если этап предложения исправлений также должен оставаться полностью локальным и открытым; лицензирование размещенной модели зависит от провайдера.

Вы все еще можете доказать, что агент сделал после факта:

dvalincode report verify    # re-derive the hash chain of the last run's audit log

🏛️ И это проходит проверку безопасности

Эта последняя команда — то, что имеет значение, когда от этого зависит больше одного человека. DvalinCode — это полноценный агент кодирования — терминал, веб-интерфейс и настольное приложение — созданный так, чтобы организация, а не разработчик, определяла границы его действий: файл политики ограничивает режимы, команды, пути, инструменты и модели; каждый запуск связывается хэш-цепочкой в защищенный журнал аудита; ничего не достигает провайдера, что не разрешил шлюз исходящего трафика. Политика репозитория может только сужать машинный уровень.

Если вы человек, который должен утвердить этот класс инструментов, начните с APPROVABILITY-PLAN.md и Evidence Pack, который поставляется с каждым релизом.


🏠 ГлавнаяЕдиное место для рабочих процессов Ask только для чтения и Collaborate с гейтами одобрения. Переключайте намерение, не выходя из проекта или разговора.
⚡ КодСфокусированное автономное кодирование с полным доступом к инструментам и уровнями разрешений Ask / Plan / Auto / Bypass. Процедуры безопасности и браузера больше не конкурируют с основным рабочим процессом кодирования.
🛡️ DvalinВыделенная white-box инженерия безопасности: оркестрация встроенного сканера плюс установленные Semgrep CE, Trivy и OSV-Scanner; триаж находок; создание изолированных исправлений; запуск тестов и повторное сканирование; затем явная публикация проверяемого черновика PR. Руководство Dvalin →
🏦 Регулируемые командыРазработано для финансов, здравоохранения, чувствительных к безопасности SaaS и внутренних платформенных команд, которым нужен ИИ-кодинг в рамках политики, аудита, минимизации данных и проверки цепочки поставок — а не только удобство разработчика.
🛡️ Безопасное исправлениеЗапустите много-движковое сканирование или импортируйте SARIF из CodeQL, GitHub Code Scanning, Semgrep или совместимых сканеров, затем создайте изолированное рабочее дерево для исправления и превратите находки в целенаправленные задачи по ремонту с контекстом исходного кода, доказательствами проверки и отчетами, готовыми для PR. Рабочий процесс →
📚 НавыкиЗагрузка, скачивание и просмотр локальных пакетов навыков. DvalinCode поставляется со встроенными навыками безопасного сканирования кода и его исправления, а также с инструментами агента для вывода списка навыков, чтения инструкций навыков, сканирования, вывода списка случаев и подготовки рабочих деревьев для исправлений. Формат →
🛡️ Журнал аудитаКаждый запуск создаёт защищённый от подделки журнал JSONL с хеш-цепочкой — каждый файл чтения/записи, каждая команда, каждое одобрение. Отчёт о запуске отображает его в Markdown; dvalincode report verify подтверждает целостность цепочки. Модель угроз →
🔒 Политика организации и trustКомпания, а не разработчик, ограничивает агента. Файл dvalin.policy.json задаёт ограничения на режимы, команды оболочки, пути к файлам, инструменты и модели; политика репозитория может только сужать машинную политику, но никогда не расширять её. Каждый запуск записывает хеш действующей политики. dvalincode trust выводит актуальное состояние безопасности установки — активная политика + хеши, статус аудита, среда выполнения — чтобы рецензент мог проверить это напрямую. Справочник по политике → · План одобряемости →
🏛️ Доказательства управленияOpenSSF Scorecard, CodeQL, Dependabot, закреплённые GitHub Actions, CODEOWNERS и документы соответствия ISO/IEC 42001 AIMS поддерживаются как проверяемые доказательства проекта, а каждый релиз включает комплект доказательств, который бинарный файл создаёт о самом себе. Карта Scorecard → · Соответствие ISO 42001 → · Доказательства релиза →
📐 Открытые спецификацииPCP-1 — контракт границы провайдера (ограничение исходящего трафика, ограничение учётных данных, аудит, привязка политики), написанный как нейтральный к вендору профиль с процедурами тестирования, чтобы любая среда выполнения агента могла запустить его против своих собственных адаптеров и опубликовать результат. Это не тестовый файл DvalinCode; это контрольный список, которому мы также обязаны соответствовать. Профиль соответствия провайдера →
🖥️ Полноценный GUIСовременный веб-интерфейс с подсветкой кода, файловыми @-ссылками, / слэш-командами, индикатором Git-ветки, живым счётчиком токенов и затрат, многопрофильной конфигурацией LLM и переключателем темы (тёмная / светлая / системная).
🖥️ Терминал или веб — один бинарный файлЗапустите его без параметров для интерактивного терминального агента с потоковым выводом, встроенными одобрениями и красно/зелёными диффами, или используйте dvalincode serve для запуска веб-GUI для браузера/удалённого доступа. Оба интерфейса используют одно ядро агента.
🖥️ Нативное desktop-приложениеDvalinCode.app — настоящее приложение в доке (нативный веб-виджет ОС, без Electron) на том же движке. На macOS однострочный установщик автоматически помещает его в /Applications; запускайте его прямо из Launchpad.
🪶 Бинарный файл без зависимостейОдин исполняемый файл ~25 МБ для каждой платформы. Ни Node, ни Python, ни Docker.
🔐 Локальный приоритетСессии, конфигурация, профили и журналы аудита хранятся в ~/.dvalincode/. Файл .dvalincodeignore блокирует чтение агентом чувствительных файлов. AGENTS.md в вашем репозитории становится постоянными инструкциями проекта.
💾 Портативность и экспортЭкспортируйте все локальные данные (память, сессии, конфигурацию, аудит) в один файл и импортируйте его на другой машине — ваша настройка перемещается вместе с вами. Любой разговор скачивается как чистый транскрипт в Markdown.

🎯 Основная цель

Заставить любого человека или агента, создающего код, проходить один и тот же независимый контроль безопасности.

DvalinCode создан как совместимая с агентами среда безопасности, а не очередная запись в бенчмарке общих агентов кодирования. Основной продукт — это доказательства сканирования. политика, базовые проверки, детерминированная верификация и переносимые интерфейсы, которые могут вызывать и человек-разработчик, и внешний агент, и CI. Встроенный агент кодирования остаётся достаточно capable, чтобы реализовывать и тестировать точечные исправления надёжно; его текстовые рассуждения модели никогда не решают, пройден ли security-гейт.

  • Любая модель — любая OpenAI-совместимая точка входа является полноправным гражданином, включая локальные модели. Ваш workflow не должен быть заложником цен, лимитов скорости или колебаний качества одного вендора.
  • Безопасно по умолчанию — трёхуровневые подтверждения с предпросмотром диффов, стек отмены и песочница для выполнения shell-команд. Агент, которому можно доверить полный автомат.
  • Достаточно мал для аудита — один бинарник ~25MB, несколько зависимостей времени выполнения, кодовая база, которую можно прочитать за выходные. Доверие через инспекцию, а не обещания. Начиная с v0.5, каждый запуск агента тоже подлежит аудиту: защищённый от вмешательства, хэш-цепочный журнал каждого действия, проверяемый постфактум.
  • Достаточно открыт для встраивания — ядро агента говорит на чистом REST + WebSocket API, готово к подключению в ваш собственный продукт, CI или внутренние инструменты.
  • Может быть одобрен любой компанией — управление встроено, а не прикручено. Организационная политика ограничивает радиус поражения (управляемость), dvalincode trust делает позицию самопроверяемой (прозрачность), а хэш-цепочный журнал доказывает, что делал каждый запуск (аудируемость). Эти три вещи вместе — именно то, что нужно security-ревью, чтобы сказать «да» — и то, что облачные, закрытые, мутирующие журналы агентов структурно предоставить не могут. План одобряемости →

Встроенный веб-GUI — это эталонная реализация и витрина рантайма — первый потребитель этого публичного API, демонстрирующий всё, что может рантайм.


✅ Почему команды выбирают DvalinCode

DvalinCode отличается одобряемостью. Он создан для команд, которым нужно, чтобы ИИ-кодирование прошло security-, compliance- и data-governance-ревью, прежде чем коснуться production-репозиториев.

  • Замкнутый цикл безопасного исправления — сканируйте локально или импортируйте SARIF из CodeQL, GitHub Code Scanning, Semgrep или совместимых сканеров; сохраняйте находки как локальные кейсы исправления; создавайте изолированный worktree dvalin/remediate/...; затем отправляйте точечный промпт на исправление с контекстом исходников и инструкциями по верификации.
  • Навыки как управляемые операционные процедуры — загрузка, скачивание и инспекция локальных наборов навыков. Встроенные навыки безопасного сканирования и исправления говорят агентам, какие инструменты использовать, и сохраняют портируемость workflow между машинами.
  • Свобода моделей без дрейфа политик — используйте DeepSeek, OpenAI, Claude через OpenRouter, Groq, Ollama или любую OpenAI-совместимую точку входа, сохраняя согласованность разрешений инструментов, аудита и политик рабочего пространства.
  • Security-доказательства, а не просто security-заявления — поддержка OpenSSF Scorecard, CodeQL, Dependabot, закреплённые Actions, CODEOWNERS, документы соответствия ISO/IEC 42001, записи о влиянии ИИ-изменений и хэш-цепочные журналы запусков — часть проекта.
  • Локально-первый по умолчанию — сессии, конфигурация, профили, память и журналы аудита остаются в ~/.dvalincode/; .dvalincodeignore и элементы управления политиками ограничивают то, что агент может читать, писать или выполнять.

🛡️ Безопасность и управление

ISO/IEC 42001 AIMS aligned Compliance evidence pack DevSecOps native

DvalinCode поддерживает на уровне проекта доказательства управления для open-source и корпоративного ревью. Это и есть дифференциатор для команд, где ИИ-кодирование должно пройти security-одобрение, прежде чем достичь production-репозиториев:

  • Модель угроз — вся поверхность атаки агентного рантайма кодирования (вредоносный AGENTS.md, отравленные MCP-серверы, эскалация через prompt-injection, egress, подделка аудита, цепочка поставок, побег из песочницы), каждая сопоставлена контроль, который его защищает, и честный остаточный разрыв. Модель угроз →
  • Поддержка OpenSSF Scorecard — запланированный workflow Scorecard, загрузка SARIF, CodeQL, Dependabot, CODEOWNERS, минимально необходимые права для workflow и GitHub Actions с закреплёнными SHA. Карта контролей →
  • Соответствие ISO/IEC 42001 — область применения системы менеджмента ИИ, политика ИИ, карта ролей, реестр рисков, классификация изменений ИИ, необходимые записи и периодичность пересмотра. Соответствие AIMS →
  • Оценка влияния изменений ИИ — переиспользуемый шаблон для изменений, затрагивающих поведение модели/провайдера, промпты, разрешения, инструменты, журналы аудита или безопасность релиза. Шаблон →
  • Режим для регулируемых сред — локальная обработка данных, автономия, контролируемая политиками, минимизированные записи аудита и доказательства безопасности цепочки поставок релиза для финансов, здравоохранения, чувствительных к безопасности SaaS и внутреннего корпоративного использования.
  • Инженерия безопасности Dvalin — выделенное рабочее пространство Dvalin сочетает встроенный сканер с установленными Semgrep CE, Trivy и OSV-Scanner, нормализует результаты SARIF, управляет изолированными исправлениями, подтверждёнными тестами, и явно готовит черновик PR для ревью без автоматического слияния. Workflow →

Эти документы являются доказательством внедрения и рабочими процедурами; они не заявляют о сторонней сертификации ISO.


⭐ Что нового в v0.14.0 — Инженерия безопасности Dvalin

  • Home объединяет Chat и Cowork — в GUI теперь единое рабочее пространство Home с режимами Ask (только чтение) и Collaborate (с подтверждением), сохраняя при этом тот же контекст проекта и разговора.
  • Code снова сфокусирован — старые панели Security и Routines удалены из Code, поэтому его боковая панель посвящена проектам и автономной реализации.
  • Dvalin — это полноценное рабочее пространство — оркестрация встроенного сканера плюс установленных Semgrep CE, Trivy и OSV-Scanner; импорт SARIF; оценка и триаж находок; сохранение случаев исправления; создание изолированных рабочих деревьев для ремонта.
  • Один поток от доказательств до черновика PR — выбранные находки могут запустить исправление Агентом на основе доказательств, выполнить сфокусированные тесты/проверку типов/сборку и новое сканирование, просмотреть diff и явно опубликовать черновик PR без автоматического слияния.
  • Циклы Агента сходятся быстрее и стоят меньше — исследование перед редактированием и обнаружение остановки сокращают повторяющиеся неудачные действия, общий вывод инструментов ограничен, промпты остаются только для добавления для повторного использования кэша, а использование провайдера теперь учитывает попадания/промахи кэша.
  • Обновления провайдера и оценки — поддерживается нативное кэширование промптов Anthropic и учёт кэша, а Docker-харнесс SWE-bench сообщает официальные баллы, нарушения политик, остановки и метрики токенов/кэша.

⭐ Что нового в v0.12.4 — завершай задачу перед остановкой

  • Рассказ о процессе больше не завершает задачу — ответы вроде «позвольте мне проверить файл» распознаются как незавершённая работа, и агент немедленно продолжает обещанное действие, вместо того чтобы считать их финальным ответом.
  • Усечённые ответы автоматически восстанавливаются — причины завершения провайдера сохраняются, поэтому вывод, оборванный лимитом токенов, запускает ещё один шаг модели.
  • Обычные циклы кодинга получают возможность закончить — лимит действий за ход теперь экстренная защита в 100 действий, а не обычная остановка на 15; более строгие политики организации по-прежнему имеют приоритет.
  • Завершение явное — режиму Code предписано возвращать ответ без инструментов только после завершения запрошенной работы и сфокусированной валидации.

⭐ Что нового в v0.12.3 — устойчивый длительный режим Code

  • Длинные циклы кодинга продолжаются — режим Code теперь сжимает контекст во время активного цикла инструментов, учитывает полный запрос провайдера при оценке токенов и повышает контрольную точку итерации по умолчанию с 10 до 40.
  • Прерывания можно возобновлять — завершённое состояние инструментов сохраняется при прерывании хода или закрытии соединения, так что последующий continue возобновляет работу с фактического прогресса в рабочем пространстве.
  • Видимая, более тихая активность агента — запущенные сеансы показывают состояние загрузки на боковой панели, каждый ответ сообщает о затраченном времени работы, а его временная шкала действий доступна по клику, в то время как необработанные вызовы инструментов по умолчанию остаются свёрнутыми.
  • GitHub workflows из режима Code — сетевые операции git и GitHub CLI (gh) теперь поддерживают pull, push, создание PR и команды Actions/репозитория через управляемый путь одобрения оболочки.
  • Более безопасные релизы — версии пакета и CLI синхронизированы, а prepublishOnly запускает сборку, проверку типов и набор тестов перед публикацией.
  • Простые задачи остаются простыми — бюджет действий применяется ко всему ходу, а не сбрасывается на каждой итерации модели, а режим Code получает указание выбирать кратчайший прямой путь и останавливаться, когда целевая проверка пройдена.

⭐ Что нового в v0.12.2 — 🖥️ Веха настольного приложения: просто работает

  • 🖥️ Нативное настольное приложение теперь работает из коробки на macOS — DvalinCode.app открывает настоящее окно в доке (WKWebView, без Electron) поверх встроенного движка. Исправлены две ошибки потоков, которые присутствовали в каждой более ранней сборке для настольных компьютеров: блокирующий цикл webview больше не лишает встроенный сервер ресурсов (пустое окно), а webview работает в основном потоке, как требует macOS (вообще без окна) — теперь сервер находится в дочернем процессе того же бинарного файла.
  • 📦 Однострочный установщик устанавливает приложение — на macOS curl … install.sh | bash теперь также помещает DvalinCode.app (со значком DvalinCode) в /Applications, поэтому окно настольного приложения запускается прямо из Launchpad после установки CLI. Отказ через DVALINCODE_NO_APP=1; закрепление версии через DVALINCODE_GUI_VERSION.
  • ✅ Настольная версия больше не является «экспериментальной» на macOS — окно и встроенный сервер проверены и работают; сборки для Windows и Linux кросс-компилируются и остаются в статусе предварительной версии.

v0.9.0 — 🛡️ Безопасное исправление · Навыки · Усиление CodeQL

  • 🛡️ Безопасный рабочий процесс исправления — запустите встроенное локальное сканирование или импортируйте SARIF из CodeQL, GitHub Code Scanning, Semgrep и совместимых сканеров; находки становятся локальными задачами исправления с контекстом исходного кода, рекомендациями по проверке и изолированными задачами ремонта в рабочем дереве.
  • 📚 Навыки — загрузка, скачивание, просмотр и повторное использование локальных пакетов навыков. DvalinCode теперь поставляется со встроенными навыками безопасного сканирования кода и безопасного исправления кода, а также с инструментами агента для вывода списка навыков, чтения инструкций, сканирования, вывода списка задач исправления и подготовки рабочих деревьев для исправления.
  • 🔐 Усиление путей CodeQL — пути пользовательского рабочего пространства, исправления и навыков теперь проходят явные проверки на принадлежность корневому каталогу, с регрессионными тестами, охватывающими устойчивое к обходу разрешение и границы импорта навыков.
  • 🎨 Значки приложения — значки приложения для тёмной и светлой темы теперь поставляются с веб-пакетом и входными данными для сборки настольного приложения.

v0.8.0 — 🔒 Управление: контролируемый · прозрачный · аудируемый

  • 🔒 Политика организации — файл dvalin.policy.json позволяет компании, а не разработчику, ограничивать агента: какие режимы, команды оболочки, пути к файлам, инструменты и модели разрешены. Два уровня (машинный ~/.dvalincode/policy.json + репозиторий) разрешаются путём сужения — политика репозитория может только ужесточить машинную политику, но никогда не расширить её. Без файла политики поведение идентично прежнему. Применяется в единой точке контроля; каждый отказ — это встроенное ⛔ Blocked by policy плюс событие аудита policy_violation. Справочник по политике →
  • 🔎 dvalincode trust — выводит текущий уровень безопасности этой установки одной командой — действующая политика + хэши исходников, статус аудита, среда выполнения, зависимости — чтобы рецензент мог проверить, что агент может и не может делать напрямую, а не верить заявлениям на слово. --json для инструментов.
  • dvalincode policy check — проверяет dvalin.policy.json на соответствие схеме, выводит разрешённую политику + канонический хэш (после сужения с машинным уровнем) и завершается с ненулевым кодом при ошибке — для CI и разработки политик. Справочник по политике →
  • 🧾 Учёт политики в аудите — каждый запуск записывает хэш действующей политики (и какие файлы её составляли) в run_start, чтобы журнал с защитой от подделки доказывал, какие правила действовали.
  • 📐 План одобряемости — сквозная линия описана в docs/APPROVABILITY-PLAN.md: сделать DvalinCode тривиально одобряемым любой компанией — контролируемым, прозрачным, аудируемым.

v0.7.0 — 🧪 Настольное приложение (бета)

  • 🧠 Переносимая память и полный экспорт/импорт данных — улучшенный механизм локальной памяти, а также каждая сессия, конфигурация, профиль и журнал аудита теперь могут быть упакованы в один файл и восстановлены на другой машине. Перенесите всю свою настройку за один шаг: dvalincode export / dvalincode import, или кнопки Экспорт / Импорт в панели настроек GUI.
  • 📝 Скачивание любого взаимодействия с ИИ в формате Markdown — каждый разговор можно сохранить как чистую Markdown-расшифровку (ходы пользователя, ответы ассистента, вызовы инструментов + результаты, решения — всё встроено). Используйте иконку загрузки для любой сессии на боковой панели, dvalincode session md <id> или GET /api/sessions/:id/markdown.
  • 🖥️ Нативное настольное приложение — настоящее окно приложения (не вкладка браузера) на том же движке: DvalinCode.app на macOS, плюс сборки для Windows/Linux. Создано с помощью webview-bun с использованием нативного webview ОС (WKWebView / WebView2 / WebKitGTK) — без Electron, остаётся небольшим автономным бинарным файлом.
  • 🧩 Третий интерфейс, одно ядро — настольное приложение, терминальный интерфейс и веб-GUI управляют одним и тем же общим исполнителем ходов. Текущий бинарный файл dvalincode теперь позиционируется исключительно как CLI (терминал + serve).
  • Статус: настольные бинарные файлы экспериментальные / непроверенные — заберите их из последнего предварительного релиза и, пожалуйста, сообщите, как окно ведёт себя в вашей ОС.

v0.6.0 — терминальный агент · serve · общий исполнитель ходов

  • 🖥️ Терминальный агент — запустите dvalincode без аргументов для интерактивного терминального агента кодирования в стиле Claude-Code: потоковые ответы, встроенные подсказки [y/N] для одобрения записей с красно-зелёными диффами, команды /mode · /clear · /git · /plan · /compact · /undo · /help, Ctrl-C для прерывания и пошаговая настройка провайдера при первом запуске. По умолчанию режим только для чтения Chat, переключается на лету.
  • 🌐 dvalincode serve — веб-GUI теперь работает через команду, поэтому тот же бинарный файл разворачивается без головы на сервере: dvalincode serve --host 0.0.0.0 --no-open.
  • 🧩 Один движок, два интерфейса — терминальный интерфейс и веб-GUI управляют общим, не зависящим от транспорта исполнителем ходов (src/agent/session.ts), обеспечивая паритет функций.

v0.5.0 — аудиторский след уровня безопасности · Отчёт о запуске · переключатель темы

  • 🛡️ Аудиторский след уровня безопасности — каждый запуск Cowork/Code записывает защищённый от несанкционированного доступа, хэш-связанный JSONL-журнал в ~/.dvalincode/audit/ (run_start, каждый tool_call / file_* / shell_exec / approval, run_end). Хэш-цепочка делает любые последующие правки обнаруживаемыми. Ни один локальный агент кодирования не поставляет проверяемые журналы поведения. Формат + модель угроз →
  • 📋 Отчёт о запуске + CLI dvalincode report — Markdown-сводка каждого запуска (прочитанные/изменённые файлы, команды, решения, результат теста), отображаемая как сворачиваемая карточка в GUI и из CLI:
dvalincode report --last           # показать последний запуск
dvalincode report <run-id> --format json
dvalincode report verify <run-id>  # ✓ цепочка цела / ✗ нарушена на шаге N
  • 🎨 Переключатель темы — выберите тёмная / светлая / системная в настройках. system следует за вашей ОС в реальном времени; выбор сохраняется между сессиями.

v0.4.0 — /compact · командный плейбук dvalin.json · автономные бинарные файлы

  • /compact — сжатие контекста на основе LLM: заменяет историю разговора структурированной сводкой из пяти разделов (Цель / Выполнено / Решения / Текущее состояние / Ожидает). Разделитель в цепочке чата показывает сокращение токенов (например, 8,412 → 1,203 токена −85%).
  • Командный плейбук dvalin.json — зафиксируйте общий набор автоматизированных подсказок в вашем репозитории. Боковая панель загружает их автоматически и позволяет коллегам запускать те же рутинные процедуры в один клик без какой-либо ручной настройки. Кнопка экспорта преобразует ваши личные рутины в dvalin.json в один клик.
  • Самодостаточные бинарники — один исполняемый файл размером ~25 МБ для каждой платформы; без Node, Python или Docker. При запуске автоматически открывает ваш браузер. Собран с помощью bun --compile, поэтому веб-интерфейс встроен в серверный бинарник.

v0.3.0 — Боковая панель с учётом режима · установка одной командой · многопрофильная конфигурация LLM

  • Боковая панель с учётом режима — в чате отображаются Шаблоны быстрых подсказок, в режиме совместной работы — дерево папок Проекты, а в режиме кода — пользовательские Процедуры (команды в один клик, такие как «Запустить тесты» / «Состояние Git» / «Проверка типов»). Добавляйте свои процедуры с боковой панели — они сохраняются в localStorage.
  • Установка одной командой — curl … | bash автоматически определяет вашу ОС и архитектуру, помещает бинарник в ~/.dvalincode/ и прописывает его в вашем PATH. Без зависимостей от менеджера пакетов.
  • Многопрофильная конфигурация LLM — сохраняйте наборы (провайдер, модель, ключ API) и переключайтесь в один клик с боковой панели; живой счётчик стоимости за сессию в верхней панели, чтобы вы могли мгновенно сравнивать провайдеров.

📸 Превью

Реальное сканирование Dvalin уязвимого кода — Оценка безопасности 22/100 · F, с 10 находками, о которых реально сообщили движки, с указанием строк:

Dvalin Security health showing 22/100 F with 4 high and 6 medium findings, and a Findings list locating each eval to a line in the NodeGoat-derived route

Проверенный результат — три места вызова eval заменены на ограниченный числовой парсер, добавлен один новый регрессионный тест на инъекции, все четыре движка с открытым исходным кодом отработали полностью, 0 находок, 100/100 · A:

Dvalin verified re-scan showing 100/100 A, zero findings, and the remediation run that produced it

Домой → Код → Dvalin — текущие рабочие области:

DvalinCode switching between Home, Code, and Dvalin

Изображения сканов выше — неотредактированные снимки реального запуска на документированном случае на основе NodeGoat: сканеры были запущены, модель исправила исходный код, тесты проекта были запущены, и дерево было просканировано заново. Ничего не постановочно, и оценка 100/A означает, что настроенные движки ничего не нашли — а не то, что код доказанно безопасен.


🆚 Когда выбирать DvalinCode

Если вам нужно… Ответ DvalinCode
Агент, который одобрит ваша служба безопасности Инструменты с ограничениями политики, явные режимы одобрения, dvalincode trust, журналы аудита, подтверждение OpenSSF и документы соответствия ISO/IEC 42001.
ИИ-кодинг для регулируемых репозиториев — финансы, здравоохранение, корпоративные данные, код с конфиденциальными данными клиентов Локальный runtime, собственная модель, .dvalincodeignore, контролируемый исходящий трафик и минимизированные журналы аудита.
Более безопасная альтернатива универсальным автономным агентам кодинга Тезис продукта — контролируемость / прозрачность / аудируемость, а не просто «модель может редактировать файлы».
Рабочие процессы ИИ, ориентированные на IDE Бинарник без зависимостей (~25 МБ). Работает где угодно, IDE не требуется. Оболочка macOS по умолчанию в песочнице — сеть запрещена, запись ограничена cwd.
Терминал-ориентированные рабочие процессы ИИ Запуск из CLI → автоматически открывается современный веб-интерфейс с подсветкой кода и одобрением изменений «красный/зелёный». Одна команда установки, больше ничего не нужно.
Только облачные рабочие процессы ИИ Любая совместимая с OpenAI конечная точка — полноправный участник. Запустите Ollama с Qwen2.5-Coder: без ключа, без интернета, без затрат за токен.
Одномашинная настройка ИИ Файл AGENTS.md, добавленный в репозиторий, передаёт ИИ-контекст в каждый клон. Файл dvalin.json точно так же передаёт команды автоматизации команды — экспортируйте с боковой панели, закоммитьте, и готово.

🚀 Быстрая установка

Homebrew (macOS / Linux)

brew tap arthurpanhku/dvalincode https://github.com/arthurpanhku/dvalincode
brew install arthurpanhku/dvalincode/dvalincode

Устанавливает тот же релизный архив, подписанный контрольной суммой, что и однострочник, а brew upgrade поддерживает его в актуальном состоянии. Homebrew никогда не применяет атрибут карантина macOS, поэтому этот путь не подпадает под Gatekeeper.

macOS / Linux (одной командой)

curl -fsSL https://raw.githubusercontent.com/arthurpanhku/dvalincode/main/scripts/install.sh | bash

Определяет вашу ОС и архитектуру, загружает правильный бинарник, устанавливает в ~/.dvalincode/ и добавляет его в ваш PATH. На macOS также устанавливает нативный DvalinCode.app в /Applications (пропустите с помощью DVALINCODE_NO_APP=1), так что окно рабочего стола запускается прямо из Launchpad. После перезагрузки:

source ~/.zshrc    # or ~/.bashrc
dvalincode                       # interactive terminal agent
dvalincode dvalin .              # white-box security scan (GUI-independent)
dvalincode serve                 # start the web GUI, open the browser
dvalincode serve --host 0.0.0.0 --no-open   # host it on a server for remote/browser use
echo "inspect src and summarize" | dvalincode run - --output-format stream-json
dvalincode mcp-serve             # task-level stdio MCP server for external agents

Безголовый режим run и mcp-serve сохраняют ту же политику и контрольную точку аудита, что и интерактивные клиенты. См. рецепты для автоматических сценариев с примерами для cron, CI и внешних агентов.

Windows

Скачайте dvalincode-v*-windows-x64.zip со страницы релизов, распакуйте и дважды кликните start.bat.

Ручная загрузка

Возьмите архив для вашей платформы со страницы релизов:

Платформа Архив
macOS Apple Silicon (M1/M2/M3) dvalincode-v*-macos-arm64.tar.gz
macOS Intel dvalincode-v*-macos-x64.tar.gz
Windows x64 dvalincode-v*-windows-x64.zip
Linux ARM64 dvalincode-v*-linux-arm64.tar.gz
Linux x64 dvalincode-v*-linux-x64.tar.gz

Проверьте по SHA256SUMS.txt (включён в каждый релиз).

Каждый релиз также содержит dvalincode-v*-evidence.json — пакет доказательств (Evidence Pack), который поставляемый бинарник сгенерировал сам о себе на сборочной машине: два реальных управляемых запуска, один разрешённый и один заблокированный политикой, с их хэш-цепочками. Вы можете проверить утверждения на этой странице перед установкой чего-либо:

dvalincode evidence verify dvalincode-v0.14.0-evidence.json   # offline, reads only the file

Контрольная сумма пакета находится внутри SHA256SUMS.txt, который является предметом аттестации происхождения сборки релиза. Как это создаётся →

macOS Gatekeeper: бинарники не подписаны. При первом запуске либо снимите флаг карантина командой xattr -dr com.apple.quarantine ~/.dvalincode, либо щёлкните правой кнопкой мыши по бинарнику в Finder → Открыть → подтвердите.

Обновления

DvalinCode обновляется сам — нет необходимости повторно запускать установщик:

dvalincode update --check   # is a newer release out? (read-only)
dvalincode update           # download, verify, and install the latest

Он находит последний релиз на GitHub, и для бинарной установки загружает соответствующий архив, проверяет его по SHA256SUMS.txt релиза перед заменой любых файлов, затем заменяет ~/.dvalincode/ на месте. npm-установки обновляются через npm i -g, а исходники — через git pull. Добавьте -y, чтобы пропустить запрос, --prerelease для отслеживания предрелизов или --json для скриптов.

Десктопное приложение macOS проверяет отдельный трек релизов gui-v* при запуске. Когда доступна более новая версия GUI, оно спрашивает перед загрузкой, проверяет архив по SHA256SUMS-gui.txt, проверяет версию приложения, затем заменяет и перезапускает DvalinCode.app. Если замена не удалась, выполняется откат к предыдущей версии.


🎬 Первоначальная настройка

Терминал (по умолчанию): запустите dvalincode. При первом запуске он проведёт вас через одноразовую настройку провайдера (выберите провайдера, вставьте ваш API-ключ, выберите модель) и сохранит её в ~/.dvalincode/config.json. Затем вы попадаете в приглашение — пишите для общения, /mode для переключения между Chat / Cowork / Code / Dvalin, /help для списка команд. В GUI разделы Chat и Cowork объединены в Home.

Веб-GUI: запустите dvalincode serve, затем:

  1. Сервер запускается на http://localhost:3000, и ваш браузер открывается автоматически.
  2. Нажмите LLM Configuration на боковой панели (слева внизу).
  3. Выберите провайдера, вставьте API-ключ, выберите модель и нажмите Save.
  4. Необязательно: сохраните текущую конфигурацию как именованный профиль (например, fast, cheap, local-ollama), чтобы быстро переключаться позже.

Оба используют общую конфигурацию и сессии в ~/.dvalincode/.


✨ Возможности

Категория Возможность Примечания
Режимы Home / Code / Dvalin Home содержит режим Ask только для чтения и Collaborate с одобрением действий; Code — сфокусированная автономная разработка; Dvalin — рабочее пространство безопасности scan-to-fix
Разрешения кода Ask Permissions / Plan Mode / Auto Mode / Bypass permissions Проверенное поведение: Ask запрашивает одобрение перед записью/командами, Plan только для чтения и не записывает файлы, Auto выполняет операции автоматически, Bypass работает без запросов подтверждения
Рабочие пространства Open folder / Import Git / Add worktree Cowork и Code могут переключаться на локальную папку, клонировать Git-проект или создавать Git-worktree из интерфейса
Управление OpenSSF Scorecard / ISO 42001 AIMS alignment Scorecard, CodeQL, Dependabot, закреплённые Actions, оценка воздействия ИИ, реестр рисков и регламент проверок описаны в docs/security/ и docs/governance/
Безопасное исправление Встроенное + Semgrep CE + Trivy + OSV-Scanner / SARIF / кейсы / worktrees / тесты / черновик PR Dvalin обнаруживает установленные движки, нормализует SARIF, оценивает риск, сохраняет кейсы, выполняет исправления на основе доказательств, проверяет изменения и публикует только после явного действия пользователя
Навыки Загрузка / выгрузка / встроенные навыки безопасности Навыки находятся в ~/.dvalincode/skills; встроенные направляют сканирование безопасности и исправления с помощью специальных инструментов агента. Формат →
Composer Ссылки на файлы через @ Введите @ для нечёткого поиска файлов; выбранные файлы подставляются в промпт
Слэш-команды / /clear /compact /git /plan /undo /help
Многострочный ввод + прерывание Shift+Enter для новой строки, кнопка остановки для прерывания потока
Интерфейс инструмента Встроенные диффы Результаты edit_file и write_file отображаются как красно-зелёный unified-дифф, по умолчанию свёрнутый
Диалог подтверждения с диффом Режим Cowork показывает дифф до применения изменения
Живой счётчик инструментов + токены + стоимость Верхняя панель показывает итоги сессии в реальном времени
Агент Сжатие контекста на основе LLM /compact резюмирует в разделы Цель / Выполнено / Решения / Ожидающее
Постоянный стек отмены /undo [N] отменяет последние N вызовов инструментов
Отчёт о запуске Markdown-сводка по каждому запуску (файлы, команды, решения, результат теста) — карточка в GUI + dvalincode report
Осведомлённость о Git Имя ветки в верхней панели; инструмент git_status; git-контекст автоматически внедряется в промпт
Память проекта AGENTS.md Постоянные инструкции для каждого репозитория, автоматически загружаются при каждом ходе
Безопасность Журнал аудита с защитой от изменений Хэш-цепочечные JSONL-файлы для каждого запуска в ~/.dvalincode/audit/; dvalincode report verify обнаруживает правки
Песочница macOS sandbox-exec блокирует сеть; разрешает запись только в cwd и /tmp
.dvalincodeignore Исключение в стиле gitignore; блокирует read_file / list_files / search_text
Подтверждение каждого действия Одобрять/отклонять каждую запись / удаление / вызов shell в режиме Cowork
Внешний вид Переключение тем Тёмная / светлая / системная, сохраняется; system следует за ОС в реальном времени
Провайдеры OpenAI-совместимые конечные точки DeepSeek · OpenAI · Groq · OpenRouter · Ollama · пользовательские
Многопрофильная конфигурация Сохранение и переключение между именованными наборами (провайдер, модель, API-ключ)
Сессии Автосохранение + восстановление Все сессии сохраняются в ~/.dvalincode/sessions/ в формате JSON
Память с LLM-сводками Межсессионная сводка сохраняет ориентацию агента после перезапуска
Память Локальная память пользователя/проекта Поисковые факты, предпочтения и решения в ~/.dvalincode/memory/; импорт из Claude/Hermes/Markdown
Переносимость данных Экспорт / импорт всех данных Один пакет: память + сессии + конфигурация + аудит — dvalincode export / import или GUI Настройки → Экспорт / Импорт
Markdown-транскрипт Загрузка любого разговора в формате Markdown — иконка загрузки на боковой панели, dvalincode session md <id> или /api/sessions/:id/markdown

⌨️ Слэш-команды

Команда Описание
/clear Очистить текущий разговор (на стороне клиента, начинается новая сессия)
/compact Сжатие контекста на основе LLM — заменяет историю структурированной сводкой
/undo [N] Отменить последние N вызовов инструментов (по умолчанию 1)
/git Выполнить git_status и показать ветку, последние коммиты, изменённые файлы
/plan <задача> Попросить агента спланировать задачу пошагово без выполнения
/help Показать все доступные слэш-команды

🛠️ Архитектура

┌───────────────────────────┐   ┌─────────────────────────┐
│  Terminal UI (readline)   │   │  Browser GUI (React/Vite)│
│  streaming · approvals    │   │  ChatThread · DiffViewer │
└─────────────┬─────────────┘   └────────────┬────────────┘
              │ in-process          HTTP / WebSocket
              │                ┌───────────────▼─────────────┐
              │                │  Express + ws server         │
              │                │  /api/* · `dvalincode serve` │
              │                └───────────────┬─────────────┘
              └──────────────┬─────────────────┘
┌────────────────────────────▼────────────────────────────┐
│  runAgentTurn — shared turn-runner (src/agent/session)   │
│  provider · prompt (mode · git · AGENTS.md) · session    │
└────────────────────────────┬────────────────────────────┘
                             │
┌────────────────────────────▼────────────────────────────┐
│                    Agent Engine                          │
│  AgentLoop (8-state machine) → AgentRunner              │
│  Streaming · Interrupt · Undo stack · LLM compaction    │
│  run_start / run_end → AuditSink (hash-chained JSONL)   │
└──────────────────────────┬──────────────────────────────┘
                           │ run()
┌──────────────────────────▼──────────────────────────────┐
│  ToolRegistry — Zod schemas + permission gating         │
│  + audit taps: tool_call · file_* · shell_exec          │
│  read_file · list_files · search_text · git_status ·    │
│  write_file · edit_file · delete_file · shell           │
└─────────────────────────────────────────────────────────┘

Цикл агента — 8 состояний

RESTORE → COMPACT → COMMAND → BUILD → RUN → SAVE → RESPOND → DONE
  1. RESTORE — Загрузка сессии из ~/.dvalincode/sessions/
  2. COMPACT — Если контекст близок к лимиту, сжать историю (LLM-сводка)
  3. COMMAND — Обработка встроенных слэш-команд
  4. BUILD — Сборка системного промпта (режим + проект + git + AGENTS.md)
  5. RUN — Передача в AgentRunner для цикла вызова инструментов LLM
  6. SAVE — Сохранение сессии
  7. RESPOND — Генерация межсессионной сводки памяти
  8. DONE

🧪 Тесты

npm test

372 теста · 56 файлов · все зелёные.


🏗️ Сборка из исходников

Требуется Bun (curl -fsSL https://bun.sh/install | bash).

git clone https://github.com/arthurpanhku/dvalincode
cd dvalincode
npm install
npm run dev:all                 # start backend (3001) + Vite (5173)

Собрать релизные бинарники для всех платформ:

bash scripts/build-release.sh   # → release/ with tar.gz / zip + SHA256SUMS.txt
bash scripts/build-release.sh darwin    # macOS only
bash scripts/build-release.sh windows   # Windows only

Перед публикацией релиза:

(cd release && shasum -a 256 -c SHA256SUMS.txt)
unzip -l release/dvalincode-v*-windows-x64.zip | grep 'web/dist/index.html'
tar tzf release/dvalincode-v*-macos-arm64.tar.gz | grep 'DvalinCode.app/Contents/Resources/AppIcon.icns'

Windows-смоук-тест: распакуйте dvalincode-v*-windows-x64.zip в Windows и запустите start.bat из распакованной папки. Сервер должен открыть http://localhost:3000. Если он сообщает об ошибке пути ENOENT в B:\~BUN\root\web\dist, значит, определение скомпилированного виртуального пути Bun регрессировало; упакованный бинарник должен разрешать web/dist рядом с распакованным исполняемым файлом.

Примечание: Bun позволяет внедрять иконку/метаданные Windows .exe только при компиляции в Windows. Кросс-сборки macOS/Linux по-прежнему создают корректный Windows-архив, но без встроенной иконки .exe.


🌐 Провайдеры

DvalinCode поддерживает любую OpenAI-совместимую конечную точку. Встроенные пресеты, отсортированные по стоимости:

Провайдер Самая дешёвая модель Ввод / Вывод Примечания
Groq llama-3.1-8b-instant Бесплатный тариф Самые быстрые открытые модели — Llama 3.3 70B, Mixtral
Ollama qwen2.5-coder $0 (локально) Не нужен API-ключ, работает на вашей машине
DeepSeek deepseek-chat $0.14 / $0.28 за 1M Дёшево и мощно; v3 почти соответствует качеству GPT-4
OpenRouter google/gemini-2.0-flash-001 $0.10 / $0.40 за 1M 200+ моделей, включая Claude, Gemini, Llama
OpenAI gpt-4o-mini $0.15 / $0.60 за 1M Надёжно; o1 доступна для глубоких рассуждений
Пользовательский — зависит Любой OpenAI-совместимый базовый URL

DvalinCode показывает стоимость за сессию в реальном времени в верхней панели — переключайтесь между провайдерами в модальном окне Конфигурация LLM, сохраняйте именованные профили и сравнивайте на лету.


❓ Часто задаваемые вопросы

Отправляет ли он мой код третьим лицам?


Только то, что агент отправляет настроенной вами LLM. Сессии, конфигурации и профили хранятся на вашей машине в ~/.dvalincode/. Чтобы исключить конфиденциальные файлы из поля зрения агента, поместите .dvalincodeignore в корень репозитория (шаблоны в стиле gitignore).

Можно ли запускать без API-ключа?


Да — используйте Ollama. Скачайте модель (ollama pull qwen2.5-coder), затем в модальном окне Конфигурация LLM выберите провайдера Ollama. Без ключа, без интернета, без затрат за токен.

Почему Home, Code и Dvalin?


Они представляют разные результаты и настройки безопасности по умолчанию. Home группирует режимы Ask (только чтение) и Collaborate (с одобрением). Code — это специализированный агент разработки ПО. Dvalin — это конвейер безопасности с доказательствами сканера, кейсами исправлений, изолированными рабочими деревьями, верификацией и явной публикацией черновиков PR. Вы можете переключаться в любое время, сохраняя контекст проекта.

Изолирован ли инструмент shell?


На macOS команды используют sandbox-exec; на Linux ограничительные сетевые политики используют Bubblewrap, если он установлен. В Windows пока нет поддерживаемой сетевой изоляции подпроцессов, поэтому ограничительные политики завершаются с ошибкой, а не молча выполняются без ограничений. Сам нативный запуск команд работает на всех трёх платформах.

Какие системные оболочки поддерживаются?


Команды Linux и macOS выполняются через /bin/sh; команды Windows — через системную ComSpec (по умолчанию cmd.exe). Полные нативные командные строки поддерживают конвейеры, перенаправления и условные операторы. Раздельная форма command + args заключает пути исполняемых файлов и аргументы в кавычки для хост-оболочки.

Как увидеть, что агент реально делал — и можно ли доверять журналу?


Каждый запуск записывает журнал аудита в формате JSONL в ~/.dvalincode/audit/run-<timestamp>-<id>.jsonl. Отрисуйте его с помощью dvalincode report --last (или посмотрите сворачиваемую карточку Run Report в GUI). Каждая запись связана с предыдущей SHA-256-хешем, поэтому любое последующее редактирование обнаружимо — dvalincode report verify <run-id> сообщает ✓ цепочка цела или точное место разрыва. Это защита от вмешательства (tamper-evident), а не от взлома (tamper-proof): локальный злоумышленник, способный переписать весь файл, может пересчитать цепочку. Ценность — в судебной экспертизе/подотчётности. Полная модель угроз — в docs/AUDIT-TRAIL.md.

Перезапишет ли он мои файлы без спроса?


Зависит от режима. Home → Ask никогда не записывает. Home → Collaborate требует одобрения для каждого файла (с встроенным красным/зелёным diff до того, как вы нажмёте «Разрешить»). Режимы Code и Dvalin соблюдают выбранный уровень разрешений; используйте Auto только для доверенных рабочих областей или изолированных веток.

Бинарный файл macOS не открывается — «непроверенный разработчик»


Бинарный файл не подписан. Выполните эту команду один раз, чтобы снять флаг карантина:

xattr -dr com.apple.quarantine ~/.dvalincode

Или щёлкните правой кнопкой мыши по бинарному файлу в Finder → «Открыть» → подтвердите один раз.

Отправляется ли AGENTS.md каждый ход?


Да — DvalinCode читает AGENTS.md из корня проекта перед каждым ходом и внедряет его в системный промпт под заголовком === PROJECT INSTRUCTIONS ===. Держите его кратким — он учитывается в вашем лимите токенов.


🤝 Вклад в проект

Вклад приветствуется. Кодовая база намеренно небольшая и точечная — см. CONTRIBUTING.md.

git clone https://github.com/arthurpanhku/dvalincode
cd dvalincode && npm install
npm test                # 372/372 ✅
npm run typecheck

📄 Лицензия

MIT — см. LICENSE.


🔗 Независимость и атрибуция

DvalinCode — это независимая реализация. Он не связан с Anthropic, Claude, Claude Code, OpenAI, OpenAI Codex, GitHub, Cursor, Aider, opencode, Cline, HKUDS/nanobot или любым другим проектом или поставщиком, указанным здесь, и не спонсируется ими, а также не одобрен ими.

Мы с благодарностью признаём, что направление продукта и архитектура DvalinCode были сформированы под влиянием публичных исследований, проектов с открытым исходным кодом, опубликованных статей, стандартов, заметок о выпусках и распространённых шаблонов рабочих процессов в экосистеме агентного программирования:

  • HKUDS/nanobot (MIT) помог подтвердить подход с явным состоянием хода, используемый в потоке TurnState в DvalinCode.
  • Статья ReAct (Yao и др., 2022) описывает широко используемый цикл «рассуждай, действуй, наблюдай», который лежит в основе многих современных агентов, использующих инструменты.
  • Формат сообщений tool_calls от OpenAI, а также более широкая экосистема провайдеров, совместимых с OpenAI, дают DvalinCode переносимый интерфейс для взаимодействия моделей и инструментов.
  • OpenAI Codex / Codex CLI, Claude Code, Aider, opencode, Cursor, Cline и аналогичные агенты программирования прояснили ожидания пользователей от терминальных агентов, режимов планирования/сборки, запросов разрешений, локального контекста проекта, песочницы, жизненного цикла сеанса, интеграции MCP и рабочих процессов редактирования с приоритетом diff.
  • OpenAI Codex Security и его публичная документация повлияли на исследования Dvalin как специализированного агента безопасности и переносимость передачи SARIF. Dvalin остаётся независимой, конкурирующей средой выполнения безопасности.
  • Соглашение об инструкциях проекта в AGENTS.md, распространённое в инструментах агентного программирования, повлияло на механизм загрузки локальных инструкций проекта в DvalinCode.
  • CodeQL, GitHub Code Scanning, Semgrep, SARIF, OpenSSF Scorecard и ISO/IEC 42001 повлияли на позицию DvalinCode в отношении исправления уязвимостей и одобряемости.
  • Паттерны Git worktree, MCP и локально-ориентированных инструментов разработчика повлияли на направление продукта в области изолированного исправления, управляемого доступа к инструментам и аудируемого выполнения.

Эти ссылки сформировали наше понимание того, что пользователи ожидают от агентов программирования. Исходный код, промпты, тексты интерфейса, схемы инструментов, структура модулей и реализация продукта DvalinCode остаются оригинальными, если явно не указано иное. Никакой исходный код, промпты или тексты интерфейса из вышеуказанных проектов не были скопированы.

Полные ссылки на источники: docs/REFERENCES.md


💛 Благодарность нашим участникам

Каждый вопрос, идея, улучшение документации, тест и вклад в код помогают сделать DvalinCode лучше.

Участник Профиль GitHub
Arthur Pan @arthurpanhku
Shivas @shivasb42
Aditya @adity982
badhope @weed33834

См. полную историю вклада, включая автоматизированные обновления зависимостей и обслуживания.

Хотите присоединиться к ним? Прочтите руководство для контрибьюторов и отправьте свой первый pull request.

Войдите, чтобы оставить комментарий