aidermacs

GitHub
893 72 简单 1 次阅读 1周前Apache-2.0Agent语言模型开发框架插件图像
AI 解读 由 AI 自动生成,仅供参考

Aidermacs 是一款专为 Emacs 用户打造的 AI 结对编程工具,它将强大的开源 AI 助手 Aider 无缝集成到经典的 Emacs 编辑环境中。如果你习惯了 Emacs 的高效工作流,却又羡慕 Cursor 等现代编辑器中的智能编码辅助功能,Aidermacs 正是为你而来的解决方案。它让你无需离开熟悉的界面,即可享受大模型带来的代码生成、重构和调试能力。

该工具主要解决了 Emacs 用户在拥抱 AI 编程浪潮时面临的生态割裂问题,避免了在不同编辑器间切换的繁琐。它特别适合习惯使用 Emacs 的软件开发者和极客用户,尤其是那些重视键盘操作效率、追求高度可定制化开发环境的程序员。

Aidermacs 的技术亮点在于其深度集成了 Emacs 原生的 Ediff 工具,能够以清晰的对比视图展示 AI 生成的代码变更,方便用户审查与合并。此外,它支持多种 AI 后端模型,提供灵活的上下文内容添加方式,并拥有类似 Transient 的便捷菜单交互设计。无论是配置本地大模型还是连接云端 API,Aidermacs 都能通过简洁的配置快速启动,帮助开发者在保留 Emacs 灵魂的同时,轻松驾驭前沿的 AI 编程体验。

使用场景

一位资深 Emacs 用户正在重构一个遗留的 Python 数据处理模块,需要在不离开编辑器的情况下完成复杂的代码逻辑修改和测试生成。

没有 aidermacs 时

  • 工作流频繁中断:为了使用 AI 辅助,必须切换窗口到浏览器或独立 IDE(如 Cursor),复制粘贴代码上下文,破坏了 Emacs“一站式”开发的心流体验。
  • 代码审查繁琐:AI 返回的代码块需要手动复制回缓冲区,若需对比差异,还得额外调用 diff 命令或手动逐行核对,极易引入人为错误。
  • 上下文管理低效:在多文件重构中,难以快速让 AI 理解整个项目结构,每次对话都要重新描述文件依赖关系,沟通成本极高。
  • 配置割裂:本地环境变量和 API 密钥需要在不同工具间重复配置,缺乏统一的安全管理机制。

使用 aidermacs 后

  • 原生无缝集成:直接在 Emacs 内通过 C-c a 唤起 Aidermacs,无需切换窗口,AI 如同原生结对编程伙伴般融入现有工作流。
  • 智能差异对比:利用内置的 Ediff 集成,AI 生成的修改会自动弹出差异对比视图,用户可逐块确认或拒绝变更,确保代码安全可控。
  • 感知项目全貌:Aidermacs 能自动读取当前打开的项目文件作为上下文,精准理解多文件间的依赖,轻松处理跨文件的重构任务。
  • 统一配置管理:支持在 init.el 中集中管理 API 密钥和模型参数,既保证了安全性,又实现了与 Emacs 配置体系的完美融合。

aidermacs 让 Emacs 用户在享受顶级 AI 编程能力的同时,无需妥协于熟悉的高效编辑器环境,真正实现了“鱼与熊掌兼得”。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes该工具是 Emacs 插件,核心功能依赖外部安装的 Aider 命令行工具。需配置 AI 服务商的 API Key(如 Anthropic, OpenAI 等)。支持 Spacemacs。无需本地 GPU 运行,推理由云端 API 完成。
python未说明 (依赖外部 Aider 工具,通常需 Python 3.8+)
Emacs >= 26.1
Aider (或 Aider Community Experimentation)
Transient
aidermacs hero image

快速开始

Aidermacs:在 Emacs 中实现 AI 配对编程

MELPA MELPA Stable NonGNU-devel ELPA NonGNU ELPA EMACS LICENSE CONTRIBUTORS

Aidermacs 通过集成 Aider,这款功能最强大的开源 AI 配对编程工具之一,将 AI 驱动的开发引入到 Emacs 中。如果你怀念 Cursor,但又更喜欢在 Emacs 中工作,那么 Aidermacs 就能提供类似的 AI 功能,同时保持与 Emacs 工作流一致。

核心特性

  • 多后端智能模型选择
  • 内置 Ediff 集成,用于处理 AI 生成的更改
  • 从 Emacs 中增强的文件管理功能
  • 极高的可定制性以及灵活的内容添加方式

社区评价

以下是社区对 Aidermacs 的评价:

“你在用 Aidermacs 吗?对我来说比 Cursor 更好。” - u/berenddeboer

“太棒了……每次我升级包时,都能看到你的新提交。我觉得这才是真正的 Emacs 版 Aider。” - u/wchmbo

“在 Aidermacs 和 Gptel 的加持下,Emacs 在这些前沿技术上的表现真是令人惊叹。我的工作单位正在探索 MCP 注册表,甚至那些炙手可热的工具(如 Cursor)也比不上我用 mcp.el 和 gptel 所能做到的。” - u/no_good_names_avail

“看起来太棒了……我一直使用 Ellama 结合本地 LLM,看来这里也能行。太厉害了!!” - u/lugpocalypse

“说实话,我是这个项目的超级粉丝。感谢你的更新!” - u/ieoa

快速入门

  1. 系统要求
  1. 通过 MelpaNon-GNU Elpa 下载 Aidermacs,或者手动克隆
  2. 修改以下示例配置并将其放入你的 Emacs init.el 文件中:
(use-package aidermacs
  :bind (("C-c a" . aidermacs-transient-menu))
  :config
  ; 将 API_KEY 设置在 .bashrc 中,这样它会自动被 Aider 或者 elisp 拾取
  (setenv "ANTHROPIC_API_KEY" "sk-...")
  ; 为安全起见,请自行定义 my-get-openrouter-api-key 函数
  (setenv "OPENROUTER_API_KEY" (my-get-openrouter-api-key))
  :custom
  ; 参见下方的配置部分
  (aidermacs-default-chat-mode 'architect)
  (aidermacs-default-model "sonnet"))
  1. 打开一个项目,然后运行 M-x aidermacs-transient-menuSPC a a(或你选择的绑定键)。
  2. 添加文件,开始与 AI 一起编码吧!

Spacemacs

对于 Spacemacs 用户:

  1. aidermacs 添加到你的 .spacemacs 文件中的 dotspacemacs-additional-packages 列表中:
dotspacemacs-additional-packages '(
  (aidermacs :variables
              aidermacs-default-chat-mode 'architect
              aidermacs-default-model "sonnet")
)
  1. .spacemacsdotspacemacs/user-config 函数中添加快捷键绑定:
(defun dotspacemacs/user-config ()
  ;; 设置 Aidermacs 的 leader 键
  (spacemacs/set-leader-keys "aa" 'aidermacs-transient-menu) ; 示例绑定 SPC a a
)
  1. 打开一个项目,然后运行 M-x aidermacs-transient-menuSPC a a(或你选择的绑定键)。
  2. 添加文件,开始与 AI 一起编码吧!

使用方法

入门指南

Aidermacs 的主要界面是通过其瞬态菜单系统(类似于 Magit)。你可以通过以下命令访问:

M-x aidermacs-transient-menu

或者在你的配置中将其绑定到某个键上:

(global-set-key (kbd "C-c a") 'aidermacs-transient-menu)

一旦瞬态菜单打开,你就可以使用显示的按键来导航和执行命令。以下是主菜单结构的概览:

核心功能
  • a: 开始/打开会话(自动检测项目根目录)
  • .: 在当前目录开始(适用于 monorepo)
  • l: 清除聊天历史
  • s: 重置会话
  • x: 退出会话
持久模式
  • 1: 代码模式
  • 2: 聊天/提问模式
  • 3: 建筑师模式
  • 4: 帮助模式
实用工具
  • ^: 显示最近一次提交(如果启用了自动提交)
  • u: 撤销最近一次提交(如果启用了自动提交)
  • R: 刷新仓库地图
  • h: 会话历史
  • o: 更改主模型
  • v: 发送语音命令
  • W: 获取网页内容
  • ?: Aider 元级别帮助
文件操作
  • f: 添加文件(C-u: 只读)
  • F: 添加当前文件
  • d: 从目录添加(同类型)
  • w: 从窗口添加
  • m: 从 Dired 添加(已标记)
  • j: 放置文件
  • J: 放置当前文件
  • k: 从 Dired 放置(已标记)
  • K: 放置所有文件
  • S: 创建会话草稿本
  • G: 将文件添加到会话
  • A: 列出已添加的文件
代码操作
  • c: 代码更改
  • e: 质问代码
  • r: 建筑师更改
  • q: 一般性问题
  • p: 质问当前符号
  • g: 接受建议的更改
  • i: 实现 TODO
  • t: 编写测试
  • T: 修复测试
  • !: 调试异常

“全部文件操作”和“全部代码操作”条目会打开包含更多专业命令的子菜单。请使用显示的按键来导航这些子菜单。

文件管理与 AI 交互

在使用 Aidermacs 时,您可以灵活地决定让 AI 阅读和编辑哪些文件。以下是一些指导原则:

  • 可编辑文件:添加您希望 AI 可能编辑的文件。这将授予 AI 在必要时读取和修改这些文件的权限。
  • 只读文件:如果您希望 AI 仅读取文件而不进行编辑,可以将其添加为只读文件。在 Aidermacs 中,所有添加文件的命令都可以加上 C-u 前缀来指定只读访问权限。
  • 会话草稿板:使用会话草稿板(S)粘贴笔记或文档,这些内容将以只读方式提供给 AI。
  • 外部文件:通过“将文件添加到会话”(G)命令,您可以包含当前项目之外的文件(或 .gitignore 中的文件),因为 Aider 不会自动将这些文件纳入其上下文。

AI 有时可以根据模型和代码库的上下文自行确定相关文件。然而,为了实现精确控制,尤其是在处理复杂项目时,手动指定文件通常更为有利。

Aider 鼓励采用协作式方法,类似于与人类同事合作的方式。有时 AI 需要明确的指导,而另一些时候它则能够自行推断出必要的上下文。

Prompt 文件次要模式

Aidermacs 提供了一个次要模式,方便您处理 prompt 文件及其他与 Aider 相关的文件。启用该模式后,将提供以下便捷的快捷键绑定:

  • C-c C-nC-<return>:逐行发送当前行或选区
  • C-c C-c:整体发送块或选区
  • C-c C-z:切换到 Aidermacs 缓冲区

该次要模式会自动为以下文件类型启用:

  • .aider.prompt.org 文件(可通过 M-x aidermacs-open-prompt-file 创建)
  • .aider.chat.md 文件
  • .aider.chat.history.md 文件
  • .aider.input.history 文件

配置

运行前钩子

您可以使用 aidermacs-before-run-backend-hook 来在启动 Aider 后端之前运行自定义的设置代码。这尤其适用于:

  • 设置环境变量
  • 注入密钥
  • 执行其他运行前配置

例如,从密码存储中安全地设置 OpenAI API 密钥:

(add-hook 'aidermacs-before-run-backend-hook
          (lambda ()
            (setenv "OPENAI_API_KEY" (password-store-get "code/openai_api_key"))))

在运行钩子并启动 Aider 时,会使用 process-environment 的副本,以确保在钩子中设置的环境变量仅影响 Aider 后端。这种方法可以将敏感信息保留在您的 dotfiles 之外,同时仍可供 Aidermacs 使用。

默认模型选择

您可以自定义 Aidermacs 使用的默认 AI 模型。模型的选择按以下优先级顺序确定:

  1. 如果您已设置 Emacs 变量 aidermacs-default-model(例如通过 setq),则使用该值。
  2. 如果设置了 AIDER_MODEL 环境变量,则使用该值。
  3. 使用内置的默认值(例如 "sonnet")。

在 Emacs 中设置默认模型的方法如下:

(setq aidermacs-default-model "sonnet")

这样可以在不修改 aidermacs-extra-args 变量的情况下,轻松切换不同的 AI 模型。

注意:如果存在 .aider.conf.yml 文件,此配置将被覆盖(详见 使用配置文件覆盖配置)。

动态模型选择

Aidermacs 为单人(非 Architect)模式提供了智能的模型选择功能,能够自动检测并集成多个 AI 提供者:

  • 自动从支持的提供商(OpenAI、Anthropic、DeepSeek、Google Gemini、OpenRouter)获取可用模型
  • 缓存模型列表以便快速访问
  • 支持流行的预配置模型以及动态发现的模型
  • 自动从您的 .bashrc 中处理 API 密钥和身份验证
  • 提供模型兼容性检查

动态模型选择功能仅适用于单人(非 Architect)模式。

要在单人模式下更改模型:

  1. 使用 M-x aidermacs-change-model 或在瞬态菜单中按 o
  2. 从以下选项中选择:
    • 流行的预配置模型(速度快)
    • 从所有支持的提供商动态获取的模型(全面)

系统会自动筛选出符合以下条件的模型:

  • 您当前 Aider 版本支持的模型
  • 您已配置的 API 密钥可用的模型
  • 与您当前工作流程兼容的模型

Architect 模式——分离代码推理与编辑模型

Aidermacs 提供一种实验性模式,针对每个编码任务使用两种专门的模型:一个 Architect 模型用于推理,另一个 Editor 模型用于代码生成。这种方法已在 Aider 的代码编辑基准测试中取得了最先进的(SOTA)成果,详情请参阅这篇博客文章

要使新会话默认以 Architect 模式启动,请将 aidermacs-default-chat-mode 设置为 'architect

aidermacs-use-architect-mode 已被弃用,并将在未来的版本中移除。

architect 模式将默认使用 aidermacs-default-model。如果您在使用 architect 模式时希望使用不同的主模型,也可以配置 aidermacs-architect-model 变量来指定 Architect 角色使用的模型。

默认情况下,aidermacs-editor-modelaidermacs-default-model 相同。只有当您希望为 Editor 角色使用不同模型时,才需要设置 aidermacs-editor-model。该变量同样会遵循与 aidermacs-default-model 相同的优先级规则,尊重 AIDER_EDITOR_MODEL 环境变量。

(setq aidermacs-default-chat-mode 'architect)

您可以通过 M-x aidermacs-switch-to-architect-mode(在 aidermacs-transient-menu 中按 3)永久切换到该模式,或者通过 M-x aidermacs-architect-this-code(在 aidermacs-transient-menu 中按 r)临时切换。

您可以独立配置每个模型:

;; 默认模型,除非被覆盖
(setq aidermacs-default-model "sonnet")

;; 可选:为 Architect 推理设置特定模型
(setq aidermacs-architect-model "deepseek/deepseek-reasoner")

;; 可选:为代码生成设置特定模型
(setq aidermacs-editor-model "deepseek/deepseek-chat")

模型层次结构如下:

  • 当 Architect 模式启用时:
    • Architect 模型负责高层次的推理和解决方案设计
    • Editor 模型执行实际的代码更改
  • 当 Architect 模式禁用时,仅使用 aidermacs-default-model
  • 您可以配置特定模型,也可以让它们自动使用默认模型。

模型会反映对 aidermacs-default-model 的更改,除非它们已被显式设置为不同的值。

注意:这些配置将被 .aider.conf.yml 文件的存在所覆盖(详见 使用配置文件覆盖配置)。

自定义弱模型

弱模型用于提交消息(如果您将 aidermacs-auto-commits 设置为 t)以及聊天历史摘要(默认值取决于 --model)。您可以通过 aidermacs-weak-model 变量对其进行自定义,该变量同样会尊重 AIDER_WEAK_MODEL 环境变量。

;; 默认为 nil
(setq aidermacs-weak-model "deepseek/deepseek-chat")

您可以在会话期间使用 C-u o(带有前缀参数的 aidermacs-change-model)来更改弱模型。在大多数情况下,您无需更改此设置,因为 Aider 会根据您的主模型自动选择合适的弱模型。

注意:这些配置会被 .aider.conf.yml 文件的存在所覆盖(详见 细节)。

架构模式确认

默认情况下,Aidermacs 在应用架构模式中提出的更改之前需要明确确认。这使您有机会在任何代码被修改之前审查 AI 的计划。

如果您希望自动接受所有架构模式更改而无需确认(类似于 Aider 的默认行为),可以启用以下设置:

(setq aidermacs-auto-accept-architect t)

注意:这些配置会被 .aider.conf.yml 文件的存在所覆盖(详见 细节)。

终端后端选择

通过设置 aidermacs-backend 来选择您偏好的终端后端:

vterm 提供更好的终端兼容性,而 comint 则提供一个简单、内置的选项,与 Aidermacs 完全兼容。

;; 使用 vterm 后端(默认为 comint)
(setq aidermacs-backend 'vterm)

可用的后端:

  • comint(默认):使用 Emacs 内置的终端仿真
  • vterm:利用 vterm 提供更好的终端兼容性

Emacs 主题支持

vterm 后端会使用您当前激活的 Emacs 主题所定义的 face 来设置 Aider 的颜色。它会尝试根据您的主题猜测一些合理的颜色值。但在某些情况下,这可能无法完美工作;如果文本对您来说难以阅读,您可以按如下方式关闭此功能:

;; 不匹配 Emacs 主题颜色
(setopt aidermacs-vterm-use-theme-colors nil)

多行输入配置

您可以自定义多行输入的快捷键,该键允许您输入多行内容而不将命令发送给 Aider。正常按下 RET 键即可发送命令。

;; Comint 后端:
(setq aidermacs-comint-multiline-newline-key "S-<return>")
;; Vterm 后端:
(setq aidermacs-vterm-multiline-newline-key "S-<return>")

通过 Tramp 支持远程文件

Aidermacs 完全支持通过 Emacs 的 Tramp 模式处理远程文件。这使您能够通过 SSH、Docker 以及其他 Tramp 支持的协议,在远程服务器上托管的文件上使用 Aidermacs。

在处理远程文件时:

  • 文件路径会自动本地化到远程系统
  • 所有 Aidermacs 功能在本地和远程文件之间无缝运行
  • 编辑会直接应用于远程文件
  • 差异比较和更改审查按预期进行

使用示例:

;; 通过 SSH 打开远程文件
(find-file "/ssh:user@remotehost:/path/to/file.py")

;; 启动 Aidermacs 会话 - 它会自动检测远程环境
M-x aidermacs-transient-menu

提示选择与历史记录

Aidermacs 使您能够轻松地重复使用提示,方法如下:

  1. 提示历史:您之前使用的提示会被保存,并可快速选择。
  2. 常用提示:在 aidermacs-common-prompts 中定义的一组常用任务提示列表:

在输入提示时,您可以:

  • 使用补全功能从历史记录或常用提示中选择
  • 在需要时仍可输入自定义提示

提示历史和常用提示在所有会话中均可使用。

文件监控

通过设置 aidermacs-watch-files,您可以启用对仓库中 AI 编码指令的监控:

;; 启用文件监控
(setq aidermacs-watch-files t)

启用后,Aidermacs 将监控您仓库中的所有文件,并查找您使用喜爱的 IDE 或文本编辑器添加的任何 AI 编码指令。

具体而言,Aider 会寻找以 AIAI!AI? 开头或结尾的一行注释(无论语言支持何种注释风格),例如:

# 制作一个贪吃蛇游戏。AI!
# 这个方法的目的是什么 AI?

// 编写一个蛋白质折叠预测引擎。AI!

Aidermacs 会记录所有以 AI 开头或结尾的注释。包含感叹号的 AI! 或问号的 AI? 注释则较为特殊,它们会触发 Aider 收集所有 AI 注释,并将其用作您的指令。

  • AI! 会触发 Aider 对您的代码进行更改。
  • AI? 会触发 Aider 回答您的问题。

注意:此功能目前仅在 vterm 模式下可用。

注意:这些配置会被 .aider.conf.yml 文件的存在所覆盖(详见 细节)。

只读文件

您可以通过设置 aidermacs-global-read-only-filesaidermacs-project-read-only-files,将某些文件在每次启动 Aidermacs 会话时始终设为只读。

;; 始终将这些文件作为只读文件添加到所有 Aidermacs 会话中
;; 对于项目目录之外的文件
(setq aidermacs-global-read-only-files '("~/.aider/AI_RULES.md"))
;; 对于项目目录内的文件
(setq aidermacs-project-read-only-files '("CONVENTIONS.md" "README.md"))

当 Aidermacs 会话开始时,如果这些文件存在于项目中,它们将自动被添加为只读文件。这对于您希望 AI 了解但不希望其修改的文档或其他参考资料非常有用。

差异与更改审查

通过 aidermacs-show-diff-after-change 控制是否显示 AI 生成更改的差异:

;; 启用/禁用更改后显示差异(默认:t)
(setq aidermacs-show-diff-after-change t)

启用后,Aidermacs 将:

  • 捕获 AI 编辑之前的文件状态
  • 使用 Emacs 内置的 ediff 界面显示差异
  • 允许您审查并接受/拒绝更改。

重新启用自动提交

Aider 默认会自动提交 AI 生成的更改。我们认为这种行为 非常 干扰,因此已将其禁用。您可以通过将 aidermacs-auto-commits 设置为 t 来重新启用自动提交:

;; 启用自动提交
(setq aidermacs-auto-commits t)

在禁用自动提交的情况下,您必须使用您偏好的 Git 工作流程手动提交更改。

注意:此配置会被 .aider.conf.yml 文件的存在所覆盖(详见 细节)。

控制退出时缓冲区的关闭

默认情况下,当你使用 aidermacs-exit(或临时菜单中的 x)退出 Aidermacs 会话时,Aidermacs 缓冲区会保持打开状态。如果你希望在退出会话时自动关闭该缓冲区,可以通过以下方式自定义行为:

;; 退出会话时关闭 Aider 缓冲区
(setq aidermacs-exit-kills-buffer t)

使用 aidermacs-extra-args 自定义 Aider 选项

如果上述配置仍无法满足需求,aidermacs-extra-args 变量允许你传递任何 Aider 支持的命令行选项。

完整的可用选项列表,请参阅 Aider 配置文档

;; 设置日志详细程度:
(add-to-list 'aidermacs-extra-args "--verbose")

这些参数将在运行 Aider 命令时附加到命令行中。请注意,--model 参数由 aidermacs-default-model 自动处理,不应再添加到 aidermacs-extra-args 中。

使用配置文件覆盖设置

Aidermacs 支持通过 .aider.conf.yml 文件进行项目特定的配置。要启用此功能:

  1. 在你的主目录、项目根目录或当前目录下创建一个 .aider.conf.yml 文件,并定义所需的设置。有关可用选项,请参阅 Aider 文档

  2. 通过以下两种方式之一告知 Aidermacs 使用该配置文件:

    ;; 在 Emacs 配置中设置 `aidermacs-config-file` 变量:
    (setq aidermacs-config-file "/path/to/your/project/.aider.conf.yml")
    ;; 或者,在 `aidermacs-extra-args` 中包含 `--config` 或 `-c` 标志:
    (setq aidermacs-extra-args '("--config" "/path/to/your/project/.aider.conf.yml"))
    

注意:你也可以依赖 Aider 的默认行为,即按主目录、项目根目录和当前目录的顺序自动搜索 .aider.conf.yml 文件。在这种情况下,无需设置 aidermacs-config-file 或在 aidermacs-extra-args 中包含 --config

  • 重要:配置优先级

当 Aidermacs 会话启动时,它会根据以下优先级层次确定使用哪些设置:

  1. Aider 配置文件(.aider.conf.yml): 如果找到配置文件(无论是在默认位置还是通过 aidermacs-config-fileaidermacs-extra-args 指定),则具有 最高优先级。Aidermacs 将 忽略 其自身的 Emacs 变量(如 aidermacs-default-model),并让 Aider 工具直接从该文件管理设置。随后,优先级由 Aider 自身决定(命令行参数优先于环境变量,而环境变量又优先于配置文件)。

  2. Emacs 配置(未使用配置文件时): 如果没有 .aider.conf.yml 文件,Aidermacs 将构建用于 Aider 的命令行参数。其使用的值按照以下优先级顺序确定: a. Emacs 变量(最高): 你在 init.el 中设置的值(例如 (setq aidermacs-default-model "..."))。 b. 环境变量: 如果未设置 Emacs 变量,则采用相应的环境变量值(例如 AIDER_MODEL)。 c. 内置默认值(最低): 如果以上两者均未设置,则使用硬编码的默认值。

为避免冲突: 当使用 .aider.conf.yml 文件时,应将所有设置都定义在该文件中。不要在 Emacs 中设置类似 aidermacs-default-model 的变量,也不要通过 aidermacs-extra-args 传递 --model 等参数,因为这些都会被忽略,反而可能导致混淆。

Claude Sonnet 3.7、4、4.5 思考标记

Aider 可以与 Sonnet 3.7 的 新思考标记 及该系列的更新模型一起使用。现在你可以通过以下方法更轻松地启用和配置思考标记:

  1. 聊天内命令: 使用 /think-tokens 命令,后接所需的标记预算。例如:/think-tokens 8k/think-tokens 10000。支持的格式包括 80968k10.5k0.5M

  2. 命令行参数: 在启动 Aidermacs 时设置 --thinking-tokens 参数。例如,可以将其添加到你的 aidermacs-extra-args 中:

    (setq aidermacs-extra-args '("--thinking-tokens" "16k"))
    

这些方法提供了一种更为简便的方式,无需手动配置 .aider.model.settings.yml 文件即可控制思考标记。

注意:如果你正在使用 .aider.conf.yml 文件,也可以在那里设置 thinking_tokens 选项。

使用提示文件

.aider.prompt.org 文件特别适用于:

  • 存储常用提示
  • 记录常见工作流程
  • 快速访问复杂指令

你可以通过配置 aidermacs-auto-mode-files 来自定义哪些文件会自动启用该次要模式:

(setq aidermacs-auto-mode-files
      '(".aider.prompt.org"
        ".aider.chat.md"
        ".aider.chat.history.md"
        ".aider.input.history"
        "my-custom-aider-file.org"))  // 添加你自己的文件

常见问题解答

Aider 是什么?

有关 Aider 的相关问题,请查看 Aider 的常见问题解答

我可以使用自己的 AI 模型吗?

可以!Aidermacs 支持任何兼容 OpenAI API 的端点。请参阅 Aider 关于 OllamaLiteLLM 的文档。

我的代码会被发送给 AI 提供商吗?

是的,你添加到会话中的代码会被发送给 AI 提供商。请务必注意敏感代码。

为什么 Aider 不支持 Python 3.13?

目前 Aider 仅支持 Python 3.12。你可以使用 uv 安装 Aider:

uv tool install --force --python python3.12 aider-chat@latest

如果你遇到与代理相关的 问题,例如提示未安装 socksio 包的错误,请使用以下命令:

uv tool install --force --python python3.12 aider-chat@latest --with 'httpx[socks]'

并相应地调整 Aidermacs 程序路径:

(setq aidermacs-program (expand-file-name "~/.local/bin/aider"))

本地模型偏好英语,即使提示语言不同

某些本地模型在 Aider 中可能会默认使用英语,即便你在提示中使用了其他语言。为确保聊天语言符合你的偏好(例如俄语),请在 Emacs 配置中添加以下内容:

(add-to-list 'aidermacs-extra-args "--chat-language ru")

这将指示 Aider 使用俄语进行对话交互。

Aidermacs 或 Aider 在使用 Ollama 时会忽略命令行参数并提示选择提供商

如果 ~/.aider 目录存在(即使为空),Aidermacs 或 Aider 可能会静默地忽略命令行参数,并意外提示选择提供商(例如强制使用 OpenRouter),即便你的配置已正确设置为 Ollama 或其他提供商。

解决方法: 删除现有的 aider 目录并重启 Emacs:

rm -rf ~/.aider*

执行此操作后,Aidermacs 应该会按照预期使用你配置的提供商(例如 Ollama)启动。

Aidermacs、Aider CLI 和 aider.el 有何不同?

Aidermacs 的设计旨在提供更原生的 Emacs 使用体验,同时与 Aider CLI 集成。它最初是 aider.el 的一个分支,但后来为了优先考虑与 Emacs 工作流的集成而发生了显著分化,由 Emacs 用户为 Emacs 用户打造。

虽然 aider.el 试图模仿 Aider CLI 的行为,但 Aidermacs 则围绕 Emacs 特有的功能和范式构建。这种设计理念使你能够通过自然、原生的 Emacs 编程体验来充分利用 Aider 的强大功能。

使用 Aidermacs,你可以获得以下优势:

  1. 内置 Ediff 集成,用于查看 AI 生成的更改

    • 无缝代码审查:自动使用 Emacs 强大的 ediff 界面显示所有由 AI 修改的文件差异。
    • 熟悉的界面:采用 Emacs 原生的 ediff 工作流程进行变更审查。
    • 交互式工作流:使用标准的 ediff 命令接受或拒绝更改。
    • 语法高亮:在比较过程中保持正确的语法高亮显示。
    • 安全的变更管理:保留原始文件状态,便于比较和回滚。
  2. 智能模型选择

    • 自动发现来自多个提供商的可用模型。
    • 实时检查模型兼容性。
    • 无缝集成到你配置的 API 密钥中。
    • 缓存常用模型以实现快速访问。
    • 支持流行的预配置模型以及动态发现的模型。
  3. 灵活的终端后端支持

    • Aidermacs 支持多种终端后端(comint 和 vterm),以提高兼容性和性能。
    • 轻松配置以选择你喜欢的终端模拟器。
    • 具有可扩展架构,可添加新的后端。
  4. 更智能的语法高亮

    • AI 生成的代码在主流语言中会显示正确的语法高亮。
    • 无需额外配置即可确保清晰度和可读性。
  5. 更好地支持多行输入

    • Aider 是一款基于命令行的程序,其多行输入受限于终端的能力。
    • 基于终端的工具需要特殊的语法或手动格式化才能处理多行输入,这往往繁琐且不直观。
    • Aidermacs 通过在 Emacs 内部原生处理多行提示,消除了这些限制,让你可以像输入普通文本一样轻松撰写复杂的 AI 请求。
    • 无论是粘贴代码块还是优化 AI 生成的回复,Aidermacs 中的多行交互都显得自然流畅。
  6. 从 Emacs 提升文件管理能力

    • 使用 M-x aidermacs-list-added-files 列出当前聊天中的文件。
    • 使用 M-x aidermacs-drop-file 从聊天中移除特定文件。
    • 使用 M-x aidermacs-show-output-history 查看输出历史。
    • 使用 M-x aidermacs-add-files-interactively 交互式选择要添加的文件。
    • 使用 M-x aidermacs-add-file-to-session 将任意文件的内容添加到特定会话中。
    • 使用 M-x aidermacs-create-session-scratchpad 创建临时文件,用于向 Aider 会话添加代码片段或笔记。
    • 完全支持通过 Tramp 访问远程文件(SSH、Docker 等)。
    • 以及更多功能。
  7. 更高的可配置性

    • Aidermacs 提供更多自定义选项,以根据你的偏好调整使用体验。
  8. 精简的瞬态菜单选择

    • 瞬态菜单经过全新设计,兼顾功能性和易用性,优先考虑用户体验。
  9. 多种灵活的内容添加方式

    • Aidermacs 提供多种方式将内容添加到 Aider 会话中,包括添加文件、创建临时草稿文件等。
  10. 社区驱动的开发

    • Aidermacs 由社区积极开发和维护,不断吸纳用户反馈和贡献。
    • 我们优先考虑那些直接惠及 Emacs 用户的功能和改进,确保工具能够随着你的需求不断发展。

……未来还将带来更多新特性 🚀

视频演示

社区驱动的开发

Aidermacs 的发展离不开社区的参与。我们相信,通过与用户和贡献者协作开发,才能打造出最优秀的软件。我们鼓励你:

  • 贡献代码:提交包含错误修复、新功能或现有功能改进的拉取请求。
  • 报告问题:通过 GitHub Issues 向我们反馈任何 bug、异常行为或功能请求。
  • 分享想法:参与讨论,提出让 Aidermacs 更加完善的建议。
  • 改进文档:帮助我们使文档更加清晰、全面且易于使用。

你的贡献对于将 Aidermacs 打造成 Emacs 中最佳的 AI 配对编程工具至关重要!

版本历史

v1.62025/11/08
v1.52025/07/07
v1.42025/05/23
v1.32025/04/27
v1.22025/04/02
v1.12025/03/23
v1.02025/03/16

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|3天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|4天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

146.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|今天
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|2天前
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|2天前
语言模型图像Agent