69 lines
3.2 KiB
Markdown
69 lines
3.2 KiB
Markdown
|
|
# Pipeline Restructuring Plan
|
||
|
|
|
||
|
|
## Goal
|
||
|
|
|
||
|
|
Split `agent/pipeline.go` (~1400 lines) into multiple logical files, organizing code by responsibility.
|
||
|
|
|
||
|
|
## Final File Structure
|
||
|
|
|
||
|
|
```
|
||
|
|
pkg/agent/
|
||
|
|
├── pipeline.go # Pipeline struct + NewPipeline (~39 lines)
|
||
|
|
├── pipeline_setup.go # SetupTurn method (~115 lines)
|
||
|
|
├── pipeline_llm.go # CallLLM method (~519 lines)
|
||
|
|
├── pipeline_execute.go # ExecuteTools method (~693 lines)
|
||
|
|
└── pipeline_finalize.go # Finalize method (~78 lines)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Actual Line Counts
|
||
|
|
|
||
|
|
| File | Lines |
|
||
|
|
|------|-------|
|
||
|
|
| `pipeline.go` | 39 |
|
||
|
|
| `pipeline_setup.go` | 115 |
|
||
|
|
| `pipeline_llm.go` | 519 |
|
||
|
|
| `pipeline_execute.go` | 693 |
|
||
|
|
| `pipeline_finalize.go` | 78 |
|
||
|
|
| **Total** | **1444** |
|
||
|
|
|
||
|
|
## Responsibility Matrix
|
||
|
|
|
||
|
|
| File | Method | Responsibility |
|
||
|
|
|------|--------|----------------|
|
||
|
|
| `pipeline.go` | `Pipeline` struct, `NewPipeline()` | Pipeline dependency container |
|
||
|
|
| `pipeline_setup.go` | `SetupTurn()` | Turn initialization: history assembly, message building, candidate selection |
|
||
|
|
| `pipeline_llm.go` | `CallLLM()` | LLM call: PreLLM hooks, fallback, retry, AfterLLM hooks |
|
||
|
|
| `pipeline_execute.go` | `ExecuteTools()` | Tool execution: BeforeTool/ApproveTool/AfterTool hooks, media sending, steering handling |
|
||
|
|
| `pipeline_finalize.go` | `Finalize()` | Turn finalization: session save, compression, status setting |
|
||
|
|
|
||
|
|
## Relationship Between Pipeline and 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() │
|
||
|
|
│ │ } │
|
||
|
|
│ └─────────────────────────────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
└── Publish response (agent_outbound.go)
|
||
|
|
```
|
||
|
|
|
||
|
|
## Verification Results
|
||
|
|
|
||
|
|
- ✅ `go build ./pkg/agent/...` - Pass
|
||
|
|
- ✅ `go vet ./pkg/agent/...` - No warnings
|
||
|
|
- ✅ `go test ./pkg/agent/... -skip "TestSeahorse|TestGlobalSkillFileContentChange"` - Pass
|