Commit Graph

120 Commits

Author SHA1 Message Date
AskaEth 87214b9441 feat: Phase 1+2 架构进化 — 连续思考链/主动消息决策/情感状态机/离线自主思考 (86文件)
Phase 1 (基础设施):
- ThinkChain 思考链连续性 + 差异化思考提示词 (persistent)
- AutonomousToolPolicy 工具安全策略 (safe/unsafe/conditional)
- MessageScheduler 自适应消息节奏 (Idle/Available/Busy)
- SessionEnrichmentStore 渐进式上下文丰富 (5层)
- ConversationBus 事件总线 + ResponseCache (dedup)
- pkg/logger 统一日志 + 所有 handler 替换 fmt.Printf
- NPE 守卫/链路优化/数据库表修复/Go workspace

Phase 2 (人格交互):
- EmotionState/EmotionTracker 情感状态机 (5种心情, 情绪衰减)
- ProactiveGuard 主动消息多维决策 (静默时段/紧急度/频率/校验)
- Gateway↔ai-core 在线状态感知链路 (presence notification)
- 离线思考频率控制 + 重连问候 + 离线消息排队

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 15:25:12 +08:00
AskaEth b123a36aae fix: 第四轮调试 — 回复去重/消息时序/UI布局/自主思考深度优化 + 文档重整
后端修复:
- main.go: 恢复 /api/v1/chat 路由中丢失的 handleChat 调用 (空响应回归)
- orchestrator.go: splitChatByLines 改为双换行分割, 避免单换行误拆
- chat_handler.go: multi_message 增加 !hasReview 守卫, 消息延迟 200→800ms
- thinker.go: RecordUserMessage 追踪活跃会话ID, 推送主动消息到正确会话
- thinker.go: 增强思考提示词 — 禁止在用户休息/离开时发送主动消息

前端修复:
- useWebSocket.ts: stream_segments 不再创建消息气泡, 消除重复回复
- MessageBubble.tsx: 动作消息居左对齐无头像, 时间戳移至气泡外侧 hover 显示
- ChatInput.tsx: 昔涟输入提示移至输入框上方, 波点动画效果
- MessageList/TypingIndicator/ChatContainer: 清理冗余 isTyping 传递
- MemoryPanel.tsx: 新增记忆面板组件

文档重整:
- docs/debug/ → docs/debug_log/ 重命名统一
- 新增 debug_log/README.md 索引
- .gitignore: 新增 android/ 排除规则

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 13:09:18 +08:00
AskaEth 0c1bbff7b4 fix: 修复历史消息重复和[review]标记残留
- 移除 fullText 中的 "[review]" 调试标记
- 有审查消息时不再重复保存完整文本到数据库
- 清理已有脏数据

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 10:59:09 +08:00
AskaEth 31be1b71eb fix: 前端消息拆分+动作消息样式+DevTools自主思考状态保持+记忆表名修复
- 侧边栏底部 "昔涟 AI" 改为 "昔涟"
- 暂时禁用消息朗读按钮
- 修复前端 response 处理器:支持 gateway 发送的 content+role+msg_type 字段,
  使动作消息(括号内容)正确拆分为独立的 ActionMessageBubble 显示
- 修复 DevTools 自主思考面板:5秒自动刷新后展开的思考日志不再自动折叠
- 修复 memory-service 表名不一致:memory_entries → memories,
  解决 DevTools 记忆管理页面查不到 admin 用户记忆的问题
- 修复 sessionStore 解析历史消息时 msgType 未定义引用

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 10:50:42 +08:00
AskaEth 26a5c69aba docs: Round 5-6最终汇总报告 + E2E测试脚本补充
- 新增第5-6轮修复最终汇总报告 (全系统E2E验证 + 性能数据)
- 新增多设备IoT E2E测试脚本 (test_multi_device.mjs)
- 新增综合E2E测试脚本 (test_final_e2e.mjs)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 23:08:38 +08:00
AskaEth 498bf0d4fa fix: IoT快速通道补充关掉/关上 + 多设备上下文窗口扩展至30字节
- intent_analyzer: isStrongIoTCommand controlWords新增"关掉""关上"
- iot_provider: 操作检测上下文窗口±15→±30字节,新增全文回退逻辑
- 修复多设备命令中远处关键词无法匹配导致操作误判为query

E2E: "关掉"快速通道2.57s 多设备同时开关 8设备查询

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 23:01:45 +08:00
AskaEth a67b95cbc4 fix: IoT多设备支持 + Review Pipeline审查消息 + 意图分析快速通道优化
- IoT Provider: 重写Execute()支持多设备命令批量执行,修复persona路径
- Intent Analyzer: 新增isStrongIoTCommand快速通道,跳过LLM分析节省2-3s
- Orchestrator: parseReviewMessages()内联审查 + 快速通道扩展(chat/greeting跳过子会话)
- Gateway: SSE review_messages解析→WebSocket结构化消息转发(action/chat)
- Persona: 对话风格注入action格式指令(括号包裹动作描述)
- Frontend: sessionStore历史消息msgType映射
- 新增E2E测试脚本 + 调试标准文档 + 第4轮修复报告

E2E验证: IoT设备操控 Review消息拆分 快速通道 响应时间~3.4s

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 22:51:27 +08:00
AskaEth 773f19f009 fix: DevTools 读取 .env 管理员凭据 + 统一 main.go 密码 fallback
两个问题导致用户无法用 .env 中的管理员账户登录:
1. DevTools 未读取 backend/.env,始终传 admin/cyrene-dev-admin 给 gateway
2. gateway main.go 中创建管理员时独立读取 os.Getenv 并以 "admin123"
   为 fallback,与 config.go 的 cfg.AdminPassword 不一致

修复:
- config.js: 启动时加载 backend/.env 到 process.env (不覆盖已有环境变量)
- main.go: 移除独立的 os.Getenv 读取,统一使用 cfg.AdminPassword

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 22:01:30 +08:00
AskaEth 7c3b428257 fix: 前端 API 调用改为相对路径,通过 Vite 代理避免 CORS
前端 5 个文件中硬编码了 http://localhost:8080 绝对路径,
浏览器从 127.0.0.1:5173 访问时触发 CORS 预检失败。
改为相对路径 /api/v1/... 通过 Vite 代理转发,
WebSocket URL 改为动态构造(基于当前页面 host)。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 21:51:56 +08:00
AskaEth 8bbde1c1d7 fix: 统一数据库默认密码 change_me → cyrene_pass
Docker Compose 和 .env 使用 cyrene_pass,但 5 个 Go 源码文件
和 DevTools config.js 中的 fallback 密码仍是 change_me,
导致 memory-service/tool-engine/gateway 启动后 DB 认证失败。
修复 7 个文件中的硬编码 fallback 密码,统一为 cyrene_pass。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 21:27:56 +08:00
AskaEth ccd59db5b8 fix: DevTools auto npm install for frontend on Windows
Two-part fix for frontend startup failure:
1. Check .package-lock.json as install-complete marker instead of
   just node_modules directory existence, and delete corrupt
   node_modules before reinstalling
2. Bypass npm.cmd batch file on Windows — use node with full path
   to npm-cli.js to avoid module resolution conflicts when cwd
   contains a node_modules directory

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 21:18:08 +08:00
AskaEth e4d2eab9ad fix: DevTools Windows兼容性修复 + 日志UI重构 (7服务并排显示)
- process-manager: 移除ESM中的require(), 跨平台spawn(.exe/.cmd), path.dirname修复
- config: 自动检测Go二进制路径, Windows构建产物使用.exe后缀
- index: 移除SSH隧道代码, 改用Docker容器检查数据库状态
- index.html: 日志默认并排网格布局, 7个服务横向滚动, 数据库面板改用Docker控制
- docs: 更新Migration.md启动顺序(7服务+DevTools自动编译), README添加Windows用法

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 21:05:07 +08:00
AskaEth 697ed72db4 feat: 新增 devtools.bat Windows 启动脚本
与 devtools.sh 功能对等,纯 ASCII 编写避免编码问题。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 20:18:24 +08:00
AskaEth e06456954c docs: 修正 README 许可证为 Apache-2.0
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 20:07:48 +08:00
AskaEth 2f0267d639 docs: 优化 README 标题和描述措辞
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 20:05:38 +08:00
AskaEth 8c19b79a02 docs: 新增 README + 更新 Deploy.md + 整理 .gitignore
- 新增 README.md 完整项目概览(架构、功能、快速开始)
- 更新 Deploy.md 修正过时的服务状态和端口信息
- 整理 .gitignore 补充缺失规则并移除无效项

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 19:59:47 +08:00
AskaEth e83f28d646 docs: add Linux to Windows migration guide and packaging script 2026-05-22 12:32:55 +08:00
AskaEth 9e7ada1ec3 docs: 最终汇总报告 - Cyrene系统修复完成 (三轮修复共47文件, E2E 24/24全绿) 2026-05-22 12:19:14 +08:00
AskaEth e78d0b2fef fix: 第三轮调试 - CDP E2E v5 24/24全绿 + 测试脚本完善
- 新增CDP E2E v5测试脚本(24项测试覆盖聊天/IoT/记忆/消息持久化)
- 修复IoT API字段兼容(status/state双字段支持)
- 消息持久化验证改为WS路径(架构确认AI-Core直连SSE不走Gateway存储)
- 日志文件路径修正为devtools/logs/
- 测试结果JSON和截图保存到debug/logs/chromium/
2026-05-22 12:12:58 +08:00
AskaEth b15e1c9541 fix: 第二轮深度调试修复 - useSpeechSynthesis守卫+NPE防护+E2E测试完善
- P0: useSpeechSynthesis.ts cancel()增加isSupported守卫
- P0: iot_provider.go 添加loader nil检查防止NPE panic
- 新增CDP E2E v4测试脚本 14项全绿通过
- 生成第二轮修复报告 docs/debug/2026-05-21-round2-fixes.md
2026-05-22 00:10:37 +08:00
AskaEth a058b0ab8e fix: 第一轮修复 - 记忆管理/IoT操控/历史消息持久化/动作消息/链路优化/安全配置
- 修复记忆管理数据库连接不可用 (ai-core重编译+Unicode修复)
- 修复IoT子会话工具调用链路日志缺失
- 新增最终审查子会话(review_provider) 支持消息格式解析拆分
- 实现历史消息持久化(后端存储+前端分页加载)
- 前端新增动作消息(ActionMessage)类型和渲染
- 优化对话链路速度(非阻塞子会话+快速问候通道)
- JWT密钥环境变量化(无默认值启动panic)
- Token自动刷新机制(401拦截器+refresh接口)
- WebSocket指数退避重连(jitter+最大10次)
- localStorage清理一致性(cyrene_前缀+版本检查)
- IoT环境变量统一为IOT_SERVICE_URL
2026-05-21 23:10:07 +08:00
AskaEth 8b7d4ec19a fix(frontend): 修复 speechSynthesis.cancel() 未守卫导致的页面崩溃 2026-05-21 19:06:40 +08:00
AskaEth 380cc24913 fix(security): 修复 P0 安全漏洞 (Session越权+CORS白名单+用户名枚举) 2026-05-21 16:12:54 +08:00
AskaEth 702d4ee1fe chore: 重新编译 gateway + 添加第11轮 API 契约测试报告
第11轮诊断发现运行中 gateway 二进制严重过时(5月17日编译),
导致面板API路由缺失、认证逻辑不完整等问题。
重新编译并重启后问题解决。

修复过程:
- 重新编译 gateway (go build)
- 启动 SSH 数据库隧道
- 重启 gateway 连接 PostgreSQL
- 管理员登录正常,user_id 返回 'admin'
- 所有面板 API (files/knowledge/automation/sessions/briefings) 均 200

报告: docs/debug/2026-05-21-round11-api-contract.md (10个问题, 25/56通过)
2026-05-21 14:44:05 +08:00
AskaEth b2ff70ede2 fix: 修复聊天界面 UI 布局 — 输入框被挤出 + 通知被裁剪
问题1: ChatInput/IoTStatusBar 被推到屏幕底部
- ChatContainer.tsx: MessageList 父级改为 flex flex-col,
  IoTStatusBar 加 flex-shrink-0
- App.tsx: ChatInput 加 flex-shrink-0

问题2: 通知下拉面板被 overflow-hidden 裁剪
- AppLayout.tsx: overflow-hidden 从 Header 父级移到 <main>
2026-05-20 22:49:46 +08:00
AskaEth 1fc2b41d36 fix: 将管理员 user_id 从动态 admin_{username} 改为固定 admin
根因:admin user_id 由 admin_ + req.Username 动态拼接,
当 .env 中 ADMIN_USERNAME 更改时,新登录会生成不同的 user_id,
导致旧会话成为孤儿且消息历史不可见。

修复方案 (Plan A):
- auth_handler.go: Login 时 userID 固定为 admin
- auth.go: IsAdminKey 从 HasPrefix(admin_) 改为 == admin
- chat_handler.go: 主对话管理员检查改为 userID == admin
- memory_handler.go: 3处 admin_ 前缀检查改为 == admin
- briefing_handler.go: 3处 admin_ 前缀检查改为 != admin
- sessionStore.ts: isAdminUser 从 startsWith 改为 ===
- MessageBubble.tsx: UserAvatar 管理员判断改为 ===
- main.go: 添加旧管理员用户清理逻辑 (ListUsers+DeleteUser)
- user_store.go: 新增 ListUsers 和 DeleteUser 函数
- ai-core/main.go: adminUserID 从 admin_admin 改为 admin
- memory-service/store.go: 默认 user_id 改为 admin
- memory-service/memory_service.go: 默认 UserID 改为 admin
- devtools/src/index.js: URL 参数 user_id=admin

验证: Go build 通过 (gateway/ai-core/memory-service),
tsc --noEmit 通过, vite build 通过
2026-05-20 22:13:21 +08:00
AskaEth 76ef31e153 fix: 修复白屏 — SW networkFirst + initSession try/catch + Error Boundary
1. sw.js: /index.html 导航请求使用 networkFirst 策略替代 cacheFirst,
   避免旧 SW 缓存不存在的旧 hash 资源导致 404 白屏
2. App.tsx: initSession 添加 try/catch 异常保护,防止初始化
   失败导致整个 React 树崩溃
3. 新建 ErrorBoundary.tsx: React 错误边界组件,捕获渲染异常
   显示友好错误页面而非白屏
2026-05-20 21:29:37 +08:00
AskaEth 4058aae1e4 fix: 修复对话页面白屏 — SW 注册缺失导致缓存冲突
根因: 提交 20cdcc7 删除了 main.tsx 中的 SW 注册代码,声称 App.tsx
会调用 registerServiceWorker(),但实际未调用。旧 SW (cyrene-v1) 的
cache-first 策略拦截请求返回不兼容缓存,导致 React 白屏。

修复:
- App.tsx: 在组件挂载时调用 registerServiceWorker()
- sw.js: CACHE_NAME 升级到 cyrene-v2 强制清理旧缓存,增加 SKIP_WAITING
- main.tsx: 修正注释
2026-05-20 20:12:46 +08:00
AskaEth 20cdcc748e fix: round 10 critical fixes - WebSocket race, rate limiting, XSS protection, Caddyfile, and input validation 2026-05-20 17:59:22 +08:00
AskaEth a5b5713b29 docs: add round 9 debug report - config audit and comprehensive summary 2026-05-20 15:42:28 +08:00
AskaEth 9c9f54ab9a docs: add round 8 debug report - Docker, PWA, and WebSocket deep audit 2026-05-20 15:31:13 +08:00
AskaEth d71e7b4c83 docs: add round 7 debug report - E2E scenarios and cross-service data flow 2026-05-20 15:22:00 +08:00
AskaEth 692c1844bc docs: add round 6 debug report - performance benchmarks and code quality audit 2026-05-20 15:04:22 +08:00
AskaEth 7daa8a9b23 docs: add round 5 debug report - security audit and boundary testing 2026-05-20 14:53:57 +08:00
AskaEth d239b958df docs: add round 4 debug report - sub-services and database integrity 2026-05-20 14:37:40 +08:00
AskaEth 3adf0137cc fix: 第3轮调试Bug修复 (P1: 弱随机+crypto/rand, Knowledge键对齐; P2: 简报created_at, CORS+安全头) 2026-05-20 14:20:47 +08:00
AskaEth 25d6eff7c3 fix: 种子用户日志和密码配置化 + 第2轮调试文档 2026-05-20 14:02:09 +08:00
AskaEth 9dd1582987 fix: 创建users表 + 用户认证系统 (REG1) — 第1轮调试修复
新增 user_store.go 实现 users 表自动建表和 CRUD
注册使用 bcrypt 哈希密码存入 users 表
登录从 users 表查询用户并验证密码
启动时自动种子 admin/admin123 用户
调试文档: docs/debug/2026-05-20-round1-regression-verification.md
2026-05-20 13:52:12 +08:00
AskaEth 4b35736f73 fix: 修复19个Bug (P0-P3) — 持续性调试第7轮发现的问题
P0 (5): crypto/rand session ID, TTS fallback可达性, goroutine defer recover, adminAuth前缀修正
P1 (5): 普通用户密码验证, context传递, priority clamp, 超时重试, 自主思考速率限制
P2 (4): Briefing AI降级, 前端消息类型渲染, Docker Compose补全, PWA 192图标
P3 (5): goroutine错误处理, .gitignore完善, reminder created_at, voice Dockerfile, Go版本更新
2026-05-20 13:30:32 +08:00
AskaEth baaf90fc47 fix: 添加.gitignore规则排除编译产物 + 添加10轮持续调试报告
- 排除 voice-service/main, main2, voice-svc-new (各8.5MB)
- 排除 gateway/cmd/gateway (15MB)
- 添加 docs/fixes/2026-05-19-round7-continuous-debugging-report.md
  10轮持续调试汇总: 19个Bug (5 P0, 5 P1, 4 P2, 5 P3)
2026-05-20 12:02:02 +08:00
AskaEth 121eebebbb feat(devtools): add memory-service & tool-engine management, fix .gitignore
- Add memory-service and tool-engine to devtools config (ports, env, healthUrl)
- Add GOWORK=off to process-manager build for Go workspace compatibility
- Update DB check and startup order to include new services
- Add backend/tool-engine/main to .gitignore for Go binary
2026-05-19 21:48:39 +08:00
AskaEth 26a61cb57c feat: 第四轮大版本更新 — 修复4个严重Bug、2个UI Bug,实现自主思考重构与主-子会话架构
## 🐛 Bug 修复
- 修复前端对话无响应:消除 ChatContainer 中的双重 WebSocket 连接,优化 sendMessage 失败提示
- 修复 Memory-Service 数据库迁移失败:ai-core 和 memory-service 均添加 ALTER TABLE ADD COLUMN IF NOT EXISTS 模式演化
- 修复语音/STT 不可用:添加 MediaRecorder API 降级方案,修复 whisper-cli 输出文件名错误
- 修复仪表盘数据库按钮失效:补充按钮 ID 属性,重写 controlDB() 控制逻辑

## 🎨 UI 修复
- 修正用户消息头像位置:从 flex-row-reverse 改为 justify-end
- 移除空聊天列表的 emoji 占位图标

##  新功能
- devtools 新增 STT 处理日志面板(环形缓冲区 + WebSocket 广播 + 可视化表格)
- 新增 ADMIN_NICKNAME 环境变量,支持自定义管理员昵称

## 🔧 改进
- 注册流程增加昵称必填字段(前后端同步)

## 🏗️ 架构重构
- 重构自主思考逻辑:从定时器轮询改为事件驱动(对话后触发 + 静默检测),优化提示词使其更自然人性化
- 实现主-子会话架构:新增 4 种子会话类型(general/memory/iot/knowledge),意图分析 → 并行分发 → 结果合成流程

## 📄 新增文档
- docs/architecture/main-session-sub-session-design.md — 子会话架构设计文档
2026-05-19 21:09:48 +08:00
AskaEth bcf4d4e621 feat: 第五轮开发 - 14项未来路线图功能完整实现
W1-W14 全部完成:
- W1: 消息搜索 (ILIKE全文检索 + SearchModal)
- W2: 对话导出 (JSON/Markdown/TXT三格式)
- W3: 记忆时间线 DevTools 可视化
- W4: 通知推送系统 (WebSocket + Browser Notification API)
- W5: 定时提醒 (30s轮询 + 重复提醒 + WebSocket推送)
- W6: 每日简报 (08:00自动生成: 天气+新闻+提醒+AI摘要)
- W7: IoT场景自动化 (规则引擎 10s轮询 + 条件评估 + 场景执行)
- W8: 语音输入 (浏览器 Speech Recognition API)
- W9: STT服务 (voice-service + whisper.cpp)
- W10: TTS服务 (浏览器 Speech Synthesis + edge-tts三档回退)
- W11: 文件管理 (上传/下载/缩略图/纯Go bilinear缩放)
- W12: 知识库RAG (PostgreSQL tsvector + 文档分块 + 检索)
- W13: 多模态 (图片上传+分析: Vision API + 本地Go分析回退)
- W14: PWA (Service Worker + 离线页 + install prompt)

总计: 6个Go微服务 + 10+前端组件 + 10+ PostgreSQL表 + 4个后台调度器
2026-05-19 12:01:09 +08:00
AskaEth 78e3f450c2 feat: Round 5 - Memory Service, Tool Engine, Call Records, Thinking Logs
- Fix: Session history flash (race condition + WS guard)
- Fix: Chat background overlay + sidebar transparency
- Fix: IoT device control (Chinese action names, status field)
- Feat: Independent memory-service (port 8091, 13 endpoints)
- Feat: Independent tool-engine service (port 8092, 13 tools)
- Feat: Tool call logs with paginated DevTools panel
- Feat: Thinking log records with DevTools panel
- Feat: Future development roadmap document
- Chore: Updated .gitignore, go.work, DevTools config
- Chore: 5-service health check, project review docs
2026-05-18 20:05:14 +08:00
AskaEth b6ec36886c feat: 第四轮功能增强 - LLM 思维记忆优化、DevTools 记忆UI、9个新工具、5分钟自我思考
- 优化 LLM 思维方式和记忆方法(类别/重要性/关键词/相似度合并/衰减)
- DevTools 记忆查询 UI 重新设计(类别筛选/排序/星标/搜索)
- 新增 9 个 LLM 工具:calculator, datetime, file_ops, http_request, json_ops, text, random, crypto, markdown
- 管理员主对话 5 分钟自我思考增强(工具调用/记忆提取/记忆维护)
2026-05-18 12:13:49 +08:00
AskaEth 07781eda0e fix: 管理员登录安全修复 + 第三轮测试报告
1. 修复管理员登录密码错误时静默降级为普通用户的安全漏洞
2. 添加第三轮端到端测试总结文档
2026-05-17 21:42:01 +08:00
AskaEth 2a61a4c69f fix: add user avatar images 2026-05-17 21:11:25 +08:00
AskaEth d00a8313ad fix: 第三轮修复 — 前端Session切换、DevTools UI刷新保持、头像背景替换
1. 修复前端清空对话无反应 (clearMainSessionMessages 链路)
2. 修复清除所有对话后侧边栏残留 + 重复新增按钮
3. 修复侧边栏点击无法切换会话 (Zustand 竞态 + URL hash)
4. 修复 URL 不显示 session ID (hash 同步链)
5. DevTools 会话监看刷新保持展开/折叠状态
6. 首页性能仪表盘去重 + 资源使用卡片 60s sparkline
7. DevTools 全局刷新改为 DOM 局部增量更新
8. 替换前端昔涟头像、聊天背景、用户头像为实际图片
9. 修复图片文件名 (双.png + 目录拼写)
2026-05-17 20:32:42 +08:00
AskaEth e7b7eff0d8 fix: 第二轮修复 — 数据库启动检查、会话持久化、URL路由、设备排序等
1. DevTools 启动前检查数据库状态,失败时自动尝试启动
2. ai-core 添加数据库断线重连机制 (30秒间隔)
3. Dashboard 添加数据库状态卡片 (启动/停止/重启)
4. Gateway 会话空闲超时管理 (30分钟标记空闲)
5. 会话/消息 PostgreSQL 持久化 (SessionStore + REST API)
6. 前端服务端会话持久化 + URL hash 路由 + 侧边栏管理
7. 管理员回到主对话按钮
8. IoT 设备卡片固定排序
9. 更新相关文档
2026-05-17 17:18:02 +08:00
AskaEth 745b1c6aad fix: 修复AI在查询设备时误调用控制工具的问题
- iot_control: 工具描述添加明确约束,仅在用户明确要求控制时调用
- iot_query: 提示LLM设备状态已注入系统提示词,减少不必要查询
- context builder: 设备状态标题提示LLM无需调用工具查询
2026-05-17 15:55:43 +08:00