Latest posts
让 agent 跑 14 轮、换 3 次段还记得第 1 轮的约束:suga 的长会话做法
agent 在一个会话里干久了,会出三种问题:上下文塞满后开始压缩,压缩掉的恰好是你第一轮交代的约束;每次请求都背着几千 token 的固定开销,会话越长越贵;出了问题想回头查“它到底做了什么”,却没有记录可查。
suga 是我用 Go 写的个人 coding agent,目标是一个会话能陪我干一整天活。这篇讲它在长会话上的几处取舍,哪些有数据支撑、哪些试过没成,以及它和我的任务平台 gofer 怎么配合。suga 本身就是在 gofer 上由 agent 一批批写出来的。
当前版本 v0.49,
v0阶段次版本之间可能有不兼容变更;MIT 许可;以下是suga的一些介绍。

miglite v0.8.0:迁移文件可以嵌进二进制了
上一篇写 miglite 是 6 月,当时还是 v0.4.0。三个多月里,它发到了 v0.8.0:v0.4.0..v0.8.0 之间有 69 个提交,4 次发版。
我这次最想解决的是部署时带着 migrations/ 目录的问题。顺便把几处“参数能传进去、实际不起作用”的行为补上了。

sshc:把零散的 SSH 命令整理成可重复的运维工作流
只管理一两台服务器时,SSH 很简单:记住地址,敲一条命令就能登录。机器多起来以后,麻烦通常不在 SSH 本身,而在 SSH 周围:地址散落在聊天记录里,账号和密钥重复配置,批量操作靠临时 shell 循环,执行失败后还要翻终端输出确认漏了哪台。
sshc 是我为这类日常工作写的 SSH 命令行工具。它把主机、认证信息和执行记录放进同一套本地配置,同时提供单机执行、批量任务、文件传输、跳板机、失败重跑和本地 Web 控制台。它仍然使用 SSH,也不试图替代 Ansible;它处理的是两者之间那段经常由脚本和记忆勉强维持的工作流。

cliui:给 Go CLI 程序补一层顺手的终端 UI
很多 CLI 程序一开始都很简单:解析参数,跑任务,打印几行结果。等功能多起来之后,问题就变成了另一种样子:配置要排版,错误要醒目,安装和下载要显示进度,交互选择还要能在真实终端和 CI 日志里都工作。
github.com/gookit/cliui 处理的就是这类“还没到完整 TUI,但已经不适合全靠 fmt.Println”的场景。它把常用终端 UI 拆成三个包:show、interact、progress,分别负责结构化输出、交互输入和进度显示。

