thzxx
|
f3a0e751ba
|
feat: v0.3.18 上下文压缩机制修复 + MCP 工具就绪竞态修复 + 记忆系统加固
【上下文压缩机制修复】
- engine.ts 新增 lastRealInputTokens 记录 LLM 返回的真实输入 token,压缩判断取 max(估算值, 真实值),避免估算偏低导致不压缩但 API 413
- 修复 effectiveContextWindow 缺少默认值导致 compressionThreshold 变 NaN、压缩永不触发的 bug(添加 ?? 128_000 兜底)
- compressMessages 保留区从固定 10 条改为按 token 预算动态截断(50% 上下文窗口)
- 二次截断 charsPerToken 从 2 调整为 1.0,与 CJK_TOKEN_RATIO 一致
- 压缩后重置 lastRealInputTokens,避免跨迭代污染
- 每个 run 开始时重置 lastRealInputTokens
【前端 Token 显示修复】
- 区分"累计消耗"和"上下文占用"语义——之前 totalTokens(累计) / contextWindow(单次窗口) 得出无意义百分比
- TokenUsage.tsx 上下文占用改用 lastInputTokens,新增压缩节省行(绿色,仅当 > 0 时显示)
- agent-store.ts TokenUsage 接口新增 lastInputTokens 和 lastCompressedSaved 字段,4 处初始值统一更新
- useAgentStream.ts usage 事件 lastInputTokens 替换不累加,compressed 事件通过 streamEvent 接收 savedTokens
- handlers.ts onCompressed 同时发 toast + streamEvent,解决"压缩触发但前端 token 显示不降"缺陷
- 旧数据兼容使用 ?? 0,保证历史会话加载不崩溃
【MCP 工具就绪竞态修复】
- 修复输入框永久显示"工具加载中"的竞态条件:MCP initialize 几乎立即 resolve(connectServer 不 await),tools:ready 事件在前端监听器注册前已发出
- main.ts 维护 toolsReady 标志 + 注册 tools:isReady IPC handler 查询当前状态
- preload.ts 暴露 tools.isReady() 方法
- App.tsx 注册 onReady 监听器后立即查询 isReady(),无论事件是否错过都能恢复正确状态
【记忆系统加固】
- consolidator.ts 新增 runningPromise + waitForCompletion(35s),before-quit 等待固化完成,防止退出时异步 consolidate 数据丢失
- 固化到 MEMORY.md 的同时写入 semantic_memories 表,解决双轨存储无交叉验证问题
- manager.ts tokenize 按中英文标点切分子句后再做 bigram,优化中文分词
- 清理正则冗余括号
【SOUL.md 降级处理】
- context-builder.ts SOUL.md 为空或不存在时降级到默认身份,向前端发 toast 提示用户
- 新增 fallbackRoleNotified 去重标志,仅首次降级通知,避免每次发消息都弹 toast
- SOUL.md 恢复内容时重置标志
【Token 估算调整】
- token-estimator.ts CJK_TOKEN_RATIO 从 1.5 调整为 1.0
【MCP 异步初始化】
- main.ts MCP 完成后广播 tools:ready 事件,前端 UI 据以控制输入框可用性
- preload.ts + global.d.ts 暴露 tools.onReady() 监听器
- App.tsx + ChatInput.tsx toolsReady 状态控制输入框
【版本号】
- package.json + package-lock.json 从 0.3.16 升级到 0.3.18
|
2026-07-22 15:17:58 +08:00 |
|
thzxx
|
76bd72b702
|
fix(trace): TraceViewer 出现滚动条时自动滚到底部
新增 scrollContainerRef + useEffect,监听 traceSteps / agentStatus /
groups.length 变化时自动滚到底部,与 MessageList 同款 throttle 80ms 模式,
避免流式事件高频触发导致滚动卡顿。
|
2026-07-20 22:08:14 +08:00 |
|
thzxx
|
5ec32f33da
|
fix(trace): Trace Viewer 改为按 runId 分组渲染,显示所有轮次
修复 v0.3.8 引入的"覆盖"问题:sendMessage 清空 traceSteps 导致
前一条消息的 trace 被永久丢失。
方案 A+ — 既不叠加也不覆盖,按 runId 分组展示所有轮次:
- agent-store.ts: 回退 sendMessage 的 traceSteps: [] 清空(保留历史)
保留 tokenUsage 重置(当前 run 统计应该重置)
- TraceViewer.tsx: 重写渲染逻辑
- 新增 groupByRun 工具函数,按 runId 分组 + 计算轮次序号
- 每个 run 独立 section,带"第 N 轮"标题 + 状态徽标(进行中/已完成)+ 步数
- 当前 run 高亮(primary 边框 + 浅色背景 + MessageSquare 图标)
- 历史 run 弱化(divider 边框 + 透明背景 + 0.85 透明度)
- 顶部统计"共 N 轮"
- isCurrent 判定改为"当前 run 的最后一个 step"(之前是"全局最后一个")
useAgentStream 的 runId 隔离逻辑(v0.3.8 已加)无需改动,
正好支撑多 run 共存设计:isSameIteration 校验 runId,跨 run 孤立
TERMINATED 跳过不创建 step。
冒烟测试场景:
- 多轮对话 → 每轮独立显示,不再叠加
- 历史 trace 不丢失 → 切换会话回来仍可见所有轮次
- 当前 run 高亮 → 视觉聚焦"正在进行的活动"
|
2026-07-20 21:57:03 +08:00 |
|
thzxx
|
9b6bdaea32
|
fix: 状态指示器重叠与 Trace Viewer 状态丢失
1. StreamingIndicator: 最后一条是 assistant 消息时不显示'正在连接', 避免与 AssistantMessage 的'正在思考'重叠
2. useAgentStream: 跳过 INIT(iteration=0) 的 trace step, 引擎初始化无实际内容不应展示
3. useAgentStream: 状态转换追加到 states 数组而非覆盖 state 字段, 保留完整 THINKING->EXECUTING->OBSERVING 进度
4. TraceStep: header 显示状态进度链(如'思考 -> 执行 -> 观察')而非仅最终状态
5. agent-store: 旧数据兼容, 加载时为缺少 states 的 trace step 补全
|
2026-07-07 22:02:20 +08:00 |
|
thzxx
|
ed59305b5e
|
fix: Trace Viewer 内容渲染修复
1. useAgentStream: 每轮迭代只创建一个 TraceStep, 状态转换时更新而非新建; tool_result 反向搜索包含 toolCallId 的步骤, 修复工具结果丢失
2. TraceStep: 渲染工具状态图标/结果/错误/耗时; Thought 添加 maxHeight 200+滚动; 展开状态用户操作后不被自动覆盖
3. ToolResultBlock: 移除 500 字符截断, 改为 maxHeight 300+滚动
4. ToolCallCard: 参数区域添加 overflowY auto+wordBreak
|
2026-07-07 21:13:51 +08:00 |
|
thzxx
|
6f08759f63
|
v0.1.2: 全项目代码审查修复 + 子代理编排器 + 上下文压缩 + 并行工具执行
后端修复: Ollama adapter 移除死代码/修复超时硬编码/iteration硬编码/pullModel无超时/流异常断开补发DONE; SSE解析器支持非字符串arguments; Sandbox fail-closed安全加固; IPC移除未使用变量
新增功能: TaskOrchestrator子任务编排器; DelegateTaskTool委派工具; Agent Loop并行工具执行; 上下文自动压缩; 记忆检索注入System Prompt
前端修复: useAgentStream text_delta thought累积bug; 工具调用状态正确流转; 修复重复stateChange事件; TraceStep.thought正确填充
|
2026-07-06 22:48:33 +08:00 |
|
thzxx
|
f4532a2bb2
|
refactor: 移除多余依赖,统一 MUI 为唯一 UI 库
- 移除 radix-ui、clsx、tailwind-merge、class-variance-authority、react-router-dom
- 前后端全面适配 MUI 组件,清理残留 Tailwind 工具类引用
- 优化 Agent Loop 引擎、IPC 处理器、Provider Adapter 等后端模块
- 新增 Agent 网络工具通用设计文档 v2
|
2026-07-05 19:15:48 +08:00 |
|
thzxx
|
97a3d3d53b
|
fix: 全面修复审计问题并优化系统提示词
**崩溃/挂死修复 (5):**
- 统一 TrayManager.isQuitting 变量,修复 Cmd+Q 无法退出
- useAgentStream 闭包过期快照 → 每次 getState()
- Agnes chatStream 添加 AbortSignal.timeout
- SSE JSON.parse 添加 try-catch 保护
- Orchestrator setTools 污染 → save/restore 模式
**功能修复 (14):**
- 上下文压缩实现 (每5轮 COMPRESSING 状态)
- 修复 requestId 硬编码空串
- ConfigService.set() 保留已有 category
- MemoryManager 新增 working 类型搜索
- PromptInjectionDefender 补全 sanitize()
- Ollama: 补全 dynamicReminders + reasoningContent
- openai-format: 所有 assistant 消息保留 reasoningContent
- SSE: finish_reason 时提前 flush tool_calls
- DeepSeek thinking effort 映射注释
- Ollama done_reason load→stop
- RateLimitHook >= 边界修复
- WorkspaceService isValid 首次启动修复
- sessions:archive IPC handler
- 托盘/窗口图标路径生产环境修复
**系统提示词优化:**
- SOUL.md 存在时不显示兜底身份,原文放最前
- 兜底身份改为中文 (MetonaAI 自身描述)
- 用户文本在前,附件内容在后
**文件上传:**
- 非图片文件不再 base64 编码,保留 JSON 结构
- 用户文本优先于文件内容
**UI 修复:**
- 首页 Logo 路径修复 (public/ + 相对路径)
- TokenUsage contextWindow 动态计算 (Provider 感知)
- 切换 Provider 同步 contextWindow
- 托盘图标始终显示 Logo (状态由右键菜单展示)
|
2026-06-30 23:17:38 +08:00 |
|
thzxx
|
f34ee258e8
|
style: TokenUsage + AgentMonitor 所有数值加粗 fontWeight:600
|
2026-06-27 23:07:11 +08:00 |
|
thzxx
|
8dd593e747
|
refactor: TokenUsage 底部汇总改用 MUI Table,标题与值自然分离
|
2026-06-27 22:38:53 +08:00 |
|
thzxx
|
a45b4c321b
|
refactor: 详情面板布局优化 — 固定高度 + 空值占位
- DetailPanel: TraceViewer flex:1 撑满, TokenUsage/AgentMonitor flexShrink:0 固定
- TraceViewer: 空内容时「等待 Agent 活动」居中撑满剩余空间
- TokenUsage: 始终展示完整结构(无会话时显示 -/0 而非隐藏)
- AgentMonitor: 固定 flexShrink:0 防止被挤压
|
2026-06-27 22:36:21 +08:00 |
|
thzxx
|
8f687f77a6
|
fix: 右侧面板布局和间距修复
- TraceViewer: 移除底部重复的 Token/Provider 摘要(与TokenUsage重复)
- TraceViewer: height:100% → flexShrink+maxHeight 避免撑破布局
- TokenUsage: StatCard/SummaryRow 增加内边距和间距
|
2026-06-27 22:05:52 +08:00 |
|
thzxx
|
1d185db6b3
|
feat: MetonaAI Desktop 初始项目
- Electron + React + TypeScript 架构
- 三栏布局: Sidebar | ChatPanel | DetailPanel
- 9 个内置工具 (文件系统/网络/记忆/命令)
- SQLite 持久化 (better-sqlite3)
- MUI 暗色/亮色主题系统
- Agent Loop ReAct 状态机引擎
- DeepSeek / Agnes AI / Ollama Provider 适配器
- MCP 协议集成
- 系统托盘 + 全局快捷键
- Tailwind CSS v4 + Tailwind Merge
- 修复: Sidebar 缺失 TextField 导入导致黑屏
|
2026-06-27 21:33:27 +08:00 |
|