跳到正文

← 文章

我如何使用 Grokbot 跟 Heptabase 联动,进行讨论、更新并让其他 Agent 参与进来

Grokbot 连上 Heptabase、Readwise 和 Todoist,用每天的记录触发讨论。

最近我高频使用 Grokbot 的 agent、ChatGPT,以及 Heptabase 内置的 agent。用得越多我越发现,自己可以在 Heptabase 里记录的内容越来越丰富。我会用 ChatGPT 和 Grokbot 分别去访问 Heptabase。随着用 Grokbot 做的事情变多,我越发觉得需要一个共享的 memory layer,而这个 layer 必然包含大量记录相关信息的笔记。毋庸置疑,我们的笔记软件就是最合适的 context layer 载体,所以我开始让 Grokbot 去访问 Heptabase 相关的 whiteboard 和内容。

这两天我在大规模、高强度地使用 Grokbot 来完成日常生活中的很多工作和讨论,在里面迭代了几个 bot,想把这些实践和体验分享给大家。

首先,我清楚 Grokbot 是一个常驻机器人,而不是像 ChatGPT 那样基于单次会话的单一聊天窗口。刚接触它时我就在思考:自己到底需要什么样的常驻机器人来辅助日常工作和生活,带来足够多的帮助?

我最先尝试的是一个“目标导师”。我人生中有一些想要实现的目标和愿望,比如坚持运动跑步、管理好个人健康等。于是我开始跟 Grokbot 聊,把智能手表里的睡眠数据、心率数据以及各种个人健康情况等 context 喂给它,让它担任健康顾问。它的功能就是每天跟我聊,了解我的健康数据并提供指导。但我发现这并没有太大帮助,创建之后并没真正用起来。

接着我让它做我的博客助手。是的,在发布第一篇博客之前,我就尝试建一个博客机器人来帮我管理博客,简直是脱裤子放屁。这个尝试同样失败了,这也是为什么我到现在才写这篇内容,如果博客机器人真的有效,文章早就发出来了。不成功的原因在于,用 Grokbot 管理博客只能帮你讨论和构思,却不能解决实际的创作过程。

回到前面的核心主题:普通对话聊完一个就会开新会话,而在 Grokbot 里可以做到持续不间断地聊天,所以它能积累越来越多对你的记忆和了解。

基于这种认识,我开始把 Grokbot 当作一些小助手。比如针对我做的一些项目,我尝试让它追踪和管理,把它连到 GitHub 上的一个 project,让它跟我一起讨论项目的演进与更新。但我发现 no, it’s not easy:我提供的信息它虽然能读到,但可能是初代版本的缘故,设定一些 automation 太啰嗦,整体表现比较呆,没什么实际意义。

我在使用 Grokbot 的第一代 use case 里,主要是把它当成一个有 long-term memory、能长期对话的 ChatGPT。

我会把公司 ERP 系统的账号和密码发给它,让它帮我做一些查询操作。当我需要了解客户订单和欠款金额等数据时,直接跟它聊天查询就行,不用自己打开 ERP。做 PPT 时,我也会把需求丢给它去搜索调研。我甚至为它录制了几个 skill,教它怎么查询系统。因为它有 long-term memory,可以总结这几个 skill 并替我干活。但除此之外就没别的了,我用得比较少,也找不到更多 use case,总觉得它挺厉害但没太多强需求。

转机发生在刚过去的周末,我开始了第二代迭代,接触到了它的 automation 功能。这个功能可以用 Grokbot 设定定时任务,我以前虽然知道,但一直没打开这方面的脑洞。

上周日,我在聊天中创建了一个 mission tracker,相当于我的“使命导师”。我现在所处的阶段比较迷茫,希望它能推动我找到使命,定期发消息跟我聊聊:“昨天你都干了什么?朝你的 mission 前进了没有?做没做什么有意义的事,还是放假在家什么都没干?”

这是我 automation 的第一版:让 mission tracker 每天晚上发消息骚扰我、逼我反省。

但说实话效果很一般。它虽然抛出了问题,但我往往不想回答。因为如果它只发一个空泛的问题,我就必须输入一大段话来回应,这种体验很不爽,人家找你聊天都是自带话题的,凭什么要我单方面输出?

基于这个痛点,我迭代了第二版(V2):

我让 Grokbot 去抓取我前一天在 X(Twitter)上存的 bookmarks。说来惭愧,我已经很长时间没打开 Readwise Reader 认真阅读了,但在 Twitter 上每天会存很多书签,这些内容非常容易统计。

于是我让 Grokbot 每天早上 6 点半登录我的 X 账户,去 profile 扒一下过去 24 小时存了哪些 bookmarks,阅读并整理一下,了解我最近在关注什么;然后在每天早上 8 点把它们整理成一个带有适当分组的 list 发给我。

因为我在 X 上存的内容,有时偏鸡汤,有时是 how-to,有时是故事,它们经常会触发我的一些感想。但我不可能一边刷 Twitter 一边复制粘贴到笔记软件里写 annotation,我比较懒。而如果它第二天早上主动把这些内容发给我,我就有话可聊了,可以顺手把想法丢给它,让它陪我一起梳理。

设定好这个之后,我又想到:除了回顾原文,我还可以让 Grokbot 把我在 Readwise Reader 里收藏的文章直接翻译好发给我。很多时候我收藏了文章却“已存不读”,就直接跳过了。现在我希望它把内容发到对话窗里,方便我快速扫一遍,然后直接用语音输入回复它,生成自己的 annotation 和心得感想,进一步丰富内容。

我把 Grokbot 搜集的这些数据称为 trigger(触发器),专门用来触发我的回答和表达灵感。通过不断优化 trigger,Grokbot 拥有了越来越丰富的 context。

很快我就达成了一个相对稳定的状态:它拥有访问我的 Todoist、Heptabase 和 Readwise Reader 这三个工具的权限和能力(通过 CLI、API 和 MCP 等)。

它会在 Readwise Reader 中帮我搞定英文内容的翻译。比如我遇到一篇想读的英文原文并存进 Reader,以前它只能存网页,想看中文就得在电脑端打开沉浸式翻译、等待翻译完成、再用插件存进 Reader。但我大部分时间都是用手机刷 Twitter,不可能专门开电脑去折腾沉浸式翻译,所以很长一段时间里,我的 documents 和 articles 变得非常鸡肋。虽然我有读英文的能力,但读起来真的很累,我就是不想读。

我想了一个新方法,开始让 Grokbot 去调研 Readwise Reader API / CLI 有哪些能力,发现它可以完整实现 document 的获取和导入。

于是我创建了一个 automation:每当我导入一篇文章到 Readwise Reader 时,它就会通过 Webhook 发一条消息给 Grokbot。Grokbot 收到提醒后,会调用 API 获取该 document 的元数据和原文,按照我指定的翻译 prompt 进行翻译,在本地整理好新内容,删除远端的英文原文,再将翻译好的内容重新导入 Readwise Reader。这样我平时刷 Twitter 时只需要随手保存,任何时候打开 Reader 都能直接阅读翻译好的中文版本。

接着,我通过 Readwise Reader 中的 highlights 作为 trigger 来进一步丰富流程。每天早上让它把昨天创建的 highlights 按 document 分组汇总发给我汇报。我要求它针对每个 document 发一条消息,并将其做成一个 thread,里面包含多条 highlights。我在 thread 里进行深入回复和探讨,它就可以基于指定内容去创建相关笔记并回答。

这只是一个草稿版。更进一步,考虑到 Readwise Reader 的内容都会同步到 Heptabase 中,我又做了一番调整:直接让它调用 Heptabase CLI 抓取同步进来的 highlight elements,包括我们在前一天创建和编辑过的卡片,全部作为 trigger 的一部分来进行探讨。

结合这几次迭代,我们目前的最终版本包含以下几个部分:

  1. Todo 机器人(Grokbot):每天早上和晚上分别汇报前一天的 Inbox 和 Today 中有哪些任务,陪我一起讨论整理,早上明确当天要做的任务,晚上清空 Inbox 和 Today 中的任务。

  2. Read Agent:接收 Webhook 提示,将 Readwise Reader 中导入的英文内容自动翻译成中文。要求专业名词保留原文格式,且中英文之间保留空格。处理完成后打上 grokbot 的 tag 并导回 Readwise Reader。另外在每天中午我相对空闲的时候,它会发消息告诉我 Reader 的 Inbox 和 Feed 中有哪些值得读的内容,附上带跳转链接的文档标题以及中文 summarization,方便我快速筛选并点击跳转阅读,这极大地促进了我的阅读量。

  3. Research Agent:任何时候我跟它聊完天,它都会按照指令调用 Heptabase CLI,在指定位置创建一个 whiteboard,把我们讨论内容的脉络整理进去。

  4. Chief of Staff:每天早上发送前一天的内容总结作为 trigger,列出我前一天收藏的 Twitter、标注的 highlights、新建及编辑过的卡片。我会快速浏览并挑选有感触的内容进行回复,它则基于我的回复进一步编辑和调整对应卡片。

目前唯一的短板在于 Heptabase CLI 缺失了对 highlight 的操作能力,特别是编辑 highlight element 以及将 highlight element 放到 whiteboard 上这两个核心功能。否则,当 Grokbot 把内容发给我后,我完全可以直接回复做 annotate,由它更新调整 highlights、将我的感想转成卡片并连接到 whiteboard 上,在对应的 space 中归档脉络。

虽然现在还没办法实现这种完美的闭环,只能每天给我发汇报,但我中间尝试过一个更进阶的方案:让它每天早上生成一个以日期为标题的 Heptabase whiteboard,用名为 “X” 的 section 框住所有推特内容,若为文档 highlights 则以该文档标题作为 section 框住全部高亮。我点击链接即可跳转到 Heptabase 的 whiteboard 查看并调整。

现在唯一的痛点就是等待 Heptabase 团队完善 CLI 能力,届时整个工作流就能真正实现闭环了。

最后再分享两个我自己平时打造的 Grokbot 实现:

第一个是我们的 Health Agent。

从一开始我就给它创建并设定了一个更丰富的架构。Grokbot 的架构是不暴露给用户的,相对来说会追求减少你折腾工具所花的时间,让你沉浸在享受它提供的服务中。这带来的一个缺点是无法频繁微操,或者说微操的成本很高、很麻烦。所以我一般只查到架构级:让它把自己的架构分析汇报给我,说明有几个 automations、几个 ops 以及它自己的 profile.md。如果觉得某几个标注为 suspended 的 automation 没用了,我就直接让它把相关文件删掉。对于 ops,我会提醒它在 profile.md 里梳理清楚有哪些能力可供调用和整理,具体内容全部写进 ops,不要冗余重复,主要就是希望它能稍微节约 context,避免浪费。效果虽然不确定,但说了总比没说强。

目前我的健康顾问 Agent 配置分为四个模块:运动、睡眠、体检结果,以及目标追踪。上一次的体检结果我会交给它,让它按照我设定的目标去持续追踪和优化。它在 profile 里能看到这几个部分,但具体内容的讨论是分流的:跟我聊运动时,它就去查运动相关的 .md;聊睡眠就去查睡眠相关的 .md,不会全部混在一起,同时它也清楚自己整体负责这几个板块。

另外是我们的工作 Agent,我也给它分成了几个部分:

  1. 日常经常要做的表格工作,单独分了一个 op

  2. 读取公司 ERP 系统的数据,分了一个 op

  3. PPT 制作:我每个月要做两次月度会议报告的 PPT,我把相关格式和模板提供给它后,它已经学会并创建了对应的 skill

然后再分享一个我自己实现的 Grokbot 玩法:博主 Don’t be silent 刚发布了一系列开源 skills,其中像 “don’t be silent goal” 这种用福格行为模型来实现的 skill 挺有意思,能帮人把目标精细化。于是我把他的 skills 仓库链接直接丢给 Grokbot,单独创建了一个 Agent 去盯着该仓库,并把这一系列 skills 全部安装下来。

我把这个 Agent 直接命名为 Don’t be silent,假设它就是这位博主,放在我的 growth bot team 里。遇到我觉得适合他回答的问题,我就去向他提问,看他能给出什么反馈。

Skill 本质上就是对人的抽象与蒸馏。既然大家都在蒸馏自己、开源自己,那不妨把你觉得很厉害的人也蒸馏出来,加入到自己的团队里,让他为你打工。