thzxx
|
6266d0b10c
|
fix: 去掉所有指令性文字,只描述事实不替用户下命令
|
2026-06-18 14:50:16 +08:00 |
|
thzxx
|
18be23ae87
|
fix: 去掉硬编码索引,用自然语言分隔图片和视频帧
图片和视频始终分块描述,最后追加'请分别分析,不要混淆'提示
|
2026-06-18 14:49:17 +08:00 |
|
thzxx
|
bd0fd55e9c
|
fix: 独立图片在视频帧之前描述,明确 images 数组索引边界
- 图片: images[0] 请单独分析
- 视频帧: images[1..30] 为帧序列
- 避免模型把独立图片混入视频帧
|
2026-06-18 14:48:21 +08:00 |
|
thzxx
|
444fb79626
|
feat: 文件也在消息内容中显示 [文件: xxx.md] 描述
|
2026-06-18 14:41:02 +08:00 |
|
thzxx
|
e81d355c68
|
debug: 添加文件内容注入日志,排查文件未被AI分析的问题
|
2026-06-18 14:17:58 +08:00 |
|
thzxx
|
ec0722170e
|
fix: apiContentForModel 累积所有内容——文字+文件+视频帧+图片,不再只发视频
|
2026-06-18 13:59:08 +08:00 |
|
thzxx
|
5e043e5fbb
|
fix: 每个视频独立指示牌,不合并——_videos 数组逐个渲染
|
2026-06-18 13:30:36 +08:00 |
|
thzxx
|
0b2d8414a6
|
fix: 视频指示牌显示文件名,多视频显示'2个视频'
|
2026-06-18 13:29:06 +08:00 |
|
thzxx
|
0aa33d590c
|
fix: _videoFrames 改用 allVids 总帧数,修复多个视频时指示牌不显示
|
2026-06-18 13:23:10 +08:00 |
|
thzxx
|
96bf48aaf5
|
fix: 视频提取完成后立即清除 pending 状态,避免预览重复显示
|
2026-06-18 13:16:40 +08:00 |
|
thzxx
|
bec111444e
|
fix: 视频预览区同时渲染 pending 和 completedVideos,不再互相覆盖
|
2026-06-18 13:09:15 +08:00 |
|
thzxx
|
c7e1ba0ac5
|
fix: 恢复视频多选循环
|
2026-06-18 13:02:33 +08:00 |
|
thzxx
|
18d0a39aa8
|
feat: completedVideos 数组支持多视频,轮询提取后累积发送
- 每个视频提取完成后 push 到 completedVideos
- 发送时 pending + completed 帧合并为一个 images 数组
- 聊天卡片和 API 内容均遍历全部视频
|
2026-06-18 13:02:14 +08:00 |
|
thzxx
|
fed1e6d1c2
|
refactor: 视频/图片/文件组合发送,各走各的渲染通道
- ChatMessage 新增 _videoFrames/_videoMeta 独立字段
- msg.images 只放图片,视频帧走 _videoFrames
- 聊天卡片:图片缩略图 + 视频指示牌 + 文件 chips 可同时显示
- Ollama API 仍合并全部帧到 images 数组
|
2026-06-18 12:45:06 +08:00 |
|
thzxx
|
1246e5c86f
|
fix: 聊天区系统消息也原地更新进度,不复用 appendSystemMessage 刷屏
通过 sysmsg-video-progress class 标记,进度回调中 querySelector 原地更新 textContent
|
2026-06-18 11:56:38 +08:00 |
|
thzxx
|
a25ce068f9
|
fix: 恢复聊天区系统消息提示(开始/完成/失败)
|
2026-06-18 11:55:36 +08:00 |
|
thzxx
|
ab1fb88dc4
|
fix: 日志三段式——开始+进度(原地更新)+完成,各一条
- logInfo 开始 → resetVideoProgress 进度 → updateVideoProgress 更新 → logSuccess 完成
- 进度条目保留最后帧数不动,完成后新加 success 条目
|
2026-06-18 11:50:11 +08:00 |
|
thzxx
|
37189dafa8
|
refactor: 视频提取日志原地更新,复用 logStreamProgress 模式
- 新增 resetVideoProgress/updateVideoProgress/finishVideoProgress
- 日志面板中视频提取只占一条,实时更新帧数和状态
- 主进程只通过 video:progress IPC 推送原始帧数,不写日志
|
2026-06-18 11:48:35 +08:00 |
|
thzxx
|
abd3dfde72
|
refactor: 视频提取进度实时更新卡片,不再刷日志面板
- 主进程通过 video:progress IPC 推送当前帧数
- 前端监听进度事件,直接更新视频芯片的 meta 文本
- 日志面板只保留开始和完成两条记录
|
2026-06-18 11:45:31 +08:00 |
|
thzxx
|
389e42874a
|
refactor: 视频帧独立预览区,只显示视频卡片不逐帧展示
- 新增 #videoPreview 独立区域,金色 video-chip 卡片
- 视频帧存入 pendingVideoFrames,与 pendingImages 完全分离
- 发送时自动合并为 images 数组
|
2026-06-18 11:33:32 +08:00 |
|
thzxx
|
5ed9a1f9f6
|
feat: 视频上传支持 (v0.11.7)
- 新增视频上传按钮,支持 mp4/avi/mov/mkv/webm (≤10MB)
- ffmpeg 1fps 提取帧序列,自动缩放至512px,带时序标注
- 消息中注入帧序列时间线,多模态模型原生理解视频时序
- 视频按钮与 vision 模型能力自动联动
- 版本号 0.11.6 → 0.11.7,同步更新 README/帮助面板/菜单
|
2026-06-18 10:58:55 +08:00 |
|
thzxx
|
45777a5945
|
feat: v0.11.3 - 工具卡片三态转换 + 流式进度监控 + 默认工具页签
- 工具卡片完整生命周期: 准备中 -> 执行中 -> 完成
- onToolCallPrepare 流式阶段提前显示工具意图
- 工作空间监控定时器: AI处理中提示
- 日志面板流式进度: 每5秒输出, 15秒无新内容警告
- 提示栏按状态分组显示所有工具
- write_file 写入前增加开始日志
- 工具页签新卡片始终自动滚动到底部
- 默认页签切换为工具页签
|
2026-06-12 22:28:16 +08:00 |
|
thzxx
|
cf52568947
|
fix: 在appendAssistantPlaceholder前再次enableAutoScroll,防止renderMessages的DOM事件重置滚动状态
|
2026-06-12 15:07:35 +08:00 |
|
thzxx
|
8b50ae323f
|
fix: 发送消息时强制resetAutoScroll,解决手动上滑后新消息不自动滚动的问题
|
2026-06-12 14:57:08 +08:00 |
|
thzxx
|
933ce7a082
|
v0.11.1: Agent Loop稳定性增强 + 6个系统工具 + 搜索引擎替换
【Agent Loop 稳定性】
- P0-1: 工具消息硬限制40条,超出自动删旧
- P0-2: 截断周期从5轮缩短为3轮
- P1-1: 增量记忆提取改为fire-and-forget
- P1-2: TOOLS_WITH_DATA_DEPS精简为仅web_fetch
- P2: 重复检测改为注入警告而非强制终止
- Final Answer检测增强: >300字自动放行 + 收紧反过早停止
【新增工具】(40→44)
- datetime: 系统精确时间(中文日期+时段+人性化)
- calculator: 安全数学计算(递归下降解析器)
- random: 随机数/随机选择(int/float/pick/string)
- uuid: UUID v4生成(crypto.randomUUID)
- json_format: JSON格式化+验证+键排序
- hash: MD5/SHA1/SHA256/SHA384/SHA512
【搜索引擎替换】
- Google+DuckDuckGo → 搜狗+360搜索
- 四引擎变为: Bing+百度+搜狗+360搜索
【删除】
- 联网搜索代理全部代码(search-proxy/ + 7文件代理逻辑)
- https-proxy-agent依赖
【UI】
- 模型栏: 上下文总长(蓝色)+剩余上下文(绿色)实时显示
- 设置面板上下文长度移至模型栏
- SOUL.md/AGENT.md精简为纯抽象定义
【系统提示词】
- OS环境信息改为从preload同步获取真实值(os.homedir/os.arch/os.userInfo)
|
2026-06-11 22:07:46 +08:00 |
|
thzxx
|
499c68d96f
|
fix: 流式回调(onThinking/onContent)传入模型名,确保每条AI回复都显示模型标签
|
2026-06-10 13:30:25 +08:00 |
|
thzxx
|
23918b8223
|
chore: v0.10.3 — 选择支持think的模型自动启用思考模式, 修复AI回复不显示模型标签, 版本号升级
|
2026-06-10 13:14:58 +08:00 |
|
thzxx
|
64264cc0f8
|
v0.10.1: 修复显存泄漏 + 删除普通聊天模式 + Tool Calling 始终开启
fix: ollama.ts - chat() 添加默认 keep_alive: '1h',chatStream done 时不再 reader.cancel()
refactor: 删除普通聊天模式,所有消息统一走 Agent Loop
refactor: Tool Calling 开关始终开启且不可关闭
chore: 版本号 0.10.0 → 0.10.1 (12 处)
docs: 更新帮助面板和 README 反映架构变更
|
2026-06-06 12:06:48 +08:00 |
|
thzxx
|
2217113014
|
feat: v0.9.1 — 图片压缩、文件token预算截断、并行上传、文档同步
- 图片上传: Canvas前端压缩(1280px等比缩放+JPEG), 300KB以下跳过
- 文件上传: Token预算感知截断(30% numCtx), 26种语言注释剥离
- 性能: handleImagePaths/handleTextFilePaths 并行化(Promise.all)
- sub-agent.ts: 修复3个TS编译错误(tool_name类型, success重复)
- 版本号: 全项目统一至0.9.1(10处)
- 文档: BUILD.md/DEVELOPMENT.md 同步实际架构, 移除过期分支引用
- README: 组件列表修正(log-panel.ts→prompt-modal.ts)
- 帮助面板: 更新图片/文件上传描述
|
2026-06-05 11:32:40 +08:00 |
|
thzxx
|
988efd1733
|
v0.9.0: SOUL.md/AGENT.md/USER.md 化为工作空间文件,去掉代码内硬编码提示词
- 版本号 v1.1.0 → v0.9.0
- AGENT_SYSTEM_PROMPT + TOOL_USAGE_GUIDE 提取为 AGENT.md(工作空间优先,内置 fallback)
- SOUL.md 同级改造(工作空间优先,内置 fallback)
- 删除 inferUserProfile 自动用户画像,改为 USER.md 手动编辑
- 三个 .md 内置版本放在 src/renderer/public/(Vite publicDir 自动复制)
|
2026-06-05 09:35:39 +08:00 |
|
thzxx
|
db6cb8d2cc
|
feat: v1.1.0 — 上下文引擎重构 + 技能系统升级 + SOUL.md 支持
- 版本号更新: 1.0.0 → 1.1.0,全量同步 package.json/lock/README/docs/UI
- 上下文长度自动检测: 切换模型时从 model_info 读取实际 context_length
- SOUL.md 支持: 每次发送自动扫描工作空间 SOUL.md,注入为首条 system 消息且不可压缩
- 系统提示词卡片: AI 回复顶部可折叠展示实际发送给模型的完整 system prompt
- Token 校准: 利用 Ollama 返回的实际计数动态修正估算器(EMA)
- 消息重要性评分: 纯规则打分,trim/summarize 按重要性而非时间顺序
- 结构化压缩: LLM 压缩输出 JSON 格式(topics/decisions/pendingTasks/constraints)
- 技能系统 v1.1: 语义匹配(embedding) + 参数自优化 + 未使用衰减 + 技能链合并
- 修复: 100+ TypeScript strict 模式编译错误清零
|
2026-06-04 21:47:18 +08:00 |
|
Metona Dev
|
8e53a411d6
|
feat: /compress 上下文压缩 + Skill 渐进式加载
|
2026-04-24 12:35:49 +08:00 |
|
thzxx
|
4070f85214
|
fix: 普通聊天流式模式未捕获 prompt_eval_count 导致趋势图无法区分输入/输出 token
|
2026-04-23 17:04:20 +08:00 |
|
thzxx
|
d3c38977bc
|
fix: AI消息时间戳显示、工具调用卡片恢复
1. 修复AI回复消息不显示时间戳的问题:updateLastAssistantMessage 新增 timestamp 参数
2. 恢复工具调用卡片显示(工具名称+参数,不显示执行结果):updateLastAssistantMessage 新增 toolCalls 参数
3. 根因:流式消息通过 updateLastAssistantMessage 更新 DOM,但该函数未渲染时间戳和工具卡片,
而 renderMessages 因 placeholder 已被计数而跳过 appendMessageDOM
|
2026-04-23 16:50:06 +08:00 |
|
thzxx
|
21b9a14824
|
fix: Token统计准确性修复 + 仪表盘增强
1. 修复eval_count只记最后一轮的bug:改为每轮累加
2. 新增prompt_eval_count(输入token)统计
3. 修复total_duration使用Ollama实际推理时间而非墙钟时间
4. 数据库messages表新增prompt_eval_count列(含兼容迁移)
5. 仪表盘显示输入/输出token分项统计
6. 柱状图堆叠显示输入(紫色)+输出(橙色)比例
7. 明细表格新增输入/输出/合计三列
|
2026-04-23 16:11:17 +08:00 |
|
thzxx
|
684b2f773b
|
feat: 工具卡片精简、移除token统计、消息时间显示
1. 聊天消息工具卡片只显示工具名+调用内容,不显示执行结果(工作空间工具页签已有完整结果)
2. 移除所有token统计相关代码:顶栏统计、消息内token/耗时显示、历史记录中的token显示
3. 每条消息显示具体时间(年月日 时分秒),formatTime 已含秒数
|
2026-04-23 15:42:15 +08:00 |
|
thzxx
|
7ed75415a3
|
fix: 工具卡片状态更新后即时刷新消息渲染
updateMessageToolRecord 更新 state 后缺少 renderMessages() 调用,
导致消息中的工具卡片状态不会实时更新(始终显示 running)。
添加 renderMessages() 调用,确保工具执行完成后消息中的卡片
立即显示正确状态(✅/❌)。
|
2026-04-23 12:36:32 +08:00 |
|
thzxx
|
4caa230c47
|
fix: 会话消息中工具卡片始终显示✅0 ❌0且永远转圈执行中
根因:onNewIteration 保存工具记录时 status='running'、result=null,
工具执行完成后只更新了工作空间面板,未更新消息中的记录。
修复:
1. 新增 updateMessageToolRecord() 函数,从后往前查找消息中
running 状态的同名工具记录并更新为最终状态
2. onToolCallResult/onToolCallError 回调中同步更新消息记录
3. onDone 多迭代模式下,最终消息也包含 toolRecords
|
2026-04-23 11:52:53 +08:00 |
|
thzxx
|
72565b3220
|
fix: 彻底修复 TDZ 错误和用户消息不显示问题
1. agent-engine.ts: onNewIteration 改用 prevToolCalls 传递上一轮工具调用,
避免引用未声明的 toolCalls 导致 TDZ (Cannot access 'B' before initialization)
2. chat-area.ts: 新增 resetCurrentPlaceholder() 清理悬空 DOM 引用
3. input-area.ts: 错误处理器删除 placeholder 后清理 currentPlaceholder 引用,
防止后续 updateLastAssistantMessage 操作已脱离 DOM 的旧节点
|
2026-04-22 09:40:38 +08:00 |
|
thzxx
|
9915b71da1
|
fix: Agent Loop 多轮迭代消息保存和 token 统计
- 修复 onDone 多轮迭代时更新旧消息而非创建新消息,导致 post-tool 回复丢失
- 修复 pre-tool 消息的 toolCalls 未保存(onNewIteration 未传递 toolCalls)
- 修复最后两条 AI 消息无 token 显示(统计附着到被覆盖的消息上)
- onNewIteration 回调增加 toolCalls 参数,保存消息时附带工具调用记录
- handleRetry 同步修复
|
2026-04-21 14:08:07 +08:00 |
|
thzxx
|
e5acf646c8
|
fix: 修复多迭代 Agent Loop 的两个UI bug
Bug 1: 正在思考占位符作为独立消息残留
- 根因: renderMessages() 将 loading placeholder 计入 existingCount,
导致新保存的消息不被渲染,旧 placeholder 永远留在页面上
- 修复: onNewIteration 保存消息前先移除旧 placeholder
Bug 2: 只有最后一条AI消息显示 token 统计
- 根因: onNewIteration 保存中间消息时不附带 token/duration 统计,
只有 onDone 对最后一条才添加 loopStats(总累计值)
- 修复: 追踪每轮迭代的 eval_count 增量和耗时,
中间消息和最后消息均保存 per-iteration 统计,
确保 updateTotalTokens 求和不重复计数
|
2026-04-21 09:05:07 +08:00 |
|
thzxx
|
875d04d1e1
|
fix: Agent Loop 多轮迭代消息互相覆盖 — 每轮创建独立消息气泡
问题:Agent Loop 多轮迭代(thought→action→observation→循环)时,每轮
onContent 回调都通过 updateLastAssistantMessage 替换同一个 placeholder
的 innerHTML,导致前一轮的回复内容被后一轮覆盖,只有最后一轮保留。
修复:
- agent-engine.ts: AgentCallbacks 新增 onNewIteration 回调,每轮迭代
开始前通知 UI 层
- input-area.ts: sendMessageWithAgentLoop + handleRetry 添加
onNewIteration 处理——保存当前轮内容为独立消息、重置状态、创建新
placeholder。onDone 根据 agentModeIterations 判断是否需要重复保存
|
2026-04-20 20:07:47 +08:00 |
|
thzxx
|
01c17a66fc
|
fix: 工作流完整性和协调性修复
修复 6 个问题:
1. 新一轮对话清理上轮工具卡片和终端输出(避免越积越多)
2. 中止 Agent Loop 时保留已执行的工具记录(不再丢失)
3. 切换历史会话时清理工作空间状态
4. handleRetry 保存 think 内容(之前丢失)
5. 中止流程统一:agent-engine 抛出 AbortError 由消费方处理(消除重复消息风险)
6. 导出 clearToolCardsExternal/clearTerminalExternal 供外部调用
|
2026-04-19 19:48:46 +08:00 |
|
thzxx
|
8973077abd
|
fix: 自动记忆优化 — 禁止自动提取规则、提高提取门槛与质量
|
2026-04-19 19:36:41 +08:00 |
|
thzxx
|
c7f2fe0c27
|
feat: 工具卡片从聊天区域迁移到工作空间面板
- 工作空间新增「🔧 工具」页签,专门展示工具调用卡片
- 工具执行时自动切换到工具页签
- run_command 执行时自动切换到终端页签
- AI 回复消息不再显示工具卡片,保持聊天区域简洁
- 工具页签支持清空、自动滚动、状态统计
|
2026-04-19 19:01:43 +08:00 |
|
Metona Build
|
69a28a8500
|
refactor: 修复 any 滥用 & 拆分 tool-handlers.ts & 记忆数据治理 (v5.1.3)
Fix 2 - 类型安全:
- (window as any).metonaDesktop → window.metonaDesktop
- any[] → Record<string, unknown>[]
- 回调 :any → ChatSession | null
- 78 处 → 38 处(减少 51%)
Fix 3 - 架构拆分:
- tool-handlers.ts (1308行) → 4 个模块:
- tool-handlers-shared.ts: 共享工具函数
- tool-handlers-fs.ts: 15 个文件系统操作
- tool-handlers-system.ts: 6 个系统网络操作
- tool-handlers-git.ts: 1 个 Git 操作
Fix 4 - 记忆数据治理:
- 90 天未使用自动降低 importance
- 清理评分新增 agePenalty
- 向量错误日志增强(记忆ID、内容摘要、模型、栈)
- 去重增强(前缀匹配)
|
2026-04-19 18:38:31 +08:00 |
|
thzxx
|
f817abd5e1
|
chore: 清理死代码,retry handler 工具卡片渲染补全
- 移除 agent-engine.ts 中未使用的 logThink 导入
- 移除 settings-modal.ts 中未使用的 isVectorMemoryEnabled 导入
- 修复 retry handler 中 onToolCallStart/onToolCallResult/onToolCallError 空回调
|
2026-04-19 17:21:55 +08:00 |
|
thzxx
|
c60ee2b4ae
|
fix: 直播聊天时实时渲染工具调用卡片
- 新增 appendToolCallCardToPlaceholder: 工具开始执行时显示 running 卡片
- 新增 updateToolCallCardInPlaceholder: 工具完成后更新为 success/error 卡片
- 修复 onToolCallStart/onToolCallResult/onToolCallError 空回调问题
- 修复历史记录有工具卡片但直播聊天没有的不一致问题
|
2026-04-19 17:19:45 +08:00 |
|
Metona Dev
|
a6d38ed9cb
|
fix: 工具面板/帮助面板同步更新 + 图片上传限制
- 工具面板: 20→29个工具,补齐 web_search/memory_*/session_*/spawn_task/browser_*
- 帮助面板: 工具数量21→29,新增人格模式/MCP/Cron/Heartbeat说明,补充/retry等命令
- 图片上传: preload透传完整options,ipc尊重multiple参数,图片选择器限制单文件
|
2026-04-18 10:42:58 +08:00 |
|
thzxx
|
d8f89ad097
|
feat: v4.1 会话增强 — /retry /undo /compress + 工具并行执行
新增功能:
- /retry:重试上一轮对话,删除最后的 AI 回复并重新触发 Agent Loop
- /undo:撤销最后的用户+AI 消息对
- /compress:用 LLM 摘要压缩中间对话,保留首尾上下文
- 工具并行执行:同一批次内互相独立的工具用 Promise.all 并行执行
技术细节:
- input-area.ts: 命令检测在 sendMessage() 入口处,/retry 支持普通聊天和 Agent Loop 两种模式
- chat-area.ts: 新增 clearMessagesDOM() 用于 undo/compress 后强制重建 DOM
- agent-engine.ts: 工具调用分批算法 — 根据 TOOLS_WITH_DATA_DEPS 集合检测依赖关系,
独立工具同批并行,有依赖的工具跨批串行
|
2026-04-18 09:15:10 +08:00 |
|