• 项目简介: Decy是一个高品质的C语言到Rust语言的转译器,旨在将现有的C项目(如CPython、Git、NumPy、SQLite)转换为安全、地道的Rust代码,同时最大限度地减少'unsafe'代码的使用。它采用极端测试驱动开发(TDD)和丰田生产方式原则,确保代码质量和正确性。Decy不仅提供强大的转译功能,还集成了MCP服务器,为LLM客户端(如Claude Code)提供上下文服务和工具调用能力。

  • 主要功能点:

    1. C-to-Rust 代码转译: 将C语言文件或整个C项目转译为高质量、安全的Rust代码。
    2. 高级所有权和生命周期推断: 通过复杂的分析将C指针转换为Rust的引用('&T'/'&mut T')、'Box'或'Vec',极大降低'unsafe'代码比例。
    3. 代码质量保证: 遵循严苛的质量标准,包括高测试覆盖率、变异测试分数,并确保零警告。
    4. 项目级转译和依赖管理: 支持整个项目的文件级转译、依赖追踪和缓存优化,显著提升大型项目处理效率。
    5. 交互式调试器: 提供C AST、HIR、所有权图的可视化,以及转译过程的交互式步进调试。
    6. Unsafe代码审计: 分析生成的Rust代码中的'unsafe'块,提供可消除的建议。
    7. MCP服务器集成: 作为MCP服务器运行,向LLM客户端暴露转译、分析和代码建议等功能,实现AI驱动的代码集成。
  • 安装步骤: Decy的安装过程已高度自动化,旨在实现可复现性。

    1. 克隆仓库:
      git clone https://github.com/paiml/decy.git
      cd decy
    2. 一键安装所有依赖: 运行以下命令,它将自动安装Rust工具链、LLVM/Clang开发库以及所有必要的系统依赖项和Rust工具。
      make install
    3. 验证安装:
      ./scripts/verify-setup.sh
    4. 构建和测试 (可选):
      make build
      make test
  • 服务器配置 (用于MCP客户端): Decy提供了一个MCP服务器端点,用于与支持Model Context Protocol的LLM客户端(如Claude Code)进行集成。MCP客户端可以通过以下JSON-RPC配置信息连接到Decy MCP服务器:

    {
      "server_name": "Decy Transpiler MCP Server",
      "command": "decy",
      "args": ["mcp-server", "--port", "3000"],
      "description": "连接到Decy的MCP服务器,提供C-to-Rust转译、代码分析和重构建议工具。"
    }
    • 'server_name': 服务器的显示名称,方便识别。
    • 'command': 启动Decy MCP服务器的可执行命令。
    • 'args': 启动命令的参数列表。
      • 'mcp-server': 告诉Decy启动MCP服务器模式。
      • '--port': 指定服务器监听的端口号,例如'3000'。
    • 'description': 对该MCP服务器功能和用途的简要说明。

    MCP服务器启动后,将通过JSON-RPC协议监听指定端口,并提供以下工具供LLM客户端调用:

    • 'transpile_file': 转译单个C文件为Rust。
    • 'transpile_function': 转译C函数为Rust。
    • 'analyze_ownership': 分析C指针所有权,推断Rust所有权模式。
    • 'suggest_refactoring': 针对C代码提供安全的Rust重构建议。
    • 'verify_safety': 验证生成的Rust代码的安全属性。
    • 'generate_book': 生成验证报告书。
  • 基本使用方法:

    1. 启动MCP服务器:
      decy mcp-server --port 3000
      服务器将在后台运行,等待来自LLM客户端的连接和请求。
    2. 通过MCP客户端交互: 在您的MCP客户端中配置上述JSON信息,连接到Decy MCP服务器。连接成功后,您可以通过客户端调用服务器提供的'transpile_file'、'analyze_ownership'等工具。例如,您可以让LLM客户端请求Decy服务器转译一个C文件,或分析其内存所有权模式。

信息

分类

开发者工具