Latest posts
把 Claude Code、Codex 当成可验收的任务来跑:gofer,一个自托管的 agent 控制面
同时开着三四个 Claude Code 和 Codex 会话、分布在两台电脑和一个容器里的时候,我经常答不上这几个问题:哪个会话在等我回复?那个让它改测试的 agent 到底改了什么,跑过测试没有?昨天晚上派出去的活,现在是做完了、卡住了,还是早就报错退出了?出门在外,手机上能不能看一眼、点个批准?
gofer 是我为这件事写的工具。一句话:你的 agent、你的机器、一个控制面——把 Claude Code、Codex、ACP agent 或者普通命令,作为可追踪、可验收的任务,跑在你自己的每台机器上,不上云,worker 也不需要开入站端口。
先交代清楚:gofer 是 MIT 开源,单个 Go 二进制带一个 Web 控制台;当前版本 v0.199,还在 0.x,发版频繁,接口可能调整,以 CHANGELOG 为准;以下是 gofer 简介。

让 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;它处理的是两者之间那段经常由脚本和记忆勉强维持的工作流。

