Spaces:
Running
Running
SilverElixir commited on
Commit ·
ff35070
1
Parent(s): 46a7342
Add harness-eval results: auto-edited AGENTS.md gives no gain on repo tasks
Browse files- eval/README.md +2 -0
- eval/RESULTS.md +86 -0
eval/README.md
CHANGED
|
@@ -37,6 +37,8 @@ python eval/harness_eval.py report --out <каталог>
|
|
| 37 |
|
| 38 |
Артефакты пишутся в `%LOCALAPPDATA%\Lumen\harness-eval` (важно: не в `%TEMP%\opencode`).
|
| 39 |
|
|
|
|
|
|
|
| 40 |
## Ограничения
|
| 41 |
|
| 42 |
- Выборка маленькая (7 задач, по одному прогону на вариант) — это сигнал
|
|
|
|
| 37 |
|
| 38 |
Артефакты пишутся в `%LOCALAPPDATA%\Lumen\harness-eval` (важно: не в `%TEMP%\opencode`).
|
| 39 |
|
| 40 |
+
Итоги прогона 21.10.2026 — в [RESULTS.md](RESULTS.md).
|
| 41 |
+
|
| 42 |
## Ограничения
|
| 43 |
|
| 44 |
- Выборка маленькая (7 задач, по одному прогону на вариант) — это сигнал
|
eval/RESULTS.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Результаты harness-eval (21.10.2026)
|
| 2 |
+
|
| 3 |
+
Эксперимент: помогает ли автоматическая правка `AGENTS.md` агенту решать задачи
|
| 4 |
+
(метод из google-research/harness2, но без самого фреймворка).
|
| 5 |
+
|
| 6 |
+
## Условия
|
| 7 |
+
|
| 8 |
+
- Агент: OpenCode CLI v2.1.2, модель `opencode/glm-5.3-flash-free` (бесплатная).
|
| 9 |
+
- Редактор: `opencode/nemotron-3-ultra-free`. Google-модели из этого аккаунта
|
| 10 |
+
недоступны («User location is not supported»), так что модель из статьи
|
| 11 |
+
(Gemini 3.5 Flash) воспроизвести не удалось.
|
| 12 |
+
- Задачи: 7 штук из истории репозитория (fix-коммит меняет код и тесты). Песочница
|
| 13 |
+
на `fix^` + тесты из `fix`; целевые тесты (FAIL_TO_PASS) посчитаны эмпирически.
|
| 14 |
+
- Судья: гейт репозитория (`pytest -q` + `pyflakes`), как в CI.
|
| 15 |
+
- Варианты обвязки:
|
| 16 |
+
- **base** — текущий `AGENTS.md`;
|
| 17 |
+
- **weak** — `AGENTS.md` из двух строк (контроль: влияет ли файл вообще);
|
| 18 |
+
- **candidate** — `AGENTS.md`, предложенный редактором по отчётам о базовых
|
| 19 |
+
прогонах: 0 удалённых строк, добавлен раздел «Shell and tooling rules».
|
| 20 |
+
|
| 21 |
+
## Итоги
|
| 22 |
+
|
| 23 |
+
| Задача | base | candidate | weak |
|
| 24 |
+
|---|---|---|---|
|
| 25 |
+
| format-newlines-br | решено 311с | решено 675с | решено 155с |
|
| 26 |
+
| format-table-separator-bound | решено 337с | решено 469с | решено 192с |
|
| 27 |
+
| presplit-glued-bullets | решено 212с | решено 248с | решено 175с |
|
| 28 |
+
| state-corrupt-index | решено 262с | решено 512с | решено 282с |
|
| 29 |
+
| state-dirty-counters | решено 353с | решено 406с | решено 344с |
|
| 30 |
+
| streaming-catchup-throttle | решено 340с | решено 537с | решено 348с |
|
| 31 |
+
| tiktok-dns-private-ips | решено 580с | решено 501с | решено 319с |
|
| 32 |
+
|
| 33 |
+
| Показатель | base | candidate | weak |
|
| 34 |
+
|---|---|---|---|
|
| 35 |
+
| Решено | 7/7 | 7/7 | 7/7 |
|
| 36 |
+
| Правил тесты | 0 | 0 | 0 |
|
| 37 |
+
| Задачи с unix-командами | 5 | 1 | 4 |
|
| 38 |
+
| Запустил pyflakes | 7/7 | 7/7 | 0/7 |
|
| 39 |
+
| Запустил pytest | 7/7 | 7/7 | 7/7 |
|
| 40 |
+
| Суммарное время | 2395с | 3348с | 1814с |
|
| 41 |
+
| Всего команд в шелле | 77 | 76 | 48 |
|
| 42 |
+
|
| 43 |
+
## Что это значит
|
| 44 |
+
|
| 45 |
+
1. **Потолка нет.** Все три обвязки решают 7/7. На таких задачах «починить баг с
|
| 46 |
+
падающими тестами» содержимое `AGENTS.md` не меняет результат — работают модель и
|
| 47 |
+
сами тесты. Автоправка правил тут выигрыша не даёт.
|
| 48 |
+
2. **Разница видна только в дисциплине.** Слабая обвязка не знает про pyflakes и
|
| 49 |
+
ни разу его не запустила — гейт формально «зелёный» по тестам, но неполный.
|
| 50 |
+
Полный `AGENTS.md` гейт всегда прогоняет.
|
| 51 |
+
3. **Автоправка решает то, что видит, но платит за это.** Unix-команды в PowerShell
|
| 52 |
+
(`pytest ... | tail -30`, `tail` там не существует) сократились с 5 задач до 1, но
|
| 53 |
+
суммарное время выросло на 40% (3348с против 2395с): правил стало больше, контекст
|
| 54 |
+
дороже.
|
| 55 |
+
4. **Автоправка без валидатора даёт противоречие.** В список «никогда не
|
| 56 |
+
использовать» редактор записал `python`, `pip`, `python -m` — а гейт требует
|
| 57 |
+
`python -m pytest`. Правило отменяет гейт. В harness2 за это отвечают валидаторы
|
| 58 |
+
в каркасе (у них есть свои проверки дерева и защита от утечек в рубрику), в моей
|
| 59 |
+
упрощённой версии их нет.
|
| 60 |
+
5. **Остаточная unix-команда в candidate — показательна.** Агент выполнил гейт как
|
| 61 |
+
`bash -lc 'pyflakes bot.py lumen_*.py ...'`: то есть обернул в bash, чтобы
|
| 62 |
+
получить линуксовые глобы. Причина в самом `AGENTS.md`: строка гейта записана в
|
| 63 |
+
CI-виде (линукс), а хост — Windows, PowerShell.
|
| 64 |
+
|
| 65 |
+
## Вывод
|
| 66 |
+
|
| 67 |
+
Harness²-подход («агент сам чинит свою обвязку») на этом репозитории не окупается:
|
| 68 |
+
потолок достигнут без всякой автоправки, а сама автоправка даёт побочный эффект
|
| 69 |
+
(противоречие с гейтом) и удорожание по времени.
|
| 70 |
+
|
| 71 |
+
Что стоит забрать:
|
| 72 |
+
|
| 73 |
+
- точечную правку `AGENTS.md` про Windows/PowerShell и правильную форму гейта для
|
| 74 |
+
PowerShell (агент тратит ходы на `tail`, `ls` и на линуксовые глобы);
|
| 75 |
+
- «уроки с доказательствами» (вторая рекурсия harness2) — дёшево, без каркаса:
|
| 76 |
+
после провала записать в файл правило со ссылкой на провал;
|
| 77 |
+
- сам измеритель `eval/` — им можно проверять любое будущее изменение `AGENTS.md`.
|
| 78 |
+
|
| 79 |
+
## Ограничения
|
| 80 |
+
|
| 81 |
+
- По одному прогону на задачу и на вариант: разброс не измерен, выводы качественные.
|
| 82 |
+
- Задачи одного типа (починка бага по падающим тестам) — на них правила обвязки
|
| 83 |
+
почти не влияют; на других типах (рефакторинг, релиз, правка промпта) эффект
|
| 84 |
+
может быть иным, но это уже другой эксперимент.
|
| 85 |
+
- MCP-серверы в песочнице отключены: прогоны быстрее и без сети, но это не ровно
|
| 86 |
+
обычная обстановка агента.
|