chore: initialize qiming workspace repository

This commit is contained in:
Codex
2026-05-29 14:22:48 +08:00
commit bfd67a0f2c
10750 changed files with 1885711 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
# Session Reuse Fix - 2026-03-24
## Problem
连续会话(同一个 project每次消息都需要重新创建 engine导致约 3-7 秒的额外延迟。
## Root Cause
`detectConfigChange` 比较环境变量时,`OPENCODE_LOG_DIR` 的值不一致:
- `engineConfigs` 存储的是**本地化后的路径**: `/Users/apple/.qimingclaw/logs`
- `resolvedEnv` 来自请求,包含**容器路径**: `/app/container-logs`
即使两个路径在功能上等价(容器路径会被本地化),字符串比较仍然返回不同,导致 `envChanged: true`,触发 engine 重建。
## Solution
`detectConfigChange` 方法中添加与 `ensureEngineForRequest` 相同的本地化逻辑:
```typescript
// unifiedAgent.ts lines 927-938
let normalizedResolvedEnv = resolvedEnv;
if (
resolvedEnv?.OPENCODE_LOG_DIR &&
!fs.existsSync(resolvedEnv.OPENCODE_LOG_DIR)
) {
normalizedResolvedEnv = {
...resolvedEnv,
OPENCODE_LOG_DIR: path.join(os.homedir(), APP_DATA_DIR_NAME, "logs"),
};
}
```
然后用 `normalizedResolvedEnv` 进行比较,而非原始的 `resolvedEnv`
## Performance Impact
### Before Fix
| Request | Engine Time | Path |
|---------|-------------|------|
| 1st | 3797ms | fullPath (create) |
| 2nd | 3063ms | fullPath (recreate - config changed) |
| 3rd | 6028ms | fullPath (recreate - config changed) |
### After Fix
| Request | Engine Time | Path |
|---------|-------------|------|
| 1st | 2894ms | fullPath (create) |
| 2nd | 5ms | fastPath (reuse) |
| 3rd+ | ~5ms | fastPath (reuse) |
**Improvement**: 连续消息的 engine 准备时间从 3-7 秒降至 ~5ms99%+ 减少)
## Files Changed
- `src/main/services/engines/unifiedAgent.ts`: 添加 `OPENCODE_LOG_DIR` 本地化到 `detectConfigChange` 方法
## Test Verification
1. 发送第一条消息到新 project → 观察 `engine.getOrCreate: ~3000ms`
2. 发送第二条消息到同一 project → 观察 `engine.ensure: ~5ms`
3. 日志应显示 `detectConfigChange: unchanged` 或无 CHANGED 日志
## Related
- `ensureEngineForRequest` 中的本地化逻辑 (lines 777-787)
- `detectConfigChange` 方法 (lines 912-1030)