feat(chatter): 整合工具使用并增强主聊天流程中的上下文

此提交为聊天系统引入了若干重大增强,以提高回应质量、上下文感知能力和角色一致性。

**Kokoro 流程中的工具整合:**
- 在主聊天提示中新增了一个 `tool_info` 上下文块。
- `KFCContextBuilder` 现在通过 `ToolExecutor` 执行工具后再生成回复,使聊天模型能够感知实时信息和操作。

**以角色为驱动的用户画像:**
- `update_user_profile` 工具被重构为两阶段过程。工具使用模型提供一个简单的“印象提示”,专门的 `relationship_tracker` 模型将其扩展为丰富且符合角色的一致印象。
- 工具使用提示已更新,明确指示模型在生成工具参数时保持机器人的角色。

**记忆系统改进:**
- 记忆检索判定提示已更新,更加主动地获取长期记忆,目标是为了提供更丰富的上下文。- 记忆查询现在从最近的一组消息中生成,而不是单条消息,从而提高检索的相关性。**其他更改:** - 在上下文构建过程中添加了性能时间日志,以识别瓶颈。- 在响应过滤中进行了小修复,以清理特定前缀,如“,说:”。
This commit is contained in:
tt-P607
2025-12-03 14:04:29 +08:00
parent 9a5ae357b5
commit 39c52490d9
9 changed files with 345 additions and 48 deletions

View File

@@ -65,6 +65,12 @@ def init_tool_executor_prompt():
- 避免重复调用历史记录中已执行的工具(除非参数不同)
- 优先考虑使用已有的缓存结果,避免重复调用
**🎭 重要:保持人设一致性**
你在填写任何工具参数时,都要以"{bot_name}"的身份和视角来写:
- 涉及"印象""感受""评价"类的参数,要用符合你人设的语气和表达方式
- 不要用客观冷漠的AI口吻要像一个真实的人在记录对朋友的感受
- 你的人格特质会影响你对他人的看法,请体现出来
**历史记录说明:**
- 上方显示的是**之前**的工具调用记录
- 请参考历史记录避免重复调用相同参数的工具
@@ -220,8 +226,9 @@ class ToolExecutor:
all_tools = get_llm_available_tool_definitions(self.chat_id)
# 获取基础工具定义(包括二步工具的第一步)
# 工具定义格式为 {"name": ..., "description": ..., "parameters": ...}
tool_definitions = [
definition for definition in all_tools if definition.get("function", {}).get("name")
definition for definition in all_tools if definition.get("name")
]
# 检查是否有待处理的二步工具第二步调用
@@ -230,6 +237,10 @@ class ToolExecutor:
# 添加第二步工具定义
tool_definitions.extend(list(pending_step_two.values()))
# 打印可用的工具名称,方便调试
tool_names = [d.get("name") for d in tool_definitions]
logger.debug(f"{self.log_prefix}当前可用工具 ({len(tool_names)}个): {tool_names}")
return tool_definitions