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

GEODE

Autonomous Agent Harness

从观测,到下一步行动。

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

2026.02.21 — present

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

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

GEODE runtime vocabulary

Lens
Agent Harness
ReAct
Runtime
External Loop
Data System
Improvement Mechanism
  1. reasoning
  2. action
  3. observation
  1. plan
  2. memory
  3. tools
  4. hook
  5. reflexion
  1. rollouts
  2. data curation
  3. data governance
  1. evaluation
  2. scaffold search
  3. 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

动手修改之前,先找到了已有的东西。

任务:为一个由五张表组成的社交服务设置行级安全。

  1. 调研调用 1–12 · list_objects, get_object_details, execute_sql读取了五张表、已有的四个辅助函数、五张表全部关闭的 RLS,以及策略、权限和角色。
  2. 执行调用 13 · execute_sql一个事务:设置 20 条策略并开启 RLS,复用 3 个现有辅助函数,新增 3 个函数。
  3. 验证评测框架 · 不是智能体的调用18 项通过,0 项失败。9 轮中的 13 次工具响应全部无错误返回。
验证器输出 18 行(原文)
  1. RLS enabled on users
  2. RLS enabled on channels
  3. RLS enabled on channel_moderators
  4. RLS enabled on posts
  5. RLS enabled on comments
  6. Users can update their own profile
  7. Users blocked from updating other users' profiles
  8. Channel owners can update their channels
  9. Non-owners blocked from updating channels
  10. Post authors can update their posts
  11. Channel moderators can update posts in their channels
  12. Unauthorized users blocked from updating posts
  13. Comment authors can update their comments
  14. Post authors can moderate comments on their posts
  15. Channel owners can add moderators
  16. Non-owners blocked from adding moderators
  17. Content visibility varies correctly based on user context
  18. Anonymous users can see 3 public user profiles (correct)

这是在已配置的评测沙箱中的一次过往运行,不是线上数据库,也不是真实的安全事件。记录中没有设置策略之前的行数,因此不予显示。 公开运行记录(meta.json,提交 23e3428)

回顾结果并加以修复(受 Reflexion 启发、在同一任务内的修复)是当前 GEODE 运行时的能力。本记录中没有出现这类修复:所有工具响应都无错误返回。 运行时文档(hook-system.md)

下一步行动由模型选择,执行边界由主机守住。

从请求进入会话,经模型调用和对每个提议的工具调用所做的权限检查,到执行、结果与记录的运行时。选择一条流程后,只高亮该路径并标出步骤编号。

下一步行动由模型选择;运行时检查工具权限,并判定工作何时完成。

外部 Scaffold Search / SIL 实验始于 May 15, 2026

从 PyPI 安装 geode-agent 包,或从公开仓库安装,在自己的终端中运行。也可以作为 MCP 服务器接入。

运行时架构 · 依据固定提交 9e2c041 的代码路径绘制
GEODE 运行时架构GEODE 运行时进程的组件与连接。请求经终端 IPC、即时通讯应用或外部 MCP 主机到达并构成会话;AgenticLoop 以系统提示词、对话和工具 schema 调用模型。模型提议的工具调用须通过 ToolExecutor 的范围、策略、schema、hook 与审批检查才会执行,其结果成为下一次模型输入。检查点、timeline 与证据行是彼此独立的存储。终端用户REPL · thin CLI即时通讯频道Slack · Discord · Telegram外部 MCP 主机run_agent 工具LLM 提供商HTTPS · 模型 API文件 · git · 进程检查点之外的状态MCP 服务器全局 + 受信任的项目core/serverCLIPoller · IPC 套接字即时通讯 pollercore/mcp_server.pyrun_agent · 单次运行supervised/services.pySharedServices.create_sessionLaneQueue · session · globalcore/agent/loopAgenticLoop · 六个阶段系统提示词 · 声明的来源对话消息 · ConversationContextcore/llm/adaptersadapter.acomplete · 错误分类tool_executor/processor.pyToolCallProcessorcore/tools/plan.pyBoundToolPlan · 不可变tool_executor/executor.py范围 · 策略 · schemaPreToolUse · PostToolUse审批 · HITLeffect receipt资源锁 · 分派core/tools工具 handler · bash · computercore/mcp/manager.pyMCPServerManagermemory/session_checkpoint.pySQLite messages · state.jsonmemory/effect_receipts.pyEffectReceiptStoreobservability/session_timeline.pySessionTimeline · append-onlyagent/evidence_ledger.pyEvidenceLedger · JSONLcore/agent/verify.pyverify_turn_asynccore/hooksHookRegistry · 决策HookSystem · 观测GEODE 运行时进程serve 守护进程 · REPL · 单次运行入口 · 会话构成执行循环 · 模型调用工具权限 · 效果记录 · 恢复 · 完成1 prompt · cli.sock · 终端用户 → CLIPoller · IPC 套接字12 create_session(IPC) · CLIPoller · IPC 套接字 → SharedServices.create_session23 每个请求一条 lane · CLIPoller · IPC 套接字 → LaneQueue · session · global34ToolExecutor · AgenticLoop5arun(prompt)6系统提示词7对话消息8工具 schema9StepSnapshot · 请求10HTTPS11 响应 · tool_use · adapter.acomplete · 错误分类 → AgenticLoop · 六个阶段111待执行批次 · 回合保存2tool_use 块3 aexecute · ToolCallProcessor → 范围 · 策略 · schema34允许 · 安全等级5PreToolUse · PostToolUse6审批请求7 执行前拒绝 · tool_executor/executor.py → ToolCallProcessor78效果登记 · 确认9handler 调用10 MCP 调用 · 资源锁 · 分派 → MCPServerManager1011 tools/call · MCPServerManager → MCP 服务器1112 文件 · git · 进程变更 · 工具 handler · bash · computer → 文件 · git · 进程1213 结果 · 分派后错误 · tool_executor/executor.py → ToolCallProcessor1314tool_result15调用 · 结果观测1待执行批次 · 回合保存2续接还原3轮次记录4完成检查5PostVerify · Stop6证据行 · 尽力而为7认知 · 生命周期事件1频道消息2 create_session(DAEMON) · 即时通讯 poller → SharedServices.create_session23arun(message)4run_agent(prompt)5无头单次循环

请求 → 模型调用

终端请求经 IPC 到达并构成会话,循环以系统提示词、对话和工具 schema 调用模型。

  1. 终端用户数据流: prompt · cli.sockCLIPoller · IPC 套接字core/server

    thin CLI 将请求发送到 serve 守护进程的 IPC 套接字(~/.geode/cli.sock)。REPL 在进程内执行同样的会话构成。

  2. CLIPoller · IPC 套接字core/server权限 · 构成: create_session(IPC)SharedServices.create_sessionsupervised/services.py

    每个连接构成一个会话。模式决定 HITL 级别、时间预算和拒绝的工具,并按所选提供商投影 BoundToolPlan。

  3. CLIPoller · IPC 套接字core/server权限 · 构成: 每个请求一条 laneLaneQueue · session · globalsupervised/services.py

    执行请求前,同时占用会话 lane 与全局 lane,以限制并发执行。

  4. SharedServices.create_sessionsupervised/services.py权限 · 构成: ToolExecutor · AgenticLoopAgenticLoop · 六个阶段core/agent/loop

    将执行器与循环构建为一对,二者共享 hook、MCP、技能与资源锁。

  5. LaneQueue · session · globalsupervised/services.py数据流: arun(prompt)AgenticLoop · 六个阶段core/agent/loop

    以六个阶段执行一个用户轮次:准备输入、准备调用、调用提供商、处理工具、观测与压缩、终止。

  6. 系统提示词 · 声明的来源core/agent/loop数据流: 系统提示词adapter.acomplete · 错误分类core/llm/adapters

    每个轮次依据声明的来源构建,例如选定的 GEODE.md 小节与规则。ContextAssembler 的五层 facade 只在显式调用时使用,不是默认循环的输入。

  7. 对话消息 · ConversationContextcore/agent/loop数据流: 对话消息adapter.acomplete · 错误分类core/llm/adapters

    对话及先前的工具结果独立于系统提示词传递。

  8. BoundToolPlan · 不可变core/tools/plan.py权限 · 构成: 工具 schemaadapter.acomplete · 错误分类core/llm/adapters

    模型只能看到绑定到本步骤的 BoundToolPlan 中的工具。它是带有代次与内容哈希的不可变快照。

  9. AgenticLoop · 六个阶段core/agent/loop数据流: StepSnapshot · 请求adapter.acomplete · 错误分类core/llm/adapters

    StepSnapshot 固定本次调用的模型、工具和关联 ID。LLM 中间件无法替换已绑定的适配器。

  10. adapter.acomplete · 错误分类core/llm/adapters数据流: HTTPSLLM 提供商

    由各提供商的适配器发起调用。失败经分类后,或在设定上限内重试,或以终止原因结束该轮次。

  11. adapter.acomplete · 错误分类core/llm/adapters数据流: 响应 · tool_useAgenticLoop · 六个阶段core/agent/loop

    只有文本时进入终止判定;含 tool_use 时进入工具处理。

工具权限 → 效果 → 结果

tool_use 提议须通过全部检查才执行;拒绝、结果和错误都从执行器返回,成为下一次模型输入。

  1. AgenticLoop · 六个阶段core/agent/loop数据流: 待执行批次 · 回合保存SQLite messages · state.jsonmemory/session_checkpoint.py

    在配置了检查点的会话中(存在检查点与 session id 时),任何工具执行前先保存提议的批次,无法保存则不执行该批次。执行完成的批次会再次保存。不带检查点的调用方不享有这一保证。

  2. AgenticLoop · 六个阶段core/agent/loop数据流: tool_use 块ToolCallProcessortool_executor/processor.py

    模型的提议并非权限。每次调用都会得到一个 ToolContext,其中携带循环的模型与适配器身份。

  3. ToolCallProcessortool_executor/processor.py数据流: aexecute范围 · 策略 · schematool_executor/executor.py

    依次检查会话范围、请求中间件的改写、策略和 schema。改写若降低安全等级或个人数据类别,则予以拒绝。

  4. BoundToolPlan · 不可变core/tools/plan.py权限 · 构成: 允许 · 安全等级范围 · 策略 · schematool_executor/executor.py

    可执行的 handler 与安全等级来自为该会话投影的 BoundToolPlan。

  5. PreToolUse · PostToolUsetool_executor/executor.py权限 · 构成: PreToolUse · PostToolUseHookRegistry · 决策core/hooks

    公开 hook 决定拦截、改写参数或请求权限;改写之后会再次进行范围、策略和 schema 检查。执行之后,hook 可以补充上下文或扣留结果。

  6. 审批 · HITLtool_executor/executor.py权限 · 构成: 审批请求终端用户

    IPC 会话中的审批请求会转给 thin CLI。无人值守的模式默认采用拒绝策略;唯一例外是运维人员单独开启 DAEMON 的 computer use(未开启则拦截)。

  7. tool_executor/executor.py执行前拒绝: 执行前拒绝ToolCallProcessortool_executor/processor.py

    范围、策略或 schema 拒绝,PreToolUse 拦截,或审批被拒,都不经分派,作为错误结果返回。此时本次调用的任何效果都尚未开始。

  8. effect receipttool_executor/executor.py数据流: 效果登记 · 确认EffectReceiptStorememory/effect_receipts.py

    文件变更、外发消息、管理操作等效果在执行前登记。结果不确定时不会再次执行,而是要求核对。

  9. 资源锁 · 分派tool_executor/executor.py数据流: handler 调用工具 handler · bash · computercore/tools

    锁定资源键后分派给绑定的 handler。因到达截止时间而中止的调用,可能仍在外部运行。

  10. 资源锁 · 分派tool_executor/executor.py数据流: MCP 调用MCPServerManagercore/mcp/manager.py

    只调用声明了资源策略的 MCP 工具。

  11. MCPServerManagercore/mcp/manager.py数据流: tools/callMCP 服务器

    服务器目录来自全局设置,以及通过信任检查的项目设置;信任检查只适用于项目条目。MCP 管理器会应用其扩展与资源策略。

  12. 工具 handler · bash · computercore/tools数据流: 文件 · git · 进程变更文件 · git · 进程

    已执行的变更作为外部状态保留。检查点只恢复对话,不会撤销这些变更。

  13. tool_executor/executor.py数据流: 结果 · 分派后错误ToolCallProcessortool_executor/processor.py

    分派之后,正常结果与错误(包括超时和结果不确定)经 PostToolUse 返回。出错或超时并不意味着外部工作已停止或已撤销。

  14. ToolCallProcessortool_executor/processor.py数据流: tool_result对话消息 · ConversationContextcore/agent/loop

    结果、拒绝和错误都序列化为 tool_result,成为下一次模型输入中的消息。

  15. ToolCallProcessortool_executor/processor.py记录 · 观测: 调用 · 结果观测SessionTimeline · append-onlyobservability/session_timeline.py

    将调用及其结果(正常或错误)写入 timeline,执行前被拒绝的调用也会写入。该记录属于观测,不能证明外部效果已经开始或已经成功。

记录 · 恢复 · 完成

检查点、timeline 和证据行各自分别写入。没有共享事务,检查点只恢复对话。

  1. AgenticLoop · 六个阶段core/agent/loop数据流: 待执行批次 · 回合保存SQLite messages · state.jsonmemory/session_checkpoint.py

    在配置了检查点的会话中(存在检查点与 session id 时),任何工具执行前先保存提议的批次,无法保存则不执行该批次。执行完成的批次会再次保存。不带检查点的调用方不享有这一保证。

  2. SQLite messages · state.jsonmemory/session_checkpoint.py数据流: 续接还原AgenticLoop · 六个阶段core/agent/loop

    一条还原路径恢复消息、认知状态和守卫计数器。仅存在于进程内的 TaskGraph 不在恢复范围内。

  3. AgenticLoop · 六个阶段core/agent/loop记录 · 观测: 轮次记录SessionTimeline · append-onlyobservability/session_timeline.py

    只追加的执行历史,从不作为状态重放。

  4. AgenticLoop · 六个阶段core/agent/loop权限 · 构成: 完成检查verify_turn_asynccore/agent/verify.py

    模型的停止提议只有经过 Verify 才成为完成。

  5. verify_turn_asynccore/agent/verify.py权限 · 构成: PostVerify · StopHookRegistry · 决策core/hooks

    由公开 hook 的决策确定是否继续修复;修复只在设定预算内进行(默认 2 次)。

  6. AgenticLoop · 六个阶段core/agent/loop记录 · 观测: 证据行 · 尽力而为EvidenceLedger · JSONLagent/evidence_ledger.py

    经脱敏的诊断行。哈希用于关联;存在某行并不能证明效果已发生,且它不与 timeline 或检查点在同一事务中写入。

  7. AgenticLoop · 六个阶段core/agent/loop记录 · 观测: 认知 · 生命周期事件HookSystem · 观测core/hooks

    观测 hook 接收并记录事件,不决定执行。

其他入口路径

即时通讯应用以 serve 守护进程的 DAEMON 会话进入;外部 MCP 主机的 run_agent 进入单独构建的无头单次循环。

  1. 即时通讯频道数据流: 频道消息即时通讯 pollercore/server

    serve 守护进程的 poller 只处理已绑定频道的消息。

  2. 即时通讯 pollercore/server权限 · 构成: create_session(DAEMON)SharedServices.create_sessionsupervised/services.py

    无人审批的模式:采用默认拒绝策略并设时间预算。只有 computer use 可由运维人员单独开启;未开启则保持拦截。

  3. 即时通讯 pollercore/server数据流: arun(message)AgenticLoop · 六个阶段core/agent/loop

    同一消息串保持一个固定的 session id,延续同一条检查点链。

  4. 外部 MCP 主机数据流: run_agent(prompt)run_agent · 单次运行core/mcp_server.py

    外部 MCP 主机将 GEODE 作为工具调用。

  5. run_agent · 单次运行core/mcp_server.py数据流: 无头单次循环AgenticLoop · 六个阶段core/agent/loop

    单独构建的无头执行器与循环,绕过 SharedServices。默认拒绝列表照常生效,因此 run_bash、delegate_task、computer 等工具被移除;这里没有 DAEMON 的 computer use 例外。

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

  • 实线 · 请求、消息与工具结果的流向
  • 虚线 · 会话构成、权限或判定,并非数据路径
  • 长点划线 · 记录与观测,从不作为状态重放
  • 短虚线 · 执行前拒绝,无效果
  • 粗黑线 · 所选流程;数字表示顺序
  • 方框 · 拥有代码的边界,顶部标注源码路径
  • 内层小框 · 该边界内的组件
  • 虚线框 · 运行时进程之外
  • 橙色轮廓 · 模型作出判断之处
  • 执行循环
  • 权限 · 判定
  • 记录存储
  • 入口 · 连接 · 执行

只画出已确认存在调用的连接。ContextAssembler 的五层 facade、TaskGraph,以及 Jev、SIL、Crucible 等研究实验不在这条运行时路径上。异步取消不会停止已经开始的同步工作,也不会撤销已经发生的效果。

支持的模型 · 按提供商

这是代码中的可选目录与出厂默认设置,并非每个模型都经过真实 API 调用的清单。已配置的回退链默认为空,精确 ID 从不会被自动升级到更新版本。

  • Anthropic

    API

    • 主模型Claude Opus 5.5claude-opus-5-5默认设置
    • 辅助Claude Sonnet 5claude-sonnet-5默认设置
    • 低成本Claude Haiku 4.5claude-haiku-4-5-20251001默认设置
    显示全部 12 个目录 ID

    API

    • claude-fable-5-1
    • claude-opus-5-5默认
    • claude-opus-5
    • claude-sonnet-5默认
    • claude-haiku-4-5-20251001默认
    • claude-fable-5
    • claude-opus-4-8
    • claude-opus-4-7
    • claude-opus-4-6
    • claude-opus-4-5
    • claude-sonnet-4-6
    • claude-sonnet-4-5-20250929

    代码拒绝订阅 OAuth 路径。

  • OpenAI

    API · Codex 订阅

    • API 与 Codex 默认GPT-6 Solgpt-6-sol默认设置
    显示全部 11 个目录 ID

    API · Codex 订阅

    • gpt-6-astra
    • gpt-6-sol默认
    • gpt-6-luna
    • gpt-5.6-sol
    • gpt-5.6-terra
    • gpt-5.6-luna

    仅限 API

    • gpt-5.5
    • gpt-5.3-codex
    • gpt-5.4
    • gpt-5.4-mini
    • gpt-5.4-nano

    同一提供商的两条接入路径;每个模型允许哪些路径由目录决定。

  • Z.ai / GLM

    PAYG

    • 默认GLM-5.3glm-5.3默认设置
    显示全部 9 个目录 ID

    PAYG

    • glm-5.3默认
    • glm-5.3-flash
    • glm-5.3-flashx
    • glm-5.2
    • glm-5.1
    • glm-5
    • glm-4.7
    • glm-4.7-flashx
    • glm-4.7-flash

    代码不接受 GLM Coding Plan 路径。

  • OpenRouter

    路由服务

    • 选择器Free (smoke)openrouter/openrouter/free路由
    • 选择器Auto (variable)openrouter/openrouter/auto路由

    是路由选择,而非一个固定模型。也可以保留显式配置的 ID。

  • TypeSafe / Jev

    仅限判断 · 与文本生成分离

    • 直连jev-1.13.0仅用于判断
    • 经 OpenRoutertypesafe/jev-1.13仅用于判断

    只做判断的可选适配器,不是根文本生成模型。默认判断引擎为 llm,Jev 需要另行选择。Jev 研究本身的配置以“Jev”一章的记录为准。

实验

当时记录的模型与路径,并非当前默认设置或完整的兼容清单。