46 Commits

Author SHA1 Message Date
AskaEth 6ef9e082a6 feat: 语音流式输入管线 + VAD前端集成 + 插件-工具合并清理
- 前端: VAD语音检测(@ricky0123/vad-web) + useVoiceInput双模式(流式WS/REST)
- Gateway: VoiceStreamManager代理WS流式STT到voice-service
- Voice-service: DashScope REST → Realtime WS → Whisper三级引擎 + ffmpeg转码
- 共享模块: pkg/audio(音频转换) + pkg/dashscope(ASR REST客户端)
- 清理: 移除旧plugin-manager和pkg/plugins,完成插件→工具合并
- 文档: 完善gateway-api.md和voice-service.md语音API文档
- 工具: scripts/voice/ 语音转换脚本集

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-06 11:50:40 +08:00
AskaEth 46441335c0 refactor: 统一 .env 配置 — 合并 backend/.env + .docker.env 到根目录
- Go 服务 godotenv.Load("../.env") → godotenv.Load("../../.env")
- ethend.sh/config.js 读取路径改为根目录 .env
- 删除 .docker.env.example 和 backend/.env.example,统一为 .env.example
- Docker compose 默认读取根 .env,无需 --env-file
- 同步更新全部文档

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 10:12:54 +08:00
AskaEth 43d256e197 docs: docker-compose.yml 架构详解 — 分层设计、启动序列、运行时状态
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 09:56:14 +08:00
AskaEth 365f5ceb2f refactor: DevTools → ethend 重命名 + 加入生产环境
- 目录 devtools/ → ethend/
- CLI 脚本 devtools.sh/.bat → ethend.sh/.bat
- 环境变量 DEVTOOLS_PORT → ETHEND_PORT
- docker-compose.yml 新增 ethend 服务(生产部署)
- 同步更新全部文档、注释和配置文件

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 09:32:36 +08:00
AskaEth 14771556fd feat: Caddyfile 支持环境变量 — DOMAIN/ACME_EMAIL 通过 .docker.env 配置
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 09:13:04 +08:00
AskaEth 3a1287dd24 feat: Docker 部署完整环境变量 — 不再依赖 backend/.env
docker-compose.yml 新增 ADMIN_PASSWORD/INTERNAL_SERVICE_TOKEN 等关键变量,
.docker.env.example 覆盖所有可配置项,确保容器内各服务启动不 panic。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 09:10:50 +08:00
AskaEth 6a83624579 chore: 从仓库移除 docs/debug_log/ — 调试日志不进版本管理
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 09:04:00 +08:00
AskaEth 77d12aefa6 docs: Docker Compose 生产部署指南 + OS 环境配置文档
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 08:49:07 +08:00
AskaEth 22d7b91cb1 feat: Gateway 消息排队机制 — 同会话串行化处理
同一 session 的消息按顺序处理:当前回复未完成时新消息进入队列,
完成后自动消费下一条。避免并发请求导致上下文竞争和响应交错。
客户端收到 type:"queued" 时可显示排队状态。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 21:06:59 +08:00
AskaEth 80dad9a018 docs: 更新动作消息格式为 XML 标签 + 图片 file_id 引用
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 19:28:09 +08:00
AskaEth c4de813629 fix: XML动作标签 + 意图分析上下文 + 图片file_id引用
- 动作消息改用 <action>...</action> XML 标签(注入器 + 解析器 + 测试)
- 括号解析保留为降级方案,确保向后兼容
- 意图分析传入最近对话历史,防止短追问误判为 iot_query
- 意图提示词强化:短追问明确归为 question,iot_query 需设备名词
- 图片附件支持 file_id 轻量引用(Gateway FileStore 解析 + 上传端点复用)
- API 文档更新:附件新格式 + 图片传递链路

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 19:27:25 +08:00
AskaEth 91c9ee4b2d fix: 修复 AI 回复无法送达发送者 + 重复消息 + action角色泄露 + OS环境支持
广播逻辑重构:
- AI 回复 (stream_start/response/stream_segments/multi_message/stream_end) 改用 broadcastToUser 发送给所有客户端
- 用户消息回显保持 broadcastToUserExcept 排除发送者

消息去重与角色修复:
- CacheMessage(user) 移至回复生成后,避免本轮 LLM 调用出现重复用户消息
- action 角色消息在 DB 存储时映射为 assistant,DeepSeek 等模型不支持自定义角色
- stream_end defer 机制确保错误路径也会终止客户端思考指示器

OS 完整环境支持:
- host 包重构为 HostBackend 接口 + Direct/WSL/Docker 三种后端
- 新增 os_exec/os_file/os_system 工具供 AI 在完整 Linux 环境中自由操作

其他:
- 视觉模型注入 + 图片预处理后清空 Images 避免传给 Chat 模型
- 图片 URL 相对路径→绝对 URL 转换
- DevTools 链路追踪页面 + 重启修复
- 记忆搜索模糊匹配增强
- 后台思考定时调度支持
- 管理后台页面 (模型配置/用户管理等)
- docs/api 更新广播机制说明

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 12:46:17 +08:00
AskaEth ee3c851d17 docs: 清理 tool-engine 残留引用 + 更新架构文档与 README
- Migration.md: 移除 tool-engine 编译/启动/验证 4 处引用
- 架构分析: 移除 Tool Engine :8092 图示和端口表行,更新 msg_type 限制说明
- README: 统一插件数量为 15

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 12:46:23 +08:00
AskaEth 24f827fe02 feat: 富文本消息类型支持 — Markdown/代码块安全渲染 + 审查解析器
添加 review_parser.go 从 LLM 输出中提取 Markdown 和代码块,创建独立
ReviewMessage 类型 (markdown/code/search_result)。前端新增安全 Markdown
渲染器 (HTML 转义优先),代码块以深色背景+语言标签展示。Markdown/代码
类型禁止断句拆分,避免格式损坏。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 21:57:09 +08:00
AskaEth 9f3b0f386d docs: 更新 tool-engine 移除后的文档引用
- tool-engine.md: 迁移至 AI-Core (8081),更新为内存环形缓冲区字段
- devtools.md: 移除 tool-engine 服务引用,更新启动顺序和代理路由
- architecture-analysis.md: Section 3.4 重写为 pkg/plugins 工具系统

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 21:39:46 +08:00
AskaEth b14d267642 feat: SearXNG 搜索集成 + DevTools Docker + PG 备份 + 文档更新
- web_search 工具/插件接入自托管 SearXNG,支持百度/必应/搜狗/360搜索
- DevTools 加入 docker-compose.dev.yml,devtools/Dockerfile
- scripts/pg-backup.sh 数据库备份恢复脚本,docs/pg-backup-migration.md
- 后台思考 + datetime 插件时区默认 Asia/Shanghai
- docker-compose 对齐 volume 名称,清理 tool-engine 残留引用
- README.md / Deploy.md 更新至当前架构(移除简报/tool-engine,新增搜索/跨端同步/DevTools)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 20:36:38 +08:00
AskaEth 2574f60823 feat: 后端统一消息类型分类 + 更新 API 文档
msg_type 现在由后端在所有消息路径上自动填充,前端无需解析内容猜测类型。
- chat_handler: SendSystemMessage → system_info, parseMultiMessage 返回 proactiveSegment{msgType}
- protocol: MultiMessageItem 增加 MsgType 字段
- useWebSocket: 所有 handler 直接读取 msg_type,移除前端类型推断
- docs/api/gateway-api.md: 文档化 msg_type 分类机制,移除已删除的每日简报章节

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 12:35:13 +08:00
AskaEth 673ff752c5 feat: 插件-工具合并 — 创建 pkg/plugins 共享模块并移除 tool-engine
- 新增 backend/pkg/plugins/ 共享模块:SDK 接口、PluginManager、ToolRegistry(含环形缓冲区调用日志)
- 13 个通用插件从 plugin-manager 迁移至共享模块(import 路径统一)
- ai-core 切换至共享 ToolRegistry,进程内执行(零网络开销),包装 6 个专属工具
- plugin-manager 迁移至共享模块,保留管理 REST API
- 新增 DevTools 插件管理面板(侧边栏 → 🔌 插件管理)
- 移除 tool-engine 服务(从 go.work、DevTools 配置、编译系统)
- 工具调用记录 API 从 Tool-Engine 迁至 AI-Core(/api/v1/tools/calls)
- ai-core ContextStore 启动时从 PostgreSQL 恢复会话历史
- 清理所有过时引用和备份文件

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 20:52:39 +08:00
AskaEth 271a3a048d fix: DevTools 仪表盘平均请求延迟显示进程运行时间而非实际请求耗时
- performance.js: 新增 recordLatency/getAverageLatency, 用 HTTP 请求环缓冲区替换 pidusage elapsed
- index.js: 新增 Express 中间件追踪每个请求耗时
- index.html: 移除前端 elapsed-based fallback 计算

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:37:25 +08:00
AskaEth 7eb5e984c2 refactor: 认证系统重构 + DevTools CLI 重写 + 文档全面更新
- auth: Login 简化为管理员始终通过 .env 验证,GetProfile 修正 admin DB 查询
- devtools: .sh/.bat 同步重写为完整 CLI (start/stop/status/logs/build/db:*)
- docs: 新增 devtools.md,重写 Deploy.md (三种方式+Windows说明),更新 README/gateway-api
- voice-service: DashScope 实时流式 STT 支持
- gateway: Phase 6 多模型配置 + 多端客户端管理 + WebSocket 增强

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 14:55:47 +08:00
AskaEth 83e94d9e97 feat: 新增 GET /api/v1/profile 用户信息查询接口,支持前端凭据查询当前用户
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 14:00:35 +08:00
AskaEth 70f8b30d04 docs: 添加完整 API 文档 — Gateway 统一文档 + 后端服务文档
新增 docs/api/gateway-api.md:面向客户端开发的网关 API 统一文档,覆盖全部 16 个模块。
新增 docs/api/backend-services/:后端服务详细文档 (ai-core, memory-service, voice-service, iot-debug, tool-engine)。
更新 .gitignore:docs/api/ 例外允许推送,其他 docs/ 内容仍忽略。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 12:39:55 +08:00
AskaEth 965cce7192 feat: Phase 4 多平台接入 — Platform Bridge + 6平台适配器 + 身份权限系统 (22文件, 2129行)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 16:19:57 +08:00
AskaEth 717ad65b05 feat: Phase 3 插件与工具系统 — Plugin SDK + Plugin Manager + 13内置插件 (40文件, 3293行)
- Plugin SDK: Plugin/Tool/ComplexTool/HostAPI 标准化接口
- Plugin Manager: 插件生命周期管理 (Install/Enable/Disable/Uninstall/Reload)
- Tool Registry: 聚合工具注册表 (Register/Execute/Dispatch)
- 13 个内置插件: 将原有硬编码工具迁移为标准插件格式
- REST API: 11 个端点 (net/http, 零外部依赖)
- ai-core 集成: PluginManagerClient 替代本地工具调用
- plugin.json 元数据: 每个插件含完整 author/version/category/permissions

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 15:50:19 +08:00
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 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 9e7ada1ec3 docs: 最终汇总报告 - Cyrene系统修复完成 (三轮修复共47文件, E2E 24/24全绿) 2026-05-22 12:19:14 +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 8b7d4ec19a fix(frontend): 修复 speechSynthesis.cancel() 未守卫导致的页面崩溃 2026-05-21 19:06:40 +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 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 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 0e21d8fb76 chore: docs 2026-05-16 08:30:22 +08:00
AskaEth eb4129176c dev 分支暂存 2026-05-16 08:26:56 +08:00