GEODE 的官方像素角色 Geodi
返回展厅

GEODE

Autonomous Agent Harness

从观测,到下一步行动。

一个可以委托研究、文件处理与定时任务的本地自主智能体执行框架。

2026.02.21 — present

设计、判断、验证:Author · 实现:Claude · 审查:Codex

  • CLI公开发布 · PyPI
  • MCP 服务器已实现

模型的停止提议须经验证才成为完成。

对于可交付的停止,模型即使请求停止,仍要经过完成验证。结果分为完成、在预算内继续、等待审查;执行上限、取消和错误以单独的停止状态结束。

完成判定结构图 · 依据固定提交 9e2c041 的代码路径绘制
GEODE 完成判定结构图模型的停止提议如何成为完成。只有可交付的停止(natural、forced_text、actionable_partial)会经过 PreVerify hook、结构检查与所选评判模型(默认 LLM judge,选用时为 Jev),以及 PostVerify 与 Stop hook。通过则保存为 completed;可修复的失败在默认 2 次的预算内继续同一请求。判定无法使用、试图将失败改为通过,或预算耗尽时,扣留候选并将会话置于 paused。取消、上限和基础设施类停止,以及 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 · 解读判定续接预算 · 默认 2 次core/hooks/public.pyPreVerify · STRENGTHENPostVerify · ACCEPT · REVISE · ESCALATEStop · CONTINUEmemory · observability检查点 · 会话状态timeline · ledger 判定行core/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

    PreVerify hook 通过 STRENGTHEN 只能增加要求与缺失代码。它只能让判定更严格,不能使其通过。

  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执行 · 判定: PostVerify 决策PostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    PostVerify hook 决定 ACCEPT、REVISE 或 ESCALATE。对验证失败的候选给出 ACCEPT,会改为 escalate。没有决策时采用运行时默认值(通过 → accept,可重试 → revise,其余 → escalate)。

  8. policy_action · 解读判定loop/_lifecycle.py执行 · 判定: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    只有在不 escalate 时,Stop hook 的 CONTINUE 指令才能请求续接修复。hook 指令是下一次尝试的输入,而非权限。

  9. policy_action · 解读判定loop/_lifecycle.py数据: completed · 已保存检查点 · 会话状态memory · observability

    通过并 accept 后,合并续接的尝试,保存结果,并将会话记为 completed。

  10. finalize_and_return_asyncloop/_lifecycle.py数据: 响应IPC · CLI 调用方

    完成时返回最终答复;等待审查时返回空答复与 EXTERNAL_VERIFICATION_REQUIRED;不经验证的停止则返回停止原因。

预算内修复

可修复的失败会继续同一请求。默认预算为 2 次尝试;用尽后,候选进入等待审查。

  1. 语义判断 · LLM 或 Jevcore/agent/verify.py数据: passed · rubric_missespolicy_action · 解读判定loop/_lifecycle.py

    判定包含是否通过、缺失代码、供下一次尝试使用的反思,以及重试是否有用。语义判断通过不能掩盖结构检查的失败。

  2. policy_action · 解读判定loop/_lifecycle.py执行 · 判定: PostVerify 决策PostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    PostVerify hook 决定 ACCEPT、REVISE 或 ESCALATE。对验证失败的候选给出 ACCEPT,会改为 escalate。没有决策时采用运行时默认值(通过 → accept,可重试 → revise,其余 → escalate)。

  3. policy_action · 解读判定loop/_lifecycle.py执行 · 判定: Stop · CONTINUEStop · CONTINUEcore/hooks/public.py

    只有在不 escalate 时,Stop hook 的 CONTINUE 指令才能请求续接修复。hook 指令是下一次尝试的输入,而非权限。

  4. 续接预算 · 默认 2 次loop/_lifecycle.py执行 · 判定: 修复 · 尝试 +1_arun_once · 续接修复loop/agent_loop.py

    只有存在修复指令,且本次尝试编号小于预算(默认 2 次)时,才会继续同一请求。达到预算即成为 escalate_budget_exhausted,进入等待审查。

等待审查

判定无法使用、试图将失败改为通过,或预算耗尽时,扣留候选并暂停会话。

  1. verification_error · 失败即关闭core/agent/verify.py失败 · 无判定: verification_errorpolicy_action · 解读判定loop/_lifecycle.py

    评判模型缺失、超时或响应无效时,记为 verification_error:既不算通过,也不是修复信号。无法使用的判定从不代替成功。

  2. policy_action · 解读判定loop/_lifecycle.py执行 · 判定: PostVerify 决策PostVerify · ACCEPT · REVISE · ESCALATEcore/hooks/public.py

    PostVerify hook 决定 ACCEPT、REVISE 或 ESCALATE。对验证失败的候选给出 ACCEPT,会改为 escalate。没有决策时采用运行时默认值(通过 → accept,可重试 → revise,其余 → escalate)。

  3. policy_action · 解读判定loop/_lifecycle.py执行 · 判定: ESCALATE · pending外部审查者

    候选保留为 pending_text,不出现在普通响应中;保存检查点并暂停会话。不会自动联系外部审查者。

  4. policy_action · 解读判定loop/_lifecycle.py记录 · 观测: 判定 · 证据行timeline · ledger 判定行memory · observability

    timeline 写入决策、证据与 pending 行,evidence ledger 写入 verification_policy 行。这些是尽力而为的记录,不能证明外部效果。

不经验证的停止

取消、上限和基础设施类停止,以及 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;不经验证的停止则返回停止原因。

所有连接以相同粗细显示。选择一个流程,即只突出显示其路径,并标出步骤编号。

  • 实线 · 请求、候选与结果的流向
  • 虚线 · 执行、判定、授权、配置
  • 长点划线 · 记录与观测,与判定分离
  • 短虚线 · 失败或无法使用的判定
  • 粗黑线 · 所选流程;数字表示顺序
  • 方框 · 代码或记录的边界,顶部标注路径
  • 内层小框 · 该边界内的组件
  • 虚线框 · 该边界之外
  • 循环 · 收尾
  • 停止 · hook · 判定
  • 保存 · 记录
  • IPC 入口

只画出固定提交 9e2c041 中的调用路径。评判模型的通过与外部基准测试验证器的成功是两回事;这里的完成是运行时内部的决策。

评判引擎
默认使用 LLM judge;只有 judgment_engine 设为 jev 时才由 Jev Choice 评判。无论哪种,评判不可用时都给出 verification_error,绝不算成功。
hook 能做什么
PreVerify 只能让判定更严格,PostVerify 不能让失败的候选通过,Stop 只有在不 escalate 时才能请求续接。
等待审查
等待审查记录的是需要外部决定这一状态。它不会通知任何人,也不表示结果已获批准。