Geodi, офіційний піксельний персонаж GEODE
Назад до зали

GEODE

Autonomous Agent Harness

Від спостереження до наступної дії.

Локальна обв’язка автономного агента, якій можна доручити дослідження, роботу з файлами та заплановані завдання.

2026.02.21 — present

Проєктування, рішення, верифікація: Author · реалізація: Claude · рев’ю: Codex

  • CLIОпубліковано · PyPI
  • MCP-серверРеалізовано

Пропозиція моделі зупинитися стає завершенням лише через верифікацію.

Для зупинки з готовим результатом модель, яка просить зупинитися, однаково проходить верифікацію завершення. Підсумок — готово, продовження в межах бюджету або очікування рев’ю; ліміти виконання, скасування й помилки закінчуються окремим станом зупинки.

Карта завершення · накреслено за шляхами коду на зафіксованому коміті 9e2c041
Карта завершення GEODEЯк пропозиція моделі зупинитися стає завершенням. Лише зупинки з готовим результатом (natural, forced_text, actionable_partial) проходять hook PreVerify, структурну перевірку й обраного суддю (типово LLM judge, Jev — якщо його обрано), а також hooks PostVerify і Stop. Успішний результат зберігається як completed; виправний збій продовжує той самий запит у межах типового бюджету з двох спроб. Непридатний вердикт, спроба перетворити збій на успіх або вичерпаний бюджет притримують кандидата й ставлять сесію на паузу. Зупинки через скасування, ліміти й інфраструктуру та запуски control workflow зберігаються без верифікації.IPC · викликач CLIвідповідь · стан сесіїЗовнішній рецензентpending · без зверненняМодель-суддяLLM judge · Jev Choiceipc_server/poller.pycontrol workflow · пропуск публічної верифікаціїloop/agent_loop.pyarun · хід моделі_arun_once · продовження з виправленнямloop/_guards.py · models.pyзупинка з результатом · natural тощозупинка через збій · ліміт · скасуванняloop/_lifecycle.pyfinalize_and_return_asyncpolicy_action · прочитання вердиктубюджет продовжень · типово 2core/hooks/public.pyPreVerify · STRENGTHENPostVerify · ACCEPT · REVISE · ESCALATEStop · CONTINUEmemory · observabilityконтрольна точка · стан сесіїtimeline · рядки рішень ledgercore/agent/verify.pyструктурна перевірка · empty_turnсемантичне рішення · LLM або Jevverification_error · закривається на збоїПроцес середовища виконання GEODEкінець одного ходу AgenticLoopцикл · кандидати на зупинкуфіналізація · вердикт1 пропозиція зупинки · arun · хід моделі → зупинка з результатом · natural тощо12кандидат на завершення3 PreVerify · finalize_and_return_async → PreVerify · STRENGTHEN34verify_turn_async5запит на рішення6passed · rubric_misses7 Рішення PostVerify · policy_action · прочитання вердикту → PostVerify · ACCEPT · REVISE · ESCALATE78Stop · CONTINUE9completed · збережено10відповідь1passed · rubric_misses2 Рішення PostVerify · policy_action · прочитання вердикту → PostVerify · ACCEPT · REVISE · ESCALATE23Stop · CONTINUE4виправлення · спроба +11verification_error2 Рішення PostVerify · policy_action · прочитання вердикту → PostVerify · ACCEPT · REVISE · ESCALATE23ESCALATE · pending4вердикт · рядки доказів1 запобіжники · ліміти · arun · хід моделі → зупинка через збій · ліміт · скасування12зупинка через збій · скасування3пропуск публічної верифікації4лише збереження · без верифікації5відповідь

Верифікація → завершення

Лише зупинка з готовим результатом проходить PreVerify → рішення → PostVerify → Stop. Ні пропозиція моделі зупинитися, ні інструкція hook самі по собі не є завершенням.

  1. arun · хід моделіloop/agent_loop.pyдані: пропозиція зупинкизупинка з результатом · natural тощоloop/_guards.py · models.py

    Коли модель відповідає текстом без виклику інструмента, хід стає кандидатом на природну зупинку natural (forced_text в останньому дозволеному раунді). Пропозиція моделі зупинитися — ще не завершення.

  2. зупинка з результатом · natural тощоloop/_guards.py · models.pyдані: кандидат на завершенняfinalize_and_return_asyncloop/_lifecycle.py

    Лише natural, forced_text і actionable_partial є зупинками з готовим результатом, і лише вони переходять до публічної верифікації.

  3. finalize_and_return_asyncloop/_lifecycle.pyзапуск · рішення: PreVerifyPreVerify · STRENGTHENcore/hooks/public.py

    Із STRENGTHEN hook PreVerify може лише додавати вимоги й коди пропусків. Він може зробити вердикт суворішим, але ніколи не зарахувати успіх.

  4. finalize_and_return_asyncloop/_lifecycle.pyзапуск · рішення: verify_turn_asyncструктурна перевірка · empty_turncore/agent/verify.py

    Спершу йде структурна перевірка (порожній хід, model_action_required); невиправний структурний збій пропускає семантичне рішення. Старі налаштування, як-от off чи rule_based, зводяться до llm_judge і не можуть вимкнути вердикт.

  5. семантичне рішення · LLM або Jevcore/agent/verify.pyдані: запит на рішенняМодель-суддя

    Обраного суддю (типово LLM judge, Jev Choice — якщо його обрано) викликають один раз, без інструментів, щонайбільше на 120 секунд і ніколи понад залишок часового бюджету. Кандидата, який може містити особисті спостереження, допоміжному судді не надсилають.

  6. семантичне рішення · LLM або Jevcore/agent/verify.pyдані: passed · rubric_missespolicy_action · прочитання вердиктуloop/_lifecycle.py

    Вердикт містить успіх чи провал, коди пропусків, рефлексію для наступної спроби та ознаку, чи корисна повторна спроба. Семантичний успіх ніколи не перекриває проваленої структурної перевірки.

  7. policy_action · прочитання вердиктуloop/_lifecycle.pyзапуск · рішення: Рішення PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hook PostVerify вирішує ACCEPT, REVISE або ESCALATE. ACCEPT для кандидата, що не пройшов верифікацію, стає escalate. Якщо рішення немає, діє типове значення середовища виконання (pass → accept, retryable → revise, інакше escalate).

  8. policy_action · прочитання вердиктуloop/_lifecycle.pyзапуск · рішення: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    Лише коли немає ескалації, інструкція CONTINUE від hook Stop може запросити продовження з виправленням. Інструкція hook — це вхід для наступної спроби, а не повноваження.

  9. policy_action · прочитання вердиктуloop/_lifecycle.pyдані: completed · збереженоконтрольна точка · стан сесіїmemory · observability

    За успіху й accept продовжені спроби об’єднуються, результат зберігається, а сесію записано як completed.

  10. finalize_and_return_asyncloop/_lifecycle.pyдані: відповідьIPC · викликач CLI

    Повертає фінальну відповідь, коли завершено; порожню відповідь з EXTERNAL_VERIFICATION_REQUIRED, коли очікується рев’ю; причину зупинки — для зупинки без верифікації.

Виправлення в межах бюджету

Виправний збій продовжує той самий запит. Типовий бюджет — дві спроби; коли його вичерпано, кандидат чекає на рев’ю.

  1. семантичне рішення · LLM або Jevcore/agent/verify.pyдані: passed · rubric_missespolicy_action · прочитання вердиктуloop/_lifecycle.py

    Вердикт містить успіх чи провал, коди пропусків, рефлексію для наступної спроби та ознаку, чи корисна повторна спроба. Семантичний успіх ніколи не перекриває проваленої структурної перевірки.

  2. policy_action · прочитання вердиктуloop/_lifecycle.pyзапуск · рішення: Рішення PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hook PostVerify вирішує ACCEPT, REVISE або ESCALATE. ACCEPT для кандидата, що не пройшов верифікацію, стає escalate. Якщо рішення немає, діє типове значення середовища виконання (pass → accept, retryable → revise, інакше escalate).

  3. policy_action · прочитання вердиктуloop/_lifecycle.pyзапуск · рішення: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    Лише коли немає ескалації, інструкція CONTINUE від hook Stop може запросити продовження з виправленням. Інструкція hook — це вхід для наступної спроби, а не повноваження.

  4. бюджет продовжень · типово 2loop/_lifecycle.pyзапуск · рішення: виправлення · спроба +1_arun_once · продовження з виправленнямloop/agent_loop.py

    За наявності інструкції з виправлення й лише поки номер спроби менший за бюджет (типово два) той самий запит продовжується. Щойно бюджет досягнуто, стан стає escalate_budget_exhausted і чекає на рев’ю.

Очікування рев’ю

Непридатний вердикт, спроба перетворити збій на успіх або вичерпаний бюджет притримують кандидата й ставлять сесію на паузу.

  1. verification_error · закривається на збоїcore/agent/verify.pyзбій · без вердикту: verification_errorpolicy_action · прочитання вердиктуloop/_lifecycle.py

    Відсутній суддя, тайм-аут або невалідна відповідь стають verification_error: ні успіхом, ні сигналом до виправлення. Непридатний вердикт ніколи не замінює успіху.

  2. policy_action · прочитання вердиктуloop/_lifecycle.pyзапуск · рішення: Рішення PostVerifyPostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    Hook PostVerify вирішує ACCEPT, REVISE або ESCALATE. ACCEPT для кандидата, що не пройшов верифікацію, стає escalate. Якщо рішення немає, діє типове значення середовища виконання (pass → accept, retryable → revise, інакше escalate).

  3. policy_action · прочитання вердиктуloop/_lifecycle.pyзапуск · рішення: ESCALATE · pendingЗовнішній рецензент

    Кандидат зберігається як pending_text і не потрапляє у звичайні відповіді, контрольна точка зберігається, а сесія стає на паузу. Зовнішнього рецензента автоматично не сповіщають.

  4. policy_action · прочитання вердиктуloop/_lifecycle.pyзапис · спостереження: вердикт · рядки доказівtimeline · рядки рішень ledgermemory · observability

    Timeline отримує рядки рішень, доказів і pending, а evidence ledger — рядок verification_policy. Це записи best-effort, а не доказ зовнішнього ефекту.

Зупинки без верифікації

Зупинки через скасування, ліміти й інфраструктуру та запуски control workflow зберігаються без публічної верифікації.

  1. arun · хід моделіloop/agent_loop.pyзапуск · рішення: запобіжники · лімітизупинка через збій · ліміт · скасуванняloop/_guards.py · models.py

    Запобіжники, як-от ліміти раундів, часу, вартості й контексту, скасування та виявлення повторних збоїв, завершують хід одним членом закритого набору TerminationReason. Ліміт, вимкнений у конфігурації, не завжди примусово застосовується.

  2. зупинка через збій · ліміт · скасуванняloop/_guards.py · models.pyзбій · без вердикту: зупинка через збій · скасуванняfinalize_and_return_asyncloop/_lifecycle.py

    Зупинки через скасування, інфраструктуру й ліміти не мають кандидата для верифікації, тому зберігаються без публічної верифікації.

  3. control workflow · пропуск публічної верифікаціїipc_server/poller.pyзапуск · рішення: пропуск публічної верифікаціїfinalize_and_return_asyncloop/_lifecycle.py

    Коли виклик IPC просить пропустити публічну верифікацію або активний control workflow, публічну верифікацію вимкнено лише для цього запуску, а потім попереднє значення відновлюється.

  4. finalize_and_return_asyncloop/_lifecycle.pyдані: лише збереження · без верифікаціїконтрольна точка · стан сесіїmemory · observability

    Зупинка без верифікації однаково зберігає свій результат і контрольну точку та надсилає події завершення сесії.

  5. finalize_and_return_asyncloop/_lifecycle.pyдані: відповідьIPC · викликач CLI

    Повертає фінальну відповідь, коли завершено; порожню відповідь з EXTERNAL_VERIFICATION_REQUIRED, коли очікується рев’ю; причину зупинки — для зупинки без верифікації.

Усі зв’язки однакової товщини. Оберіть потік, щоб підсвітити лише його шлях із пронумерованими кроками.

  • Суцільна · напрямок, яким рухаються запити, кандидати й результати
  • Штрихова · запуск, рішення, авторизація, налаштування
  • Довга штрихпунктирна · записи й спостереження, окремо від вердикту
  • Коротка штрихова · збій або непридатний вердикт
  • Товста чорна лінія · обраний потік; номери показують порядок
  • Рамка · межа коду чи записів, шлях у заголовку
  • Внутрішня плашка · компонент у цій межі
  • Штрихова рамка · поза цією межею
  • цикл · фіналізація
  • зупинки · hooks · вердикт
  • збереження · записи
  • вхід IPC

Накреслено лише шляхи викликів на зафіксованому коміті 9e2c041. Успіх у судді — це не те саме, що успіх зовнішнього верифікатора бенчмарку; завершення тут — рішення всередині середовища виконання.

Рушій суджень
Типово це LLM judge; Jev Choice ухвалює рішення лише тоді, коли judgment_engine має значення jev. В обох випадках непридатний суддя дає verification_error, а не успіх.
Що можуть hooks
PreVerify може лише зробити вердикт суворішим, PostVerify не може зарахувати кандидата, що не пройшов, а Stop може запросити продовження лише тоді, коли немає ескалації.
Очікування рев’ю
Очікування рев’ю фіксує, що потрібне зовнішнє рішення. Воно нікого не сповіщає й не означає, що результат схвалено.