项目简介 CodeTide 是一个专注于本地、隐私保护的代码智能平台,通过符号和结构化分析来理解Python和TypeScript代码库。它不依赖互联网、LLMs、嵌入模型或向量数据库,提供快速、可解释且确定性的代码智能。CodeTide 可以作为 MCP 服务器运行,无缝集成到AI代理和工具工作流中,使其能够动态地与代码库交互,高效检索上下文并执行代码修改。

主要功能点

  • 本地化与隐私保护: 所有代码解析和查询都在本地机器上完成,确保代码不会离开您的环境。
  • 结构化代码解析: 利用Tree-sitter进行代码库的结构化解析,支持Python和TypeScript(Beta)。
  • 精确代码片段检索: 通过符号ID而非向量相似性,检索相关代码片段。
  • 项目架构可视化: 可视化您的项目的体系结构和层级关系。
  • AI代理集成 (MCP 服务器): 作为 MCP 服务器运行,允许AI代理调用工具来获取代码上下文、探索仓库结构,并应用代码修改。
  • 代码修改与补丁: 支持通过补丁(patch)机制对代码进行添加、删除、移动和更新,确保修改的原子性和可控性。
  • 快速缓存与智能更新: 提供快速、可缓存的解析,并能智能检测代码更新。

安装步骤

  1. 安装 Python 环境: 确保您的系统已安装 Python 3.10 或更高版本。
  2. 通过 pip 安装 CodeTide:
    pip install codetide --upgrade
  3. 安装 AgentTide 模块 (可选,用于Agent UI): 如果您希望使用 AgentTide 的UI界面,请安装 'agents-ui' 额外依赖:
    pip install "codetide[agents-ui]"

MCP 服务器配置 要将 CodeTide 配置为 MCP 客户端可连接的服务器,您需要在客户端的服务器配置文件中添加以下 JSON 条目(例如,如果使用 'aicore' 客户端框架):

{
  "mcpServers": {
    "codetide": {
      "command": "uvx",
      "args": [
        "--from",
        "codetide",
        "codetide-mcp-server"
      ],
      "env": {
        "CODETIDE_WORKSPACE": "./"
      },
      "description": "CodeTide MCP服务器,用于检索代码上下文和探索仓库结构。它提供了 'getContext' 和 'getRepoTree' 工具,并支持通过 'applyPatch' 修改文件。"
    }
  }
}
  • 'codetide': MCP 服务器的唯一名称。
  • 'command': 启动 MCP 服务器的命令,这里使用 'uvx' 工具。
  • 'args': 传递给 'uvx' 命令的参数,指定从 'codetide' 包启动 'codetide-mcp-server'。
  • 'env': 环境变量配置,'CODETIDE_WORKSPACE' 指定 CodeTide 服务器将操作的根项目路径。请将 './' 替换为您的项目实际路径。
  • 'description': 服务器的描述,帮助客户端理解其功能。

基本使用方法 配置完成后,MCP 客户端即可通过 JSON-RPC 协议与 CodeTide MCP 服务器通信,并调用其暴露的工具。

1. 初始化LLM并添加CodeTide MCP服务器: (假设您使用类似 'aicore' 的框架)

from aicore.llm import Llm, LlmConfig
from codetide.mcp import codeTideMCPServer
import os

def init_llm() -> Llm:
    # 示例: 配置一个LLM模型
    llm = Llm.from_config(
        LlmConfig(
            model="deepseek-chat",
            provider="deepseek",
            temperature=0,
            api_key=os.getenv("DEEPSEEK-API-KEY") # 确保您的环境变量已设置
        )
    )
    # 将CodeTide MCP服务器添加到LLM提供商
    llm.provider.mcp.add_server(name=codeTideMCPServer.name, parameters=codeTideMCPServer)
    return llm

# 调用示例
if __name__ == "__main__":
    my_llm_with_codetide_context = init_llm()
    # 您的LLM现在可以调用CodeTide提供的工具了
    print(f"LLM已成功集成CodeTide MCP服务器: {my_llm_with_codetide_context.provider.mcp.get_server('codetide').name}")

2. 调用 MCP 服务器工具: CodeTide MCP 服务器提供了以下核心工具供 MCP 客户端(如 AI 代理)调用:

  • 'getContext(code_identifiers: List[str], context_depth: int = 1)':

    • 用途: 根据提供的代码标识符(如类名、函数名或文件路径)检索其完整的代码上下文。
    • 参数:
      • 'code_identifiers': 要检索的代码元素的唯一标识符列表。例如:'['module.ClassName', 'src/file.py:functionName']'
      • 'context_depth': 上下文的检索深度。0表示仅获取标识符本身,1(默认)表示包含直接引用,2及以上表示递归引用。
    • 示例: AI代理可以调用此工具来获取特定函数或类的代码,以便进行修改或分析。
  • 'getRepoTree(show_contents: bool, show_types: bool = False)':

    • 用途: 生成代码仓库的视觉树状结构表示。此操作开销较大,建议每个任务仅调用一次。
    • 参数:
      • 'show_contents': 设置为 'True' 时,会在文件中包含类、函数和变量等详细内容。
      • 'show_types': 设置为 'True' 时,会在条目前添加类型代码(如 F=函数, V=变量, C=类, A=属性, M=方法)。
    • 示例: AI代理可以调用此工具来理解项目结构,然后决定需要关注哪些文件或模块。
  • 'applyPatch(patch_text: str)':

    • 用途: 应用结构化的 diff 样式补丁,以添加、删除、移动或修改代码文件。
    • 参数:
      • 'patch_text': 遵循特定 diff 格式(例如 '*** Begin Patch', '*** Update File:' 等)的补丁文本。
    • 示例: AI代理在生成了代码修改方案后,可以调用此工具将修改应用到实际文件系统中。

信息

分类

开发者工具