节点赞助商

sumtsui

我的 Agent 使用心路历程

  •  
  •   sumtsui · 7h 27m ago · 283 views

    小龙虾火了之后我开始用 agent ,但没真正用过小龙虾和 Hermes 。第一个上手的是 NanoClaw,它的特色是代码量少、主要逻辑读得懂,我用起来安心些。后来弃用了,它的多通道和容器化对我没必要,只增加复杂度。

    NanoClaw 跑在 claude-agent-sdk 上。然后我知道了 Claude Code 跟 Claude Desktop 也跑在同一套东西上。后来又知道 Codex 和 OpenCode 也各有自己的 agent SDK 。各家细节不同,但负责的东西是同一批:

    Agent SDK
        ├── Session 管理
        ├── 模型调用
        ├── Agent Loop
        ├── 工具调用
        ├── 文件和 Shell
        ├── 权限审批
        ├── 流式事件
        └── 上下文管理
    

    OpenClaw 和 Hermes 也是各自造了一个类似的东西。看明白这一层之后,我对「换一个 agent 客户端」这件事就没什么执念了,下面那层大同小异,区别在于外面那层怎么给你用。

    一、从 TUI 开始

    放弃 NanoClaw 之后我就直接用 Claude Code 和 OpenCode 。一开始很朴素:在某个项目目录下敲 claudeopencode,起个 TUI 就开始干活。

    然后我写了一些 skills ,给它调用我这台电脑的能力:用我的浏览器、用 ffmpeg 剪视频、把 markdown 转成 PDF 。到这一步它已经不只是个写代码的东西了。

    二、把 agent 本身变成一个项目

    接着为了方便管理,我把 AGENTS.mdCLAUDE.md.opencode/.claude/、skills 全部收进一个固定的文件夹,我叫它 agent-workspace。以后我在这个 workspace 里跑 claudeopencode

    然后我在 workspace 里放了一个 ./notes 文件夹。每轮对话中有需要的时候,就让它把东西写进去 —— 一次调研的结果、一次讨论的结论。

    慢慢地我大部分工作都从这个 workspace 出发。哪怕要开发维护我自己的个人项目,我也是在这里说一句「去 ../xxx 把什么什么做了」。

    工作目录从「项目」挪到了「我」。项目变成了它去访问的对象。

    三、把 agent 从电脑里放出来

    后来我知道,本地跑 opencode 时除了 TUI ,它同时会拉起一个 server ,也就是一个 headless 的 agent runtime 。然后我发现了 opencode-telegram-bot

    于是我在 workspace 上跑 opencode serve,把这个 bot 指向那个 server ,就能在手机上用 Telegram 控制我的 agent 了。session 是互通的:我在电脑前干到一半的活,离开电脑后可以在 Telegram 上接着干。

    四、笔记本

    再后来我开始让它记录我的想法、管理我的待办。网上看到一篇文章想存下来,也直接让 agent 存进那个笔记文件夹。

    为了让它管好这个笔记本,我定了几条规则和几个 skill 。比如我说「记下来 xxx 」:

    • 内容是给我以后看的 → notes/brain-dump/,逐字保存,不做摘要
    • 内容是给 agent 看的跨 session 操作性事实 → notes/memory/,一个主题一个文件

    我也用了 Andrej Karpathy 那套 LLM wiki 的方法论:我说「 ingest 某个链接」,它会读完,然后走一遍归纳总结的流程,落到 notes/knowledge/ 里。

    再后来我把 notes 挪进了一个 GitHub 私有库,作为独立的 repo checkout 在 workspace 里。Agent 每次改完笔记,就 commit 。

    五、user.mdtodos.md

    又后来我加了 user.mdtodos.md

    user.md 是 agent 对我的认识,我自己维护,不让它改。分几节:

    • goals —— 几条我的大目标,一年内不太会变的那种目标
    • shortcomings —— 我自己承认的毛病,例如思维分散不闭环
    • don't let me —— 一张反清单,写清楚哪些行为是逃避,例如捣鼓某个样式捣鼓一小时,而不是去推广项目

    todos.md 记录了我的待办事项,由 agent 维护。每条带 [优先级][主题] 标签和 added / touched 日期,分 active / backlog / done 。我口头说的进展它写进去,我问「昨天哪些没做完」它按日期块回答。

    有了这两个文件,加上它实时知道我在干嘛,它就能干一件我觉得很不错的事 - 充当我的导师跟伙伴,在我做的事情不服务于我的主要目标时,给我提醒。也能给我管理待办,我觉得自己有点 ADHD 倾向,脑子想法很多,经常开新线路,它能帮我抓主线,理思路。

    后来我把这套东西泛化成了一个 Agent 插件:dont-let-me

    六、捣鼓自动记忆

    笔记本主要是我让它写、它才写。我想让它不用我开口,它自动把关于我的耐久事实存下来,下次自动用上。

    我试过两个方案,

    一个是文件式。 抄 Claude Code 那套:一条事实一个 markdown ,MEMORY.md 当索引,每个会话 eager 注入。好处是隐式召回天生就在,模型不用意识到「这儿可能有记忆」,它已经看见了。坏处是索引常驻上下文。还有记忆我是靠 skill 触发的,记不记看 agent 心情。

    另一个是mem0 记忆触发放在了 OpenCode 的钩子上,保证了每轮 session 结束必然会记。但召回又是 pull-based 的,Agent 得先想到去调用 MCP 工具,才搜得到。这个问题不大,但 mem0 的记忆机制太激进了,啥都记,而且因为是记进向量库,不太好 audit ,也就放弃了。

    现在我的方案就是文件式,加一个 remember Skill ,记不记随缘吧,反正重要的我一般会主动让它记。实在没记下来的,还可以让 Agent 去 sessions 里面grep

    以后我打算模仿下小龙虾那套,dreaming ,搞个独立进程去做记忆,这样上下文比较完整,记下来的东西也比较可控。还有就是 memOS 那套,给记忆打分,引入淘汰跟沉淀的机制。那就是后话了。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   954 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:13 · PVG 04:13 · LAX 13:13 · JFK 16:13
    ♥ Do have faith in what you're doing.