looprig

架构

最后更新:2026-06-25。

产品意图

DeepReef 是一个终端原生的 AI 循环代理运行时,专为受监督的本地、免费和低成本编码模型设计。其核心产品理念并非”一个强大模型包办一切”,而是一个受控循环:更强或更可靠的模型负责规划、审查、恢复和判断,而更便宜或本地的模型负责执行可验证的工作。

当前的思维模型如下:

Supervisor 规划 / 审查 / 纠正
  -> Worker 执行工程工作
  -> Worker 报告结果和证据
  -> Supervisor 决定继续 / 修改 / 完成 / 阻塞 / 询问用户

DeepReef 处于 pre-1.0 阶段。公共 API、配置结构、包边界和提供者预设仍可能发生变化。

仓库结构

DeepReef 是一个 TypeScript/Bun 单体仓库,以 @deepreef/cli 形式发布。可执行命令为 deepreef

路径 职责
@deepreef/core packages/core/ 引擎、提供者配置、上下文、会话、工作流、目标、邮箱、权限、测试框架、模型配置文件、结构化协议。
@deepreef/cli packages/cli/ CLI 入口、TUI 启动、管道模式、工具注册、插件/内存/MCP 连接、Supervisor/Worker 连接。
@deepreef/tui packages/tui/ Ink/React UI、桥接、时间线、斜杠命令、模型选择器、工作流/目标用户体验、诊断、设置。
@deepreef/tools packages/tools/ 默认工程工具:文件、编辑、shell、搜索、web、任务、技能、工作流、笔记本。
@deepreef/mcp packages/mcp/ MCP 主机/客户端、资源列表、工具列表、代理工具调用。
@deepreef/plugin packages/plugin/ 插件运行时、内容包、钩子、规则、命令、技能、工具。
@deepreef/memory packages/memory/ AgentMemory 运行时、内存工具、钩子、MCP 服务器/代理、评估/检索。
@deepreef/security packages/security/ 权限引擎、钩子管理器、文件快照保护。
@deepreef/ink packages/ink/ 终端渲染原语和主题基础设施。
@deepreef/shell packages/shell/ Shell 状态基础设施。

运行时映射

TUI / CLI / 管道模式
        |
        v
ReasonixEngine
        |
        v
AsyncGenerator<LoopEvent>
        |
        +-- ContextManager / ChatClient / SessionWriter
        +-- StreamingToolExecutor / Permission / Hooks
        +-- WorkflowCoordinator / DualAgentRuntime
        +-- Plugin / MCP / Memory
        |
        v
TUI 桥接 / 转录存储 / 运行时状态

核心引擎发出事件流。CLI 和 TUI 消费者将该流投射为文本输出、时间线条目、状态栏、权限提示、问题提示和工作流状态。

核心引擎边界

路径 角色
packages/core/src/engine.ts ReasonixEngine:提交、恢复、配置更新、工具注册。
packages/core/src/loop.ts 主单代理循环。
packages/core/src/client.ts 兼容 OpenAI 的 SSE 客户端。
packages/core/src/config/packages/core/src/config.ts 统一配置管理器及提供者/模型预设。
packages/core/src/context/ 不可变前缀、追加日志、草稿、修复、摘要、令牌估算。
packages/core/src/streaming-executor.ts 共享/独占流式工具执行。
packages/core/src/workflow-coordinator/ Supervisor/Worker 状态机和结构化协议。
packages/core/src/goal/ GoalStore、GoalRuntime、目标工具、引导提示。
packages/core/src/agent-comm/ 邮箱、AgentCommController、邮箱工具。
packages/core/src/dual-agent-runtime/ Worker/Supervisor 引擎封装。
packages/core/src/resolve-effective-tools.ts 按角色/模式/工作流阶段筛选工具。

CLI 启动路径

packages/cli/src/index.ts 处理顶级命令分发。packages/cli/src/tui.ts 执行交互式运行时连接:

  1. 加载配置。
  2. 创建 ReasonixEngine
  3. 在后台加载 MCP、插件/内容包和内存系统。
  4. 注册默认工具、插件工具、MCP 代理工具和内存工具。
  5. 在 TTY 模式下,创建 Supervisor 引擎、DualAgentRuntimeGoalStoreMailboxWorkflowCoordinator
  6. 注册动态目标/邮箱治理工具,使工具执行读取当前工作流/线程/控制器而非过期对象。
  7. 渲染 @deepreef/tui 应用。

非 TTY 输入使用管道模式。

TUI 状态路径

TUI 入口点包括:

UI 中仍包含部分旧桥接状态,而较新的存储/运行时组件负责转录、诊断和有界队列的职责。长会话的性能优化应聚焦于转录存储、读取器缓存行为、桥接运行时队列限制和时间线渲染窗口。不要将 UI 裁剪与核心引擎上下文截断混为一谈,除非任务明确涉及两者。

工作流循环

WorkflowCoordinator 驱动当前的 Supervisor/Worker 循环:

idle
  -> supervisor_analyse
  -> worker_do
  -> worker_report
  -> supervisor_check
  -> supervisor_intervene
  -> waiting_user
  -> completed / blocked / failed

当前行为:

目标与邮箱

GoalStore 将会话树下的活动循环目标持久化:

.deepreef/sessions/<sessionId>/goal.json

目标状态值:

active | paused | blocked | usage_limited | budget_limited | complete

模型侧的 update_goal 有意保持窄范围:它只能标记为 completeblocked;暂停、恢复、预算限制和清除操作属于用户/系统控制。这防止模型静默重写用户的治理状态。

邮箱支持使用 JSONL 风格的队列语义,并暴露 send_messagefollowup_taskread_mailbox。它对于未来的多步代理通信很有用,但还不是默认的工作流传输方式。

工具与权限边界

resolveEffectiveTools() 是核心的工具筛选边界:

提供者与模型层

提供者预设位于 packages/core/src/config.ts;统一配置加载位于 packages/core/src/config/ 下。当前提供者系列包括 zendeepseekmimokiloopenai-compatiblenvidiaqwenkimizaistepfunopenai

确切的模型矩阵和推荐的角色分配维护在 OPERATIONS.md 中。

扩展系统

这些系统应在启动时软失败。失败的扩展不应阻止基础 CLI/TUI 代理运行,除非用户明确将该扩展标记为必需。

当前实现状态

已实现的基础设施:

仍在加固中:

真相来源路径

主题 来源
CLI 入口 packages/cli/src/index.tspackages/cli/src/tui.ts
引擎 packages/core/src/engine.tspackages/core/src/loop.ts
配置 packages/core/src/config/packages/cli/src/commands/config.ts
提供者预设 packages/core/src/config.ts
工作流 packages/core/src/workflow-coordinator/
目标 packages/core/src/goal/
邮箱 packages/core/src/agent-comm/
TUI 应用 packages/tui/src/App.tsx
TUI 存储 packages/tui/src/store/
斜杠命令 packages/tui/src/CommandRegistry.tspackages/tui/src/commands.ts
工具筛选 packages/core/src/resolve-effective-tools.ts
默认工具 packages/tools/src/

编码代理的不变规则