**tninja 的核心疑问是否已经得到充分解决?**
从 tninja 的回复来看,他的核心考量主要集中在 三个方面:
-
对初学者是否友好 —— comint-accumulate 是否比 {aider … aider} 方式更直观?
-
是否符合 Emacs 传统 —— comint-mode 应该“输入什么就发送什么”,不应该对输入进行转换。
-
将来是否容易维护 —— 代码库应该尽可能简单,而不是引入难以维护的额外功能。
然而,从 MatthewZMD 和 CeleritasCelery 提供的 PATCH 以及前文的讨论来看,这些问题都已经得到了 充分的回应和解决方案。
1. 对初学者是否友好?
tninja 的观点 :
• comint-accumulate 是一个冷门功能,即使他自己用 comint 10 多年也不知道,因此 不应该假设新用户会知道或使用它。
• 让用户学习 comint-accumulate 不比学习 {aider … aider} 更容易。
前文讨论是否有回应?
• MatthewZMD 提供了 PATCH (aider-multiline-newline-key),让 comint-accumulate 成为默认行为 :
• 新用户不需要知道 comint-accumulate 的存在,它会自动生效 ,避免了额外的学习成本。
• 高级用户仍然可以手动切换回 {aider … aider} 方式 ,保证兼容性。
• CeleritasCelery 也指出,comint-accumulate 是 Emacs comint-mode 的标准行为 :
• Emacs 其他 comint-based 模式(如 Python、R、SQL)本来就支持多行输入,这符合 Emacs 用户的预期。
• MatthewZMD 指出:Emacs 不是终端,不需要继承 CLI 的局限性,我们可以做得更好。
结论:
这个问题已经得到 充分回应并解决。
新用户不需要手动学习,comint-accumulate 变成默认行为,体验更自然,且兼容 {aider … aider}。
2. 是否符合 Emacs 传统?
tninja 的观点 :
• 在 comint buffer 里,“输入什么就应该发送什么”,否则容易混入 bug,且不透明。
• 在其他 comint 交互模式(SQL、R、Python)里没有类似的输入转换 ,所以不符合 Emacs 传统。
前文讨论是否有回应?
• CeleritasCelery 指出 :
• 其他 comint 模式(Python、R、SQL)都支持 multi-line 输入 ,并且 用户不会察觉到 comint-accumulate 的存在 ,因为它只是让输入方式更自然。
• MatthewZMD 提供了 PATCH (fix: Prevent duplicate aider wrappers) 彻底解决了透明性问题 :
• 只有在 aider 需要 {aider … aider} 语法时才会自动添加,而不会对已经使用 {aider … aider} 的输入进行重复转换。
• 这样既能保证 原始输入的透明性 ,又能 避免影响用户体验 ,符合 Emacs 处理代码的传统方式 。
• MatthewZMD 也提到 :aider 作为 AI 代码助手 ,其工作方式 不应该受 CLI 限制 ,而是 更加贴近 Emacs 交互方式 。
• comint-accumulate 只是让输入更符合直觉,并不会引入隐藏的 bug ,因为它 不会改动 aider 的解释逻辑,而只是调整输入行为 ,且 aider.el 本身已经在其他地方使用过 comint-accumulate 。
结论:
这个问题 已经得到充分回应并解决 。
comint-accumulate 并不会改变输入的透明性,而是让输入方式更符合 Emacs 传统。
3. 是否容易维护?
tninja 的观点 :
• 他希望代码库 尽量简单,功能尽可能少,但能满足大部分人的需求 ,这样维护起来更轻松。
• 当前的 {aider … aider} 方式已经足够,并且 aider 本身支持多种 multi-line 方式 ,不需要额外改动。
前文讨论是否有回应?
• CeleritasCelery 指出 :这个 PR 只涉及 10 行代码 ,不会对维护带来额外负担。
• MatthewZMD 提到 :
• 这个改动不会增加维护负担,反而可以减少代码复杂度 。
• 当前 {aider … aider} 方式需要额外的 tag 处理代码 ,而 comint-accumulate 让 multi-line 输入“原生可用”,反而更简单 。
结论:
这个问题 已经得到充分回应并解决 。
新改动不会增加维护负担,反而减少了代码复杂度,让 multi-line 输入更自然。
最终总结
tninja 提出的所有问题都已经得到充分回应 ,并且 PATCH 直接解决了他提出的所有问题 。
comint-accumulate 变成默认行为,用户不需要手动学习,完全避免了额外学习成本。
新的 multi-line 处理逻辑不会隐藏 bug,且仍然允许 {aider … aider} 语法,保持兼容性。
修改代码量很少,几乎不增加维护成本,甚至让代码更简洁。
改动让 aider.el 更加符合 Emacs 传统,而不是遵循 CLI 限制。
然而,tninja 仍然拒绝合并这些改动,理由并不是技术问题,而是他的个人理念 :
• 他坚持 “尽量减少功能”,即便这会降低 Emacs 用户的体验。
• 他更在意维护者的管理成本,而不是用户的实际使用感受。
• 他似乎忽略了 PATCH 解决了他自己提的问题,或者他并不愿意接受这些解决方案。
这进一步说明 aidermacs 作为 fork 存在的必要性——如果 aider.el 维护者坚持遵循 CLI 设计,不愿意优化 Emacs 体验,那么 fork 一个真正符合 Emacs 用户习惯的版本就是更好的选择。 