Commit Graph
334 Commits
Author SHA1 Message Date
Dmitry Dementiev 9f6db963be chore(opencode): второе мнение permission-reviewer на glm-5.3-flash
У glm-5.3-flash в подписке opencode-go лимиты в 4 раза выше, чем у
deepseek-v4.1-flash, при сравнимом интеллекте. outputFormat json_schema:
модель поддерживает structured output (по models.dev).
2026-10-10 22:00:13 +02:00
Dmitry Dementiev b516e9cc54 fix(opencode): searxng обратно на npx - node установлен
npm-пакет ihor-sokoliuk/mcp-searxng работает (проверен initialize-
handshake). PyPI-варианты заброшены и несовместимы с текущим MCP SDK.
2026-10-10 18:06:36 +02:00
Dmitry Dementiev 156d22c3b0 fix(opencode): searxng MCP переведён с npx на uvx
На машине нет Node.js - spawn npx падал с NotFound, searxng никогда
не подключался. Тот же сервер есть на PyPI и работает через uvx,
как и duckduckgo.
2026-10-10 17:59:53 +02:00
Dmitry Dementiev 452b0c5c75 fix(opencode): второе мнение permission-reviewer на доступную модель
escalationReviewer ссылался на deepseek/deepseek-flash - такого провайдера
нет, каждая эскалация Jev падала с 'Reviewer model is unavailable'.
Заменено на opencode-go/deepseek-v4.1-flash (подписка, в 2 раза дешевле
Zen): outputFormat text (у модели нет json_schema), variant high
(none не поддерживается, есть только low/high/max).
2026-10-10 17:49:47 +02:00
Dmitry Dementiev 32cd7097e6 refactor(opencode): удалены устаревшие профили safe-build/safe-plan
Профили дублировали работу permission-reviewer статическими списками:
их deny обходили ревьюер и давали отказы без причины (git push). Теперь
решения об ask принимает плагин; статикой оставлены только deny на чтение
секретов - детерминированная гарантия, LLM-ревьюеру не доверяем.

- opencode.json: default_agent -> build, убраны статические списки
  и deny на git push (решение за ревьюером)
- permission-reviewer.jsonc: actorProfiles переключены на встроенные
  build/plan
- install.sh: блок линковки agents заменён чисткой старого симлинка;
  добавлено копирование permission-reviewer.jsonc в ~/.config/opencode
  (плагин читает его только оттуда - раньше тюнинг не применялся)
- тесты: проверка чистки симлинка и копирования конфига ревьюера
2026-10-10 17:32:34 +02:00
Dmitry Dementiev c3efe60a00 refactor(agents): убраны настройки Claude из git и пакет codex
Claude: из репозитория удалены settings.local.json (разрешения не нужны
при autoapprove), statusline-command.sh и устаревший CLAUDE.md; линкуются
только skills. install.sh убирает артефакты прежних прогонов.

Codex: пакет удалён целиком, ~/.codex - обычный каталог. Персональные
мостики скиллов убраны; миграция раскрывает свёрнутый симлинк и переносит
рантайм-данные. Чищены chezmoi-скрипты.

install.sh: migrate_claude_stow_symlink обобщена в migrate_folded_symlink.
Тесты: 3 устаревших удалены, 3 добавлены; assert_not_exists ловит битые
симлинки.
2026-10-10 17:15:34 +02:00
Dmitry Dementiev 346b3bfc61 feat(opencode): ревьюер разрешений переключён на Jev со вторым мнением
- Зачем: Jev (System One) решает за ~0.6 с против 4 с у чат-модели,
  но на тонком контексте занижает confidence (0.6 < 0.7) и эскалировал
  даже тривиальные команды.
- Что: model=opencode/jev-1.13-free (ключ OPENCODE_API_KEY из
  ~/.env.secrets, нужен export); escalationReviewer=deepseek/deepseek-flash
  для неуверенных решений; actorProfiles для safe-build/safe-plan.
- Проверка: прогон printf → allow (low, 0.97), аудит пишется;
  fail-closed при отсутствии ключа подтверждён (эскалация, не allow).
2026-10-06 17:14:41 +03:00
Dmitry Dementiev 54467a2888 fix(opencode): запрещено чтение ключей и секретов через bash
- Зачем: allow-правило "cat *" в safe-агентах пропускало чтение
  ~/.ssh/*, ~/.env.secrets и подобного без ask, мимо ревьюера.
- Что: deny-паттерны на .ssh, id_rsa/id_ed25519, .pem, shadow, .env*,
  *.secrets*, .netrc в safe-build и safe-plan; .env.example оставлен allow.
  Префиксные паттерны — заслон от буквальных случаев; обход через
  интерпретаторы остаётся на ревьюере (он видит содержимое скриптов).
- Проверка: прогон cat ~/.ssh/config → Permission denied до выполнения,
  содержимое в вывод не попало.
2026-10-06 16:52:23 +03:00
Dmitry Dementiev eca939b835 chore(bash): добавлен OPENCODE_API_KEY в шаблон secrets
- Зачем: ключ Zen нужен ревьюеру разрешений Jev в окружении процесса
  opencode; ZAI больше не используется.
- Что: добавлен закомментированный export OPENCODE_API_KEY с пояснением;
  убран ZAI_API_KEY; зафиксировано комментирование CONTEXT7_API_KEY
  из рабочего дерева.
- Проверка: ещё не выполнена; ключ появится после заведения в Zen.
2026-10-06 16:41:05 +03:00
Dmitry Dementiev 22c4fcd710 chore(opencode): permission-reviewer.jsonc исключён из stow-линковки
- Зачем: плагин читает конфиг с O_NOFOLLOW и молча игнорирует симлинк
  (проверено doctor: со слинкованным файлом применяются дефолты).
- Что: добавлен .stow-local-ignore; файл деплоится копией в
  ~/.config/opencode/, репозиторий остаётся источником истины.
- Проверка: doctor видит файл и применяет model=deepseek/deepseek-flash.
2026-10-06 15:47:57 +03:00
Dmitry Dementiev 2868ba07af feat(opencode): подключён плагин opencode-permission-reviewer для V2
- Зачем: каждый ask-запрос требовал ручного подтверждения; плагин
  пропускает безопасные действия через модель-ревьюер, остальное эскалирует.
- Что: добавлена запись плагина в plugins (V2-формат) и доверенный конфиг
  permission-reviewer.jsonc (ревьюер deepseek/deepseek-flash, variant none).
- Проверка: сквозной прогон opencode run — printf hello автоодобрен
  ревьюером (risk low, confidence 0.98), запись в audit jsonl появилась.
2026-10-06 15:44:19 +03:00
ddadmin eaa81f4f8b Merge branch 'docs/gitea-issues': задачи в Gitea через tea 2026-09-28 11:09:59 -04:00
ddadminandClaude Opus 5.5 e8bf134554 docs(agents): вести задачи в Gitea через tea
Хранилище задач переведено с локальных файлов в .scratch/ на Gitea Issues.
Состояния triage стали метками Gitea. Оставшиеся английские заголовки
и термины в документах для агентов переведены на русский.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 11:09:21 -04:00
ddmitry 310cddf749 Merge PR #2: .scratch/ — только локально 2026-09-28 17:58:58 +03:00
ddmitry fa9a93aa0c Merge PR #1: упростить proxy-client до личного инструмента 2026-09-28 17:58:37 +03:00
ddadminandClaude Opus 5.5 68a944dbdf chore: .scratch/ — только локально, в .gitignore
Рабочие заметки агентов больше не коммитятся и не удаляются перед
слиянием: каталог живёт на машине. Долговечное по-прежнему выносится
в docs/ до слияния.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 10:56:38 -04:00
ddadminandClaude Opus 5.5 4e7777527f chore: убрать рабочие заметки перед слиянием в master
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 10:38:35 -04:00
ddadminandClaude Opus 5.5 09f57aa1e7 fix(proxy-client): замечания слепого ревью
- state.json снова хранит адрес и порт: при смене конфига у работающего
  Xray status/env/run отказывают и советуют перезапустить start.
- Ошибки разбора ссылки называют файл профиля.
- Тесты: отказ start при чужой версии Xray, ключи REALITY не попадают
  в вывод, Xray узнаётся после замены файла; машинный конфиг проверяется
  через CLI; тест пути по умолчанию не зависит от доступности Hiddify.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 10:38:35 -04:00
ddadminandClaude Opus 5.5 5ccc75419d docs(scratch): задача на спецификацию и README после упрощения
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 10:19:26 -04:00
ddadminandClaude Opus 5.5 e709c585fa docs(proxy-client): спецификация под упрощённый код, ссылка из README
Спецификация 603 → 220 строк: без описаний снятых защит и без пересказа
кода и README; остались задача, границы, решения с причинами и риски.
В README раздел «Изменение кода» ведёт к спецификации и тестам.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 09:36:56 -04:00
ddadminandClaude Opus 5.5 a5db265f47 refactor(proxy-client): убрать избыточную защиту из CLI и тестов
- Проверка «тот ли процесс»: /proc/PID/exe для Xray и cmdline для
  супервизора вместо boot_id, времени старта и разбора argv; нет больше
  состояния «не удалось подтвердить, удалите файлы вручную».
- Установка Xray: SHA-256 и атомарная замена остаются; без ограничений
  размера, строгого разбора .dgst и блокировки на время установки.
- Разбор ссылки: extra — обычный json.loads; allowInsecure/insecure
  игнорируются с предупреждением.
- Ошибки о файлах называют полный путь и готовую команду
  (chmod 600 для профиля, rm для битого state.json).
- Тесты: разбор ссылок — табличные без запуска процессов, по одному
  запуску на сценарий управляемого Xray; без подмены внутренних функций.
  Код 1569 → 925 строк, тесты 2479 → 895, прогон 63 → 9 с.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 09:34:57 -04:00
ddadminandClaude Opus 5.5 06ca4ab0c6 refactor(proxy-client): упростить установщик пакета и shell-тесты
- install.sh ставит три прямые ссылки без Stow; чужие файлы не трогает
  и перечисляет все конфликты сразу; ~/.local и ~/.config могут быть
  ссылками; блок в ~/.bashrc дописывается, если нет маркера.
- proxy_on читает вывод proxy-client env без временного файла.
- Тесты Bash-функций работают через поддельный PROXY_CLIENT_BIN.
- test_proxy_client_full.sh запускает только тесты proxy-client,
  прогон под Python 3.8 — если есть uv.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 09:28:07 -04:00
ddadminandClaude Opus 5.5 502f828c6f docs(proxy-client): принцип простоты — в спецификацию вместо ADR
Отдельный ADR дублировал спецификацию и оставлял в ней устаревшие места.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 09:23:13 -04:00
ddadminandClaude Opus 5.5 05a7f1e4fb docs(adr): proxy-client — личный инструмент, простота важнее защиты
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 09:22:28 -04:00
ddadminandClaude Opus 5.5 fb23b031bc docs(scratch): план упрощения proxy-client
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 09:21:39 -04:00
ddadminandClaude Opus 5.5 205e995f26 fix(proxy-client): порт свободен сразу после остановки по Ctrl+C
Проверка порта перед запуском открывала сокет без SO_REUSEADDR и
отказывала, пока на порту доживали закрытые соединения Xray (TIME_WAIT),
хотя сам Xray запустился бы. Живой слушатель флаг на Linux не обходит,
так что занятый порт по-прежнему обнаруживается.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 08:51:34 -04:00
ddadminandClaude Opus 5.5 b492f8f4eb fix(proxy-client): поддержка новых VLESS-ссылок Hiddify
Новые ссылки Hiddify пишут «/» перед параметрами, используют
VLESS-шифрование mlkem768x25519plus и flow=xtls-rprx-vision поверх XHTTP.
Разбор принимает эти ссылки; прежние форматы работают как раньше.
Vision поверх XHTTP разрешён только вместе с шифрованием.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 08:40:36 -04:00
Dmitry DementievandClaude Opus 5 a074568cd9 chore(gitignore): исключён кэш скиллов, синхронизируемых с claude.ai
- Зачем: Claude Code с v2.1.273 при старте сессии скачивает скиллы аккаунта
  claude.ai в ~/.claude/skills/synced/; ~/.claude/skills — симлинк на
  agents/.agents/skills, поэтому кэш попадал в репозиторий как
  неотслеживаемый каталог.
- Что: agents/.agents/skills/synced/ добавлен в .gitignore.
- Проверка: git status после правки чистый, кроме самого .gitignore.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 18:13:08 +03:00
Dmitry DementievandClaude Opus 5 e0048bb5b2 feat(skills): добавлен скилл visual-pr для описания PR
- Зачем: не было скилла про содержание описания PR — только gh-команды
  в github. Формат humanlayer/visual-pr совпадает с принятой структурой
  коммитов «Зачем / Что / Проверка» и опирается на уже установленный show-me.
- Что: адаптированная копия humanlayer/skills visual-pr. Убраны привязки
  к платформе HumanLayer (.humanlayer/tasks, permalink из хука), дубль
  show-me заменён ссылкой на установленный скилл, финальный отчёт свёрнут
  в одну строку. Скилл хостинг-независимый (glab, tea, gh), ручной вызов
  через disable-model-invocation, язык описания — по истории коммитов.
  Шаблон references/pr_description_template.md — без изменений.
  В .skill-lock.json не добавлен, чтобы npx skills update не перезатёр
  правки.
- Проверка: SKILL.md вычитан по правилам writing-for-agents (кэш --help
  и дубли шаблона убраны); ссылка ../show-me/SKILL.md резолвится через
  ~/.claude/skills. Прогон на реальном PR ещё не выполнен.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 18:06:54 +03:00
Dmitry DementievandClaude Sonnet 5 3b9f422acb docs(skills): урок про накладные расходы конвейера vs «сделать самому»
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 17:46:21 +03:00
Dmitry DementievandClaude Sonnet 5 53761f0a87 chore(opencode): удалён кастомный провайдер zai
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-17 17:45:27 +03:00
ddadmin 5f23fdda3c chore(opencode): удалён плагин superpowers
- Зачем: плагин больше не используется, а в OpenCode 2 он не грузится (V1-формат) и даёт ошибку на старте.
- Что: из opencode.json удалена опция plugin с репозиторием obra/superpowers.
- Проверка: opencode plugin list больше не показывает superpowers; JSON валиден; V1 и V2 читают конфиг как раньше.
2026-09-17 10:22:38 +03:00
Dmitry Dementiev 8008fb914e docs(skills): обновлён навык передачи контекста сессии
- Зачем: новому агенту нужна точка продолжения работы без пересказа существующих артефактов.
- Что: навык переименован в session-handoff; уточнены содержание записки и выбор пути, сохранён вызов из других навыков.
- Проверка: YAML и git diff --check пройдены; quick_validate.py отклоняет сохранённые поля argument-hint и disable-model-invocation.
2026-09-11 12:37:03 +03:00
Dmitry Dementiev fa90b2e817 docs(skills): упрощены правила сообщений коммитов
- Зачем: сохранён общий стиль сообщений без избыточных ограничений для модели.
- Что: тело стало гибким, уточнены условия вызова и требования к amend; убраны повторения и пошаговые инструкции.
- Проверка: quick_validate.py и git diff --check пройдены.
2026-09-11 12:24:52 +03:00
Dmitry Dementiev 0a8e7bb499 chore(skills): скилл retro исключён из версионирования
- Зачем:
  - retro входит в набор Matt Pocock и не должен храниться в этом репозитории.
- Что:
  - в agents/.agents/skills/.gitignore добавлен retro/.
- Проверка:
  - git status не показывает agents/.agents/skills/retro/.
2026-09-11 12:11:29 +03:00
Dmitry Dementiev 76008022bb feat(skills): добавлен скилл show-me
- Зачем:
  - нужно быстро и наглядно объяснять текущую тему разговора.
- Что:
  - создан agents/.agents/skills/show-me/SKILL.md.
  - скилл подбирает минимальный визуальный формат: диаграммы, деревья, diff, HTML.
- Проверка:
  - вызвать скилл show-me и оценить подобранный формат.
2026-09-11 12:11:25 +03:00
Dmitry Dementiev 36a0ac7ff7 feat(skills): добавлен скилл session-state-handoff
- Зачем:
  - после прерывания или сжатия контекста нужна возможность продолжить работу в новой сессии.
- Что:
  - создан agents/.agents/skills/session-state-handoff/SKILL.md.
  - скилл формирует документ-передачу и список скиллов для следующей сессии.
- Проверка:
  - вызвать скилл session-state-handoff и проверить созданный документ.
2026-09-11 12:09:58 +03:00
Dmitry Dementiev 26fdb7584c fix(skills): исправлена настройка песочницы Codex через AppArmor
- Зачем:
  - Профили на пути установки Codex ломались после переустановки, а прежние проверки могли давать ложный успех.
- Что:
  - Штатный профиль системного bwrap выбран основным способом настройки; исторические обходы ограничены подтверждёнными случаями.
  - Уточнены диагностика, переход со старых профилей и проверки режимов и границ записи.
  - Обновлены связанные инструкции и записан результат применения на Ubuntu 24.04.4 с Codex 0.154.0.
- Проверка:
  - Пройдены quick_validate, проверка ссылок, синтаксиса Bash и git diff --check.
  - Штатный профиль применён; старые профили выгружены. Оба режима и запреты записи проверены из процесса unconfined; подтверждены метки AppArmor у bwrap и дочерней команды.
2026-09-10 14:56:36 +03:00
Dmitry Dementiev 67aa5e67d5 docs(claude-subagent-playbook): уточнён запуск продолжения Codex
- Зачем:
  - продолжение треда не должно получать неподходящие модель и effort из конфига.
- Что:
  - добавлено предупреждение явно указывать модель и effort при resume.
- Проверка:
  - git diff --cached --check.
2026-09-09 18:23:19 +03:00
Dmitry Dementiev 2bb0ff6a1a docs(claude-subagent-playbook): уточнены правила координатора
- Зачем:
  - уточнены границы ответственности координатора и правила работы с effort.
- Что:
  - добавлено принятие результата как обязанность координатора.
  - уточнена рекомендация по смене effort внутри треда.
  - сохранены выводы из прогона t2-ml-forecast.
- Проверка:
  - git diff --check.
2026-09-09 15:08:19 +03:00
ddadmin ba9f4736ff docs(codex-subagent-playbook): обновлены правила выбора моделей
- Зачем:
  - уточнены роли моделей и подход к их выбору в конвейере субагентов.
- Что:
  - добавлена матрица цены, интеллекта, вкуса и качества текста.
  - Terra назначена отправной точкой для технических задач.
  - дополнены наблюдения о ревью и длительных сессиях Claude.
- Проверка:
  - git diff --cached --check.
2026-09-08 11:06:04 -04:00
ddadmin 8999027ea6 docs(codex-subagent-playbook): уточнены выбор модели и effort
- Зачем:
  - при делегировании нужно учитывать стоимость модели и явно задавать effort.
- Что:
  - добавлена памятка о соотношении стоимости Astra, Sol, Terra и Luna.
  - добавлено требование явно указывать уровень effort в поручении.
- Проверка:
  - git diff --check.
2026-09-07 09:51:52 -04:00
ddadmin cdd399634a docs(skills): упрощена внешняя линия playbook
- Зачем:
  - устранено противоречивое разделение ролей в инструкции сопровождения субагентов.
- Что:
  - закреплено использование одной Luna для механических работ и внешней линии.
  - убраны устаревшие указания об отдельном помощнике и свободной роли.
- Проверка:
  - git diff --check.
2026-09-07 02:36:21 -04:00
ddadmin b7ef33e091 docs(skills): усилено предпочтение Luna для внешней линии
- Зачем:
  - снизить стоимость внешнего сопровождения ревью без потери его роли.
- Что:
  - указано, что отдельная Luna с effort medium для внешней линии очень предпочтительна.
- Проверка:
  - git diff --check.
2026-09-06 17:07:14 -04:00
ddadmin ea9fdfca90 docs(skills): уточнена нагрузка внешней линии
- Зачем:
  - снизить ресурсоемкость внешнего сопровождения субагентов без потери его роли.
- Что:
  - для Luna внешней линии указан уровень effort medium вместо high.
- Проверка:
  - git diff --check.
2026-09-06 16:20:10 -04:00
ddadmin 8fe848a65d docs(skills): уточнено сопровождение субагентов
- Зачем:
  - сократить лишние обращения к координатору при ожидании ревью и передаче материалов.
- Что:
  - уточнены оценка объема Git и трекерных операций, самостоятельное ожидание и прямой файловый обмен.
  - сохранены предпочтения владельца по отдельному помощнику для Claude и передаче материалов.
  - добавлено предпочтение Opus для независимого ревью с заменой на Astra при недоступности.
- Проверка:
  - проверены локальные ссылки и git diff --check.
  - штатный валидатор до и после правок отклоняет существующий ключ disable-model-invocation; режим вызова сохранен.
2026-09-06 15:38:38 -04:00
ddadmin cbdbedb53c docs(skills): уточнены настройки Luna и сопровождение ревью
- Зачем:
  - Зафиксировать единые правила выбора глубины Luna для технических поручений и сопровождения внешнего ревью.
- Что:
  - Указана отправная настройка `high` для технических поручений Luna.
  - Уточнено, что Luna готовит краткие итоги внешнего Claude-ревью и может продолжать сохранённую сессию.
- Проверка:
  - git diff --check.
  - Проверены состав изменений и формат сообщения Conventional Commits.
2026-09-06 14:06:53 -04:00
ddadmin e13fbd7ebb docs(skills): объединены уточнения работы помощников
- Зачем:
  - сохранить в основной ветке согласованный способ экономить контекст и сопровождать ревью.
- Что:
  - добавлены правила изоляции и выбора Luna для механики Claude;
  - закреплены факты прогона, передача отчетов и границы наблюдения.
- Проверка:
  - git diff --check;
  - проверено слияние двух коммитов feature-ветки без конфликтов.
2026-09-06 14:00:10 -04:00
ddadmin cd867fcc1f docs(skills): уточнены выбор Luna и сопровождение ревью
- Зачем:
  - связать выбор помощника и глубины с фактической ценой ошибки и сохранять контекст координатора.
- Что:
  - уточнен свободный выбор `high` для Luna и выделение отдельного помощника для долгой линии Claude;
  - описаны события наблюдения, необязательный минутный опрос и прозрачная передача результата;
  - добавлены подтвержденные факты прямой передачи девяти находок и предпочтения Luna `high`.
- Проверка:
  - `git diff --check`;
  - проверены только три разрешенных файла и ссылки на комментарии #236:2840 и #236:2845;
  - ранее пройдены адресные проверки и нормализованный `quick_validate`.
2026-09-06 13:55:28 -04:00
ddadmin 0990ac6ce4 docs(skills): уточнена работа помощников координатора
- Зачем:
  - экономить контекст координатора, сохраняя проверяемость внешних ревью и объемных операций.
- Что:
  - описана механика Luna для шумного вывода, необязательного Opus-ревью и коротких отчетов;
  - уточнены изоляция контекста помощника, жизненный цикл Claude и передача разрешения и отчетов;
  - добавлены наблюдения прогона и границы для частоты опроса и приема результатов.
- Проверка:
  - git diff --check;
  - проверены ссылки и настройки навыка;
  - quick_validate на нормализованной копии без неподдерживаемого валидатором ключа `disable-model-invocation`.
2026-09-06 13:33:36 -04:00