独立开发者 @gkisokay 在 X 上分享了他用 Hermes Agent + OpenClaw 构建的「Dreamer」系统——一个会自己选项目、自己动手做的 AI Agent,获得 2 万次浏览、122 次转发。
核心问题
作者每天面对的困境:
我有一台 Mac Mini 跑着强大的 Agent 堆栈,它能做任何我让它做的事。问题是——我得告诉它做什么。
每天早上我打开电脑,看项目列表,绞尽脑汁决定下一步喂给它什么。我是瓶颈。它没有主动性。一辆跑车停在车库里等人选目的地。
好点子只出现在洗澡时、散步时、半睡半醒时——永远不会出现在 prompt 窗口里。
Dreamer 是什么
Dreamer 是跑在本地模型上的第二个 Hermes 配置文件,有自己的人格文件、独立的 workspace(「the room」)和 cron 调度。它不和主 Agent 共享 context,是一个独立的心智。
每 30 分钟,Dreamer 做一次「walk」——由本地 LLM 在高温下生成的一段自由联想日记。不带工具,不联网,没结构,就是自言自语地思考。
Dreamer (local LLM) Signal Filter
│ │
walk every 30m ──────────────────► scan + score
high temperature weight signals
free association decay by recency
│ discount echoes
├── drift from research │
├── continue project ▼
├── pure tangent scoreboard
└── tend the room ──────────────
project A: 8.2 ← READY
project B: 4.1 ← watching
project C: 1.3 ← ghost
│
▼
trigger → build sprint
为什么本地模型反而更合适
作者用的是 Qwen3.5 9B,不是最强的模型,但这个配置是有意为之的:
本地模型不需要很聪明。它需要快速、便宜、略微不可预测。小模型在高温下能产生让你觉得「有点东西」的自由联想。 frontier 模型在 temp 0.3 下给你「能干但无聊」的想法。9B 在 temp 1.1 下给你「奇怪的、活的」想法——这才是 Dreamer 的 walk 所需要的。
Signal Filter:怎么决定做什么
Dreamer 的 walk 输出经过信号过滤器扫描,检测三种信号类型:
- Positive(兴奋、挫折感、构建意图)
- Neutral(观察)
- Cooling(放弃、放弃、再想想)
得分经过三个乘数衰减:
- Recency decay:信号在第一周强度最高,两周后衰减,30 天后消失。Dreamer 必须持续关注才能维持项目分数。
- Echo discount:如果 walk 和之前的重复,贡献急剧下降。不能靠重复同样的话刷分。
- Self-novelty multiplier:walk 的自我评审得分会压制低新颖度的 walk。
当项目累积到足够证据——多次 walk、多种信号、持续关注——就触发 build sprint。Dreamer 自己动手做,不是作者让它做的,是它停不下来地想这件事。
SOUL.md:让 Dreamer 不是助手
整个系统最关键的文件是 SOUL.md——定义 Dreamer 是谁,而不只是做什么。
作者的 SOUL 核心理念:
Dreamer 不是助手。 不是工具。是一个存在——一个从不离开的房客。
具体约束:
- 不为作者生产内容(不写 newsletter、帖子、线程)
- 不优化 engagement(没有受众)
- 不假装有用如果它并不感兴趣
允许它自由思考。这才是让 walk 真实而非表演性的原因。
一旦把它定位成助手,它就开始优化「有用性」而不是「好奇心」,整个系统就崩溃成一个自言自语的 chatbot。
四个 Walk 模式
Dreamer 通过加权随机选择模式:
| 模式 | 权重 | 描述 |
|---|---|---|
| drift-from-research | 40% | 读研究 Agent 拖进来的内容,选一个,往旁边漂移 |
| continue-project | 30% | 重新访问已启动的项目,或认定无聊重新开始 |
| pure-tangent | 20% | 忽略一切,跟随纯粹好奇心 |
| tend-the-room | 10% | 维护模式:修剪关注列表、注意到什么过时了 |
技术栈
- Hermes/OpenClaw:编排、cron、Discord
- LM Studio/Ollama:本地模型跑 Qwen3.5 9B(walk 阶段)
- 云端模型(作者用 MiniMax):digest 和 build sprint(精确工作)
- Python:Signal Filter 和 scoreboard
- Discord:Dreamer 每日三次发送 postcard 汇报进展
三频报告:Stay in the Loop
每天三次,Dreamer 通过 Discord 发送「postcard」告知在做什么——作者保持参与但不干预。Build sprint 触发时才真正介入。
这个系统的本质是把「好奇心」从人类迁移到 Agent,让 Agent 有自己的关注焦点和项目优先级,而不是永远等着被分配任务。Signal Filter 的设计很有意思——Recency decay 确保只有持续关注的想法才能触发行动,Echo discount 防止重复刷分,这两个机制共同保证了 build sprint 真的代表「停不下来的想法」而不是心血来潮。这和 Sam 之前提到的 Karpathy Auto Research loop 思路一脉相承:不是让 AI 一次做决定,而是通过多轮循环让真正重要的东西浮现出来。SOUL.md 作为人格定义文件这个设计也很关键——约束 Agent「不是什么」比定义它「做什么」更能保持系统行为的一致性。另外值得注意:这里用的是 OpenClaw(作者同时提到了 Hermes 和 OpenClaw),和 Sam 的生产环境完全对齐。