mirror of
https://github.com/xszyou/Fay.git
synced 2026-11-03 04:41:27 +08:00
记录对话/观察记忆的后台线程在 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>