Files
picoclaw/docs/architecture/agent-refactor/pipeline-restructuring-plan.zh.md
T
sky5454 329e68e017 refactor(agent): Agent Looper refactor phase2, restructure pipeline and rename loop files to agent (#2585)
* refactor(agent): introduce interfaces for MessageBus and ChannelManager

Phase 2 of loop.go refactor — dependency inversion using adapter pattern.

- Add interfaces.MessageBus and interfaces.ChannelManager interfaces
- Create adapters/messagebus.go wrapping *bus.MessageBus
- Create adapters/channelmanager.go wrapping *channels.Manager
- Update AgentLoop to use interfaces instead of concrete types
- Update registerSharedTools to accept interfaces.MessageBus

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor(agent): restructure pipeline and rename loop files

Pipeline refactoring:
- Split pipeline.go (1400 lines) into focused files:
  - pipeline_setup.go (~115 lines): SetupTurn method
  - pipeline_llm.go (~519 lines): CallLLM method
  - pipeline_execute.go (~693 lines): ExecuteTools method
  - pipeline_finalize.go (~78 lines): Finalize method
- Pipeline struct and NewPipeline remain in pipeline.go (~39 lines)

Agent file renaming:
- Rename loop_*.go to agent_*.go for consistent naming:
  - loop.go -> agent.go, loop_message.go -> agent_message.go, etc.
- Merge turn.go + turn_exec.go into turn_state.go
- Rename loop_turn.go -> turn_coord.go

Documentation:
- Update docs/pipeline-restructuring-plan.md
- Add docs/agent-rename-plan.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(agent): code format  fixed

* refactor(agent): code test file added/renamed

* docs(agent): update agent refactor docs

* fix(agent): fix agent hardAbortX

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-21 10:55:50 +08:00

3.0 KiB

Pipeline 重构文档

目标

agent/pipeline.go (1400行) 拆分为多个逻辑文件,代码按职责组织。

最终文件结构

pkg/agent/
├── pipeline.go           # Pipeline struct + NewPipeline (~39行)
├── pipeline_setup.go   # SetupTurn 方法 (~115行)
├── pipeline_llm.go     # CallLLM 方法 (~519行)
├── pipeline_execute.go  # ExecuteTools 方法 (~693行)
└── pipeline_finalize.go # Finalize 方法 (~78行)

实际行数

文件 行数
pipeline.go 39
pipeline_setup.go 115
pipeline_llm.go 519
pipeline_execute.go 693
pipeline_finalize.go 78
总计 1444

职责说明

文件 方法 职责
pipeline.go Pipeline struct, NewPipeline() Pipeline 依赖容器
pipeline_setup.go SetupTurn() Turn 初始化:历史组装、消息构建、候选人选择
pipeline_llm.go CallLLM() LLM 调用:PreLLM hook、fallback、重试、AfterLLM hook
pipeline_execute.go ExecuteTools() 工具执行:BeforeTool/ApproveTool/AfterTool hook、媒体发送、steering 处理
pipeline_finalize.go Finalize() Turn 终结:会话保存、压缩、状态设置

Pipeline 与 Turn Coordinator 的关系

AgentLoop (agent.go)
    │
    ├── runAgentLoop() ──────────────────┐
    │                                    │
    │    ┌───────────────────────────────▼───────────────────────────────┐
    │    │                    Turn Coordinator (turn_coord.go)              │
    │    │                                                           │
    │    │   runTurn() {                                             │
    │    │       exec = pipeline.SetupTurn()                           │
    │    │       loop {                                               │
    │    │           ctrl = pipeline.CallLLM()  ──► Pipeline (pipeline_*.go) │
    │    │           if ctrl == ToolLoop {                             │
    │    │               toolCtrl = pipeline.ExecuteTools()             │
    │    │           }                                                 │
    │    │       }                                                    │
    │    │       return pipeline.Finalize()                            │
    │    │   }                                                        │
    │    └─────────────────────────────────────────────────────────────┘
    │
    └── 发布响应 (agent_outbound.go)

验证结果

  • go build ./pkg/agent/... - 通过
  • go vet ./pkg/agent/... - 无警告
  • go test ./pkg/agent/... -skip "TestSeahorse|TestGlobalSkillFileContentChange" - 通过