Skip to content

架构设计追踪:从 Claude Code 源码中借鉴的改进方向 #1

@zhuhaichao518

Description

@zhuhaichao518

背景

Claude Code v2.1.88 源码泄漏(2026-03-31),其中多个模块的设计对 Open Agent SDK 有借鉴价值。本 issue 追踪架构层面的设计决策和改进计划。

核心判断

不照搬 Claude Code 的模块结构——两者定位不同(CLI 产品 vs 嵌入式 SDK),Open Agent 当前的抽象更干净。但以下模块值得学习。

可借鉴模块

1. Context 压缩 / Token Budget

参考: services/compact/

Claude Code 的分级压缩策略:

  • microCompact — 轻量压缩(截断大型 tool result)
  • autoCompact — 自动触发阈值检测
  • sessionMemoryCompact — LLM 生成上下文摘要
  • grouping — 消息分组,决定哪些可裁哪些必须保留

Open Agent TODO: 实现 TokenBudget + ContextBuilder(已在 ARCHITECTURE.md Phase 2 规划)

2. Tool 并发执行

参考: services/tools/toolOrchestration.ts

核心思路:partitionToolCalls 将工具调用分为并发安全和非安全两组

  • 只读工具(FileRead、Grep、Search)→ 并发执行
  • 写入工具(FileWrite、Bash)→ 串行执行

Open Agent TODO: AgentLoop 当前全串行,加 isConcurrencySafe 标记 + 并发分区

3. 权限规则表

参考: types/permissions.ts, Tool.ts 中的 ToolPermissionContext

Claude Code 的声明式权限:

  • alwaysAllow / alwaysDeny / alwaysAsk 规则匹配
  • permissionMode: default / plan / bypass
  • 基于规则而非每次询问用户

Open Agent TODO: 扩展 onToolApproval 为声明式规则系统 ToolPermissionPolicy

4. 多 Agent 子任务

参考: tools/AgentTool/, tools/TaskCreate|Get|Stop/, coordinator/

  • 主 agent fork 子 agent 处理独立子任务
  • 子 agent 有独立上下文和工具权限
  • Agent Teams 协同模式

Open Agent TODO: 后续多 agent 场景时设计

保持不变的优势

以下设计 Open Agent 做得比 Claude Code 更好,不需要改:

  • ChatProvider 统一接口抽象(Claude Code 直接绑 Anthropic SDK)
  • sealed class 事件模型(Dart 3 模式匹配 > TypeScript union)
  • ✅ 三包分层 core/ui/umbrella(纯 Dart 核心零 Flutter 依赖)
  • ✅ 不绑状态管理(Stream 优先,用户自选 Bloc/Riverpod)

实施优先级

优先级 模块 Phase
P0 TokenBudget + ContextBuilder Phase 2
P1 Tool 并发执行 Phase 2
P1 AnthropicProvider Phase 2
P2 权限规则表 Phase 2
P3 多 Agent 子任务 Phase 4+

参考资料

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureArchitecture design decisionsenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions