GEODE
Autonomous Agent Harness
Від спостереження до наступної дії.
Локальна обв’язка автономного агента, якій можна доручити дослідження, роботу з файлами та заплановані завдання.
GEODE runtime vocabulary
- reasoning
- action
- observation
- plan
- memory
- tools
- hook
- reflexion
- rollouts
- data curation
- data governance
- evaluation
- scaffold search
- promotion
Reasoning: SYSTEM PROMPT · CONVERSATION · RUNTIME HINTS · MODEL · ADAPTER CALL · NEXT ACTION · TOOL SCHEMA · TEXT-ONLY TURN · CURRENT STEP · PROJECT MEMORY · RUNTIME RULES · EFFORT · thinking_budget · reasoning_effort · adaptive_thinking · effort_values · default_effort · binds_thinking · none · minimal · low · medium · high · xhigh · max · MODEL ROUTEAction: ACT · TOOL_USE · TOOLCALLPROCESSOR · DISPATCH · RESEARCH · BASH · COMPUTER USE · FILE · GIT · PROCESS · EFFECT RECEIPT · TOOLEXECUTORObservation: NEXT ACTION · RESEARCH · OBSERVE · TOOL_RESULT · RESULT · ERROR · CODE · DOCUMENT · SOURCE · EVIDENCE · EXCERPTPlan: CURRENT STEP · OBJECTIVE · PLANSTEP · EXPECTED OUTCOME · REMAINING STEPS · COMPLETED · ABANDONED · REVISION · UPDATE_PLAN · /PLAN · REPLAN · VERIFY FAILED · LOW CONFIDENCEMemory: SYSTEM PROMPT · CONVERSATION · PROJECT MEMORY · RUNTIME RULES · TOOL_RESULT · CONVERSATIONCONTEXT · MESSAGES · CONTEXT WINDOW · COMPACTION · CHECKPOINT · SESSION · RECOVERY · SQLITE · STATE.JSON · PreCompact · PostCompact · SessionStart · SessionEndTools: TOOL SCHEMA · TOOL_USE · TOOLCALLPROCESSOR · DISPATCH · BASH · COMPUTER USE · EFFECT RECEIPT · TOOL_RESULT · BOUNDTOOLPLAN · GENERATION · HASH · TOOLEXECUTOR · SCOPE · POLICY · HOOK · APPROVAL · HITL · PreToolUse · PostToolUse · MCP CLIENT · PermissionRequestHook: DISPATCH · HOOK · PreToolUse · PostToolUse · UserPromptSubmit · PermissionRequest · PreCompact · PostCompact · SessionStart · SessionEnd · SubagentStart · SubagentStop · PreVerify · tool_request · tool_execution · llm_request · llm_execution · REQUEST TRANSFORM · next_call · WRAPPER · REGISTRY · PostVerify · StopReflexion: NEXT ACTION · EVIDENCE · REPLAN · VERIFY FAILED · LOW CONFIDENCE · HOOK · PreVerify · HYPOTHESES · CONFIDENCE · NEXT_ACTION_HINT · RECORD_REFLECTION · CONTRADICTION · REPAIR · VERIFY · PostVerify · Stop · COMPLETION · CONTINUE · TIME · TOKEN BUDGET · CANCELLATIONRollouts: SESSION · ROLLOUT · EXAMPLE · SEED · REPETITION · ATTEMPT · TRAJECTORY · REWARD · OUTCOME · TRACE · RUN IDData Curation: TASK SYNTHESIS · SEED GENERATION · PROXIMITY · RANKING · META-REVIEW · ELO TOURNAMENT · PILOT · DEDUPLICATION · SURVIVOR SELECTION · FROZEN POOLData Governance: PROVENANCE · LINEAGE · SCHEMA VERSION · SOURCE DIGEST · PRIVACY REVIEW · ALLOWLIST · IMMUTABLE RELEASE · SPLIT ISOLATION · SEALED HOLDOUTEvaluation: TRAJECTORY · OUTCOME · TRACE · EVALUATION HARNESS · TASK · RUBRIC · GRADER · VERIFIER · VALIDITY · FITNESS · REPLICATION · TASK COVERAGEScaffold Search: RECOVERY · FITNESS · CANDIDATE · HYPOTHESIS · MUTATION POLICY · BASELINE · FROZEN EVALUATOR · POLICY INJECTION · SEARCH SPACE · PROMOTION GATEPromotion: SEALED HOLDOUT · PROMOTION GATE · CRUCIBLE · PAIRED TRIALS · BOOTSTRAP BOUND · FROZEN CONTRACT · TASK-PACK HASH · TRAIN · SEALED TEST · SAFETY VETO · KEEP · REJECT · INVALID
Recorded evaluation · MCPMark PostgreSQL · 2026-07-04
Перш ніж щось змінювати, він знайшов те, що вже було.
Завдання: безпека на рівні рядків для соціального сервісу з п’ятьма таблицями.
- ДослідженняПрочитав п’ять таблиць, чотири вже наявні допоміжні функції, вимкнений RLS на всіх п’яти, а також політики, привілеї й ролі.
- ДіяОдна транзакція: 20 політик і ввімкнений RLS, повторне використання 3 наявних допоміжних функцій і 3 нові функції.
- Верифікація18 пройдено, 0 провалено. Усі 13 відповідей інструментів за 9 ходів повернулися без помилок.
Вивід верифікатора, 18 рядків (дослівно)
- RLS enabled on users
- RLS enabled on channels
- RLS enabled on channel_moderators
- RLS enabled on posts
- RLS enabled on comments
- Users can update their own profile
- Users blocked from updating other users' profiles
- Channel owners can update their channels
- Non-owners blocked from updating channels
- Post authors can update their posts
- Channel moderators can update posts in their channels
- Unauthorized users blocked from updating posts
- Comment authors can update their comments
- Post authors can moderate comments on their posts
- Channel owners can add moderators
- Non-owners blocked from adding moderators
- Content visibility varies correctly based on user context
- Anonymous users can see 3 public user profiles (correct)
Минулий запуск у налаштованій пісочниці оцінювання, а не жива база даних чи реальний інцидент безпеки. Кількості рядків до політик у записі немає, тому їх не показано. Публічний запис запуску (meta.json, коміт 23e3428)
Перегляд результату та його виправлення (за мотивами Reflexion, у межах того самого завдання) — можливість поточного середовища виконання GEODE. У цьому записі такого виправлення немає: кожна відповідь інструмента повернулася без помилки. Документація середовища виконання (hook-system.md)
Наступну дію обирає модель; межу виконання тримає хост.
Середовище виконання від запиту, що надходить у сесію, через виклик моделі й перевірки повноважень для кожного запропонованого виклику інструмента — до виконання, результатів і записів. Оберіть потік, щоб підсвітити лише його шлях із пронумерованими кроками.
Наступну дію обирає модель; середовище виконання перевіряє дозволи інструментів і вирішує, коли роботу завершено.
Зовнішні експерименти Scaffold Search / SIL почалися May 15, 2026
Пакет geode-agent встановлюється з PyPI або з публічного репозиторію й запускається у власному терміналі. До нього також можна під’єднатися як до MCP-сервера.
Запит → виклик моделі
Запит із термінала надходить через IPC, складається сесія, і цикл викликає модель із системним промптом, розмовою та схемами інструментів.
Користувач терміналапотік даних: prompt · cli.sockCLIPoller · IPC-сокет
core/serverТонкий CLI надсилає запит до IPC-сокета демона serve (~/.geode/cli.sock). REPL виконує той самий склад сесії всередині процесу.
CLIPoller · IPC-сокет
core/serverповноваження · склад: create_session(IPC)SharedServices.create_sessionsupervised/services.pyКожне з’єднання складає сесію. Режим задає рівень HITL, часовий бюджет і заборонені інструменти та проєктує BoundToolPlan на обраного провайдера.
CLIPoller · IPC-сокет
core/serverповноваження · склад: lane на запитLaneQueue · session · globalsupervised/services.pyПеред виконанням запиту утримуються і lane сесії, і глобальна lane, що обмежує паралельні запуски.
SharedServices.create_session
supervised/services.pyповноваження · склад: ToolExecutor · AgenticLoopAgenticLoop · шість фазcore/agent/loopСтворює виконавця й цикл як одну пару, що спільно використовує hooks, MCP, навички й блокування ресурсів.
LaneQueue · session · global
supervised/services.pyпотік даних: arun(prompt)AgenticLoop · шість фазcore/agent/loopВиконує один хід користувача в шість фаз: підготувати вхід, підготувати виклик, викликати провайдера, обробити інструменти, спостерегти й ущільнити, завершити.
системний промпт · оголошені джерела
core/agent/loopпотік даних: системний промптadapter.acomplete · класи помилокcore/llm/adaptersФормується щоходу з оголошених джерел, як-от вибраних розділів GEODE.md і правил. П’ятирівневий фасад ContextAssembler використовується лише за явного виклику; це не вхід типового циклу.
повідомлення · ConversationContext
core/agent/loopпотік даних: повідомленняadapter.acomplete · класи помилокcore/llm/adaptersРозмова й попередні результати інструментів передаються окремо від системного промпту.
BoundToolPlan · незмінний
core/tools/plan.pyповноваження · склад: схеми інструментівadapter.acomplete · класи помилокcore/llm/adaptersМоделі видно лише інструменти BoundToolPlan, прив’язаного до цього кроку. Це незмінний знімок із номером покоління та хешем вмісту.
AgenticLoop · шість фаз
core/agent/loopпотік даних: StepSnapshot · запитadapter.acomplete · класи помилокcore/llm/adaptersStepSnapshot фіксує модель, інструменти й ідентифікатори кореляції цього виклику. Проміжне ПЗ LLM не може підмінити прив’язаний адаптер.
adapter.acomplete · класи помилок
core/llm/adaptersпотік даних: HTTPSПровайдери LLMВиклик робить адаптер конкретного провайдера. Збої класифікуються й повторюються лише в межах заданого ліміту або завершують хід із причиною завершення.
adapter.acomplete · класи помилок
core/llm/adaptersпотік даних: відповідь · tool_useAgenticLoop · шість фазcore/agent/loopЛише текст веде до завершення; tool_use веде до обробки інструментів.
Повноваження інструмента → ефект → результат
Пропозиція tool_use виконується лише після проходження всіх перевірок; відмови, результати й помилки повертаються з виконавця та стають наступним входом моделі.
AgenticLoop · шість фаз
core/agent/loopпотік даних: пакет в очікуванні · збереження раундуSQLite messages · state.jsonmemory/session_checkpoint.pyУ сесії з налаштованими контрольними точками (є контрольна точка й session id) запропонований пакет зберігається до запуску будь-якого інструмента, а якщо його не вдається зберегти, пакет не виконується. Виконаний пакет зберігається знову. Викликачі без контрольної точки такої гарантії не мають.
AgenticLoop · шість фаз
core/agent/loopпотік даних: блоки tool_useToolCallProcessortool_executor/processor.pyПропозиція моделі — не дозвіл. Кожен виклик отримує ToolContext з ідентичністю моделі й адаптера циклу.
ToolCallProcessor
tool_executor/processor.pyпотік даних: aexecuteобласть · політика · схемаtool_executor/executor.pyПо черзі перевіряє область сесії, переписування проміжним ПЗ запитів, політику й схему. Переписування, що знижує рівень безпеки чи клас персональних даних, відхиляється.
BoundToolPlan · незмінний
core/tools/plan.pyповноваження · склад: дозволено · рівень безпекиобласть · політика · схемаtool_executor/executor.pyВиконувані обробники й рівні безпеки беруться з BoundToolPlan, спроєктованого для сесії.
PreToolUse · PostToolUse
tool_executor/executor.pyповноваження · склад: PreToolUse · PostToolUseHookRegistry · рішенняcore/hooksПублічні hooks вирішують, чи блокувати, переписати аргументи або запитати дозвіл, а після переписування знову виконуються перевірки області, політики й схеми. Після виконання hook може додати контекст або притримати результат.
схвалення · HITL
tool_executor/executor.pyповноваження · склад: запит на схваленняКористувач терміналаУ сесії IPC запит на схвалення передається тонкому CLI. Режими без людини типово застосовують політику відмови; єдиний виняток — computer use у DAEMON, якщо оператор окремо його вмикає (інакше заблоковано).
tool_executor/executor.pyвідмова до виконання: відмова до виконанняToolCallProcessor
tool_executor/processor.pyВідхилення за областю, політикою чи схемою, блокування PreToolUse або відмова в схваленні повертаються як результат-помилка без передачі на виконання. У такому разі жоден ефект цього виклику не розпочався.
effect receipt
tool_executor/executor.pyпотік даних: прийняття ефекту · фіксаціяEffectReceiptStorememory/effect_receipts.pyЕфекти, як-от зміни файлів, вихідні повідомлення чи адміністративні дії, приймаються до виконання. Невизначений результат не виконується повторно; він вимагає звірки.
блокування ресурсів · передача
tool_executor/executor.pyпотік даних: виклик обробникаобробники інструментів · bash · computercore/toolsПередає виклик прив’язаному обробнику після блокування його ключів ресурсів. Виклик, перерваний за дедлайном, може й далі виконуватися ззовні.
блокування ресурсів · передача
tool_executor/executor.pyпотік даних: виклик MCPMCPServerManagercore/mcp/manager.pyВикликаються лише MCP-інструменти з оголошеною політикою ресурсів.
MCPServerManager
core/mcp/manager.pyпотік даних: tools/callMCP-сервериКаталог серверів формується з глобальних налаштувань і налаштувань проєкту, що пройшли перевірку довіри; ця перевірка стосується лише записів проєкту. Менеджер MCP застосовує свою політику розширень і ресурсів.
обробники інструментів · bash · computer
core/toolsпотік даних: зміни файлів · git · процесівФайли · git · процесиВиконані зміни залишаються зовнішнім станом. Контрольна точка відновлює лише розмову й не скасовує їх.
tool_executor/executor.pyпотік даних: результат · помилка після передачіToolCallProcessor
tool_executor/processor.pyПісля передачі звичайні результати й помилки (зокрема тайм-аути й невизначені результати) повертаються через PostToolUse. Помилка чи тайм-аут не означає, що зовнішня робота зупинилася або була скасована.
ToolCallProcessor
tool_executor/processor.pyпотік даних: tool_resultповідомлення · ConversationContextcore/agent/loopРезультати, відмови й помилки однаково серіалізуються як tool_result і стають повідомленнями в наступному вході моделі.
ToolCallProcessor
tool_executor/processor.pyзапис · спостереження: виклик · спостереження результатуSessionTimeline · append-onlyobservability/session_timeline.pyЗаписує виклик і його результат (ok чи помилка) у timeline, зокрема виклики, відхилені до виконання. Запис — це спостереження; він не доводить, що зовнішній ефект розпочався чи вдався.
Записи · відновлення · завершення
Контрольна точка, timeline і рядки доказів записуються окремо. Спільної транзакції немає, а контрольна точка відновлює лише розмову.
AgenticLoop · шість фаз
core/agent/loopпотік даних: пакет в очікуванні · збереження раундуSQLite messages · state.jsonmemory/session_checkpoint.pyУ сесії з налаштованими контрольними точками (є контрольна точка й session id) запропонований пакет зберігається до запуску будь-якого інструмента, а якщо його не вдається зберегти, пакет не виконується. Виконаний пакет зберігається знову. Викликачі без контрольної точки такої гарантії не мають.
SQLite messages · state.json
memory/session_checkpoint.pyпотік даних: відновлення під час продовженняAgenticLoop · шість фазcore/agent/loopОдин шлях відновлення повертає повідомлення, когнітивний стан і лічильники запобіжників. Локальний для процесу TaskGraph не відновлюється.
AgenticLoop · шість фаз
core/agent/loopзапис · спостереження: запис ходуSessionTimeline · append-onlyobservability/session_timeline.pyІсторія виконання лише з дописуванням, яка ніколи не відтворюється як стан.
AgenticLoop · шість фаз
core/agent/loopповноваження · склад: перевірка завершенняverify_turn_asynccore/agent/verify.pyПропозиція моделі зупинитися стає завершенням лише через Verify.
verify_turn_async
core/agent/verify.pyповноваження · склад: PostVerify · StopHookRegistry · рішенняcore/hooksРішення публічних hooks визначають, чи продовжувати з виправленням, а виправлення відбуваються лише в межах заданого бюджету (типово два).
AgenticLoop · шість фаз
core/agent/loopзапис · спостереження: рядки доказів · best-effortEvidenceLedger · JSONLagent/evidence_ledger.pyДіагностичні рядки з вилученими чутливими даними. Хеші допомагають кореляції; рядок не доводить, що ефект відбувся, і він не записується однією транзакцією з timeline чи контрольною точкою.
AgenticLoop · шість фаз
core/agent/loopзапис · спостереження: когнітивні події · події життєвого циклуHookSystem · спостереженняcore/hooksHooks спостереження отримують і записують події; вони не вирішують, чи виконувати.
Інші шляхи входу
Месенджери входять як сесії DAEMON демона serve; run_agent зовнішнього MCP-хоста входить в окремо зібраний безголовий одноразовий цикл.
Канал месенджерапотік даних: повідомлення каналуопитувачі месенджерів
core/serverОпитувачі демона serve обробляють повідомлення лише з прив’язаних каналів.
опитувачі месенджерів
core/serverповноваження · склад: create_session(DAEMON)SharedServices.create_sessionsupervised/services.pyРежим без людини, яка схвалює: діють типова політика відмови й часовий бюджет. Лише computer use оператор може окремо ввімкнути; без цього він лишається заблокованим.
опитувачі месенджерів
core/serverпотік даних: arun(message)AgenticLoop · шість фазcore/agent/loopПотік зберігає один фіксований session id і продовжує один ланцюжок контрольних точок.
Зовнішній MCP-хостпотік даних: run_agent(prompt)run_agent · одноразовий запуск
core/mcp_server.pyЗовнішній MCP-хост викликає GEODE як інструмент.
run_agent · одноразовий запуск
core/mcp_server.pyпотік даних: безголовий одноразовий циклAgenticLoop · шість фазcore/agent/loopОкремо зібрані безголові виконавець і цикл, що оминають SharedServices. Типовий список заборон діє без змін, тож інструменти на кшталт run_bash, delegate_task і computer прибрано; винятку для computer use у DAEMON тут немає.
Усі зв’язки однакової товщини. Оберіть потік, щоб підсвітити лише його шлях із пронумерованими кроками.
- Суцільна · напрямок, яким рухаються запити, повідомлення й результати інструментів
- Штрихова · склад сесії, повноваження чи вердикт; не шлях даних
- Довга штрихпунктирна · записи й спостереження; ніколи не відтворюються як стан
- Коротка штрихова · відмова до виконання, без ефекту
- Товста чорна лінія · обраний потік; номери показують порядок
- Рамка · межа, що володіє кодом, шлях до джерела в заголовку
- Внутрішня плашка · компонент усередині цієї межі
- Штрихова рамка · поза процесом середовища виконання
- Помаранчевий контур · де вирішує модель
- Цикл виконання
- Повноваження · вердикти
- Сховища записів
- Вхід · з’єднання · виконання
Накреслено лише зв’язки, виклики яких підтверджено. П’ятирівневий фасад ContextAssembler, TaskGraph і дослідницькі експерименти, як-от Jev, SIL і Crucible, не лежать на цьому шляху виконання. Асинхронне скасування не зупиняє вже розпочату синхронну роботу й не скасовує ефектів, що вже відбулися.
Підтримувані моделі · за провайдерами
Варіанти з каталогу в коді й типові налаштування з постачання, а не список, у якому кожна модель пройшла живий виклик API. Налаштовані резервні ланцюжки типово порожні, а точні ID ніколи не оновлюються до новіших версій автоматично.
Anthropic
API
- ОсновнаClaude Opus 5.5
claude-opus-5-5Типова - ДопоміжнаClaude Sonnet 5
claude-sonnet-5Типова - БюджетнаClaude Haiku 4.5
claude-haiku-4-5-20251001Типова
Показати всі ID каталогу (12)
API
claude-fable-5-1claude-opus-5-5типовоclaude-opus-5claude-sonnet-5типовоclaude-haiku-4-5-20251001типовоclaude-fable-5claude-opus-4-8claude-opus-4-7claude-opus-4-6claude-opus-4-5claude-sonnet-4-6claude-sonnet-4-5-20250929
Код відхиляє маршрут через OAuth-підписку.
- ОсновнаClaude Opus 5.5
OpenAI
API · підписка Codex
- Типова для API й CodexGPT-6 Sol
gpt-6-solТипова
Показати всі ID каталогу (11)
API · підписка Codex
gpt-6-astragpt-6-solтиповоgpt-6-lunagpt-5.6-solgpt-5.6-terragpt-5.6-luna
Лише API
gpt-5.5gpt-5.3-codexgpt-5.4gpt-5.4-minigpt-5.4-nano
Два маршрути доступу до одного провайдера; каталог визначає, які маршрути дозволяє кожна модель.
- Типова для API й CodexGPT-6 Sol
Z.ai / GLM
PAYG
- ТиповаGLM-5.3
glm-5.3Типова
Показати всі ID каталогу (9)
PAYG
glm-5.3типовоglm-5.3-flashglm-5.3-flashxglm-5.2glm-5.1glm-5glm-4.7glm-4.7-flashxglm-4.7-flash
Код не допускає маршрут GLM Coding Plan.
- ТиповаGLM-5.3
OpenRouter
Сервіс маршрутизації
- СелекторFree (smoke)
openrouter/openrouter/freeМаршрутизатор - СелекторAuto (variable)
openrouter/openrouter/autoМаршрутизатор
Вибір маршрутизатора, а не одна фіксована модель. Явно налаштовані ID також можна зберегти.
- СелекторFree (smoke)
TypeSafe / Jev
Лише для рішень · окремо від генерації тексту
- Напряму
jev-1.13.0Лише для рішень - Через OpenRouter
typesafe/jev-1.13Лише для рішень
Необов’язковий адаптер, який лише ухвалює рішення; це не коренева модель генерації тексту. Типовий рушій рішень — llm, а Jev треба обрати окремо. Власні конфігурації дослідження Jev відповідають записам розділу Jev.
- Напряму
ДжерелоGEODE main 373d420Публічний коміт October 7, 2026 · перевірено October 8, 2026
Експерименти
Моделі й маршрути, як їх записано на той час, а не поточні типові налаштування чи повний список сумісності.
Звіт про бенчмарк GEODE
July 31, 2026
- GEODEGPT-5.6 Sol
gpt-5.6-solПідписка OpenAI · high
- GEODEGPT-5.6 Sol
Terminal-Bench 2.1 · парна специфікація Harbor 0.22.0
August 27, 2026
- GEODE · native CodexGPT-5.6 Sol
gpt-5.6-solпідписка · max
Заморожена специфікація; не кожна запланована спроба дала валідний результат.
- GEODE · native CodexGPT-5.6 Sol
Архівний запуск SIL run-2606-broken-tool-use
- Цільовий каркасGPT-5.5
gpt-5.5openai-codex - Аудитор · суддяClaude Opus 4.8
claude-opus-4-8PAYG
Запис окремих ролей, а не два взаємозамінні типові варіанти.
- Цільовий каркасGPT-5.5