docs(skills): предполёт закрывает и вход, соседний пункт не спорит с ним
- Зачем:
- под предполётом стоял пункт «stdout/stderr — редиректами» без оговорки,
и при беглом чтении побеждала ближайшая инструкция; вход ломается той же
поломкой дескриптора, а правило звало подавать промпт редиректом из файла.
- Что:
- пункт про промпт ведёт каналом (`cat prompt.md | codex exec … -`) —
форма работает в любой среде; редирект из файла назван как симптом.
- хвост про stdout/stderr отсылает к предполёту вместо голого редиректа.
- самотест читается как «пусто/непусто», а не «18 байт»: номер версии
подрастёт на знак, проверка от этого не зависит.
- Проверка:
- `grep -n 'stdin\|редиректами' references/codex-exec.md` — противоречащих
указаний в «Сквозных правилах» не осталось.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1b73419c1d
commit
c3277b8837
1 file changed
+12
-8
@@ -19,10 +19,11 @@ WSL2 Ubuntu: exec/resume/`-o`/фоновый Bash — весь конвейер)
|
||||
проверки. Песочница: диагностика из
|
||||
[codex-sandbox-apparmor.md](codex-sandbox-apparmor.md) (сигнатура поломки
|
||||
и лечение — там же). Вывод доходит до файла: `codex --version > f;
|
||||
wc -c f` — 18 байт значит, что рецепты ниже работают как написаны. Ноль
|
||||
байт: среда теряет унаследованный файловый дескриптор (известный случай —
|
||||
T3 Code, [lessons.md](lessons.md) 2026-08-06), и тогда каждый поток идёт
|
||||
своим каналом в свой файл, а код возврата держит `pipefail`:
|
||||
wc -c f` — непусто значит, что рецепты ниже работают как написаны. Пусто:
|
||||
среда теряет унаследованный файловый дескриптор, и на входе, и на выходе
|
||||
(известный случай — T3 Code, [lessons.md](lessons.md) 2026-08-06); тогда
|
||||
каждый поток идёт своим каналом в свой файл, а код возврата держит
|
||||
`pipefail`:
|
||||
|
||||
```bash
|
||||
set -o pipefail
|
||||
@@ -33,10 +34,13 @@ WSL2 Ubuntu: exec/resume/`-o`/фоновый Bash — весь конвейер)
|
||||
Без `pipefail` статус вернёт `cat`, и отказ Кодекса прочтётся успехом.
|
||||
Подстановка процесса дописывает stderr асинхронно: читаешь этот файл тем
|
||||
же вызовом — поставь `wait`.
|
||||
- **Промпт — файлом, шум — в файлы.** Промпт подавай через stdin (`-`): вход
|
||||
этого вызова занят промптом и должен оставаться открытым — правило
|
||||
`< /dev/null` для фоновых команд сюда не относится (закроешь — получишь
|
||||
`No prompt provided via stdin`). stdout/stderr — редиректами в `$SCRATCH`.
|
||||
- **Промпт — файлом через канал, шум — в файлы.** Промпт подавай каналом:
|
||||
`cat "$D/prompt.md" | codex exec … -`. Канал читается в любой среде, а
|
||||
редирект из файла (`- < prompt.md`) в среде из предполёта отвечает
|
||||
`No prompt provided via stdin`. Вход этого вызова занят промптом и должен
|
||||
оставаться открытым — правило `< /dev/null` для фоновых команд сюда не
|
||||
относится. stdout/stderr — редиректами в `$SCRATCH`, а если предполёт
|
||||
показал пусто — каналами оттуда же.
|
||||
В контекст оркестратора читается ровно один файл — финальный отчёт из
|
||||
`-o`. Промпт **собирай конкатенацией, а не переписывай**: скелеты — в
|
||||
[prompt-templates.md](prompt-templates.md), Write'ом пиши только
|
||||
|
||||
Reference in new issue
Block a user