Emacs AI集成服务器

Slopmacs是一个通过S表达式评估将Claude AI助手与Emacs集成的MCP服务器,提供代码读取、缓冲区操作和无缝工作流集成功能。

  • by jjtolton
  • Emacs Lisp
  • 本地部署
  • 更新于
在 GitHub 查看 jjtolton/slopmacs

使用说明

“Slopmacs”可以翻译为“松鼠麦克”(如果这是一个特定名称或昵称)或者根据上下文可能意译为“松鼠风格的麦克”(如果指的是某种与松鼠相关的麦克风或麦克风设计)。不过,由于“Slopmacs”并不是一个广泛认知的词汇或品牌,具体的翻译可能需要根据其出现的上下文来确定。在没有具体上下文的情况下,上述翻译提供了一种可能的解释

通过S表达式求值,将Claude与Emacs集成的MCP(模型上下文协议)服务器。

什么是Slopmacs?

Slopmacs 允许像 Claude 这样的 AI 助手通过 S 表达式评估直接与您的 Emacs 实例进行交互。它提供了一个简洁、灵活的接口,用于读取代码、操作缓冲区以及与 Claude 代码工作流进行集成。

特点/功能

  • 单次评估工具 - 灵活的S表达式评估,实现最大控制
  • 多区域支持 - 在多个缓冲区中标记并阅读多个代码区域
  • 克劳德代码集成 - 自定义斜杠命令,实现无缝工作流程
  • 无限输出 - 不截断大输出(可配置)
  • 服务器管理 - 内置健康监测和自动重启功能
  • 安全评估 - 带错误处理的沙箱化S表达式执行
  • 自动重连 - 对Emacs重启具有恢复能力,具备自动重试逻辑

MCP 工具

作为用户评估

评估任意Emacs Lisp表达式的核心工具:

as_user_eval("(buffer-name)")  # Returns current buffer name
as_user_eval("(+ 1 2)")        # Returns "3"
as_user_eval("(find-file \"/path/to/file.el\")")  # Opens a file

这个单一工具提供了最大的灵活性——任何Emacs操作都可以通过S表达式评估来执行。

Emacs 扩展

多区域套餐

在不同缓冲区中标记并管理多个“伪区域”:

  • C-c m a - 将当前区域添加为伪区域
  • C-c m c - 清除所有伪区域
  • C-c m l - 列出所有伪区域
  • C-c m d - 删除特定的伪区域

在切换缓冲区时,伪区域会持续存在,并且可以一次性全部读取 /read-emacs 命令。

见 elisp/README.md(注:这里的“elisp”通常指的是Emacs Lisp,一种用于Emacs文本编辑器的编程语言,而“README.md”是一个常见的Markdown格式的文件,用于说明项目或文件的使用方法、版权信息等) 详情见下文。

克劳德代码指令

/读取-emacs(或:阅读-emacs文档)

从Emacs中读取所有选定的区域:

  • 主要活性区域
  • 二次选拔
  • 所有标记为伪区域的 C-c m a

看 `claude-commands/README.md` 翻译成中文为:`claude-commands/README.md`(注:文件名通常保持原样,不进行翻译,但在这里为了说明其内容或用途,可以理解为“Claude 命令/README 文件”) 详情见下文。

快速入门

看见 INSTALLATION.md 翻译为中文是:“安装指南.md” 或 “安装说明文件.md”(具体翻译可能根据上下文有所调整,但基本意思是关于安装的指南或说明文档) 以获取详细的设置说明。

# 1. Install dependencies
pip install fastmcp emacs-porthole

# 2. Install Emacs components
# Add to your Emacs init file:
(load "~/.emacs.d/customizations/slopmacs.el")
(load "~/.emacs.d/customizations/setup-multi-region.el")

# 3. Copy files
cp slopmacs.el ~/.emacs.d/customizations/
cp elisp/*.el ~/.emacs.d/customizations/
cp claude-commands/*.md ~/.claude/commands/

# 4. Add to Claude Code
claude mcp add --scope user slopmacs python /path/to/slopmacs/server.py

# 5. Start Emacs server
M-x slopmacs-start-server

# 6. Start using it!
# Mark regions with C-c m a, then run /read-emacs in Claude Code

建筑

┌─────────────────────┐
│   Claude Code       │
│   (MCP Client)      │
└──────────┬──────────┘
           │ MCP Protocol (stdio)
           ▼
┌─────────────────────┐
│   server.py         │
│   (FastMCP Server)  │
└──────────┬──────────┘
           │ Porthole RPC
           ▼
┌─────────────────────┐
│   Emacs             │
│   (slopmacs.el)     │
└─────────────────────┘

使用示例

对于人工智能助手

# Evaluate any Emacs Lisp expression
as_user_eval("(buffer-name)")
as_user_eval("(find-file \"/path/to/file.el\")")
as_user_eval("(goto-line 42)")
as_user_eval("(search-forward \"TODO\")")

# Read buffer contents
as_user_eval("(buffer-substring-no-properties (point-min) (point-max))")

# Get multi-region info
as_user_eval("(multi-region-get-all-formatted)")

对于用户

;; Start/stop server
M-x slopmacs-start-server
M-x slopmacs-stop-server

;; Mark multiple regions
C-c m a  ; Add region as pseudo-region
C-c m l  ; List all pseudo-regions
C-c m c  ; Clear all pseudo-regions

工作流示例

  1. 在Emacs中:选择文件A中的代码,按下 C-c m a
  2. 在Emacs中:切换到文件B,选择代码,按 C-c m a
  3. 在《克劳德密码:奔跑》中 /read-emacs
  4. 克劳德一次性读取了两个文件中所有标记的区域!

文档

要求

  • **Emacs(艾默斯,通常直接音译为“艾姆艾克斯艾斯”或保持原英文名,因其是一个广泛使用的文本编辑器)**28.1或更高版本
  • python3.8或更高版本
  • Python 包fastmcp, emacs-porthole(可译为“Emacs中的小窗插件”或根据具体上下文保持原样,因为“porthole”在Emacs插件中通常指的是一种用于浏览或交互的小窗口或面板)
  • Emacs 插件/包舷窗

为什么叫“Slopmacs”?

一个略带讽刺意味的名字,指的是一种实用的Emacs自动化工具。它能完成任务。

许可证

MIT 许可证 - 请参阅 许可证 文件中有详细信息。

做出贡献

欢迎贡献!这是一个简单的项目——只需提交一个拉取请求(PR)即可。