tree (или find), права на запись в домашнюю директорию.
Что сделать: разбейте задачу на последовательные шаги и создайте директории под контекст, шаги, навыки и результаты.
Зачем: ICM заменяет оркестрацию на уровне фреймворка оркестрацией через файловую систему. Агенту не нужно угадывать порядок действий — он читает plan.md и файлы шагов.
Пример:
mkdir -p icm-agent/{context,steps,skills,out}
cd icm-agent
touch AGENTS.md plan.md
Структура после команды:
icm-agent/
├── AGENTS.md
├── plan.md
├── context/
│ ├── 00-role.md
│ ├── 01-input.md
│ └── 02-constraints.md
├── steps/
│ ├── 01-extract.md
│ ├── 02-validate.md
│ └── 03-report.md
├── skills/
│ └── threat-model/
└── out/
└── run-2026-10-22/
Как проверить:
tree -L 3
Если tree не установлена:
find . -maxdepth 2 -type d | sort
На экране должны появиться папки context, steps, skills, out. Если папок нет — команда mkdir не выполнилась или вы находитесь не в той директории.
Для длинных задач используйте plan.md: в посте про Tiel-Coder-35B-A3B-MTP контекст 65 535 токенов, поэтому задачи дробят через plan.md и лёгкий агент Pi вместо Codex или Claude Code.

Что сделать: в каждом markdown-файле опишите роль, вход, ограничения и ожидаемый выход. В AGENTS.md задайте общие правила, в plan.md — последовательность шагов.
Зачем: агент читает эти файлы как инструкции. В кейсе TravelLine условие входа было жёстким: без полного контекста и вылизанной инструкции агент путает suites и секции и отдаёт неполный список тестов.
Пример plan.md:
# План пайплайна
1. steps/01-extract.md — извлечь список E2E-тестов из TestIT через MCP.
2. steps/02-validate.md — сверить список с локальным репозиторием автотестов.
3. steps/03-report.md — собрать отчёт в out/run-2026-10-22/report.md.
Пример AGENTS.md:
# Правила агента
- Читай только файлы внутри icm-agent/.
- Перед каждым шагом перечитай plan.md.
- Не переходи к следующему шагу, пока не запишешь результат в out/.
- Если данных не хватает, остановись и задай вопрос человеку.
Пример steps/01-extract.md:
# Шаг 1. Извлечение тестов
Роль: QA-инженер.
Вход: данные из TestIT через MCP-сервер.
Выход: out/run-2026-10-22/tests.json — список E2E-тестов.
Ограничение: не менять репозиторий.
| Файл | Что внутри | Зачем |
|---|---|---|
| `AGENTS.md` | общие правила для агента | задаёт границы поведения |
| `plan.md` | последовательность шагов | не даёт агенту перескакивать этапы |
| `context/01-input.md` | входные данные и scope | снижает риск неполного ответа |
| `steps/*.md` | промпт и ожидаемый выход шага | делает шаг воспроизводимым |
Если ваш агент ищет навыки в ~/.claude/skills, папку можно подключить симлинком. Пример из grim-prompter:
ln -s "$(pwd)/skills/threat-model" ~/.claude/skills/threat-model
Проверка:
ls -l ~/.claude/skills/threat-model
В выводе должна быть стрелка на вашу папку skills/threat-model.
Если контекст разрастается, см. Как экономить токены LLM: кэш, роутинг и prompt caching на практике.
Как проверить:
grep -R "Выход:" steps/
У каждого шага должна быть строка Выход:. Если её нет, агент может выполнить шаг и не сохранить артефакт.
Что сделать: запустите агента в корне icm-agent и дайте ему инструкцию следовать plan.md. Результаты должны появиться в out/run-2026-10-22/.
Зачем: так вы проверяете, что структура папок работает как оркестратор, а агент не придумывает шаги заново.
Пример:
cd icm-agent
<agent-cli> "Прочитай plan.md и выполни шаг 1. Результат запиши в out/run-2026-10-22/"
Замените <agent-cli> на CLI вашего агента: OpenCode, Claude Code, Codex CLI. Точные флаги запуска сверьте с документацией.
Как проверить:
tree out/
cat out/run-2026-10-22/tests.json | head
Ожидаемый результат: в out/run-2026-10-22/ появились tests.json, затем validation.md и report.md. В tests.json — список тестов, а не пустой файл.
Чек-лист приёмки:
plan.md содержит все шаги пайплайна.steps/ есть вход и выход.AGENTS.md запрещает переход к следующему шагу без записи в out/.out/run-2026-10-22/ лежит tests.json.Для формальной проверки агента прогоните Аудит ИИ-агента за 120 секунд: 32 проверки и оценка A–F (iFixAi).
Проблема. Агент путает suites и секции, отдаёт неполный список тестов
агент путает suites и секции и отдаёт неполный список тестовcontext/01-input.md и перезапустите шаг.cat >> context/01-input.md <<'EOF'
## Scope

- suites: <список suite>
- sections: <список секций>
EOF
grep -n "suite\|section" context/01-input.md
После этого выполните шаг 1 заново и проверьте, что в tests.json попали все suites из scope.
Проблема. Симлинк для навыка не создаётся
ln: failed to create symbolic link '/home/user/.claude/skills/threat-model': No such file or directory~/.claude/skills ещё не существует.mkdir -p ~/.claude/skills
ln -s "$(pwd)/skills/threat-model" ~/.claude/skills/threat-model
ls -l ~/.claude/skills/threat-model
В выводе ls -l должна быть строка со стрелкой на skills/threat-model.
Проблема. Агент завершил шаг, но файла результата нет
cat: out/run-2026-10-22/tests.json: No such file or directorycat >> steps/01-extract.md <<'EOF'
Выход: out/run-2026-10-22/tests.json
EOF
cat out/run-2026-10-22/tests.json | head
Если файл появился, шаг 1 можно считать завершённым.
Вы создали файловую структуру, где каждый шаг пайплайна описан markdown-файлом, а агент читает plan.md и складывает результат в out/. Дальше добавьте проверку человеком на каждом шаге и протестируйте пайплайн на одном небольшом наборе данных.
Чем ICM отличается от фреймворка для агентов?
ICM переносит оркестрацию в структуру файловой системы: markdown-файлы содержат промпты и контекст для каждого шага пайплайна, вместо того чтобы логика выбора шагов жила в коде фреймворка.
Подходит ли ICM для сложных многозадачных систем?
Ограничение подхода: он рассчитан на последовательные процессы с проверкой человеком. Для сложных многозадачных систем это ограничение нужно учитывать.
Нужен ли MCP?
Не обязателен. В кейсе TravelLine агент тянул данные из TestIT через MCP-сервер, но ICM работает и с локальными файлами, если весь контекст лежит в папке context/.
Можно ли использовать ICM с локальной моделью?
Да. В посте про Tiel-Coder-35B-A3B-MTP в кванте Q2_K_XL указано 125 токенов/с на RTX 4070 Ti SUPER с 16 ГБ памяти и контекст 65 535 токенов; задачи дробят через plan.md, чтобы не выходить за лимит.