diff --git a/docs/workspace/context-user-independence-analysis.md b/docs/workspace/context-user-independence-analysis.md new file mode 100644 index 00000000..60a72bc2 --- /dev/null +++ b/docs/workspace/context-user-independence-analysis.md @@ -0,0 +1,344 @@ +# ContextUserWorkspace 独立性深度分析 + +## 📋 分析目标 + +检查 ContextUserWorkspace 的 composables 是否足够独立,是否有逻辑和其他模式的 composables 复用或在 App.vue 里面。 + +## 🔍 当前架构分析 + +### 1. ContextUserWorkspace 的依赖关系 + +**组件内部使用的 Composable**: +```typescript +import { useTemporaryVariables } from "../../composables/variable/useTemporaryVariables" + +const tempVarsManager = useTemporaryVariables() +``` + +**通过 App.vue 依赖的逻辑**: +```typescript +// App.vue 中 +const optimizer = usePromptOptimizer(...) // ❌ 共享 +const promptTester = usePromptTester(...) // ❌ 共享 + +// ContextUserWorkspace 通过 props 和 events 使用 + +``` + +### 2. 基础模式的依赖关系 + +**基础模式同样依赖**: +```typescript +// App.vue 中 + +``` + +### 3. ContextSystemWorkspace 的独立性(对比) + +**完全独立的逻辑**: +```typescript +// ContextSystemWorkspace.vue 内部 +const conversationOptimization = useConversationOptimization(...) // ✅ 独立 +const conversationTester = useConversationTester(...) // ✅ 独立 + +const handleOptimizeClick = () => { + conversationOptimization.optimizeMessage() // ✅ 内部处理 +} + +const handleTestWithVariables = async () => { + await conversationTester.executeTest(...) // ✅ 内部处理 +} +``` + +--- + +## ⚠️ 发现的问题 + +### 问题 1: 不对称的架构设计 ❌ + +| 功能 | 基础模式 | ContextUser | ContextSystem | +|------|---------|------------|---------------| +| 优化逻辑 | App.vue (optimizer) | App.vue (optimizer) | 组件内部 (conversationOptimization) ✅ | +| 测试逻辑 | App.vue (promptTester) | App.vue (promptTester) | 组件内部 (conversationTester) ✅ | +| 状态管理 | App.vue | App.vue | 组件内部 ✅ | + +**问题**: ContextSystem 有独立的 composables,而 ContextUser 和基础模式共享 App.vue 的逻辑。 + +--- + +### 问题 2: 基础模式和 ContextUser 复用逻辑 ❌ + +**共享的 Composables**: +```typescript +// App.vue +const optimizer = usePromptOptimizer(...) // 基础模式 + ContextUser 共享 +const promptTester = usePromptTester(...) // 基础模式 + ContextUser 共享 +``` + +**共享的处理函数**: +```typescript +// 基础模式和 context-user 模式的测试处理函数 +const handleTestAreaTest = async (testVariables?: Record) => { + // 调用基础测试器(只用于基础模式和 context-user) + await promptTester.executeTest( + optimizer.prompt, + optimizer.optimizedPrompt, + testContent.value, + isCompareMode.value, + testVariables + ) +} +``` + +**问题**: +- ContextUser 没有自己独立的优化和测试逻辑 +- 与基础模式共享相同的 composables +- 不符合"ContextUser 应该独立"的预期 + +--- + +### 问题 3: usePromptTester 的定位混淆 ❌ + +**usePromptTester 的文档描述**: +```typescript +/** + * 基础模式提示词测试 Composable + * + * 专门处理基础模式的提示词测试,支持: + * - System prompt 测试 + * - User prompt 测试 + * - 变量注入 + * - 对比模式(原始 vs 优化) + */ +``` + +**实际使用**: +- ✅ 基础模式使用(符合定位) +- ❌ ContextUser 模式也使用(不符合定位) + +**问题**: usePromptTester 声称是"基础模式专用",却被 ContextUser 复用。 + +--- + +## 🎯 应该的架构 + +### 理想的独立架构 + +``` +App.vue +├── 基础模式 (Basic Mode) +│ ├── usePromptOptimizer (全局) +│ └── usePromptTester (全局) +│ +├── ContextSystemWorkspace (独立) ✅ +│ ├── useConversationOptimization +│ └── useConversationTester +│ +└── ContextUserWorkspace (应该独立) ❌ + ├── useContextUserOptimization (新建,独立) + └── useContextUserTester (新建,独立) +``` + +### 建议的改进方案 + +#### 方案 1: 创建独立的 ContextUser Composables ⭐⭐⭐⭐⭐ + +**新增 Composables**: +```typescript +// packages/ui/src/composables/prompt/useContextUserOptimization.ts +export function useContextUserOptimization( + services: Ref, + optimizationMode: Ref, + selectedOptimizeModel: Ref, + selectedTemplate: Ref @@ -1028,7 +940,6 @@ import { useContextManagement, useAggregatedVariables, useContextEditorUIState, - useConversationOptimization, // i18n functions initializeI18nWithStorage, @@ -1087,7 +998,7 @@ watch( { immediate: true }, ); -// 4. 向子组件提供服务 +// 4. 向子组件提供服务(部分 provide 移至声明后) provide("services", services); // 5. 控制主UI渲染的标志 @@ -1331,72 +1242,19 @@ const handleContextEditorStateUpdate = contextManagement.handleContextEditorStateUpdate; const handleContextModeChange = contextManagement.handleContextModeChange; -// 🆕 多轮对话消息优化管理 -const selectedOptimizationTemplate = computed