432 lines
9.3 KiB
Markdown
432 lines
9.3 KiB
Markdown
# Code Efficiency & Sub-Agents Guide - Phase 3
|
|
|
|
**Purpose:** Optimize code efficiency, reduce API costs, and leverage OpenHands sub-agents for Phase 3 autonomous build testing.
|
|
|
|
---
|
|
|
|
## 🤖 OpenHands Sub-Agents
|
|
|
|
### What Are Sub-Agents?
|
|
Sub-agents are specialized AI agents within OpenHands that handle specific tasks:
|
|
- **File Editor** - Create, edit, view files
|
|
- **Bash Runner** - Execute shell commands
|
|
- **Search Agent** - Find files, code patterns
|
|
- **Code Analyzer** - Review code structure
|
|
|
|
### Benefits for Phase 3
|
|
- ✅ **Targeted Actions** - Each sub-agent is optimized for specific tasks
|
|
- ✅ **Cost Efficiency** - More focused tasks = fewer tokens
|
|
- ✅ **Faster Execution** - Specialized agents work quicker
|
|
- ✅ **Better Results** - Right tool for the right job
|
|
|
|
### Using Sub-Agents in Phase 3
|
|
|
|
#### 1. File Creation & Editing
|
|
```
|
|
Task: "Create a package.json for Node.js project"
|
|
→ Uses: File Editor sub-agent
|
|
Result: Optimized package.json with correct dependencies
|
|
```
|
|
|
|
#### 2. Build Script Execution
|
|
```
|
|
Task: "Run npm install && npm run build"
|
|
→ Uses: Bash Runner sub-agent
|
|
Result: Executed commands with exit codes
|
|
```
|
|
|
|
#### 3. Code Review & Analysis
|
|
```
|
|
Task: "Analyze build errors in /workspace/project"
|
|
→ Uses: Code Analyzer sub-agent
|
|
Result: Identified syntax errors, missing dependencies
|
|
```
|
|
|
|
#### 4. Error Diagnosis
|
|
```
|
|
Task: "Find all TypeScript errors in the project"
|
|
→ Uses: Search Agent + Code Analyzer
|
|
Result: List of files with errors + solutions
|
|
```
|
|
|
|
---
|
|
|
|
## 💰 Reducing API Usage Costs
|
|
|
|
### 1. Efficient Task Formulation
|
|
|
|
**❌ Bad (High Cost):**
|
|
```
|
|
"Build the project, test it, fix any errors, optimize performance,
|
|
and make sure everything works perfectly"
|
|
```
|
|
|
|
**✅ Good (Low Cost):**
|
|
```
|
|
Task: "Build project at /workspace/my-project"
|
|
Follow-up: "Fix npm install errors"
|
|
Follow-up: "Resolve TypeScript compilation errors"
|
|
```
|
|
|
|
**Why:** Smaller, specific tasks = fewer tokens = lower cost
|
|
|
|
### 2. Use Structured Commands
|
|
|
|
**✅ Instead of:**
|
|
```
|
|
"Please look at my code and see if there are any issues"
|
|
```
|
|
|
|
**✅ Use:**
|
|
```
|
|
Task: "Search for console.log statements in /workspace/project/src"
|
|
```
|
|
|
|
### 3. Leverage File Editor for Batch Operations
|
|
|
|
**✅ Efficient Pattern:**
|
|
```
|
|
1. Task: "Create /workspace/project/test.js with basic tests"
|
|
2. Task: "Edit /workspace/project/index.js to import test.js"
|
|
3. Task: "Run npm test"
|
|
```
|
|
|
|
### 4. Cache & Reuse Context
|
|
|
|
**Strategy:**
|
|
- Use same workspace for multiple builds
|
|
- Keep dependencies installed
|
|
- Reuse configuration files
|
|
|
|
---
|
|
|
|
## ⏱️ Reducing Execution Time
|
|
|
|
### 1. Parallel Sub-Agent Execution
|
|
OpenHands can run multiple sub-agents concurrently:
|
|
```
|
|
Task: [
|
|
"Install npm dependencies",
|
|
"Check TypeScript configuration",
|
|
"Verify package.json scripts"
|
|
]
|
|
→ Runs in parallel = 3x faster
|
|
```
|
|
|
|
### 2. Incremental Builds
|
|
**Instead of full rebuild:**
|
|
```
|
|
Task: "Build only changed files"
|
|
→ Checks git diff
|
|
→ Rebuilds modified components
|
|
→ Saves time on large projects
|
|
```
|
|
|
|
### 3. Smart Dependency Caching
|
|
```bash
|
|
# Cache node_modules
|
|
Task: "Copy cached node_modules from /workspace/cache to /workspace/project"
|
|
|
|
# Skip npm install if cached
|
|
Task: "Check if node_modules exists, if yes skip npm install"
|
|
```
|
|
|
|
### 4. Pre-configured Build Environments
|
|
```
|
|
Task: "Use pre-configured Docker build environment"
|
|
→ Skip environment setup
|
|
→ Start build immediately
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 Best Practices for Phase 3
|
|
|
|
### 1. Build Task Optimization
|
|
|
|
**Template for Build Tasks:**
|
|
```
|
|
Task: "Build project: /workspace/{project_name}
|
|
Commands:
|
|
1. cd /workspace/{project_name}
|
|
2. npm install # Only if node_modules missing
|
|
3. npm run build # Or build command from package.json
|
|
4. Report exit code and any errors"
|
|
```
|
|
|
|
### 2. Error Handling Pattern
|
|
|
|
**Standard Error Response:**
|
|
```json
|
|
{
|
|
"success": false,
|
|
"exit_code": 1,
|
|
"errors": [
|
|
{
|
|
"file": "src/index.ts",
|
|
"line": 15,
|
|
"error": "Type 'string' is not assignable to type 'number'"
|
|
}
|
|
],
|
|
"suggestions": [
|
|
"Fix type annotation on line 15",
|
|
"Convert string to number or update type definition"
|
|
]
|
|
}
|
|
```
|
|
|
|
### 3. Retry-Friendly Tasks
|
|
|
|
**Each task should be:**
|
|
- ✅ Idempotent - Can run multiple times safely
|
|
- ✅ Self-contained - Includes context
|
|
- ✅ Actionable - Clear next steps
|
|
- ✅ Specific - Not vague or multi-part
|
|
|
|
**❌ Avoid:**
|
|
```
|
|
"Fix the build issues"
|
|
```
|
|
|
|
**✅ Prefer:**
|
|
```
|
|
Task: "Fix TypeScript error: Type 'string' is not assignable to type 'number' in src/index.ts:15
|
|
Solution: Add type conversion: const num = parseInt(str)"
|
|
```
|
|
|
|
### 4. Progress Tracking
|
|
|
|
**For Long Builds:**
|
|
```
|
|
Progress: "Building project... (1/4 steps: npm install)"
|
|
Progress: "Building project... (2/4 steps: TypeScript compilation)"
|
|
Progress: "Building project... (3/4 steps: Webpack bundling)"
|
|
Progress: "Build completed successfully"
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 Cost Optimization Strategies
|
|
|
|
### 1. Token Budget Management
|
|
|
|
**Per Retry Budget:**
|
|
- **1st Attempt:** 500 tokens (basic task)
|
|
- **2nd Attempt:** 750 tokens (with error context)
|
|
- **3rd Attempt:** 1000 tokens (detailed debugging)
|
|
|
|
**Implementation:**
|
|
```javascript
|
|
// In n8n Code node
|
|
const retryCount = $workflow.staticData.retry_count || 0;
|
|
const tokenLimit = 500 + (retryCount * 250); // 500, 750, 1000
|
|
|
|
return {
|
|
task: `Build project with ${tokenLimit} token budget`,
|
|
retry_count: retryCount
|
|
};
|
|
```
|
|
|
|
### 2. Smart Error Collection
|
|
|
|
**Collect Only Relevant Errors:**
|
|
```javascript
|
|
// Extract only build-blocking errors
|
|
const errors = buildOutput.stderr
|
|
.split('\n')
|
|
.filter(line => line.includes('error'))
|
|
.slice(0, 5) // Limit to 5 errors
|
|
.join('\n');
|
|
```
|
|
|
|
### 3. Cached Dependencies
|
|
|
|
**Reduce Install Time:**
|
|
```bash
|
|
# Check cache first
|
|
if [ -d "/workspace/cache/node_modules" ]; then
|
|
cp -r /workspace/cache/node_modules /workspace/project/
|
|
echo "Used cached dependencies"
|
|
else
|
|
npm install
|
|
cp -r node_modules /workspace/cache/
|
|
fi
|
|
```
|
|
|
|
### 4. Selective Testing
|
|
|
|
**For Large Projects:**
|
|
```
|
|
Task: "Run tests only for modified files (git diff --name-only)"
|
|
→ Tests: {list of changed files}
|
|
→ Time saved: 90%
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Sub-Agent Usage Examples
|
|
|
|
### Example 1: Quick Build Test
|
|
```
|
|
Task: "Test build in /workspace/project
|
|
Steps:
|
|
1. Check if package.json exists
|
|
2. Run npm install (if needed)
|
|
3. Run npm run build
|
|
4. Verify build/ directory created
|
|
5. Report: success/failure + exit code"
|
|
```
|
|
|
|
### Example 2: Error Diagnosis
|
|
```
|
|
Task: "Diagnose build failure in /workspace/project
|
|
Steps:
|
|
1. Read last 50 lines of build output
|
|
2. Identify error type (TS, Webpack, Runtime)
|
|
3. Find source file causing error
|
|
4. Suggest specific fix
|
|
5. Return actionable error report"
|
|
```
|
|
|
|
### Example 3: Code Optimization
|
|
```
|
|
Task: "Optimize build performance in /workspace/project
|
|
Steps:
|
|
1. Check bundle size (webpack-bundle-analyzer)
|
|
2. Identify large dependencies
|
|
3. Suggest tree-shaking improvements
|
|
4. Propose code splitting strategy"
|
|
```
|
|
|
|
---
|
|
|
|
## 📈 Phase 3 Implementation Tips
|
|
|
|
### 1. Task Granularity
|
|
|
|
**Fine-grained tasks (Recommended):**
|
|
```javascript
|
|
const tasks = [
|
|
"Install dependencies",
|
|
"Compile TypeScript",
|
|
"Bundle with Webpack",
|
|
"Run unit tests",
|
|
"Generate build report"
|
|
];
|
|
```
|
|
|
|
**Instead of one large task:**
|
|
```javascript
|
|
const task = "Build and test the entire project"
|
|
```
|
|
|
|
### 2. State Persistence
|
|
|
|
**Use n8n staticData:**
|
|
```javascript
|
|
$workflow.staticData = $workflow.staticData || {};
|
|
$workflow.staticData.build_state = {
|
|
stage: "installing",
|
|
completed_steps: [],
|
|
errors: []
|
|
};
|
|
```
|
|
|
|
### 3. Resource Limits
|
|
|
|
**Per Task Limits:**
|
|
- **Timeout:** 300 seconds max
|
|
- **Token Budget:** 1000 tokens max
|
|
- **Retries:** 3 attempts max
|
|
- **Concurrency:** 1 task at a time
|
|
|
|
### 4. Monitoring
|
|
|
|
**Track Performance:**
|
|
```javascript
|
|
const startTime = Date.now();
|
|
await runBuildTask();
|
|
const duration = Date.now() - startTime;
|
|
|
|
return {
|
|
success: true,
|
|
duration_ms: duration,
|
|
cost_estimate: calculateCost(tokens_used)
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Phase 3 Success Metrics
|
|
|
|
### Performance Targets
|
|
- **Build Time:** < 60 seconds (simple project)
|
|
- **Error Detection:** < 10 seconds
|
|
- **Retry Success Rate:** > 70%
|
|
- **API Cost:** < $0.10 per build
|
|
- **Token Usage:** < 3000 tokens per workflow
|
|
|
|
### Quality Targets
|
|
- **Error Accuracy:** 95%+ (correctly identify real issues)
|
|
- **False Positives:** < 5%
|
|
- **Build Success Rate:** 90%+ (after retries)
|
|
- **Documentation:** All errors documented with solutions
|
|
|
|
---
|
|
|
|
## 🔍 Troubleshooting Sub-Agents
|
|
|
|
### Common Issues & Solutions
|
|
|
|
**Issue:** Sub-agent timeout
|
|
**Solution:** Break task into smaller pieces
|
|
|
|
**Issue:** Token limit exceeded
|
|
**Solution:** Reduce task scope, use more specific commands
|
|
|
|
**Issue:** Build hangs
|
|
**Solution:** Add timeout wrapper, kill long-running processes
|
|
|
|
**Issue:** Errors not captured
|
|
**Solution:** Use structured error collection, check exit codes
|
|
|
|
---
|
|
|
|
## 📚 Reference Commands
|
|
|
|
### Testing Sub-Agent Efficiency
|
|
```bash
|
|
# Test single sub-agent
|
|
Task: "Create file /workspace/test.txt with 'Hello'"
|
|
|
|
# Test parallel execution
|
|
Task: [
|
|
"Create /workspace/file1.txt",
|
|
"Create /workspace/file2.txt",
|
|
"List /workspace directory"
|
|
]
|
|
```
|
|
|
|
### Monitoring API Usage
|
|
```javascript
|
|
// Track tokens per task
|
|
const tokenCount = estimateTokens(task);
|
|
if (tokenCount > 1000) {
|
|
console.warn(`High token usage: ${tokenCount}`);
|
|
}
|
|
```
|
|
|
|
### Caching Strategy
|
|
```bash
|
|
# Cache directory structure
|
|
/cache/
|
|
/node_modules/
|
|
/dist/
|
|
/test-results/
|
|
```
|
|
|
|
---
|
|
|
|
*Code Efficiency Guide - Last Updated: 2025-12-02*
|
|
*Optimized for Phase 3 Autonomous Build Testing*
|