318 Commits
Author SHA1 Message Date
莣仔 d49f4769d4 修复websocket与uvicorn版本不兼容问题 2026-09-21 16:56:28 +08:00
guo zebinandClaude Opus 4.7 8b6c2b4cb6 release: bump 版本号到 v4.8.1
- 两个 Logo 更新版本号文字到 v4.8.1
- fay.iss / fay-legacy.iss MyAppVersion 4.4.4 -> 4.8.1

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-07 11:57:36 +08:00
guo zebinandClaude Opus 4.7 74b49ae41c refactor: 大小模型逻辑重构 + 单模型模式 + 多处优化
核心改动(大小模型重构):
- 删死代码约 750 行:LangGraph 工作流、本地知识库、ltp_mode、nlp_cemotion、__check_and_clear_chroma_db、QAService Persona/command 分支
- 命名修复:planner -> judge(闲聊判断器)
- 删除 80 字兜底核实和 kb_search 硬编码优先
- 新增单模型模式:未配置 big_model_engine 时同步执行工具循环
- 重写 docs/Prompt设计文档.md

其他改动:
- 配置中心 URL 更换为 124.220.24.49:5500
- recorder.py 录音非 16kHz 时重采样到 16kHz
- fay_booter.py 远程音频连接健壮性修复(recv 空字节/异常退出/socket 关闭/心跳批量清理)
- mcp_service.py 修复(_serialize_mcp_result 递归序列化、add_mcp_server 用 new_id、werkzeug 多线程替代 gevent)
- remote_audio_key0.py 按键通话自动开关唤醒词
- 打包默认配置加 big_model_*/embedding_* 字段,system.conf.bak 统一 asr_mode
- 新增 packaging/ 打包脚本、fay.spec、samples/、requirements-legacy.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-06 19:23:44 +08:00
莣仔 2462bd269e Update README.md 2026-06-18 17:14:05 +08:00
莣仔 c65cc7ffa8 文字接口稳定性优化 2026-06-18 17:07:29 +08:00
莣仔 55ea14e828 9001远程语音连接优化 2026-05-29 17:18:36 +08:00
guo zebin 45498c5fac 补传 2026-04-27 10:31:50 +08:00
guo zebin 713124ac39 feat: 记忆流加 tags + 新增 core/memory_service + MCP 暴露记忆工具
- ConceptNode/MemoryStream 增加 tags 字段,retrieve 支持 AND/OR tag 过滤
- reflect() 从源节点继承业务 tag,自动打 kind:insight / source:fay_reflection
- 新增 core/memory_service.py 作为记忆操作唯一权威入口,规范 kind 枚举与命名空间
- faymcp/mcp_server.py 暴露 7 个 memory_* 工具,进程内直调服务层
- 画像分析 prompt 新增"与 Fay 的关系"维度,字数上限 800→1000
2026-04-24 16:37:00 +08:00
guo zebin 4d288d95f8 更新system.conf配置示例 2026-04-20 14:06:12 +08:00
guo zebin aac50f3c85 修复日程管理mcp服务 2026-04-17 17:10:46 +08:00
guo zebin 0810692602 Merge branch 'main' of https://github.com/xszyou/Fay 2026-04-17 16:47:55 +08:00
guo zebin 0dbc4cfb35 fix: GUI 输入框回车发送会多带一个换行
改用 keydown.enter.exact.prevent:在换行写入前拦截并发送,
Shift+Enter 仍可手动换行。
2026-04-17 16:44:15 +08:00
guo zebin bf910fd3f0 feat: MCP 服务器支持开机自启
- 新增 autostart 字段与后端增删改接口
- 启动时后台自动连接所有 autostart=true 的服务器
- 卡片列表展示「开机启动」徽标,添加/编辑弹窗支持勾选
2026-04-17 16:39:31 +08:00
guo zebin 3a44d03bbe fix: 核实路径解耦 kb_search 硬编码 + 防重复工具调用 + 小模型角色澄清
- 核实路径不再硬编码 kb_search,改由大模型基于 unverified_response 自行规划
  核实工具;执行器新增核实模式 prompt 块,强制先调工具再 finish
- 工具查重改为全历史扫描(原先只看最后一次),拦截 A→B→A→B 交替绕过;
  已完成工具输出截断从 300 字放宽到 1500 字,避免残缺信息诱发重调
- 大模型输出解析统一走 _extract_decision(支持 JSON/混合文本/XML tool_call)
- 小模型 planner prompt 新增角色说明:告知其后台有核实大模型,过渡语由系统
  插入,不要自己编 "我来查一下""等等核实一下" 等过程描述
2026-04-17 15:39:37 +08:00
guo zebinandClaude Opus 4.6 5758f63263 fix: 降低核实触发的用户消息长度阈值(>5 → >3)
短语气词如"哈哈""好的"(≤3字)不触发大模型核实,避免无意义开销;
稍长的提问(>3字)仍正常触发核实流程。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 07:22:35 +08:00
guo zebinandClaude Opus 4.6 79305266a8 feat: LLM透传接口支持 model=llm 自动使用配置模型
调用 /v1/chat/completions 时 model=llm 自动替换为 system.conf 中的 gpt_model_engine,
/v1/models 列表同步增加 llm 虚拟模型

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 21:16:30 +08:00
莣仔 cd013b3e50 Update recorder.py
修复funasr识别句子完成没执行问题。
2026-04-15 17:05:54 +08:00
guo zebinandClaude Opus 4.6 416266a22f fix: 修复流式 code fence 解析 + 核实误触发 + 核实回复泄露分析过程
1. 流式阶段剥离 markdown code fence(```json...```),兼容包裹 JSON 的模型
2. _strip_json_code_fence 正则修复(\s → \s)
3. 核实触发增加用户消息长度前置判断,短语气词(哈哈、嗯等)不触发核实
4. 核实 prompt 明确要求只输出最终回复,禁止输出分析过程

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 12:02:06 +08:00
guo zebinandClaude Opus 4.6 552176b5d3 fix: 修复反思 KeyError 和用户画像表不存在错误
1. reflect() 中 retrieve 返回空字典时安全处理,避免记忆为空时 KeyError
2. get_all_users() 查询前确保 T_Member 表存在,防御数据库被清空的情况

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 11:36:37 +08:00
guo zebinandClaude Opus 4.6 79bb2494e1 feat: 知识库搜索增强 + 大小模型上下文对齐 + 工具调用体验优化
1. 知识库搜索增强:查询端不拆复合词 + 最低分阈值10.0 + 课程级标题匹配分 + embedding混合评分(通过Fay透传,异步建索引不阻塞MCP)
2. 大小模型上下文对齐:规划器和执行器都注入完整上下文(人设、记忆、对话历史10轮),keyword提取防指代性搜索词
3. 工具调用体验优化:流式早期tool检测 + on_tool_detected回调立即推送过渡语,避免用户空等
4. 大模型执行链路日志:LLM工厂、后台线程启动、决策调用、返回结果全链路可观测

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 22:56:08 +08:00
guo zebinandClaude Opus 4.6 c5eaf88c76 feat: MCP Resources 支持 + OpenAI 接口透传 context_length + Logo 更新至 v4.4.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:26:50 +08:00
guo zebinandClaude Opus 4.6 30e35a8f1d fix: 核实 prompt 默认立场改为确认优先,避免强行否定正确回答
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:25:34 +08:00
guo zebinandClaude Opus 4.6 bf6de49f7c feat: 大小模型协作架构 + MCP Resources + embedding 自愈
1. 增加大小模型支持,交互用小模型、执行用大模型
2. Fay 的 MCP 体系支持 Resources 协议,课程知识的目录结构自动注入 LLM prompt
3. OpenAI 兼容接口透传 context_length
4. 增强运行过程的 embedding 的自愈机制

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 17:07:21 +08:00
guo zebinandClaude Opus 4.6 62f272d915 feat: 增强 OpenAI 兼容接口能力
1. 新增 /v1/models 接口,返回 fay 自身模型及上游 LLM 模型列表
2. 非 fay/fay-streaming 的 model 请求直接透传上游 LLM,不再限制 model=llm
3. 支持通过请求体 user 字段或 Authorization Bearer 值识别用户身份

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 16:06:52 +08:00
guo zebin 4968b41bf9 Update README.md 2026-04-12 10:14:37 +08:00
guo zebinandClaude Opus 4.6 2cc7b720eb fix: 修复记忆线程持锁阻塞导致的对话死锁
记录对话/观察记忆的后台线程在 agent_lock 内调用了 LLM 评分与
embedding 网络请求;一旦上游 OpenAI 客户端因 chunked/keep-alive
不发字节而永久挂起(无 timeout 配置),agent_lock 永远不会释放,
后续 question() 在 create_agent() 处获取同一把锁时即被锁死,整个
对话流程会卡死(曾观察到 release 机器 5 小时无响应)。

修复:
- memory_stream.append_prepared_node:新增纯内存写入入口,由调用方
  传入预先算好的 importance 与 embedding。
- remember_conversation_thread / remember_observation_thread:将
  generate_importance_score 与 get_text_embedding 移出 agent_lock,
  失败时回退默认值/空向量,仅在写 seq_nodes 时短暂持锁。
- simulation_engine.gpt_structure:openai.OpenAI() 显式配置
  httpx Timeout(60s, connect=10s) 与 max_retries=1,避免无限挂起。
- nlp_cognitive_stream.ChatOpenAI:补充 timeout=60、max_retries=1。
- save_agent_memory:节流判断与标记文件检查移出锁,先短暂持锁拿
  用户名快照,再逐用户独立持锁保存,避免长时间锁住整个 agents。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-12 10:13:01 +08:00
guo zebin 4e297b10fb 更新知识库 2026-04-11 01:03:55 +08:00
guo zebinandClaude Opus 4.6 0805de14f1 docs: think 标签课程包升级到 v1.1.0
同步 commit 3638c7b 的修复:S04 重写为「数字人 10002:text 与 audio 的对称剥离」,
讲清楚旧 bug(__send_digital_human_message 早于 think 状态机被调用且只剥 prestart)
与新增 __remove_think_tags 的修复方案;S06 总结的清洗矩阵补上 10002 双通道剥离行。
顺带调整幻灯片版面,避免底部内容被遮挡。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 19:08:02 +08:00
guo zebinandClaude Opus 4.6 3638c7b4b6 fix: 数字人 text 通道剥离 think 标签内容
__send_digital_human_message 在 say() 中先于 think 状态机被调用,导致 <think>...</think>
原样泄露到 10002 端口的 text 通道;audio 通道虽被状态机拦截但 text 不对称。
新增 __remove_think_tags 处理完整/未闭合/孤立闭合三种流式分片场景,使 prestart
与 think 在数字人接口上保持对称剥离。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:47:35 +08:00
guo zebin 4e4682c190 补传 2026-04-10 17:34:39 +08:00
guo zebinandClaude Opus 4.6 d767f58e2c chore: 更新 Logo 版本号至 v4.4.2
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:32:01 +08:00
guo zebinandClaude Opus 4.6 a8b49a4b15 feat: 接入课程知识库 MCP server
- 新增 mcp_servers/fay_player_knowledge:基于课程包目录的检索 MCP server,search/get_section 输出含图片 markdown
- 新增 fay_player_knowledge 课程包目录(Fay介绍/多用户分发/think标签/prestart标签/OfficeEcho)
- faymcp/data/mcp_servers.json:注册 stdio 方式启动的「课程知识库」server

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:20:20 +08:00
guo zebinandClaude Opus 4.6 f657f436ac feat: 聊天图片在GUI显示并推送到数字人接口
- fay_core: 提取消息中的 markdown 图片 URL,通过 Images 字段推送到 10002 数字人text/audio通道,并从语音朗读文本中剥离图片语法
- gui: 调整 markdown-body img 缩略样式;修正 convertImagePaths 正则,避免误匹配 HTTP URL 的路径部分

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 17:15:30 +08:00
guo zebinandClaude Opus 4.6 abed043184 feat: 添加多选消息分享图功能及优化Markdown实时渲染
- 新增多选消息生成分享图功能,支持markdown渲染效果,带Fay开源地址水印
- 使用html2canvas替代SVG foreignObject方案,兼容QWebEngineView
- 优化流式消息的markdown实时渲染,流式结束后从DB重取完整内容
- 添加cache_bust防止QWebEngineView缓存旧JS/CSS文件

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 21:43:24 +08:00
guo zebin ca54e3c4f9 修复广播MCP的SSE响应异常 2026-04-03 14:45:46 +08:00
guo zebin 6ec3339abd Fix llm passthrough tool-call proxying 2026-04-03 08:17:11 +08:00
guo zebinandClaude Opus 4.6 28b1862d06 fix: WAV文件唇型数据生成失败,标准化采样率为44100Hz
阿里云TTS改为WAV格式后,生成的音频采样率为16kHz,
ProcessWAV.exe要求44100Hz导致viseme输出为空、嘴巴不动。
新增normalize_wav()方法对WAV文件做采样率标准化。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-02 14:42:10 +08:00
guo zebin 9c09b5fff4 解决release 上mcp服务不可用问题。 2026-04-01 23:49:30 +08:00
guo zebin 07e5a7455f Update gzh.png 2026-04-01 23:47:10 +08:00
guo zebinandClaude Opus 4.6 0ce07eddd7 更新Logo版本号到v4.4.1
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 23:17:43 +08:00
guo zebinandClaude Opus 4.6 b671dfa6e4 TTS合成前去除文本中的换行符
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 23:16:46 +08:00
guo zebinandClaude Opus 4.6 341881affa 为SSE MCP服务响应声明charset=utf-8编码
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-01 23:08:50 +08:00
guo zebinandClaude Opus 4.6 0c9a30063f 修复流式分句在小数点处错误切断的问题(如0.85%被切成两段)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 10:45:58 +08:00
guo zebinandClaude Opus 4.6 75f094218b 1.ali tts请求格式由mp3改为wav;2.修复Content-Type匹配过严导致语音合成失败的问题
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 14:39:28 +08:00
guo zebinandClaude Opus 4.6 9a2db40d18 1.精简默认MCP服务器配置:移除broswermcp、Todo Server、KinEcho、easydeal-trading;2.yueshen rag启动命令改为通用python
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-27 10:59:03 +08:00
guo zebin 7869121dfe 1.解决mcp工具在release上不可用的问题。 2026-03-26 16:25:21 +08:00
guo zebin c79ea62f0e 1.更新说明。 2026-03-25 22:19:01 +08:00
guo zebin 1d7563209a 1.数字人接口增加数字人指定动作、表情等输出;
2.更换群二维码。
2026-03-25 22:18:00 +08:00
guo zebinandClaude Opus 4.6 4e85827068 统一GUI实时显示时间与数据库存储时间
问题:GUI实时显示时间由客户端生成,数据库存储时间由服务端独立生成,
页面刷新后时间不一致。

修复:
1. createtime 存储精度从秒级改为毫秒级
2. add_content 返回 (content_id, now_ms) 元组
3. update_content 更新内容时同步更新 createtime,返回毫秒时间戳
4. panelReply 统一使用数据库写入时的时间戳格式化后发送给前端
5. 前端优先使用服务端 timetext,保证实时与刷新后完全一致
6. flask_server 加载历史消息时兼容旧秒级和新毫秒级时间戳
7. 新增 util.ms_to_timetext() 工具函数

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 21:20:36 +08:00
guo zebinandClaude Opus 4.6 eeabe421a2 在对话prompt中补充用户画像,统一"用户补充信息"标题
1. system_prompt 中新增用户画像内容(通过 get_user_portrait 获取),
   规划器和最终回复两个 prompt 均自动包含
2. "补充信息"标题统一改为"用户补充信息"(prompt 和 GUI)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 17:37:05 +08:00