thzxx
|
3fb293c618
|
v0.17.2: 上下文一致性根治 + 消息差量持久化 + 压缩摘要修复 + 安全层测试补课
CI / verify (push) Successful in 1m53s
- P0: 发送路径用户消息重复注入根治(history-builder 纯模块 + 单测,连带修复 maxCount 截断保留最旧消息缺陷);/undo、/retry 消息删除差量落库(新增 db:getMessageIds/deleteMessages 四层通道);/compress 摘要 role:user + 可折叠卡片渲染 + 旧 system 行读取归一化
- P1: memory search 默认 limit=8;工具缓存键/去重改稳定序列化;run_command 超时联动主进程杀子进程;记忆访问统计写回纳入写入锁;搜索自动抓取单页限幅 8k;Token 趋势采样移出 calculateContextStats 并记录裁剪后值;空白 assistant 幽灵消息跳过入库(新迭代/中止两路径)
- P2: 新增 tool-security(18 用例,平台自适应)与 history-builder(11 用例)测试;帮助/README/DEVELOPMENT 文案与代码事实对齐;vendor 失效 sourcemap 与 .npmrc 弃用配置清理;备份导入携带 attachments 修复
- 版本号升级 0.17.2(5 文件白名单);typecheck 零错误 / 301 测试通过 / 构建通过
|
2026-09-08 16:32:28 +08:00 |
|
thzxx
|
bae993c321
|
v0.17.0: 安全加固 + 数据层性能重构 + 死代码清理 + 测试基建
CI / verify (push) Canceled after 0s
安全修复:
- 开启 webSecurity(CORS 改为 webRequest 允许清单精确放行 Ollama 地址)
- 新增 net-guard SSRF 防护:web_fetch/download_file/browser_open 拦截环回/内网/链路本地地址(DNS 解析后校验)
- browser_open 协议白名单(仅 http/https,阻止 file:// 绕过路径安全层)
- git 参数注入防护(用户可控参数禁止 - 开头;git add 强制 -- 分隔)
- 身份文件保护:SOUL.md/AGENT.md/USER.md 工具只读(防提示注入持久化劫持)
- 系统目录硬红线 + 工作空间/白名单不可豁免系统目录
- spawn_task 权限只降不升(封顶于用户设置 subAgentMaxPermission)
- 子代理写类工具接入主 Agent 确认管线 + 完整路径沙箱
- toast 改 textContent、HTML 导出 escapeHtml(XSS 修复)
- Agent 浏览器改用 memory: 内存分区(退出清空 cookie/storage)
数据层重构:
- sql.js 写入改防抖批量落盘(300ms 合并快照 + temp 原子替换 + 退出刷盘)
- Schema 迁移改 PRAGMA user_version 顺序迁移数组
- 消息/设置/轨迹批量写(单事务);SearXNG 配置 13 次写合并为 1 次
- 会话摘要查询(getSessionSummaries/searchSessions 单条 SQL)消除 N+1
- 导出改 getAllSessionsData 一次 IPC 取回全部行
Bug 修复:
- edit_file 替换符污染($&/$1 被特殊解释导致文件写坏)
- truncateToolResult 暴力截断拼接非法 JSON 必然崩溃
- diff 算法 100MB dp 数组 → 前缀/后缀裁剪 + LCS 限额 + 回退
- move_file 跨盘 rename 失败回退 copy+delete
- Ctrl+K 快捷键冲突(双注册);全局错误处理器双注册
- ffmpeg stderr 无限累积 + 帧进度 O(n²) 正则
- 搜索可达性预检只取响应头(Range: bytes=0-0)
- 备份导出逐字节 base64 拼接(O(n²))改 FileReader
- MCP clientInfo 版本硬编码 5.0.0 改真实版本;tools/list 支持 nextCursor 分页
- 看门狗默认值统一为 30 分钟;download_file 超时跟随用户配置
架构改进:
- 主进程工具分发注册表 tool-dispatch.ts(消除 switch 硬编码)
- agent-engine 拆分 result-formatter.ts / tool-parsing.ts(纯函数)
- 文本兜底解析白名单改从注册表派生(补齐 browser_*/diff/spawn_task/mcp_*)
- diff 工具默认启用;MODE_TOOLS 单一事实来源(tools-modal 复用)
- 记忆系统:条目缓存 + 访问统计(hits/last)持久化 + removeById 按 ID 删除
- 度量历史启动恢复 + Metrics 仪表盘接入 JSON/Prometheus 导出
- 子代理模型下拉框打开设置时刷新(此前从未填充)
死代码清理(约 1400 行):
- 删除 context-indexer 整模块、agent-safety 震荡检测/性能报告/依赖图/记忆调优/归档取回
- 删除 context-manager 水印/跳过压缩/自适应窗口/趋势分析/预算分配等未接线函数
- 删除 sanitizeToolArgs(污染 write_file 内容,防注入职责移交主进程安全层)
- infra-service 裁剪为全局错误处理器唯一定义
文档对齐:
- 新增内置 AGENT.md(工作空间同名文件可覆盖)
- README/帮助面板/DEVELOPMENT 移除失实描述(WAL/内部URL拦截/5层防御/并行白名单/Hook 数量)
- 工具数量口径统一 33;安全机制表新增 SSRF/身份保护/子代理权限等 9 项
工程化:
- Vitest + 34 个单元测试(myers-diff/calculator/net-guard/MEMORY.md 格式)
- Gitea Actions CI(typecheck + test + build)
- package.json 新增 typecheck/test 脚本
|
2026-08-24 07:39:34 +08:00 |
|
thzxx
|
e4f83bd09a
|
v0.16.19: 修复日志面板清空、URL误传文件工具、网络工具超时、结果截断
|
2026-08-02 19:09:29 +08:00 |
|
紫影233
|
45b50e4dc7
|
v0.16.11: Plan Mode 最小必要性清理 — 删除进度注入和死代码链
删除项:
- Plan Mode 每轮进度注入代码(formatPlanStatus() 主动注入到 user 消息)
AI 改为从 plan_track mark_done/status 工具返回值自行推断进度
- _lastPlanStatus 死代码链(agent-engine.ts 2 处保存 + input-area.ts 2 处清空)
保存后从未被读取使用,纯死代码
- formatPlanStatus import(已无调用点)
- _lastPlanStatus 和 _planLastInjectedDone StateKey 声明
简化项:
- "计划已批准"消息移除 (web_search、write_file 等) 工具名列举,让 AI 自行判断
修正项:
- L2431 注释从"AI 可通过 formatPlanStatus() 看到剩余步骤"
改为"AI 通过 plan_track mark_done/status 的工具返回值获知进度"
总计 8 文件变更
|
2026-07-16 16:56:32 +08:00 |
|
紫影233
|
a4b82b45bc
|
v0.16.9: 核心引擎深度分析修复 — 27 个问题(P0×8 + P1×19 + P2 死代码)
引擎层(agent-engine.ts):
- P0-R1: handleExecuting 中止改 throw AbortError,让主循环 catch 统一处理 UI 反馈
- P0-E1: executeToolWithTimeout 注释修正,明确 fire-and-forget 限制
- P0-P3: persistLoopContext 改名 snapshotLoopContext + 补全字段,明确语义为运行时快照
- P1-E1: handleInit 增加 isAborted 检查(loadCustomFiles 和 search 后)
- P1-E2: catch 块调用 snapshotLoopContext 确保终止状态写入
- P1-E3: onConfirmTool await 后检查中止信号
- P1-E4: flushAllTraces 改为 await
- P1-E5: 死锁检测 ephemeral 消息加入 PRESERVE_PATTERNS
- P1-E6: 记忆提取 setTimeout 存储到 _pendingMemoryTimers,finally 块清理
- P1-R5: handleExecuting 中止时设置 _abortToolRecords
上下文层(context-manager.ts + agent-engine.ts):
- P0-C1: 删除 nonSystemCompressed,旧摘要不再保留(已合并到新摘要)
- P0-C2: 部分删除 tool 消息时也 strip tool_calls,降级为纯文本 assistant
- P1-C1: handleCompressing 移除 shouldAutoCompress 二次判断,直接执行压缩
- P1-C2: COMPRESSING 状态增加中止检查
- P1-C3: R15 tail 边界保护 middle 无 assistant 时移除孤立 tool 消息
- P1-C4: 压缩接受条件改 AND(3 处:handleInit/R8/handleCompressing)
- P1-C6: head 中已压缩消息的 tool_calls 清除,避免累积膨胀
渲染层(chat-area.ts + input-area.ts + workspace-panel.ts):
- P0-R2: appendAssistantPlaceholder 重置 _streamLastRenderedLen/_streamLastRenderedHash/_streamRenderContent
- P1-R1: rAF 竞态通过重置 _streamRenderContent 解决
- P1-R2: clearMessages/clearMessagesDOM 重置 _sysPromptRendered
- P1-R3: onNewIteration 渲染顺序修正(remove → render → append)
- P1-R4: updateToolCardDOM 改用 querySelectorAll 取最后一个匹配
持久化层(chat-db.ts + sqlite.ts + ipc.ts + history-modal.ts):
- P0-P1: onNewIteration 调用 saveCurrentSession 持久化中间消息
- P0-P2: 非 AbortError 异常时保存 partial 消息(标记 interrupted: true)
- P1-P1: saveSession 增量保存(_savedMsgIds Set 追踪),resetSavedMsgTracking
- P1-P2: 新增 saveSettingsBatch 批量写盘接口 + IPC handler
- P1-P3: 删除死表 tool_calls 的 saveToolCall/getToolCallsBySession 函数和 IPC handler
死代码清理:
- chat-area.ts: 删除 appendToolCallCardToPlaceholder/updateToolCallCardInPlaceholder(从未调用)
- chat-area.ts: 删除 _streamRenderThink/_streamRenderModel 未使用变量
- input-area.ts: 删除 updateMessageToolRecord 空函数 + 对应 import
版本号 0.16.8 → 0.16.9
|
2026-07-16 15:53:28 +08:00 |
|
紫影233
|
bd3a06bfaf
|
v0.16.7: 引擎修复 + 工具面板统一 + AGENT.md 改为仅工作空间加载
核心引擎修复:
- 状态转换表补全 THINKING/PARSING/EXECUTING -> COMPRESSING,修复紧急压缩成为死代码的 P1 问题
- 新增跨轮次死循环检测器(软性提示 + 硬性熔断),防止模型陷入重复工具调用死循环
- handleCompressing 空响应回到 THINKING 而非 REFLECTING,避免错误终止
- executeHooks 添加 .catch() 防止未处理的 Promise 拒绝
- ALWAYS_PARALLEL 移除 git 和 browser_evaluate(有副作用的工具不应并行)
- thinking fallback:content 为空但有 thinking 时,用 [推理过程] 作为 content 保留上下文
- 8个写类工具添加专用格式化器(含 success + message 字段)
- 清理死代码:3个未使用函数 + 3个未使用 import
工具面板统一:
- 10个工具独立下拉框统一为1个全局执行模式选择器
- FIFO 队列防止并行 showToolConfirm 导致静默取消
- delete_file 支持 paths 数组参数批量删除
工具定义与实现一致性修复:
- run_command 移除未使用的 timeout 参数,描述改为"超时可配置"
- list_directory 添加 2000 条截断逻辑 + filter_extension 参数
- calculator 正则移除 ^ 字符(parser 用 ** 替代)
- search_files/tree/web_search/fetch_top 描述与实现对齐
消息传递修复:
- trimByTokenLimit 改为原子组选择(assistant+tool_calls 与后续 tool 消息作为一组)
- 历史工具结果复用 formatToolResultForModel,与当前格式一致
AGENT.md 加载策略变更:
- 删除内置 AGENT.md 文件
- 仅从工作空间加载:有则注入,无则跳过
其他修复:
- 修复初始化失败 "Cannot convert undefined or null to object"(saveSetting null 导致 JSON.parse 陷阱)
- 修复工作空间命令行标签页 idle 状态残留导致样式错乱
版本号: 0.16.5 -> 0.16.7
|
2026-07-14 16:26:43 +08:00 |
|
thzxx
|
4326fcce42
|
v0.16.2: 附件JSON增加description字段,避免AI重复调用文件读取工具
|
2026-07-12 08:19:59 +08:00 |
|
thzxx
|
b8ea18e568
|
v0.16.2: 优化附件提示词格式 — 去base64/真实文件名/用户文字前置
|
2026-07-12 08:04:53 +08:00 |
|
thzxx
|
3850bc7f9e
|
fix: 修复AI消息重复渲染(纯文本+markdown两个卡片同时存在)
onDone回调中renderMessages前未移除流式placeholder导致DOM重复; onNewIteration中移除placeholder顺序修正为先移除再渲染
|
2026-07-11 21:14:43 +08:00 |
|
thzxx
|
cb2ce48eb7
|
v0.15.0: Agent ReAct Loop 核心引擎深度审计与生产级增强 (R1-R50)
核心引擎健壮性(R1-R10)、上下文管理优化(R11-R20)、工具安全与验证(R21-R30)、UI渲染性能(R31-R40)、基础设施与监控(R41-R50)、版本号升级
|
2026-07-11 20:56:48 +08:00 |
|
thzxx
|
e04320d454
|
fix: 修复system消息渲染到聊天界面+AI说了做但没调用工具直接停止的问题
|
2026-07-11 18:50:05 +08:00 |
|
thzxx
|
cf96afad1e
|
feat: plan_track工具卡片增加自动确认下拉框,支持跳过手动确认步骤
|
2026-07-11 16:48:32 +08:00 |
|
紫影233
|
91a30193a7
|
v0.14.13: Token Dashboard 上下文计算修复 + 校准比例修正 + 已有TS错误修复
|
2026-07-10 16:14:38 +08:00 |
|
thzxx
|
e3b44a0357
|
feat: 移除所有工具结果截断,确保内容完整传给AI
删除TOOL_MAX_RESULT_SIZE配置表和formatDefaultToolResult截断; read_file移除2000行/100KB截断; read_multiple_files移除10000字符截断; list_directory移除2000条目上限; search_files移除10条匹配和50结果限制; run_command移除512KB输出截断; browser_extract移除15000字符截断; session_read移除50条消息限制; session_list移除20条限制; memory search移除8条限制; web_search移除10条结果限制; SearXNG HTML移除内容截断; 版本号升级至0.14.11; 实现工具三档执行模式(auto/confirm/disabled)
|
2026-07-09 22:31:04 +08:00 |
|
紫影233
|
7c78a65a9c
|
fix: 全面修复内置工具问题 + 架构缺陷修复 (v0.14.8)
P0: replace_in_files glob重写, search_files正则修复, list_directory递归分页修复, git stash/tag参数修复, buildSearchResponse query字段修复; P1: compress命令注入修复, run_command输出限制, download_file UA+重试; P2: web_fetch extract_mode/mobile_ua生效, read_multiple_files默认值对齐, CONFIRM_TOOLS扩展, 工具图标/名称映射补全; P3: random死代码清理, IPC类型补全; 架构: 系统提示词重复渲染修复, 版本号动态注入, 上下文余量字段修复, 工具记录丢失修复
|
2026-07-07 11:44:48 +08:00 |
|
thzxx
|
e67d638e06
|
chore: 版本号 0.14.6 → 0.14.7
fix: onNewIteration 只在 THINKING 状态调用,消除每状态切换的冗余触发
fix: renderMessages 全量清空重建,去掉增量 diff 的边界 bug
fix: 空消息跳过增加 think 判断,纯思考卡片不再被吞掉
fix: updateMessageToolRecord 改为空函数,工具卡片统一由 onDone 挂载
|
2026-06-28 23:16:05 +08:00 |
|
thzxx
|
20701433dd
|
chore: 版本号 0.14.5 → 0.14.6
fix: onNewIteration 空数组真值导致重复消息卡片([] truthy in JS)
|
2026-06-28 21:08:50 +08:00 |
|
thzxx
|
adff2f36eb
|
chore: 版本号 0.14.3 → 0.14.4
refactor: Plan Mode 进度仅变化时注入(避免每轮冗余)
refactor: Plan Mode 执行规则精简 20行→3行
refactor: 断点续传提示词合并
refactor: PlanAutoTrack Hook 去除模糊匹配,仅 AI 手动 plan_track 精确标记
refactor: buildHistoryMessages 取 user+assistant,不取 system
refactor: 附件传递改为 JSON 结构化(文件/视频 Base64,图片仅 images[])
refactor: 用户文字始终排在附件 JSON 之后
fix: onDone 双重渲染导致 AI 消息卡片重复(正常路径+重试路径)
|
2026-06-28 20:42:50 +08:00 |
|
thzxx
|
3ddd493847
|
chore: 版本号 0.14.2 → 0.14.3
fix: AI 回复消息卡片重复渲染 — onDone 去掉 updateLastAssistantMessage 避免双重 DOM
fix: 用户消息卡片只显示用户文字,代码生成的附件标记不显示
fix: onDone assistantMsg 补充 model 字段
|
2026-06-28 19:52:53 +08:00 |
|
thzxx
|
b5a8a793e2
|
chore: 版本号 0.14.0 → 0.14.1
fix: 去掉流式空闲30s超时(大模型本地推理响应慢易误中止)
fix: await filterEmbedModels 确保启动时模型能力徽章正常显示
fix: 剩余上下文改用 estimateTokens 估算而非 Ollama eval_count(KV Cache 导致虚高)
|
2026-06-28 13:25:59 +08:00 |
|
thzxx
|
90f7572d77
|
fix: memory工具结果丢失 — formatToolResultForModel丢弃read_all的entries; 历史消息剔除用户消息
|
2026-06-24 22:16:53 +08:00 |
|
thzxx
|
47bfc5e629
|
fix: 跨Agent Loop工具上下文断裂修复 — 历史消息注入tool_calls+tool结果+Plan进度
|
2026-06-24 21:22:12 +08:00 |
|
紫影233
|
0903d740da
|
v0.13.0: 记忆系统重构 — MEMORY.md 文件化 + 路径保护 + 自动提取优化
核心变更:
- 删除 SQLite memories 表 + FTS5 + IVF 向量存储引擎 (~1300行)
- 4 个记忆工具合并为 1 个 memory 工具 (5 action)
- 记忆存储改为工作空间 MEMORY.md 单文件,严格格式校验
- 路径保护: checkPathAllowed 拦截所有工具,仅 memory 专用 IPC 通道可访问
- 应用启动/工作空间切换时自动校验并初始化 MEMORY.md(格式错误自动备份重建)
- 自动记忆提取重建: 对话结束时触发,多层质量过滤(内容/泛化/去重/安全/importance门槛)
- 工具总数: 42→40,UI 全面更新(帮助面板、工具面板、设置面板、README)
- 版本号更新: 0.12.11 → 0.13.0
|
2026-06-24 14:49:09 +08:00 |
|
紫影233
|
c7aa5df81c
|
v0.12.11: Plan Mode 格式标准化 + 图片附件感知 + 弹窗UI优化
feat: Plan Mode 强制输出格式模板(任务分析/执行计划/预期结果)
feat: 支持无需工具步骤,纯分析推理任务不再强制工具调用
feat: 反幻觉铁律新增3条(已上传附件不查找、read_file不能看图、Plan不规划查找步骤)
fix: 上传图片后消息文本明确提示AI图片已随消息提供
fix: Plan Mode确认弹窗UI优化(步骤卡片样式/宽度/滚动)
style: extractPlanSteps 双策略解析,兼容多种模型输出格式
|
2026-06-24 11:40:18 +08:00 |
|
thzxx
|
d3c3bacb8d
|
v0.12.4: 安全豁免 + 搜索质量 + 上下文管控 + 版本纪律 Cleanup
Fix:
- 工作空间路径安全豁免 — AppData 拦截自相矛盾,tree/list_directory 恢复正常
- 搜索自动抓取硬上限 MAX_AUTO_FETCH=8,防止上下文爆炸 132%
- 搜索结果相关性过滤 — 跳过 Canva/ChatGPT 等无关条目
- 浏览器回退 LRU 缓存 — 同 URL 10min 内不再重复渲染
- Plan Mode 任务描述固化到系统提示词 — 压缩后不丢失目标
- ephemeral 清理时机优化 — 高负载时跳过,避免 Plan 进度丢失
Refactor:
- 全项目 v0.12.0 → v0.12.4 版本号同步(7 文件)
- 版本号纪律:仅 5 白名单文件保留版本号,其余 14 源码全部清除
- docs/DEVELOPMENT.md 据实重写(目录/架构/规范/SearXNG/Harness)
- SearXNG 抓取条数输入框改为 min=1 max=8 数字框
- 代码注释中的版本标记全部移除,仅描述功能
|
2026-06-23 20:45:53 +08:00 |
|
紫影233
|
042e00e4a6
|
v0.12.3: 全面审计修复 + 稳定性加固 + 文档更新
P0 安全/稳定性修复 (6项):
- sqlite persist 改用临时文件+rename,I/O错误日志
- IPC fs 处理器加入 checkPathAllowed 路径验证
- handleCompress 命令注入修复 + 跨平台 (powershell/tar/zip/unzip)
- browser 全页截图简化,使用 capturePage full rect
- workspace 竞态条件修复
- editFile 5MB 大小限制
P1 安全/稳定性修复 (7项):
- 大小写不敏感搜索: query 同步转换小写
- web_fetch 无 content-length 时流式读取+10MB限制防OOM
- Windows SIGTERM 改用 taskkill /PID /T /F 强制终止
- startsWith 路径检查 Windows 大小写不敏感
- 安全黑名单扩展: 33个目录路径 + 30条危险命令 (Linux+Windows)
- plan_track stepIndex 改用 typeof === 'number' 精确检查
- MCP 前缀改用双下划线分隔 mcp_{server}__{tool} 防歧义
P2 代码质量修复 (8项):
- 修复 EXECUTING→THINKING 死循环Bug (转换表缺失)
- COMPRESSING 硬上限绕过时同步 _loopState 全局状态
- Abort 路径补齐 onDone 回调, 防止UI状态残留
- 幻觉检测从4条扩展到16条规则, 覆盖全部工具类别
- 移除 getTokenEfficiency 死代码
- 跨平台路径清理 (replace(/[\/]+$/, ''))
- 动态 import 加 try/catch, 失败自动批准不阻断
- #modelSelect 加 null 守卫, 防止运行时崩溃
文档 & UI 更新:
- README.md: 版本号/特性表/架构图/安全机制/工具清单全面刷新
- 帮助面板: 新增 Plan Mode、抗幻觉&稳定性章节, Agent Loop补8状态机
- 工具面板: plan_track卡片 + plan-mode徽章样式, 标题更新为42+1
- 工作空间面板宽度: 480px → 400px
- 源码注释移除所有版本标签, 仅保留4处必要位置
- 版本号 0.12.2 → 0.12.3
|
2026-06-23 17:06:43 +08:00 |
|
thzxx
|
6099c2ad21
|
fix: /retry 丢失视频帧和文件附件,重试时完整恢复
|
2026-06-20 14:58:10 +08:00 |
|
thzxx
|
e84f62c482
|
v0.11.9: 修复纯文本消息卡片丢失 + 子代理参数可配置
fix: 恢复纯文本消息的 else if 分支,修复 fed1e6d 重构后用户消息卡片不显示
fix: allVids 类型注解补充 base64 字段,消除 TS2322 编译错误
feat: 子代理最大轮次和超时接入设置面板(subAgentMaxLoops/subAgentTimeout)
chore: 版本号 0.11.7 → 0.11.9
|
2026-06-20 13:04:17 +08:00 |
|
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 |
|