“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 命令。
克劳德代码指令
/读取-emacs(或:阅读-emacs文档)
从Emacs中读取所有选定的区域:
- 主要活性区域
- 二次选拔
- 所有标记为伪区域的
C-c m a
快速入门
看见 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工作流示例
- 在Emacs中:选择文件A中的代码,按下
C-c m a - 在Emacs中:切换到文件B,选择代码,按
C-c m a - 在《克劳德密码:奔跑》中
/read-emacs - 克劳德一次性读取了两个文件中所有标记的区域!
文档
- INSTALLATION.md 翻译为中文是:“安装指南.md” 或者 “安装说明.md”(具体翻译可能根据上下文有所调整,但基本意思相同) - 人类设置指南
- CLAUDE_INSTALLATION.md 翻译为中文是:“CLAUDE 安装指南.md” 或者 “CLAUDE 安装文件.md”(具体翻译可能根据上下文有所调整,但基本意思是表示这是一个关于 CLAUDE 安装的文档或文件) - AI助手设置指南
- “PORTHOLE_TRUNCATION_FIX.md” 翻译成中文为:“舷窗截断修复.md” 或者更自然地表达为:“修复舷窗截断问题.md”(注:这里的“md”通常表示Markdown格式的文件,但在中文语境下,我们通常不会直接翻译这个扩展名,而是保留原样以表示文件类型。) - 修复输出截断问题
- \
DAEMON_SERVICE.md\翻译为中文是:“守护进程服务说明文件” 或 “守护进程服务指南文件”。这里,“DAEMON”通常指的是在后台运行的守护进程,“SERVICE”指的是服务,而“.md”是Markdown文件格式的后缀 - 健康监测系统设置 - elisp/README.md(注:此文件名通常表示一个存放于elisp目录下的Markdown格式的README文件,直接翻译文件名本身为中文并不常见,但按要求可表述为“elisp/README.md(说明文件)”,实际使用时可根据上下文决定是否需要翻译文件名或仅翻译文件内容) - 多区域包裹文件
- claude-commands/README.md(文件名保持不变,中文可表述为“claude-commands/README.md 文件”) - Claude Code 命令
要求
- Emacs(艾默斯,通常直接音译为“艾姆艾克斯艾斯”或保持原英文名,因其是一个广泛使用的文本编辑器)28.1或更高版本
- python3.8或更高版本
- Python 包fastmcp, emacs-porthole(可译为“Emacs中的小窗插件”或根据具体上下文保持原样,因为“porthole”在Emacs插件中通常指的是一种用于浏览或交互的小窗口或面板)
- Emacs 插件/包舷窗
为什么叫“Slopmacs”?
一个略带讽刺意味的名字,指的是一种实用的Emacs自动化工具。它能完成任务。
许可证
MIT 许可证 - 请参阅 许可证 文件中有详细信息。
做出贡献
欢迎贡献!这是一个简单的项目——只需提交一个拉取请求(PR)即可。
