- Complete architectural overhaul of useUnifiedCompletion hook - Unified state management: 8 separate states → single CompletionState interface - Simplified core logic: getWordAtCursor 194 lines → 42 lines (78% reduction) - Fixed infinite React update loops with ref-based input tracking - Smart triggering mechanism replacing aggressive auto-completion - Integrated @agent and @file mention system with system reminders - Added comprehensive agent loading and mention processing - Enhanced Tab/Arrow/Enter key handling with clean event management - Maintained 100% functional compatibility across all completion types Key improvements: • File path completion (relative, absolute, ~expansion, @references) • Slash command completion (/help, /model, etc.) • Agent completion (@agent-xxx with intelligent descriptions) • System command completion (PATH scanning with fallback) • Terminal-style Tab cycling, Enter confirmation, Escape cancellation • Preview mode with boundary calculation • History navigation compatibility • Empty directory handling with user feedback Architecture: Event-driven @mention detection → system reminder injection → LLM tool usage Performance: Eliminated 7-layer nested conditionals, reduced state synchronization issues Reliability: Fixed maximum update depth exceeded warnings, stable state management
44 lines
942 B
Markdown
44 lines
942 B
Markdown
# Clean Architecture Solution
|
||
|
||
## 原则:Keep It Simple
|
||
|
||
### ✅ 正确的设计
|
||
|
||
```typescript
|
||
// messages.tsx - 保持简洁
|
||
if (input.includes('@')) {
|
||
// 只处理文件引用
|
||
processedInput = await resolveFileReferences(processedInput)
|
||
}
|
||
```
|
||
|
||
### ❌ 错误的设计
|
||
|
||
- 在消息层检测 @agent
|
||
- 注入 system-reminder
|
||
- 修改用户输入
|
||
- 复杂的异步处理
|
||
|
||
## Agent 功能的正确实现
|
||
|
||
Agent 功能已经通过 Task 工具正确实现:
|
||
|
||
```typescript
|
||
// 用户可以直接使用
|
||
Task tool with subagent_type="dao-qi-harmony-designer"
|
||
```
|
||
|
||
不需要 @agent 语法糖,因为:
|
||
1. 增加了不必要的复杂性
|
||
2. 破坏了消息流的纯净性
|
||
3. 原始 Kode 没有这个功能
|
||
|
||
## 架构原则
|
||
|
||
1. **消息层**:只负责文件内容嵌入
|
||
2. **工具层**:处理 agent 配置
|
||
3. **模型层**:自然选择合适的工具
|
||
|
||
## 结论
|
||
|
||
移除所有 @agent 相关的复杂逻辑,保持原始的简洁设计。 |