会话(持久内存)

AnyLLM 包含一个强大的会话功能,可将您的 AI 助手转变为真正的持久配对程序员。它赋予 AI 动态的、长期的记忆,使其能够在多次运行之间记住您项目的情境、您过去的交互,甚至适应它对您代码库的理解。

会话为何如此强大

想象一下处理一个复杂的功能。如果没有会话,每次重新启动 AnyLLM 时,AI 都会从头开始,需要您重新解释项目和当前任务。有了会话,AI 可以:

  • 记住对话:回忆之前的讨论、问题和答案。
  • 理解项目状态:知道您最近读取或修改了哪些文件。
  • 适应您的焦点:根据您当前的查询动态调整其对代码库的视图。

这意味着更少的重复、更快的解决问题以及更自然、连续的工作流程。

工作原理:智能情境

当会话模式启用时,AnyLLM 会在您的项目根目录中创建一个隐藏的 .anyllm 目录。在该目录中,它会存储 project_context.json 文件,其中包含了您交互的丰富、JSON 结构化摘要。每当您在会话模式下启动 AnyLLM 时,此情境都会被加载,从而为 AI 提供对项目当前状态和历史的全面理解。

此智能情境的关键组成部分包括:

  • 动态项目地图 (repo_map):这不仅仅是一个静态文件树。根据您当前的查询和最近的活动,AnyLLM 会智能地生成一个聚焦的项目视图。不相关的目录会被折叠(例如,node_modules/ (1200 个文件)),而相关的部分会被展开,从而为 AI 提供与您的任务相关的文件的简洁而详细的概述。
  • 代码高亮 (code_highlights):对于动态地图识别出的最相关文件,AnyLLM 会提取并提供其中关键符号(类、函数)的摘要。这使 AI 能够立即了解代码结构,而无需读取整个文件。
  • 对话历史:您过去提示和 AI 响应的详细日志,允许 AI 从您上次中断的地方继续。
  • 跟踪文件:记录已读取或修改的文件,帮助 AI 理解您最近的工作。
  • 执行命令:记录终端命令,提供有关之前操作的情境。

启用会话

您可以通过两种方式启用会话模式。

1. 使用 --session 标志

使用 --session 命令行标志启动应用程序:

./anyllm --session

这对于按命令临时启用会话非常有用。

2. 使用 anyllm.json

对于希望始终启用会话的项目,您可以在 anyllm.json 文件中添加一个参数:

{
  "session": true,
  "provider": {
    // ... 您的提供商配置
  }
}

设置 "session": true 将使会话模式成为该项目的默认模式。

使用示例

想象一下以下工作流程:

第一次运行:分析文件

./anyllm --session
> 分析文件 @src/Domain/Agent/BaseAgent.php 并告诉我它的用途。

AI 读取文件并为您提供摘要。然后您退出。此交互的情境被保存。

第二次运行:回忆情境

您稍后打开一个新的终端。

./anyllm --session
> 根据我们刚才讨论的文件,建议一个新方法添加到其中。

由于会话已保存,AI 记得您正在谈论哪个文件,并可以提供相关的建议,而无需您再次指定文件。