项目简介

Chatwerk 提供与 QueryPackwerk gem 的 AI 工具集成。它实现了一个 Model Context Protocol (MCP) 服务器,允许像 Cursor IDE 这样的 AI 工具以标准化的方式访问关于您的 Ruby Packwerk 包、依赖关系和违规情况的信息。这使得 AI 能够更好地理解您的 Ruby 项目结构并回答相关问题。

主要功能点

  • 列出所有包 ('packages' 工具): 查询并列出项目中的所有 Packwerk 包,支持通过部分路径进行筛选。
  • 获取包详情 ('package' 工具): 获取特定 Packwerk 包的详细信息,包括其配置、显式依赖项、引用该包的消费者包、以及该包的待处理项和违规项数量。
  • 查询包的待处理项 ('package_todos' 工具): 查找特定包中代码对其他包造成的依赖边界违规。可以仅列出违规常量及其计数,也可按常量名称筛选并查看详细的代码使用示例和文件位置。
  • 查询包的违规项 ('package_violations' 工具): 查找其他包中的代码对特定包造成的依赖边界违规。可以仅列出违规常量及其计数,也可按常量名称筛选并查看详细的代码使用示例和文件位置。
  • 环境信息 ('print_env' 工具): 获取 MCP 服务器当前的工作目录和环境变量信息,以帮助确保 AI 工具在正确的上下文环境中运行。

安装步骤

在开始使用 Chatwerk 之前,请确保您的 Ruby 项目已经安装并配置了 'QueryPackwerk' gem。

  1. 添加到 Gemfile: 如果您正在使用 'packwerk' 管理的应用程序,可以在其 Gemfile 中添加 Chatwerk:
    $ bundle add chatwerk
    $ bundle install
  2. 全局安装 (可选): 或者,您也可以单独安装 Chatwerk gem:
    $ gem install chatwerk

服务器配置 (供 MCP 客户端使用)

MCP 客户端(例如支持 MCP 的 AI IDE,如 Cursor IDE)需要配置服务器的启动命令。以下是供 MCP 客户端配置的信息,您可以在客户端的设置中添加:

  • 名称 (Name): 'chatwerk' (这是 MCP 服务器在客户端中的标识符)
  • 命令 (Command): 'chatwerk mcp' (启动 Chatwerk MCP 服务器的命令行指令)
  • 参数 (Args): '[]' (此服务器启动时不需要额外的命令行参数)
  • 工作目录 (Working Directory): (通常默认为 MCP 客户端启动时的项目根目录。如果需要,您可以在客户端设置中指定一个相对路径或绝对路径,以确保服务器在正确的项目上下文中运行)
  • 传输协议 (Transport Protocol): 'stdio' (Chatwerk 服务器默认使用标准输入输出 (Stdio) 协议与客户端通信)

基本使用方法 (连接到 Cursor IDE)

以下是使用 Chatwerk 连接到支持 MCP 的 AI IDE (例如 Cursor) 的基本步骤:

  1. 在 Cursor 中打开设置: 在 Cursor IDE 中,导航到 'Settings > MCP'。

  2. 添加新的 MCP 连接: 点击“添加新的 MCP 连接”或类似选项,并按照上述“服务器配置”部分填写相关信息。

    • Name: 'chatwerk'
    • Command: 'chatwerk mcp'
    • Arguments: 留空或 '[]'
  3. 开始提问: 连接成功后,您就可以在 Cursor 中向 AI 提出关于您的 Packwerk 项目结构的问题。AI 将调用 Chatwerk 提供的工具来获取信息并为您提供答案。

    示例查询:

    • "What are all the packages in this codebase?" (询问代码库中所有 Packwerk 包的列表)
    • "Tell me about the dependencies of package X" (了解包 X 的依赖关系)
    • "What packages depend on package Y?" (查询哪些包依赖于包 Y)
    • "Show me all the violations for package Z" (显示包 Z 的所有依赖违规情况)
    • "How difficult would it be to separate package X from its dependencies?" (评估将包 X 从其依赖项中分离的难度)
    • "What code patterns are used to access Constant on package Y?" (询问包 Y 上的常量使用了哪些代码模式进行访问)

信息

分类

开发者工具