Встроенные websearch и webfetch дают более полную выдачу, поэтому
локальные MCP-серверы поиска больше не нужны. SearXNG оставлен
в docker/searxng как резерв: добавлен README с запуском и возвратом
MCP-сервера. Заодно поправлено описание OpenCode в AGENTS.md.
- Зачем: третий круг ревью Astra и отзыв DeepSeek нашли пробелы в
разборе находок, вердикте и адаптере T3.
- Что: продолжение кругов в T3 оставлено основным путём с оговоркой, что
это расходится с замыслом авторов T3, и с разрешённым запасным путём;
резолюции пишутся файлом; вердикт связан с тяжестью находок; добавлены
проверка «работа или отписка» в T3, повод для свежего ревьюера при
переработке версии, независимость параллельных ревьюеров и заметка о
памяти Codex.
- Проверка: схемы t3_thread_configure и t3_thread_read сверены, вид
activity проверен на реальном разговоре; ссылки проверены скриптом.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Зачем: два плейбука оркестрации разошлись, а из них на практике нужно
только независимое ревью моделью другого семейства.
- Что: линзы для ревьюера (по задаче, по коду, форма и вкус, вычитание,
план), общий мандат и перепроверка; разбор находок остаётся у автора.
Механика запуска вынесена в адаптеры: T3 Code, codex exec, claude -p.
Следующие круги ревью идут продолжением сессии того же ревьюера.
Старые плейбуки пока не удалены.
- Проверка: запуск, запись отчёта и продолжение сессии прогнаны на
codex-cli 0.163.0, Claude Code 2.1.302 и в T3 Code; два круга
ревью скилла (gpt-6.1-sol, gpt-6-astra), находки исправлены; ссылки
и YAML проверены скриптом.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Зачем: прокси для агента — выбор конкретной машины. Автоматическая
правка ~/.codex/.env и ~/.claude/settings.json оказалась слишком
навязчивой.
- Что: шаблоны перенесены в proxy-client/.config/proxy-client/examples/
(codex.env, claude-settings.json) и попадают на машину вместе с
остальными примерами. install.sh больше не трогает настройки Codex и
Claude, его тесты на это удалены. Инструкция по копированию — в README
proxy-client.
- Проверка: tests/test_install.sh и tests/test_proxy_client_install.sh
проходят.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Зачем: opencode сам читает ~/.agents/skills и ~/.claude/skills. Ссылка
загружала тот же набор третий раз, и opencode выдавал сотни
предупреждений о повторяющихся именах скиллов.
- Что: install.sh больше не создаёт ссылку и удаляет прежнюю, если она
указывает на общие скиллы. README и AGENTS.md обновлены.
- Проверка: tests/test_install.sh проходит. После удаления ссылки
opencode debug skill показывает тот же набор скиллов, теперь из
~/.agents/skills.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Зачем: прокси из окружения запуска до API не доходил. Запросы Codex
отправляет общий демон app-server, и маршрут зависел от того, кто запустил
демон первым. Нужно было и обратное: Codex и Claude должны работать без
прокси, даже если запускающее приложение его задало.
- Что: шаблоны codex/proxy.env (копируется в ~/.codex/.env) и
claude/proxy-settings.json (блок env добавляется в ~/.claude/settings.json).
По умолчанию прокси 127.0.0.1:12334. install.sh не трогает выбор, уже
сделанный на машине. В README описано, как переключить машину на работу
без прокси.
- Проверка: tests/test_install.sh и tests/test_proxy_env_sync.py проходят.
Вручную: значения из ~/.codex/.env и из env в настройках Claude перекрывают
унаследованные переменные; codex doctor проходит через Xray; очищенные
адреса вместе с NO_PROXY=* дают прямое подключение.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- удалён каталог coordinator-loop, adversarial-review убран из .gitignore
- из claude-subagent-playbook убраны ссылки на оба скилла
- chief-of-staff и pr от Matt Pocock добавлены в .gitignore
- в AGENTS.md добавлено правило удаления устаревших скиллов
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ключ Context7 подставляется через {env:...}: с ${env:...} в заголовок
уходил лишний $
- убраны устаревшие в V2 разрешения write и patch, их покрывает edit
- удалён слишком широкий шаблон *shadow*
- в permission-reviewer.md отмечено, что система отключена
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Зачем: профиль XHTTP с x_padding_bytes и пустым host не запускался.
Что: Xray обновлён до 26.10.10; добавлены параметры TLS, REALITY и XHTTP,
значения по умолчанию и преобразование старых названий сессии XHTTP.
Обновлены документация и регрессионные тесты.
Проверка: 59 тестов на Python 3.14 и 3.8, Bash-функции и установщик;
16 тестов разбора после уточнения проверки SHA-256. Настоящий Xray
проверил конфигурацию и выполнил HTTPS-запрос через профиль с HTTP 200.
Пользователь подтвердил работу proxy-client start.
Плагин настроен и проверен (jev через Zen + прокси, enforce+deny),
но признан не стоящим использования: хрупкая цепочка, нервные
эскалации, запертая сессия. Запись в opencode.json отключена
(закомментирована), выводы — в docs/research/.
У glm-5.3-flash в подписке opencode-go лимиты в 4 раза выше, чем у
deepseek-v4.1-flash, при сравнимом интеллекте. outputFormat json_schema:
модель поддерживает structured output (по models.dev).
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).
Профили дублировали работу 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
(плагин читает его только оттуда - раньше тюнинг не применялся)
- тесты: проверка чистки симлинка и копирования конфига ревьюера
- Зачем: 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).
- Зачем: 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 до выполнения,
содержимое в вывод не попало.
- Зачем: ключ Zen нужен ревьюеру разрешений Jev в окружении процесса
opencode; ZAI больше не используется.
- Что: добавлен закомментированный export OPENCODE_API_KEY с пояснением;
убран ZAI_API_KEY; зафиксировано комментирование CONTEXT7_API_KEY
из рабочего дерева.
- Проверка: ещё не выполнена; ключ появится после заведения в Zen.
- Зачем: плагин читает конфиг с O_NOFOLLOW и молча игнорирует симлинк
(проверено doctor: со слинкованным файлом применяются дефолты).
- Что: добавлен .stow-local-ignore; файл деплоится копией в
~/.config/opencode/, репозиторий остаётся источником истины.
- Проверка: doctor видит файл и применяет model=deepseek/deepseek-flash.
Хранилище задач переведено с локальных файлов в .scratch/ на Gitea Issues.
Состояния triage стали метками Gitea. Оставшиеся английские заголовки
и термины в документах для агентов переведены на русский.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Рабочие заметки агентов больше не коммитятся и не удаляются перед
слиянием: каталог живёт на машине. Долговечное по-прежнему выносится
в docs/ до слияния.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- 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>
Спецификация 603 → 220 строк: без описаний снятых защит и без пересказа
кода и README; остались задача, границы, решения с причинами и риски.
В README раздел «Изменение кода» ведёт к спецификации и тестам.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Проверка «тот ли процесс»: /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>
- 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>
Проверка порта перед запуском открывала сокет без SO_REUSEADDR и
отказывала, пока на порту доживали закрытые соединения Xray (TIME_WAIT),
хотя сам Xray запустился бы. Живой слушатель флаг на Linux не обходит,
так что занятый порт по-прежнему обнаруживается.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Новые ссылки Hiddify пишут «/» перед параметрами, используют
VLESS-шифрование mlkem768x25519plus и flow=xtls-rprx-vision поверх XHTTP.
Разбор принимает эти ссылки; прежние форматы работают как раньше.
Vision поверх XHTTP разрешён только вместе с шифрованием.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Зачем: 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>
- Зачем: не было скилла про содержание описания 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>
- Зачем: плагин больше не используется, а в OpenCode 2 он не грузится (V1-формат) и даёт ошибку на старте.
- Что: из opencode.json удалена опция plugin с репозиторием obra/superpowers.
- Проверка: opencode plugin list больше не показывает superpowers; JSON валиден; V1 и V2 читают конфиг как раньше.
- Зачем: новому агенту нужна точка продолжения работы без пересказа существующих артефактов.
- Что: навык переименован в session-handoff; уточнены содержание записки и выбор пути, сохранён вызов из других навыков.
- Проверка: YAML и git diff --check пройдены; quick_validate.py отклоняет сохранённые поля argument-hint и disable-model-invocation.
- Зачем: сохранён общий стиль сообщений без избыточных ограничений для модели.
- Что: тело стало гибким, уточнены условия вызова и требования к amend; убраны повторения и пошаговые инструкции.
- Проверка: quick_validate.py и git diff --check пройдены.
- Зачем:
- retro входит в набор Matt Pocock и не должен храниться в этом репозитории.
- Что:
- в agents/.agents/skills/.gitignore добавлен retro/.
- Проверка:
- git status не показывает agents/.agents/skills/retro/.
- Зачем:
- после прерывания или сжатия контекста нужна возможность продолжить работу в новой сессии.
- Что:
- создан agents/.agents/skills/session-state-handoff/SKILL.md.
- скилл формирует документ-передачу и список скиллов для следующей сессии.
- Проверка:
- вызвать скилл session-state-handoff и проверить созданный документ.
- Зачем:
- Профили на пути установки Codex ломались после переустановки, а прежние проверки могли давать ложный успех.
- Что:
- Штатный профиль системного bwrap выбран основным способом настройки; исторические обходы ограничены подтверждёнными случаями.
- Уточнены диагностика, переход со старых профилей и проверки режимов и границ записи.
- Обновлены связанные инструкции и записан результат применения на Ubuntu 24.04.4 с Codex 0.154.0.
- Проверка:
- Пройдены quick_validate, проверка ссылок, синтаксиса Bash и git diff --check.
- Штатный профиль применён; старые профили выгружены. Оба режима и запреты записи проверены из процесса unconfined; подтверждены метки AppArmor у bwrap и дочерней команды.
- Зачем:
- продолжение треда не должно получать неподходящие модель и effort из конфига.
- Что:
- добавлено предупреждение явно указывать модель и effort при resume.
- Проверка:
- git diff --cached --check.