Hacker News 中文摘要

RSS订阅

Claude代码IDE与Emacs集成 -- Claude Code IDE Integration for Emacs

文章摘要

Claude Code IDE for Emacs 是一个为 Emacs 提供 Claude Code CLI 原生集成的工具,通过 Model Context Protocol (MCP) 实现双向通信,使 Claude 能够在 Emacs 中更好地运行。

文章总结

Claude Code IDE for Emacs 集成工具

概述
Claude Code IDE for Emacs 通过 Model Context Protocol (MCP) 实现了与 Claude Code CLI 的原生集成。与简单的终端封装不同,该工具在 Claude 和 Emacs 之间建立了双向桥梁,使 Claude 能够理解并利用 Emacs 的强大功能,包括 LSP、项目管理以及自定义 Elisp 函数。这使得 Claude 成为一个真正与 Emacs 兼容的 AI 助手,能够在现有工作流程中无缝运行,并与整个 Emacs 生态系统进行交互。

主要功能
- 自动项目检测和会话管理:Claude Code IDE 能够自动识别当前项目,并为每个项目创建独立的会话。 - 终端集成:支持 vtermeat 终端,提供完整的颜色支持。 - MCP 协议实现:通过 MCP 协议实现 IDE 集成,Claude 可以直接访问 Emacs 的功能。 - 工具支持:支持文件操作、编辑器状态和工作区信息的管理。 - 可扩展的 MCP 工具服务器:允许访问 Emacs 命令,如 xrefs、tree-sitter 和项目信息。 - 诊断集成:与 Flycheck 和 Flymake 集成,提供代码诊断功能。 - 高级差异视图:与 ediff 集成,支持代码变更的差异查看。 - Tab-bar 支持:支持上下文切换。 - 选择和缓冲区跟踪:增强上下文感知能力。

Emacs 工具集成
Claude Code IDE 通过 MCP 工具集成,使 Claude 能够充分利用 Emacs 的功能,包括: - 语言服务器协议 (LSP):通过 xref 命令实现智能代码导航。 - Tree-sitter:用于语法树分析,理解代码的 AST 结构。 - Imenu:用于文件内的符号列表和导航。 - 项目集成:支持项目感知操作。 - 自定义 Elisp 函数:可以将任何 Emacs 命令或函数暴露为 MCP 工具,Claude 可以执行项目范围的搜索、重构,访问特定模式的功能,并执行自定义 Elisp 函数。

安装与使用
- 前提条件:需要 Emacs 28.1 或更高版本,以及已安装的 Claude Code CLI。 - 安装步骤:通过 use-packagestraight.el 安装该包,并配置相关命令。 - 基本命令:通过 M-x claude-code-ide-menu 打开交互式菜单,访问所有可用命令。

多项目支持
Claude Code IDE 自动检测项目,并为每个项目创建独立的 Claude Code 实例。用户可以同时运行多个 Claude Code 实例,并通过 claude-code-ide-list-sessions 查看和切换会话。

窗口管理
Claude Code IDE 支持窗口的显示与隐藏,窗口可以通过标准 Emacs 命令关闭,而不会停止 Claude 的运行。

配置
用户可以通过配置变量自定义 Claude Code IDE 的行为,包括终端后端、窗口位置、调试模式等。此外,还可以自定义缓冲区命名、CLI 标志和系统提示。

调试
Claude Code IDE 支持 CLI 调试模式和 Emacs 调试日志,用户可以通过调试缓冲区查看 WebSocket 消息和 JSON-RPC 通信。

多实例支持
通过 git worktrees,用户可以在同一项目的不同分支上运行多个 Claude Code 实例,每个工作树被视为独立项目。

MCP 工具
Claude Code IDE 内置了多种 MCP 工具,如 xref-find-referencestreesit-info 等,用户还可以自定义 MCP 工具,将 Emacs 功能暴露给 Claude。

许可证
该项目采用 GNU General Public License v3.0 或更高版本授权。

相关项目
- Claude Code CLI - Claude Code VS Code Extension - claudecode.nvim - Neovim 集成

评论总结

评论内容总结:

  1. 对Emacs和Vim的认可

    • 评论1和评论6提到Emacs和Vim这些老牌编辑器能够跟上新技术的发展,尤其是通过集成AI工具(如Claude Code)来增强功能,使其更具竞争力。
      • 评论1:“Pretty cool! I love that these battle proven editors (emacs and (n)vim) seem to follow along with new technology”(太酷了!我喜欢这些久经考验的编辑器(emacs和vim)似乎能跟上新技术的发展。)
      • 评论6:“Like LSP and tree-sitter, I think AI coding tools like Claude Code or Aider are very good news for niche editors like Emacs or Vim.”(像LSP和tree-sitter一样,我认为像Claude Code或Aider这样的AI编码工具对Emacs或Vim等小众编辑器来说是个好消息。)
  2. 对Claude Code的积极评价

    • 评论3和评论5提到Claude Code的集成效果优于其他工具,并且通过Emacs的定制化功能,能够提升工作效率。
      • 评论3:“Looks better than my current Claude Sonnet integration via copilot.”(看起来比我目前通过copilot集成的Claude Sonnet更好。)
      • 评论5:“But just by virtue of running insed Emacs you get a lot of power - it didn’t take me a lot of effort to create an efficient, customized workflow”(但仅仅通过在Emacs中运行,你就获得了很大的力量——我并没有花太多精力就创建了一个高效、定制化的工作流程。)
  3. 对Emacs扩展性的赞赏

    • 评论4和评论5提到Emacs的扩展性,尤其是通过Elisp编写工具的能力,以及与其他高级工具(如efrit和eca-emacs)的集成。
      • 评论4:“love the ability to add tools to the mcp server - would expect nothing less from emacs”(喜欢向mcp服务器添加工具的能力——这正是我对Emacs的期望。)
      • 评论5:“For both of the more advanced offerings, I tend to be a little cautious when adopting tools I’m trusting my productivity to.”(对于这两种更高级的产品,我在采用这些工具时往往会比较谨慎,因为我把生产力寄托在它们身上。)
  4. 对使用体验的反馈

    • 评论7提到在使用Claude Code时遇到的一些问题,如光标位置异常和终端模拟器的兼容性问题,并询问是否有更好的提示输入方式。
      • 评论7:“I found it very frustrating to try and type into the Claude Code text box”(我发现尝试在Claude Code文本框中输入非常令人沮丧。)
      • 评论7:“Does this project have any facilities for authoring prompts in a temporary buffer or something?”(这个项目是否有在临时缓冲区中编写提示的功能?)
  5. 对Emacs是否属于IDE的疑问

    • 评论8提出Emacs是否可以被视为IDE的疑问,认为IDE通常指大型图形化编辑器如IntelliJ或Visual Studio。
      • 评论8:“is Emacs considered an IDE? I thought that was a term reserved for large, graphical editors like IntelliJ, Eclipse, or Visual Studio.”(Emacs被认为是IDE吗?我以为这个术语是保留给像IntelliJ、Eclipse或Visual Studio这样的大型图形化编辑器的。)

总结:评论普遍对Emacs和Vim通过集成AI工具(如Claude Code)来增强功能表示认可,尤其是Emacs的扩展性和定制化能力受到赞赏。同时,也有用户反馈了使用中的一些问题,并对Emacs是否属于IDE提出了疑问。