凌晨七点,任务准时跑完了,状态是 ok,回复只有一行 [SILENT]。这看起来像成功,但作者盯着这行字,心里清楚它证明不了什么——它只说明调度器醒了,不说明它找到了任何有用的东西。
这就是 SCS Guardian 项目当下的真实位置。作者做了几个月的智能体,换过不同的任务、不同的对话,也做过能从 Telegram 摸到的机器人。做着做着,他发现一件不太舒服的事:撑住这一切的人还是他自己。
他得记住什么才是重要的,把一个智能体说的话转述给另一个,察觉工作什么时候跑偏了,追问一个任务到底有没有完成,然后再问一遍,这次得换个问法。他想要的是一个能分担责任的伙伴,一个理解目标、会去查缺什么、带着理由回来的东西。结果他们一次次把它拆成了更小的任务。
有个智能体每天早上检查他的 DEV 文章,能告诉他某个反应数变了。任务确实跑通了,但他得追问:这离最初想要的那个智能体,到底近了多少?答案是几乎没有。
一个工具,不等于一个守护者
这次他在 Hermes Agent 上做了新集成:SCS Guardian。公开包里有一个伙伴模板、一份从历次纠正中提炼出的流程技能,还有一个 GitHub 观察器,给它提供可以具体调查的对象。
观察器只是一个工具,不是守护者的全部。它列出的观察项,也不等于这个智能体被允许思考和表达的全部内容。作者说,该变懒的人是他自己——他想少花点时间,给自己的提醒系统当提醒系统。
演示是一段 16 分 37 秒的完整录屏,没有旁白,没有剪辑。仓库、离线演示和定时任务记录放在最前面,然后他问守护者:你早上七点那次运行发现了什么,还有什么你现在看不到?
它没有立刻回答,而是先去调查。在这过程中,它改了自己的监控,检查了结果,还记下一条教训。答案在录屏结束前说完了。有人讨论要不要剪掉等待,他坚持保留整段——从提问到回答之间的工作过程,才是他想让人看到的东西,包括它花了多久。
仓库里还有一个离线演示,不需要密钥就能跑,走一遍基线、未变数据、新拉取请求和一次失败的查询。全程标注为合成数据,演示的是观察代码,不是模型的判断。
三次报告,评审没过
守护者的对话工作是另一条线。作者给它的任务是:理解我们要达成什么,检查已批准的工作,挑一件可能被漏掉的重要事情去调查,带着推理回来;信息或权限缺失时就问他。
它查了文件和 GitHub 变更。对答案的评审也是故事的一部分:它起初把过期草稿当成当前版本,后来又夸大了读一个补丁能确立什么。第三份报告把检查过的、测试过的、仍不确定的分开了,但结尾的结论仍然超出了证据。评审没有让它通过。
作者想让读者看到这个结果,而不只是最好看的那次回答。
代码是公开的,初始 CI 在提交 2610698 上通过。便携采集器只用 Python 标准库,记录仓库修订、拉取请求身份、分支、工作流文件、协作者和 Actions 运行,输出稳定快照供 Hermes 比对,时间戳回执单独保存。
这个分离很关键:如果把新时间戳塞进快照,每次检查都会看起来像有变化。
包里还有八个离线开发测试,包括同一作者的第二个拉取请求、一个失败工作流与一个成功工作流并存,以及一次 API 权限失败。最后这个案例不能变成“没有协作者”——观察失败,和观察到空,是两回事。
这个便携版本是候选,和作者 Mac 上装的第一版观察器不是一回事。仓库里说候选包没有声称有定时运行,指的是这个包;下面那次七点运行,是已安装的观察器。包的测试不能证明已安装版本行为相同。
记忆快满了,它自己动手搬
最大的实现决定,是不再自己写整个智能体运行时。Hermes 提供框架,他们围绕它构建守护者的目的、工作方式和观察工具。在他的配置里,推理来自通过 Nous Portal 的托管模型——应用跑在他的 Mac 上,不代表所有推理都在本地发生。
灵魂文件描述关系与目的:理解工作,说话直白,挑战薄弱推理,注意缺失的工作,保留他的自主权。公开版本删掉了他的个人档案和团队的私人信件。
流程技能管的是怎么检查工作:读当前源码,区分新发现和已记录的东西,说清实际测了什么,别用一份报告不支持的结论收尾。
然后守护者撞上了一个现实限制:记忆快满了。他让它自己解决。它把较长的流程教训挪进技能,在常驻记忆里留了一条短提醒。文件变了,教训还在。
这引出一个比“它有没有学会”更有用的问题:它会不会在一个新情境里取回并应用这些教训,尤其是一个看起来不像守护者工作的情境?这一点还没被证实。搬文本是可测量的,跨任务保住一条纠正,需要另一种证据。
定时工作里,确定性采集器提供观察。后续输出没变时 Hermes 可以跳过模型,变了才调用。作者查了已安装调度器的源码:第一次监控触发也会带着基线上下文调用智能体——没有上一次观察,就谈不上“发现”。
十月二十二日,七点零一分二十八秒
调度器在美国东部时间 7:00:01 派发任务,采集器在 7:00:39 记录了 12 个公开仓库,任务在 7:01:28 以 ok 状态结束,回复是 [SILENT]。
这确立了一次定时运行,不确立守护者找到了有用的东西。
起始快照有个问题:两个协作者字段显示为 -。已安装的采集器用同一个符号表示空列表和查询失败。评审指出了这个缺口,作者把它带回给守护者。它把失败路径改成输出 unavailable,并更新了流程教训。它报告的后续运行显示,两个仓库都带上了这个标签。
修复让缺失的信息变得可见。但定时智能体会不会恰当处理它,还得再看。而且改监控本身也会改输出:一个新标签,不是 GitHub 上真有什么变了的证据。
录屏里发生的事更具体。他的问题只关于早上的运行,没让它去修一个有噪声的比对。调查过程中,守护者发现生成的工作摘要文件在哈希上有问题:那个文件带时间戳,重新生成就会变,于是底层工作没变,观察器也可能唤醒模型。
它删掉了那个哈希,保留文件年龄检查,并比对两次连续的监控输出。守护者自己的工具结果显示两次一致。这只能说明两次安静运行匹配,不能证明时间戳就是原因;哈希没了的证据是脚本本身。它还重置了存储的基线,把教训加进技能。
代价是:删掉整个哈希,也删掉了对该文件内容变化的检测。两次匹配不能证明未来每次唤醒都有用,重置基线也可能把真实变化和修复一起吞掉。这次就已经吞了一个——新基线包含作者自己对 scs-guardian 的提交,明天的运行不会为它唤醒。这需要进一步评审,不是盖个胜利章。
但它确实不止是“我会改进”的承诺。他问它的工作,它找到一个具体机制,改了,又检查了结果。这正是他想从伙伴那里得到的东西。修复能不能站住,是下一个问题。
GitHub 采集器用的是专用只读令牌。这限制的是那个凭据,并不能神奇地沙箱化运行在他用户账户下的模型能用的每个工具。公开配置解释了这个区别,而不是把一段提示词叫作锁。
同样的区别适用于他的指令:他说了什么、智能体认为他是什么意思、他实际授权了什么,是三件不同的事。“评审这个拉取请求”不等于“合并它”,哪怕凭据允许。守住这条边界是守护者工作的一部分,但这次记录没有展示一个能在其他智能体工具上强制执行它的机制。
为什么开放创新重要?因为他能检查承载这段关系的运行时。当智能体和另一个助手对调度器实际做了什么产生分歧时,源码就在那里可以读。目的、技能和观察代码都是他能控制的文件,他能调整运行时、换模型配置,而不用从一张空白对话重新开始搭建伙伴的工作方式。这不等于离线声明,也不等于推理免费。
Hermes 是 Nous Research 的工作。早先的 Agent One 和 SCS 研究影响了这个项目,但那几个月的工作没有被包装成本周的新构建。新东西是守护者集成和围绕它的包。Claude Code、Codex 和守护者协助了开发,它们的名字不是额外的人类队友。
他还想要更多:它自己选择的有用调查、有外部证据支撑的机会,最终是一场能打到他手机上的对话。这些是方向,不是今天能诚实演示的功能。
他想看到的变化,描述起来简单,做起来难:我不该再提供每一个下一步想法。所以一个定时任务只是开始。工作得变成能交出去、能检查、能信任到让他不再一个人扛着全部的东西。
热门跟贴