我之前没看到你的eureka,有空来取取经
我写eureka最主要就是因为aider会直接修改文件,我实在是不喜欢。
eureka额外的我觉得还算可取之处的是结合lsp客户端,根据incoming calls和outgoing calls自动计算当前文件的依赖来生成(一部分)context。 Emacs其它llm工具都没有类似功能。但是这个功能实际效果有待评估,毕竟我也没太怎么用eureka。
其它的还有使用treesitter生成文件的outline,也是模仿aider。别的就没了。
Aidermacs打磨好了我完全不介意抛弃eureka切换过来,哈哈。毕竟有aider这个很好的基础。
今天刚修了vterm的bug,ediff可以在vterm用了。
大佬欢迎一起来玩Aidermacs呀!
不知道能不能利用 git worktree 的机制,让 aider 工作在独立的 worktree,这样就不用担心它搞乱代码了,然后 diff 的时候也(应该)会比较方便?
我最开始考虑过,集成git我怕和自带的auto-commit打架,或者和用户自己的git项目流程打架。现在的流程是:
- 实时监控哪些文件在当前对话框,每次发送command先给这些文件在tmp创建备份
- 实时监控Aider进程有没有更改文件,Aider的output结束后就把对应文件备份拎出来放到临时buffer和更改后的文件ediff
- ediff完成后,清理所有临时文件和临时buffer
就算集成git最后想diff也得走我现在这条路子做临时buffer来ediff(或者就看magit了),也得判断哪些更改了哪些没动,我想想就算了,目前的方案也不算太heavy
有没有考虑过使用 ediff-buffers ,这样每次不需要把文件创建临时目录并存入用户的文件系统里面,只需要把文件的内容存入一个临时 buffer 里?
有道理,确实可以简化一下,直接把文件内容放入buffer,省略写入tmp的功夫,我这两天看看。
我觉着这样是合理的。也比较自然。之前我就和其他人说过,aider这种形式是更适合ai的。ai能力一般的时候不方便,但随着ai能力的提高,这种形式就更合适了。甚至编辑器会沦为浏览工具,而不是写代码的工具。
搞定!git pull
就可以体验了。
新版流程:
- 实时监控哪些文件在当前对话框,每次发送command先把这些文件放入临时buffer
- Aider的output结束后检查文件有没有更改,然后对应的临时buffer和更改后的文件ediff
- ediff完成后,清理所有临时buffer
可不可以每次启动一个 sesstion,就单独拉个分支,然后 aider 在分支上自动提交,最后从分支 merge 到主干(好像可以合并分支所有提交为一个)。这样就可以避免 aider 自动提交把主干的提交搞乱了。
理论上是可以。
这样也会形成commit,而且还是个merge commit,和aider自带的autocommit相比没啥区别,还搞得更复杂了。
其实aider的自动提交并不会真的搞乱主干,因为他不会提交他没更改的unstage内容,主要太烦了,平白多了后期rebase的工作,增加工作量。我认为如果只是想看diff,完全不需要和git高度集成,毕竟emacs有ediff这么牛逼的东西哈哈
看得我都想切换过来了。
我就是手动这么用的。没一个功能都新分支。然后merge -s到主干。主干上只有最后的结果。
来呀来呀,别用cursor了快回emacs吧哈哈哈哈
这样和aider autocommit完手动stash成一个commit效果没什么区别吧?
windows 11 家庭版本 pipx install aider-chat 有人在windows系统中碰到如下问题吗?
> /code Code change: add a bubble sort function with vector parameter
Traceback (most recent call last):
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\aider\coders\base_coder
.py", line 1312, in send_message
yield from self.send(messages, functions=self.functions)
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\aider\coders\base_coder
.py", line 1645, in send
yield from self.show_send_output_stream(completion)
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\aider\coders\base_coder
.py", line 1720, in show_send_output_stream
for chunk in completion:
^^^^^^^^^^
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\litellm\llms\ollama_cha
t.py", line 377, in ollama_completion_stream
with httpx.stream(**_request) as response:
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Applications\Scoop\apps\anaconda3\current\App\Lib\contextlib.py",
line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File "C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\httpx\_api.py",
line 159, in stream
with client.stream(
^^^^^^^^^^^^^^
File "D:\Applications\Scoop\apps\anaconda3\current\App\Lib\contextlib.py",
line 137, in __enter__
return next(self.gen)
^^^^^^^^^^^^^^
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\httpx\_client.py", line
855, in stream
request = self.build_request(
^^^^^^^^^^^^^^^^^^^
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\httpx\_client.py", line
378, in build_request
return Request(
^^^^^^^^
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\httpx\_models.py", line
408, in __init__
headers, stream = encode_request(
^^^^^^^^^^^^^^^
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\httpx\_content.py",
line 216, in encode_request
return encode_json(json)
^^^^^^^^^^^^^^^^^
File
"C:\Users\donal\pipx\venvs\aider-chat\Lib\site-packages\httpx\_content.py",
line 179, in encode_json
).encode("utf-8")
^^^^^^^^^^^^^^^
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcb0' in position
5044: surrogates not allowed
'utf-8' codec can't encode character '\udcb0' in position 5044: surrogates not
allowed
好的,谢谢
顺道问下,视频有哔哩的链接么?
没有放B站呢