fix(skills): claude-subagent-playbook — правила запуска Кодекса по месту
- Зачем: - два отказа вызова из прогона #39 повторялись оттого, что правило лежало не там, где собирают команду: -s дописывали в resume по образцу exec, а < /dev/null закрывал вход у вызова, который сам получает промпт через stdin. - Что: - в codex-exec рецепт resume снабжён строкой о том, что среда треда задана при создании, а перечень ручек хода уточнён по проверке на codex-cli 0.145.0. - к правилу «промпт через stdin» добавлено, что вход этого вызова должен оставаться открытым. - в SKILL.md этап 6 правило < /dev/null сужено условием «фоновой команде, которой нечего читать со входа». - в lessons исправлен неверный хвост записи #39 про смену песочницы ключом -c sandbox_mode. - Проверка: - codex exec resume <любой-id> -s workspace-write → exit 2. - echo "say hi" | codex exec - < /dev/null → No prompt provided via stdin.
This commit is contained in:
1 parent
36fc76ff90
commit
9642910194
3 files changed
+28
-14
No files matched your search
@@ -241,10 +241,11 @@ description: >-
|
|||||||
**своими глазами** (счётчик тестов, картинки, прогон CLI) — ревью не
|
**своими глазами** (счётчик тестов, картинки, прогон CLI) — ревью не
|
||||||
заменяет твою приёмку. Команды нового приёмочного сценария проверь на
|
заменяет твою приёмку. Команды нового приёмочного сценария проверь на
|
||||||
живом объекте до полного прогона; сложные вставки собирай файлами, не
|
живом объекте до полного прогона; сложные вставки собирай файлами, не
|
||||||
экранированием; фоновому запуску закрывай stdin (`< /dev/null`) —
|
экранированием; фоновой команде, которой нечего читать со входа,
|
||||||
команда, дочитывающая ввод, из терминала зелёная, а в фоне виснет
|
закрывай stdin (`< /dev/null`) — команда, дочитывающая ввод, из
|
||||||
навсегда. Чекбоксы, статус и выжимку резолюций в тикет
|
терминала зелёная, а в фоне виснет навсегда. Чекбоксы, статус и
|
||||||
переносит fast-worker из файла отчёта исполнителя (не твой Write).
|
выжимку резолюций в тикет переносит fast-worker из файла отчёта
|
||||||
|
исполнителя (не твой Write).
|
||||||
Коммит — по `/conventional-commits`, пользователю — выжимка: вердикты,
|
Коммит — по `/conventional-commits`, пользователю — выжимка: вердикты,
|
||||||
что принято/отклонено, что осталось — плюс короткая саморефлексия: что
|
что принято/отклонено, что осталось — плюс короткая саморефлексия: что
|
||||||
больше всего потратило контекст и что в следующий раз направить файлом
|
больше всего потратило контекст и что в следующий раз направить файлом
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
Проверено 2026-07-09 (codex-cli 0.142.5, Windows + Git Bash) и 2026-07-12
|
Проверено 2026-07-09 (codex-cli 0.142.5, Windows + Git Bash) и 2026-07-12
|
||||||
(0.144.1, WSL2 Ubuntu: exec/resume/`-o`/фоновый Bash — весь конвейер);
|
(0.144.1, WSL2 Ubuntu: exec/resume/`-o`/фоновый Bash — весь конвейер);
|
||||||
|
ключи `resume` перепроверены 2026-08-03 на 0.145.0;
|
||||||
линукс-эмпирика 07-06/07-07 шла через companion-обёртку и отражена в уроках
|
линукс-эмпирика 07-06/07-07 шла через companion-обёртку и отражена в уроках
|
||||||
ниже.
|
ниже.
|
||||||
Прямой CLI надёжнее обёртки: её фоновая машина глючит (молчаливая подмена
|
Прямой CLI надёжнее обёртки: её фоновая машина глючит (молчаливая подмена
|
||||||
@@ -12,10 +13,12 @@
|
|||||||
|
|
||||||
## Сквозные правила (любая ветка)
|
## Сквозные правила (любая ветка)
|
||||||
|
|
||||||
- **Промпт — файлом, шум — в файлы.** Промпт подавай через stdin (`-`);
|
- **Промпт — файлом, шум — в файлы.** Промпт подавай через stdin (`-`): вход
|
||||||
stdout/stderr — редиректами в `$SCRATCH`. В контекст оркестратора
|
этого вызова занят промптом и должен оставаться открытым — правило
|
||||||
читается ровно один файл — финальный отчёт из `-o`. Промпт **собирай
|
`< /dev/null` для фоновых команд сюда не относится (закроешь — получишь
|
||||||
конкатенацией, а не переписывай**: скелеты — в
|
`No prompt provided via stdin`). stdout/stderr — редиректами в `$SCRATCH`.
|
||||||
|
В контекст оркестратора читается ровно один файл — финальный отчёт из
|
||||||
|
`-o`. Промпт **собирай конкатенацией, а не переписывай**: скелеты — в
|
||||||
[prompt-templates.md](prompt-templates.md), Write'ом пиши только
|
[prompt-templates.md](prompt-templates.md), Write'ом пиши только
|
||||||
параметрический блок задачи; чужой контент (вердикты ревью, отчёты) в
|
параметрический блок задачи; чужой контент (вердикты ревью, отчёты) в
|
||||||
промпт попадает через `cat a.md b.md > prompt.md` — дословно и без
|
промпт попадает через `cat a.md b.md > prompt.md` — дословно и без
|
||||||
@@ -144,14 +147,20 @@ fix-промпт конкатенацией, читай его один раз
|
|||||||
## Ветка «триаж/починка» (тем же тредом, что писал код)
|
## Ветка «триаж/починка» (тем же тредом, что писал код)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# resume продолжает тред: среда (-s, -C) задана при создании, не повторяй.
|
||||||
cat "$D/fix-prompt.md" | codex exec resume --json <thread-id> \
|
cat "$D/fix-prompt.md" | codex exec resume --json <thread-id> \
|
||||||
-o "$D/fix-result.md" - \
|
-o "$D/fix-result.md" - \
|
||||||
> "$D/fix-stdout.jsonl" 2> "$D/fix-stderr.txt"
|
> "$D/fix-stdout.jsonl" 2> "$D/fix-stderr.txt"
|
||||||
```
|
```
|
||||||
|
|
||||||
- `resume` не принимает `-s`/`-C` — песочница и CWD наследуются от исходного
|
- **`resume` продолжает тред, а не заводит новый — среда принадлежит треду,
|
||||||
треда (write-тред остаётся write); модель наследуется, но переопределяется
|
не ходу.** Песочница и CWD заданы при создании и на продолжении не
|
||||||
`-m` при нужде.
|
переуказываются: ключей `-s` и `-C` у `resume` просто нет, дописанные по
|
||||||
|
образцу `exec` они дают `exit 2, unexpected argument`. Write-тред остаётся
|
||||||
|
write. Ручки хода остаются: `-m` (модель), `-c model_reasoning_effort=…`
|
||||||
|
(кэш треда не сбрасывает, см. выше), `-o`, `--json`. `-c sandbox_mode=…`
|
||||||
|
разбирается без ошибки, но среду продолжения не меняет — не рассчитывай
|
||||||
|
на него. Ключи сверены 2026-08-03 на codex-cli 0.145.0.
|
||||||
- Промпт — индекс находок **дословно** + «закрой перечисленное, больше
|
- Промпт — индекс находок **дословно** + «закрой перечисленное, больше
|
||||||
ничего не меняй; отклонение — только аргументированно».
|
ничего не меняй; отклонение — только аргументированно».
|
||||||
|
|
||||||
|
|||||||
@@ -671,9 +671,13 @@ compose down`); отдельных событий эскалации в `--json`
|
|||||||
- **Два отказа вызова Кодекса, оба от чтения правил без разбора.**
|
- **Два отказа вызова Кодекса, оба от чтения правил без разбора.**
|
||||||
`< /dev/null` по правилу «фоновому запуску закрывай stdin» убивает промпт,
|
`< /dev/null` по правилу «фоновому запуску закрывай stdin» убивает промпт,
|
||||||
который сам идёт через stdin (`No prompt provided via stdin`), — правило не
|
который сам идёт через stdin (`No prompt provided via stdin`), — правило не
|
||||||
про этот случай. И `codex exec resume` (0.145.0) не принимает `-s`: песочница
|
про этот случай. И `codex exec resume` (0.145.0) не принимает `-s`/`-C`:
|
||||||
только через `-c sandbox_mode="workspace-write"`, остальные ключи (`-m`, `-c`,
|
среда треда задана при создании и на продолжении не переуказывается;
|
||||||
`-o`, `--json`) те же, что у `exec`.
|
остальные ключи (`-m`, `-c`, `-o`, `--json`) те же, что у `exec`. Уточнено
|
||||||
|
2026-08-03: хвост «песочница только через `-c sandbox_mode=…`» был неверен —
|
||||||
|
ключ разбирается, но среду продолжения не меняет. Оба отказа закрыты по
|
||||||
|
месту: `codex-exec.md` (рецепт resume и правило stdin), `SKILL.md` этап 6
|
||||||
|
(правило `< /dev/null` сужено условием «нечего читать со входа»).
|
||||||
- Цифры: два ревью — 58 и 36 команд/инструментов, 10 находок (1 MAJOR,
|
- Цифры: два ревью — 58 и 36 команд/инструментов, 10 находок (1 MAJOR,
|
||||||
8 MINOR, 1 NIT); триаж — 10 FIXED; перепроверки на medium — 8 и 12; тесты
|
8 MINOR, 1 NIT); триаж — 10 FIXED; перепроверки на medium — 8 и 12; тесты
|
||||||
297 → 353.
|
297 → 353.
|
||||||
|
|||||||
Reference in new issue
Block a user