这篇咱们把 agent-shell 升到 0.73,然后把几个新的交互方式逐个接上,替换掉老工作流里最别扭的那几段。跑完大概十五分钟,手里多一份能直接用的新版本配置。
开搞之前先确认:
- 已配置 melpa,能正常拉包
- 现有 agent-shell 配置没有用
:custom锁死一堆变量(我过会儿解释为什么这条最重要) - 备份一份你现在的
init.el相关片段,切回去也方便
Step 1:升级到 0.73
先 M-x package-refresh-contents,再 M-x package-upgrade agent-shell。升级完确认一下版本:
(agent-shell-version)
应该返回 0.73。这个版本是十天前发的,从去年 9 月面世到现在,agent-shell 也算长成了一整套东西,不是当初那个只提供 comint 交互的实验品了。
⚠️ 这一步很多人会卡在包列表还是旧的——package-refresh-contents 跑完记得再看一眼 *Packages* 缓冲有没有刷新,实在不行 C-u M-x package-upgrade 强制重装一次。版本号确认对了再往下走。
Step 2:把聊天模式接上
0.73 最显眼的改动是聊天模式,把 comint 的 shell 式交互和传统聊天标签页捏在一起。好消息是它默认就开着,不用写配置。开一个 agent-shell 缓冲,看消息区上方是不是多了一排可以切换的标签——有就说明已经生效了。
我自己的情况是升级完第一次开,聊天模式没出来,排查了半天才发现是 use-package 里 :custom 锁死了旧的 agent-shell-mode-hook,把新模式的开关覆盖了。检查一下你配置里有没有类似的东西。
agent-shell-chat-mode-enabled 设为 nil 可以整个关掉这个模式。关不关看你,但别急着关——后面 Step 4 要用到它。
Step 3:活动分组,只展开最新一条
这个改动不大,但日常用起来太舒服了。之前 agent 跑多步任务,所有活动噼里啪啦全摊开,缓冲区长到翻页要滚三下。0.73 给了 'latest 这个取值,只默认展开最新一组活动,代理一转向旧的就自动折起来。
(setq agent-shell-activity-grouping 'latest)
设好之后跑一个多步任务验证一下:观察旧活动是不是自动折叠了。如果之前手动调过 agent-shell-activity-grouping,记得改回来。
Step 4:让排队提示真正排队
这个功能我其实不太确定该不该在这一篇里展开太多,写了半天才想清楚怎么讲不绕。反正核心就一句话:提示队列的命令收进了 agent-shell-prompt-queue.el,三个命令各管一件事——查看、恢复、删除。
(global-set-key (kbd "C-c a q") #'agent-shell-prompt-queue)
(global-set-key (kbd "C-c a r") #'agent-shell-prompt-queue-resume)
(global-set-key (kbd "C-c a d") #'agent-shell-prompt-queue-remove)
现在每次提交新提示,agent-shell 都会把待处理队列列出来,不用你记着去查。想验证这步成了,最简单的方式是给 agent 一个大任务让它跑着,然后提交第二个提示,看队列显示有没有把它收进去,再用 agent-shell-prompt-queue-resume 把它捡回来。
Step 5:从任何地方发起一段提示
这是我最喜欢的新增功能。M-x agent-shell-prompt-compose 从任意缓冲区拉出一个专门的提示编写缓冲,写完之后 C-c C-c 发送并回到原来干活的位置,C-u C-c C-c 提交后直接接着写下一个排队提示。
这两天实际用下来,它解决了我最大的一个痛点:不用切回 agent 缓冲等初始化完成,在代码里看到问题直接在原地开写。agent-shell 还提前显示了 shell 提示,不用等初始化就能开始输入,配合 compose 用几乎是无缝的体验。
(global-set-key (kbd "C-c a c") #'agent-shell-prompt-compose)
对了,插播一句:这版 Markdown 相关的渲染也动了不少,最直观的变化是 TAB 现在能遍历代码块、链接和图片,到了可操作元素上会有操作提示,图片还能加 {width=300} 这样的尺寸属性。这个不用配置,但值得知道有这回事,不然哪天 TAB 跳到图片上弹出个提示你可能以为是 bug。
到这里,升级和接线就完成了。跑起来了吗,照这个清单自查:
-
agent-shell-version返回 0.73 - 缓冲里能看到聊天模式的标签界面
- 多步任务只有最新活动展开,旧活动自动折叠
- 提交第二个提示时队列有显示,恢复命令能正常拉回来
- 在任意代码缓冲里用
agent-shell-prompt-compose发一条提示,发送后回到原位置
都打勾了,这篇就算交付。接下来可以试着把 agent-shell-thought-body 这个 face 调一下,区分思考内容和正文输出;或者研究一下 agent-shell-file-display-action,让跟随链接打开的本地文件用你习惯的方式显示。两个都是小改动,但都属于这版地基上能顺手加的花。
