dsh 的 LLM 能力遵循能力接缝(Capability Seam)模式:Service Definition Service Provider Consumer 三角色分离。
预览
源码
graph TB
subgraph "Service Definition"
A["llm/llm<br/>ctx.llm: LlmRuntime"]
end
subgraph "Service Providers"
B["llm/llm-deepseek<br/>DeepSeekAdapter"]
C["llm/llm-openai<br/>(未来)"]
D["llm/llm-anthropic<br/>(未来)"]
end
subgraph "Consumer"
E["core/agent-loop<br/>ReactLoopAgent"]
end
A --> B
A --> C
A --> D
B --> E
C --> E
D --> E
graph LR
A[StreamChunk*] --> B[BlockAssembler]
B --> C[ContentBlock]
B --> D[ToolCallBlock]
B --> E[ReasoningBlock]
C --> F[完整 AssistantMessage]
D --> F
E --> F
graph TB
A[请求失败] --> B{错误类型}
B -->|"AUTH"| C[不重试,报告错误]
B -->|"RATE_LIMIT"| D[按 providerRetryAfterMs 延迟重试]
B -->|"NETWORK"| E[指数退避重试]
B -->|"STREAM_TIMEOUT"| F[重试或放弃]
D --> G{重试次数 < maxRetries?}
E --> G
F --> G
G -->|"是"| H[重试请求]
G -->|"否"| I[放弃,报告错误]
5.7 上下文构建
5.7.1 System Prompt 组装
预览
源码
graph TB
A["core/system-prompt<br/>ctx.systemPrompt"] --> B[PromptSection*]
B --> C["joinContextSections()"]
C --> D["renderPrompt()"]
D --> E[完整 System Prompt]
F["core/tools<br/>ctx.tools"] --> G[ToolSchema*]
G --> D
sequenceDiagram
participant Agent as Agent Loop
participant LLM as LlmRuntime
participant Adapter as DeepSeek Adapter
participant API as DeepSeek API
Agent->>LLM: discoverModels()
LLM->>Adapter: discoverModels()
Adapter->>API: GET /models
API-->>Adapter: ModelList
Adapter-->>LLM: LlmDiscoveredModel*
LLM-->>Agent: ModelInfo*