llm-context.py 解决方案概述
llm-context.py
是一款旨在简化AI模型上下文管理的MCP工具,它能帮助开发者快速将代码或文本项目的相关内容注入到大型语言模型(LLM)的聊天界面中。该工具利用.gitignore
模式进行智能文件选择,并提供简化的命令行剪贴板工作流,从而实现与LLM的无缝集成。
其核心价值在于,通过基于Markdown规则的系统,llm-context.py
支持智能代码大纲生成和定义实现提取,让LLM能够更好地理解代码库结构。它还支持可定制的模板和提示,优化了与Claude Projects和Custom GPTs等持久上下文界面的交互。通过MCP协议,llm-context.py
可与Claude Desktop原生集成,或通过CLI与任何LLM聊天界面配合使用,显著提升AI辅助开发的效率和质量。该工具尤其适用于需要将项目上下文传递给AI模型的开发者,从而实现更深入的代码审查、文档生成等任务。
llm-context.py 核心能力
智能文件选择与过滤
llm-context.py
的核心功能之一是其智能文件选择机制,它利用 .gitignore
模式来确定哪些文件应该包含在 LLM 的上下文中。这意味着开发者可以像管理 Git 仓库一样,通过 .gitignore
文件指定忽略的文件和目录,llm-context.py
会自动排除这些内容,避免将不必要或敏感的信息泄露给 LLM。这种方式简化了上下文构建过程,减少了手动选择文件的工作量,并确保只有与当前任务相关的文件才会被包含。例如,在一个包含构建目录、测试文件和文档的 Python 项目中,.gitignore
可以排除 __pycache__
、*.pyc
、docs/build
等目录和文件,从而只将源代码和关键配置文件提供给 LLM。
基于规则的上下文定制
llm-context.py
采用基于 Markdown (+ YAML front matter) 的规则系统,允许开发者根据不同的用例定制上下文的生成方式。通过定义不同的规则,可以控制哪些文件被包含、如何格式化以及包含哪些提示信息。这种灵活性使得开发者可以针对代码审查、文档生成、问题解答等不同任务,创建优化的上下文。例如,可以创建一个规则,只包含特定目录下的文件,并添加一个提示,要求 LLM 专注于代码风格的改进;或者创建一个规则,包含所有 Markdown 文件,并添加一个提示,要求 LLM 总结文档内容。这种定制能力极大地提高了 LLM 在特定任务中的表现。
代码大纲与定义提取
llm-context.py
提供了代码导航功能,包括智能代码大纲和定义实现提取。智能代码大纲允许 LLM 查看代码库的高级结构,自动生成突出显示重要定义的大纲,帮助 LLM 快速理解代码的整体架构。定义实现提取功能则可以根据 LLM 的请求,粘贴特定定义的完整实现,方便 LLM 深入了解代码的细节。例如,当 LLM 询问某个函数的作用时,可以使用 lc-clip-implementations
命令提取该函数的完整实现,并将其提供给 LLM,从而帮助 LLM 更准确地理解代码的意图。这些功能增强了 LLM 对代码的理解能力,提高了代码审查和调试的效率。
MCP集成与LLM原生交互
llm-context.py
通过模型上下文协议(MCP)与 LLM 进行直接集成,特别是与 Claude Desktop 的原生集成。这种集成允许开发者通过简单的命令,将项目上下文直接发送到 LLM,无需手动复制和粘贴。通过在 claude_desktop_config.json
中配置 MCP 服务器,可以实现 LLM 与本地文件系统的无缝连接。例如,当 Claude 询问关于项目的信息时,可以直接说“我想使用我的项目 /path/to/your/project”,Claude 将自动加载项目上下文,并根据上下文回答问题。这种集成简化了 LLM 的使用流程,提高了开发效率。
命令行工具与剪贴板工作流
llm-context.py
提供了一套完整的命令行工具,支持剪贴板工作流,方便与任何 LLM 聊天界面配合使用。通过 lc-init
初始化项目配置,lc-sel-files
选择要包含的文件,lc-context
生成并复制上下文,可以快速地将项目信息提供给 LLM。当 LLM 请求其他文件时,可以使用 lc-clip-files
处理 LLM 的文件请求,并将内容粘贴回 LLM。例如,在一个代码审查场景中,可以使用 lc-changed
列出自上次上下文生成以来修改的文件,然后使用 lc-context
生成包含这些修改的上下文,并将其粘贴到 LLM 聊天界面中,以便 LLM 对代码进行审查。这种命令行工具和剪贴板工作流使得 llm-context.py
可以与各种 LLM 平台集成,提高了使用的灵活性。