Commit Graph
79 Commits
Author SHA1 Message Date
thzxx a18b04a890 chore: 版本号更新至 3.3.2 2026-04-16 19:50:44 +08:00
thzxx c62fd4c7fd feat: run_command 改为下拉框设置自动/需确认/禁用三种模式
- 替换原有开关为下拉选择框(selectRunCommandMode)
- 新增 setRunCommandMode() 动态控制确认行为
- 需确认模式:弹窗确认后执行
- 自动模式:直接执行,无需确认
- 禁用模式:工具不可用
- 新增 .tool-card-badge.disabled 样式
- 状态从 runCommandEnabled(bool) 迁移为 runCommandMode(string)
2026-04-16 19:39:11 +08:00
thzxx fe0daf7075 chore: 除 run_command 外所有工具改为自动执行无需确认 2026-04-16 19:32:03 +08:00
thzxx 5de4cfbabb feat: 添加 web_search 联网搜索工具 (21个工具)
- 新增 web_search 工具:AI 可主动联网搜索获取实时信息
- 搜索引擎:DuckDuckGo 优先,Bing 作为备用
- 返回结构化结果:标题、URL、摘要
- 自动启用,无需用户确认(只读操作)
- 更新 README 工具列表和计数
2026-04-16 19:29:15 +08:00
thzxx a67995166c merge: develop into master 2026-04-08 13:34:20 +08:00
thzxx 03a396c730 fix: handleRunCommand 补全执行日志(安全检查、执行开始、完成、异常、终止) 2026-04-08 13:33:50 +08:00
thzxx b087761d65 docs: 更新 DEVELOPMENT.md 5.3 工作空间与 AI 集成流程 2026-04-08 13:32:03 +08:00
thzxx 4c0f91dd41 docs: 开发规范合并到 DEVELOPMENT.md,删除多余的 CONVENTIONS.md
- DEVELOPMENT.md 新增版本号更新文件清单
- DEVELOPMENT.md 新增更新日志规范(只写 CHANGELOG.md)
- DEVELOPMENT.md 新增分支提交规则(不多分支推送)
- 删除重复的 docs/CONVENTIONS.md
2026-04-08 13:30:43 +08:00
thzxx c8e14b8478 docs: 新增 docs/CONVENTIONS.md 开发规范 2026-04-08 13:27:51 +08:00
thzxx 060a5cc8d4 docs: README.md 移除历史版本记录,更新日志统一到 docs/CHANGELOG.md 2026-04-08 13:27:11 +08:00
thzxx f0bad05494 chore: 版本号更新至 3.2.4
- package.json version 3.2.4
- README.md 版本徽章、下载说明、构建分支
- docs/CHANGELOG.md 新增 v3.2.4 版本说明,版本链补全 v3.2.3
- docs/BUILD.md 新增 v3.2.4 构建日志,构建分支引用
- src/renderer/index.html 应用标题版本号
2026-04-08 13:26:14 +08:00
thzxx 01b1b0e9c5 fix: 设置面板修改地址后同步更新顶部导航连接状态 2026-04-08 13:22:39 +08:00
thzxx 83fe7ba4ce fix: 清理 TOOL_USAGE_GUIDE 中引用已删除字段的规则 2026-04-08 13:16:34 +08:00
thzxx 0431ed56c0 refactor: 命令执行走工作空间终端,AI 不再直接执行
流程改为:AI 提出命令 → 用户确认 → 工作空间终端执行(实时显示)→ 结果反馈 AI → AI 回复

- handleRunCommand 直接 spawn 子进程,stdout/stderr 实时通过 cmd:output 推送
- 进程结束后通过 cmd:done 通知渲染进程
- 停止按钮通过 cmd:kill 终止进程
- 清理 workspace.ts 中不再需要的 execWorkspaceCommand 工具集成代码
- 去掉 workspace:execTool/killTool,改为 cmd:output/cmd:done/cmd:kill
2026-04-08 13:12:18 +08:00
thzxx d5e5f5f58a feat: AI 命令执行实时流式推送到工作空间终端
- execWorkspaceCommand 新增 onOutput 回调,stdout/stderr 实时推送
- ipc.ts workspace:execTool 实时转发输出 + 发送 toolDone 完成通知
- 渲染进程 appendToolStreamOutput 流式显示,handleToolDone 显示退出状态
- 去掉 tool-handlers.ts 中的一次性完整输出推送
- 完整流程:用户确认 → 实时输出 → 完成通知 → AI 回复结果
2026-04-08 13:06:57 +08:00
thzxx d150b53116 refactor: 工作空间去掉手动命令输入,终止时自动反馈 AI
- 移除工作空间终端的命令输入框和执行按钮
- 用户只能通过终止按钮中断卡住的 AI 命令
- 终止后自动通过 killTool IPC 终止进程,结果自动回传 AI
- 新增 workspace:killTool IPC 和 terminateCurrentToolCommand
- 新增终端底部状态提示(等待/执行中)
- 修复工作空间面板顶部对齐(90px → 92px)
2026-04-08 12:57:48 +08:00
thzxx f9ad682f01 fix: AI Tool Calling run_command 输出同步到工作空间终端面板
- handleRunCommand 改用 execWorkspaceCommand 替代 Node exec()
- 执行完成后通过 workspace:toolOutput IPC 事件推送命令和输出
- 渲染进程监听 onToolOutput,在活跃终端显示 AI 命令及结果
- 清理 tool-handlers.ts 中不再需要的 child_process 导入
2026-04-08 12:47:36 +08:00
thzxx d5f4112d97 fix: AI Tool Calling run_command 输出同步到工作空间终端面板
- handleRunCommand 改用 execWorkspaceCommand 替代 Node exec()
- 执行完成后通过 workspace:toolOutput IPC 事件推送命令和输出
- 渲染进程监听 onToolOutput,在活跃终端显示 AI 命令及结果
- 清理 tool-handlers.ts 中不再需要的 child_process 导入
2026-04-08 12:47:28 +08:00
thzxx 5800aaedd2 docs: 更新 BUILD.md,修正仓库地址并添加 v3.2.3 构建日志 2026-04-08 12:40:43 +08:00
thzxx 75a45de5f2 docs: 更新 BUILD.md,修正仓库地址并添加 v3.2.3 构建日志 2026-04-08 12:40:35 +08:00
thzxx b9710b71e1 docs: 更新 README 和 CHANGELOG,添加 v3.2.3 版本说明 2026-04-08 12:33:22 +08:00
thzxx e663878da0 fix: 修复 tool-registry.ts 缺少 logInfo 导入导致 run_command 工具调用异常 2026-04-08 12:26:43 +08:00
thzxx f9eca2e524 v3.2.3: 工作空间面板改为常驻显示,固定宽度480px,不可关闭不可拖拽 2026-04-08 12:22:37 +08:00
thzxx 6a74b8b0d2 docs: 更新 README 和 CHANGELOG,添加 v3.2.2 版本说明 2026-04-08 12:14:50 +08:00
thzxx 38f12ab1d8 docs: 更新构建指南,补充 v3.2.2 构建问题排查与手动缓存方案 2026-04-08 12:11:50 +08:00
thzxx d9e9416d35 feat: 工作空间与 AI Tool Calling 深度集成
核心变更:
- 新增 execWorkspaceCommand() 无超时进程执行(workspace.ts)
- 新增 workspace:execTool IPC 通道(无超时,5MB 输出上限)
- run_command 工具改用 workspace IPC,移除 30s 超时限制
- run_command 默认启用(需用户确认),AI 上下文注入工作空间目录
- Agent Loop 工具执行:run_command 无超时,其他工具保持 30s
- Agent 系统提示词新增工作空间规则(userTerminated/truncated 反馈)

UI 修复:
- Header z-index 提升至 50,Model Bar 提升至 40,Input Area 提升至 30
- 工作空间面板 top 调整为 90px(header + model-bar),不再遮挡菜单
- Input Area 增加 position: relative 确保 z-index 生效

其他:
- 新增 docs/DEVELOPMENT.md 开发规范文档
- 设置面板 run_command 开关文案优化,默认值改为 true
2026-04-07 22:24:58 +08:00
thzxx 9f01138062 feat: 构建资源本地缓存 + restore-build-cache.sh + 更新 BUILD.md
- restore-build-cache.sh: 自动从 build-resources/ 或镜像恢复缓存
- build-resources/ 已在 .gitignore(不进 git,145MB)
- BUILD.md: 重写为快速构建 3 步指南
2026-04-07 02:20:41 +08:00
thzxx 8f77bcfb1a fix: build-resources 从 git 移除(145MB 本地资源不进仓库) 2026-04-07 02:18:57 +08:00
thzxx 4ccd53e087 fix: 修复 vector-store.ts colId 变量重复声明 2026-04-07 02:10:20 +08:00
thzxx 4dcbb4f1e9 fix: 修复 importSessions 中 result 变量重复声明导致编译失败 2026-04-07 02:10:01 +08:00
thzxx 0a476365b2 chore: 版本号升级 3.0.0 → 3.1.0 2026-04-07 02:02:19 +08:00
thzxx 79e4cac19b feat: header 增加当前会话总 token 消耗统计
- 新增 totalTokens 元素(帮助按钮右侧,🪙 图标 + 数字)
- chat-area.ts 新增 updateTotalTokens() 函数
- 四个触发点:新消息完成、新建会话、加载历史、应用初始化
- 数字自动格式化(toLocaleString)
2026-04-07 02:00:27 +08:00
thzxx a80baf363c fix: 修复 AI 回复 token 统计信息显示
- 直接 API 路径:增强 finalStats 捕获,从任意包含统计的 chunk 兜底收集
- Agent Loop 路径:新增 total_duration / eval_count 统计回传
- chat-area.ts: 修复 falsy 判断(eval_count=0 也应显示)
- agent-engine.ts: onDone 回调新增 stats 参数
2026-04-07 01:56:17 +08:00
thzxx 9735a1ed38 feat: 全面补充执行日志(135处)
补日志的模块:
- vector-store.ts: 0→7(init/create/delete/add/search 全覆盖)
- rag.ts: 3→7(initVectorStore/embedBatch/removeDoc/retrieveContext)
- chat-area.ts: 2→5(3个导出函数加日志)
- history-modal.ts: 4→5(打开历史记录)
- kb-modal.ts: 7→8(打开知识库管理)
- header.ts: 5→7(运行中模型状态)
2026-04-07 01:47:02 +08:00
thzxx 60152fb443 refactor: 清理渲染进程全部 58 处 console.log/warn/error
- 所有错误日志统一走 logService(logError/logWarn/logInfo)
- 无 logService 的地方补上对应调用
- 纯调试 trace 直接删除(桌面应用看不到 console)
- ollama.ts 流式解析错误改为静默跳过(非关键)
- 执行日志面板信息量不变
2026-04-07 01:42:56 +08:00
thzxx f174e7d737 fix: 聊天导出改用原生保存对话框,清理 downloadFile
- exportAsMarkdown/Html/Txt 全部改用 dialog.saveFile + fs.writeFile
- 删除 utils.ts 中的 downloadFile 函数(不再使用)
- 两处 a.download 保留为 fallback(bridge 不可用时降级)
2026-04-07 01:36:19 +08:00
thzxx 02d5ff19c7 feat: 文件对话框全部改用 Electron 原生对话框
- input-area.ts: 图片/文件上传改用 dialog.showOpenDialog(通过 IPC)
- settings-modal.ts: 导入改用原生打开对话框,导出改用原生保存对话框
- kb-modal.ts: 知识库文档上传改用原生打开对话框
- ipc.ts/preload.ts/types.d.ts: writeFile 增加 encoding 参数支持二进制写入
- index.html: 移除 4 个无用的 <input type="file"> 元素
- 清理死代码: fileToBase64, fileToText, isMetonaFile
2026-04-07 01:33:51 +08:00
thzxx 58ef272061 fix: 修复桌面集成失效 + 清理死代码
- main.ts: window.__metonaBridge → window.metonaDesktop(与 preload.ts 对齐)
- 删除 DesktopBridge 接口和 __metonaBridge 类型(从未使用)
- 删除 extractDocument(定义了但无调用)
- 删除 logIPC(导出了但零引用)
- 删除 getMessagesContainer(导出了但无调用)
- SAFE_DATA_TYPES 去掉多余的 export
- vite.config.ts 移除未使用的 server 配置
2026-04-07 01:28:07 +08:00
thzxx e1e67dd285 docs: 更新帮助弹框 — 新增 Tool Calling 和 Agent 记忆系统说明,移除已废弃的 Agent 预设 2026-04-07 00:01:14 +08:00
thzxx 9d9feb40a3 fix: 修复工具确认后执行卡死问题
问题:用户点击确认执行工具(如删除文件)后,页面一直处于'正在思考'loading状态,工具未被执行。
原因:tool-confirm-modal.ts 中 cleanup() 先将 resolveConfirm 设为 null,导致后续 resolveConfirm?.(true) 无法 resolve Promise,await callbacks.onConfirmTool(call) 永远挂起。
修复:在调用 cleanup() 前先保存 resolveConfirm 引用,cleanup 后再调用保存的引用来 resolve Promise。
2026-04-06 21:30:00 +08:00
thzxx 18a24a2a59 refactor: remove Agent preset system, fix run_command enable bug
- Delete preset-manager.ts and preset-bar.ts
- Clean up all preset references from main.ts, types.d.ts, state.ts
- Remove preset modal HTML and CSS, rename temp-slider/modal-actions classes
- Fix run_command tool not being enabled (missing setToolEnabled call)
2026-04-06 15:44:27 +08:00
thzxx 9e6fce2c3f chore: bump version to 3.0.0 2026-04-06 15:31:28 +08:00
thzxx eba5098728 docs: 重写 README.md 适配 Agent 记忆系统 + Tool Calling 双引擎架构 2026-04-06 13:48:22 +08:00
thzxx dc43db7d9c feat: Agent 记忆系统替代预设功能,全功能协调运作
核心改造:
- 取消 Agent 预设(保留兼容),新增 AI Agent 记忆系统
- 自动提取 → 存储 → 检索 → 注入上下文的完整记忆闭环
- 记忆类型:事实/偏好/规则/事件,支持重要性评分和标签

新增文件:
- services/memory-manager.ts: 记忆管理核心
  - 关键词+标签+重要性加权检索
  - 会话结束自动提取(LLM 驱动)
  - 去重检测、使用频率追踪
- components/memory-panel.ts: 记忆管理面板 UI

修改文件:
- types.d.ts: 新增 MemoryEntry/MemorySearchResult 类型
- db/chat-db.ts: 升级 v2,新增 memories 存储
- input-area.ts: 对话流集成记忆检索+自动提取
- agent-engine.ts: Agent Loop 注入记忆上下文
- settings-modal.ts: 记忆开关设置
- main.ts: 记忆系统初始化
- index.html: 记忆设置面板 HTML
- style.css: 记忆面板完整样式

功能协调:
- 对话流: 记忆检索 → RAG 检索 → 系统提示词组合 → 流式对话
- Agent Loop: 记忆检索 → 系统提示词注入 → 工具调用循环
- 会话结束: 自动提取关键信息 → 存入记忆库
- 跨会话: 记忆持久化 IndexedDB,新对话自动召回相关记忆
2026-04-06 13:44:45 +08:00
thzxx 37e11502b8 docs: 重写 README.md 适配 v3.0 Tool Calling 架构 2026-04-06 13:33:21 +08:00
thzxx e4e735b2ac docs: 更新 BUILD.md 分支为 v3 2026-04-06 13:31:43 +08:00
thzxx 5bfb137a8a feat: v3.0 Tool Calling — AI 本地文件操作系统
新增文件:
- src/main/tool-security.ts: 路径白名单/黑名单、命令安全检查
- src/main/tool-handlers.ts: 7个工具实现(read/write/list/search/create/delete/run)
- src/renderer/services/tool-registry.ts: 工具注册调度中心
- src/renderer/services/agent-engine.ts: Agent Loop 流式多轮工具调用引擎
- src/renderer/components/tool-confirm-modal.ts: 高风险操作确认对话框

修改文件:
- types.d.ts: 新增 ToolCall/ToolResult/ToolCallRecord 等类型
- ollama.ts: chatStream 支持 tools 参数
- ipc.ts: 新增 tool:execute/getConfig/setAllowedDirs IPC
- preload.ts: 暴露 tool API
- chat-area.ts: 渲染工具调用卡片
- input-area.ts: 集成 Agent Loop 引擎
- settings-modal.ts: 工具调用开关设置
- index.html: 工具调用设置面板 + 确认对话框 HTML
- style.css: 工具调用卡片、确认对话框样式
- main.ts: 初始化工具调用配置
2026-04-06 13:29:43 +08:00
thzxx 0a1397771e docs: 添加 Windows 安装包构建指南(分支已更新为 v2) 2026-04-06 13:16:06 +08:00
thzxx 511f864221 Merge branch 'refactor/modular-architecture': v4.0.3 帮助弹框优化 2026-04-05 20:29:21 +08:00
thzxx 0fd12d4e7e chore: 版本号升级至 v4.0.3,更新 README 2026-04-05 20:27:53 +08:00
thzxx 633ca5f8ea feat: 帮助弹框新增 Agent 预设说明,完善设置描述 2026-04-05 20:26:56 +08:00
thzxx b01a23668a Merge branch 'master' into refactor/modular-architecture 2026-04-05 20:26:33 +08:00
thzxx c7301902a7 Merge branch 'refactor/modular-architecture': Agent预设系统 v4.0.0~v4.0.2 2026-04-05 20:22:00 +08:00
thzxx abebc56f82 chore: 版本号升级至 v4.0.2,更新 README 2026-04-05 20:16:41 +08:00
thzxx 27340d36b3 fix: 切换预设时 Think 按钮在模型不支持时不应显示激活态 2026-04-05 20:15:46 +08:00
thzxx ac3d7a3685 docs: README 新增 Agent 预设系统详细说明 2026-04-05 20:10:54 +08:00
thzxx 039afa5f0b chore: 版本号升级至 v4.0.1,更新 README 2026-04-05 20:08:51 +08:00
thzxx 8a8c5da968 feat: 设置面板新增温度(Temperature)滑块控制
- 设置面板新增温度滑块 (0~2, 步长0.1)
- 实时显示当前值,保存到 IndexedDB 持久化
- 切换预设时自动同步温度滑块 UI
- 应用启动时从 DB 恢复温度设置
2026-04-05 20:07:38 +08:00
thzxx 4b72a1fc5d chore: 版本号升级至 v4.0.0,更新 README 2026-04-05 19:58:24 +08:00
thzxx bc63ba9611 feat: Agent 预设系统 - 一键切换角色/工作模式
- 内置 6 个预设:默认、翻译官、代码审查、写作助手、数据分析师、学习导师
- 每个预设包含:系统提示词、温度、上下文长度、Think 开关
- 预设栏胶囊按钮,点击即切换,自动应用全部配置
- 支持创建/编辑/删除自定义预设,IndexedDB 持久化
- 切换预设时同步设置面板 UI + toast 提示
- 温度参数集成到聊天 API 调用
2026-04-05 19:55:45 +08:00
thzxx 2c475c0c8c chore: 版本号升级至 v3.2.0,更新 README 更新日志 2026-04-05 01:59:40 +08:00
thzxx be8ef7641e style: 知识库弹框和帮助弹框视觉优化
- 知识库弹框: 加大至 900px/88vh,工具栏加边框背景,左侧分隔线
- 帮助弹框: 加大至 640px/88vh,各区块加左边线强调和背景
- 全局模态框: 更深毛玻璃、圆角 14px、入场缩放动画、头部渐变
- 快捷键表格: 带边框圆角、hover 高亮
- 文档/集合项: 更大 padding、hover 边框
2026-04-05 01:55:56 +08:00
thzxx e97e2e4078 perf: IVF 倒排索引优化向量搜索 - K-Means 聚类 + nprobe 近邻检索
- N < 200 自动降级暴力搜索
- N ≥ 200 K-Means++ 聚类构建 IVF 索引
- nprobe=5 探测最近 5 个聚类,搜索量降 75%
- 索引持久化到 IndexedDB,数据变化自动重建
- 内存向量缓存 + Map O(1) 查找
2026-04-05 01:47:57 +08:00
thzxx 4c52650881 fix: setSelectedModel 触发 change 事件,恢复模型能力检测(Think/Vision) 2026-04-05 01:38:56 +08:00
thzxx 32e3bf848e fix: RAG临时状态消息延迟到首个token到达时才清除,消除回复前的空白期 2026-04-05 01:32:08 +08:00
thzxx b802c896cf refactor: state 管理优化 - 结构化浅比较 + update/setIn/batch API
- state.js: 新增 shallowEqual、update()、setIn()、batch() 方法
- input-area.js: messages.push() 全部改为 state.update(),确保引用变化触发通知
- model-bar.js: 直接属性赋值改为 state.update(),修复 model 切换不触发变更检测
2026-04-05 01:27:24 +08:00
thzxx 2fa274e1b1 docs: README.md 全面重写
- 新增 Ollama API 调用清单(接口/方法/调用位置/用途)
- 新增流式聊天 NDJSON 数据格式说明
- 新增聊天请求参数完整示例
- 新增强制停止机制流程图
- 更新版本号至 v2.0.0
- 功能特性改为表格
- 设置项关联 API 参数
2026-04-03 13:21:34 +08:00
thzxx 194b402623 fix: 模型栏图标改为方块/列表,避免与 Think 灯泡重复 2026-04-03 13:17:59 +08:00
thzxx 66acfb7f3e ui: 模型选择栏布局重设计
- 新增渐变图标指示器
- select 更大圆角 + 更粗边框 + hover/focus 渐变高亮
- 能力标签改为独立彩色 pill(Think 紫色、Vision 青色)
- 箭头图标改为青色
- model-bar.js 适配新 badge 元素
2026-04-03 13:10:00 +08:00
thzxx 7f842fc02e ui: 导航按钮和 Think 按钮统一渐变风格
所有按钮统一为青紫渐变 + 发光风格:
- 导航按钮: 渐变背景、白色图标、hover 放大 + 光晕
- Think 按钮选中态: 渐变背景、白色图标,与发送按钮一致
- Think 按钮未选中: 玻璃态,hover 紫色放大
- 尺寸统一 40-42px,与发送按钮对齐
2026-04-03 13:05:25 +08:00
thzxx 2e1b0ad066 ui: 导航按钮和 Think 按钮视觉增强
导航按钮 (.icon-btn):
- 增加玻璃背景 + 边框,不再透明
- hover 时青色高亮 + 发光 + 上浮
- 图标 18px → 20px

Think 按钮:
- 尺寸 38px → 40px,默认色 text-muted → text-secondary
- hover 时紫色发光 + 上浮
- 选中态渐变背景 + 更强光晕
2026-04-03 13:00:20 +08:00
thzxx be4e7bf101 fix: 移除 safeMarkdown 中的 sanitize 调用,修复消息渲染问题
- safeMarkdown 不再调 sanitize,直接用 marked 输出
- marked 产出的 HTML 已经足够安全(代码块、列表等)
- sanitizer.js 保留供 marked-config.js 链接安全检查使用
- 修复 catch 块中改用 assistantContent 而非 DOM textContent
2026-04-03 12:54:17 +08:00
thzxx 17a818c3da fix: 停止时消息内容显示 undefined — 彻底修复
根本原因:catch 块从 DOM 读 textContent 存在时序问题,改为直接用
assistantContent 变量(已在 try 外声明),完全绕过 DOM 读取。

改动:
- catch 块:不再读 contentDiv.textContent,直接用 assistantContent
- appendMessageDOM:空内容不调 safeMarkdown 避免生成空 <p>
- 通用错误处理同样改用 assistantContent
2026-04-03 12:46:30 +08:00
thzxx eb04a6baa8 fix: 历史记录分页 — 会话丢失导致数据不完整
问题根因:
1. startNewSession() 未保存当前会话 → 点「新建会话」时旧会话丢失
2. 用户消息发送后未立即保存 → 刷新/关闭页面丢失对话
3. 通用错误处理中 saveCurrentSession() 缺少 await

修复:
- startNewSession: 新建前先保存当前会话(有消息时)
- sendMessage: 发送用户消息后立即 saveCurrentSession
- catch 块中 saveCurrentSession 补上 await
2026-04-03 12:39:59 +08:00
thzxx 27317f4d32 fix: 停止时消息内容变 undefined — 变量作用域问题
assistantContent/thinkContent/modelName 声明在 try 块内,
catch 中访问不到导致全部为 undefined。
将声明提到 try 外部,catch 正常访问已生成内容。
2026-04-03 12:33:02 +08:00
thzxx f80dd7f390 feat: 强制停止AI回复 - 真正中止Ollama接口请求
- ollama-api.js: chatStream 新增 AbortController 参数,同时中止 fetch 和 reader
- input-area.js: 发送按钮流式时变为停止按钮(红色方块),点击立即 abort
- abort 时保留已生成内容,标记 [已停止]
- 停止按钮带脉冲动画,视觉反馈明确
- 真正的接口级别终止:fetch abort + reader.cancel 双重保险
2026-04-03 12:31:04 +08:00
thzxx 6088ea4629 feat: 重新设计模型选择栏与 Think 模式
模型选择栏:
- 去掉原生 select 样式,自定义 appearance:none + 箭头图标
- 模型列表显示参数大小 (如 qwen2.5 · 7B)
- 选中模型后展示能力标签 (🧠 Think / 👁️ Vision)

Think 模式:
- 从模型栏移至输入区域,紧邻发送按钮
- 使用灯泡图标按钮替代原来的 toggle 开关
- 默认 disabled,切换模型时调用 /api/show 检测 capabilities
- capabilities 包含 'thinking' 时才启用,否则禁用并灰显
- 模型能力结果缓存,避免重复请求
2026-04-03 11:46:29 +08:00
thzxx 41b512c779 chore: 项目文件归类整理
- assets/icons/ → 图标资源 (llama.ico, llama.png)
- css/ → 样式文件 (style.css)
- js/ → 所有业务代码
- js/lib/ → 第三方库 (marked.esm.js)
- js/components/ → UI 组件

修正所有 import 路径、HTML 引用、SW 缓存列表
2026-04-03 11:40:01 +08:00
thzxx 38edaee0f0 refactor: 模块化架构重构
将单文件巨型 IIFE (1608行) 拆分为 14 个 ES Module:

核心层:
- js/state.js          - 轻量级响应式状态管理 (发布-订阅)
- js/utils.js          - 通用工具函数
- js/sanitizer.js      - HTML XSS 净化器
- js/marked-config.js  - Markdown 渲染器配置

组件层:
- js/components/chat-area.js      - 消息渲染/流式更新/导出
- js/components/input-area.js     - 文本输入/图片上传/发送
- js/components/history-modal.js  - 历史记录面板/搜索/分页
- js/components/settings-modal.js - 设置面板/数据管理
- js/components/header.js         - 顶部导航/连接状态
- js/components/model-bar.js      - 模型选择栏
- js/components/toast.js          - Toast 通知
- js/components/lightbox.js       - 图片预览

入口层:
- js/app.js            - 主入口/初始化协调

index.html: 1608行 → 204行纯模板
2026-04-03 11:34:24 +08:00