cline:internal workflow - chunhualiao/public-docs GitHub Wiki
How Cline Processes a User Prompt Internally
Based on the codebase analysis, here's how Cline processes a user prompt internally:
Initial Prompt Reception
- User input is received through VS Code's webview interface
- The
WebviewProvider
(src/core/webview/index.ts
) handles the initial interaction
src/core/context-management/ContextManager.ts
)
Context Management (// Gathers context including:
- Current workspace state
- Open files and editor state
- Previous conversation history
- Active .clinerules configuration
- Current task state
src/core/task/index.ts
)
Task Processing (The task processor determines what actions to take based on:
- User prompt content
- Current context
- Available tools
- Previous task state
Tool Selection Logic
Cline decides which tools to use based on:
a) Code Operations
- If prompt mentions code modifications → VS Code Workspace API
- If requesting file creation → File System Operations
- If viewing code → File reading operations
b) Terminal Operations
- If requiring command execution → Terminal API
- If running build/test commands → Terminal with appropriate CWD
- If starting servers → Terminal with async handling
c) Browser Operations
- If web server is running → Browser preview tool
- If requiring web content → Web content fetching tools
- If documentation needed → Documentation viewer
d) LLM Interaction
- For understanding user intent
- For generating code or text
- For analyzing results
- For planning next steps
Execution Flow
graph TD
A[User Prompt] --> B[Context Collection]
B --> C[Task Analysis]
C --> D[Tool Selection]
D --> E1[Code Tools]
D --> E2[Terminal Tools]
D --> E3[Browser Tools]
D --> E4[LLM Processing]
E1 --> F[Result Integration]
E2 --> F
E3 --> F
E4 --> F
F --> G[Response Generation]
G --> H[UI Update]
Safety Checks
- Validates file operations against
.clineignore
- Requires approval for sensitive operations
- Maintains checkpoints for reversibility
- Validates tool inputs
Response Generation
- Processes tool outputs
- Formats response for user
- Updates UI state
- Maintains conversation context