Skip to content

Latest commit

 

History

History
337 lines (236 loc) · 21.7 KB

superagent.md

File metadata and controls

337 lines (236 loc) · 21.7 KB

AnyModelBot 的 Eyes 标志:两只竖向胶囊形的眼睛

AnyModelBot 超级智能体

交代一句,它在后台做完。需要你的时候,才来找你。

项目首页 | 下载 | 设计文档 | dsh-superagent | 问题反馈

📌 一个例子 · ⏳ 后台任务 · 📋 规则 · 🙋 需要你 · 🔕 不打扰 · 💰 权限与花费 · 🧭 设计原则


🤖 从聊天到托付

聊天机器人等你开口,答完就停。可很多事不是一问一答:调研要跑半小时,价格要每天盯,周报每周一要写。你想交代一句就去忙别的,有结果、要你拍板的时候再听它说。

AnyModelBot 的超级智能体做的就是这件事。它由三样东西组成:

是什么 例子
后台任务 交代给机器人的一件事。有自己的会话和文件夹,做完把结果发回你发起的那段对话 「帮我调研三家云的 GPU 价格,做个对比」
规则 你用一句话写下的长期吩咐,按时间表去做,有值得说的才告诉你。想先看看,可以让它先观察 「每天早上 8 点看看 X 的价格,低于 200 告诉我」
需要你 所有机器人在等你回答、批准或处理的事,集中在一处。没事时不占地方 「「GPU 价格调研」在等你回答:报告用中文还是英文?」

三样东西背后是同一条原则,来自 DeepSeek 的 dsh-superagent 原型:占用尽量少的注意力,带来尽量多的价值。 一个能替你干活的智能体,也能把你的注意力耗光。所以它只在你要求、或你写下的规则允许时才动手,只在你必须决定、或能用上结果时才开口。

和 AnyModelBot 的其他部分一样,这一切跑在你自己的电脑上,任意模型都能用,按量付费。

📌 先看一个例子

周一上午,你在微信里:

10:02  你    帮我调研一下三家云的 A100 价格,做个对比表
10:02  天天  好,后台开始调研三家云的 GPU 价格,好了告诉你,你可以继续聊别的。
10:05  你    明天北京天气怎么样?
10:05  天天  明天晴,最高 18 度……
10:12  天天  ❓「GPU 价格调研」想问你:B 云的报价要登录才能看,先跳过它吗?
             1. 跳过
             2. 我发你截图
             不回复就按跳过做
             (回复编号,或引用这条消息回答)
10:43  天天  GPU 价格调研好了:A100 包月最便宜的是 X 云,约 ¥7,800,对比表已发给你。
             B 云要登录,先跳过了。引用这条消息可以继续问。
10:50  你    「引用:GPU 价格调研好了…」再加上 H100,改成英文
10:50  天天  收到,「GPU 价格调研」继续。

这段对话里:

  • 机器人判断这件事要跑一阵子,开了后台任务。确认就是那句回复,没有多发一条。
  • 任务在自己的会话里跑,聊天照常,天气问题不用排队。
  • 报告用什么语言、表格怎么排,它自己定。只问了一个它确实解决不了的问题,还带着默认答案;问完没有停下来等,你没回,它就按默认跳过了 B 云,在结果里说了一声。进展一条也没推给你。
  • 结果回到你发起的那段对话。引用它,就是接着问这个任务。

要是晚上 11 点才做完,结果会留到早上 8 点再发。要是你 24 小时没在微信里说话,结果先留着,桌面端看得到,你下次发消息时一起送到。

⏳ 后台任务

怎么开始。 不用学命令。要跑一阵子的事,比如调研、做报告、写代码、整理文件,机器人会自己放到后台,并在回复里说一句。你也可以直接说「后台做」;想留在聊天里做,就说「前台做」。

各干各的。 每个任务有自己的智能体会话和文件夹(tasks/<名字>-<编号>/),沿用开始时的模型和权限。聊天永远不等任务:每个机器人同时跑 2 个后台任务,所有机器人合计 4 个。你回答了任务的问题,它会插到队伍最前面。

接着问。 三种方式找到同一个任务:

  • 微信里引用它发来的结果或问题;
  • 飞书里回复那条消息,结果都回在你的请求下面;
  • 在任何地方点名:「GPU 那个改成英文」。

任务还在做,你的话会在它的下一步送到;已经做完或失败了,就在同一个任务里接着做,文件和上下文都还在。

很少问你。 语言、格式、范围这类事,机器人自己定,在结果里说一句选了什么。只有三种情况才问:猜错会造成损失、花钱或白做大半;需要只有你才有的东西,比如登录、文件、密码;这一步不可撤回,比如付款、删除你的数据、替你给别人发消息。

真要问时分两种:

  • 有默认答案的,比如上面的「B 云要登录,先跳过吗」:马上问你,附一句「不回复就按跳过做」,然后接着做不依赖答案的部分。你的回答在它的下一步送到;你一直没回、它先做完了,就按默认做,在结果里说一声,那个问题自动收回。之后再引用那条问题回答,任务会接着改。
  • 只有你能定的,比如付款、删除:同样马上问你,然后停下来等。

所以晚上 11 点交代的任务,不会因为一个问题空等到早上。

状态一眼看懂。

状态 意思
进行中、排队中 在做,或在等空位
进行中,有个问题等你回答 问了你一个有默认答案的问题,没停下来
等你回答、等你批准 有一个只有你能定的问题,或一次越界操作,在等你
预算用完 花到了预算,停下来问你要不要继续
失败 自动重试过还是没做成,告诉你卡在哪
未送达 结果没能送到你那里,比如微信窗口关了
已完成、已停止 做完了,还能接着问;或者你让它停了

重启了也不乱。 应用退出或崩溃时正在跑的任务,下次启动会接着做,并先收到一条说明:上一步可能没做完,哪些后台命令被停了。任务做会改变外部的事(发送、发帖、付款、删除)之前和之后,各在 .task/journal.md 记一行;恢复时先看日志和外部系统,再决定要不要重做。机器人自己发出的消息,只会发一次。

在聊天里管。 发 /tasks 列出后台任务和规则,发 /stop 编号 停掉一个。

📋 规则:说一句,按时去做

规则是你用一句话写下的长期吩咐,加一个时间表。在聊天里说就行:

每天早上 8 点看看 X 的价格,低于 200 告诉我

机器人建好规则,回你一句:

已建好规则:每天 08:00 看 X 价格,有值得说的就告诉你。

规则建好就按时去做,不用你再确认一遍:你说的话就是授权。

两种规则。

  • 检查:到点让智能体去看、去判断,有值得说的才说。
  • 提醒:「明天下午 3 点提醒我开会」。话和时间都是你定的,到点直接发,不调用模型。

时间表可以是一次、每天、每个工作日、每周几、每隔 N 分钟(至少 15 分钟),或者 cron。界面上会翻译成话,比如「每个工作日 08:00(Asia/Shanghai)」。

想先看看? 说「先观察」,或者在规则编辑器里选观察。观察中的规则照常按时运行,区别在这里:

观察 执行
按时运行 ✅ ✅
文件 只读 最多可写自己的工作区
给你发消息 从不 按不打扰的规矩发
需要批准的操作 自动拒绝,记下「需要批准:…」 进「需要你」,1 小时没批就算这次失败
运行记录写什么 本会发送、本会保持安静、本会做 已发送、保持安静

运行记录让你判断它靠不靠谱:

今天 08:00   本会发送:“X 降价了,现在 ¥199(昨天 ¥259)”   约 $0.03
昨天 08:00   本会保持安静(¥259)                          约 $0.02
前天 08:00   失败:页面打不开                                       约 $0.01
10/27 08:00  跳过:电脑没开

先观察的规则满 3 次正常运行,「需要你」里会出现一条「规则「看 X 价格」已观察 3 次,需要你来决定是否执行」,下面是它最近一次本会发送的话,点 [改为执行] 或 [继续观察]。这条不推到微信、飞书。选了继续观察,这一版规则不再问;改了规则的原话,再满 3 次会重新问。

不追旧账。 电脑关着错过了时间:错过不久的,开机补跑一次;太久的记为「跳过:电脑没开」,不会一口气补一堆。连续失败 3 次的规则自动暂停,出现在「需要你」里。

观察保证什么。 不通过 AnyModelBot 给任何人发消息,也不改文件,因为沙箱是只读的。它拦不住命令行工具自己联网,这一点界面上也写明了。

🙋 需要你

所有机器人等你处理的事,都在侧栏的「需要你」这一行。没有要处理的事时,这一行不出现。

需要你
● 天天的「GPU 价格调研」在等你回答                     2 分钟前
  B 云的报价要登录才能看,先跳过它吗?
  不回复就按跳过做
  [跳过] [我发你截图] [回复…]

● 天天的「清理旧构建」在等你批准                       5 分钟前
  rm -rf build/
  [批准一次] [拒绝]

● 哒哒的规则「每日价格巡检」连续失败 3 次,已暂停         08:00
  页面打不开:网站可能改版了
  [查看规则]

● 天天的规则「看 X 价格」已观察 3 次,需要你来决定是否执行   08:00
  本会发送:“X 降价了,现在 ¥199(昨天 ¥259)”
  [改为执行] [继续观察]

会出现在这里的有:任务的问题和批准、失败、预算用完、没送到的结果、连续失败的规则、先观察且观察够了的规则、过期的微信登录。每一行自带操作,不用跳走。

在哪回答都行。 微信里回编号或引用问题,飞书里点卡片按钮,桌面上点「需要你」里的按钮。在一处答了,别处的同一个问题自动收回,不会再推给你。

桌面通知只用于「需要你」里的事,只在窗口不在前台时弹,每件事最多一次。

🔕 不打扰的规矩

只推三种消息:

推送 什么时候 从不推
能用的结果 任务做完;执行中的规则发现了值得说的 进展、「还在做」、半成品、重试、重启恢复
要你做的决定 任务的问题或批准,一个对话一次只推一个 能按合理默认处理的问题;重复问同一个问题
要你处理的失败 任务自动重试后仍失败;规则连续失败后暂停 一次性的网络错误;智能体自己能绕过去的问题

另外几条规矩:

  • 一条就够。 每条推送一行,不超过 300 字,不带内部编号和技术细节。想看详情,引用它接着问,或者在桌面端打开。
  • 免打扰。 默认 22:00 到 08:00,这段时间的结果和规则提醒留到早上再发。你 10 分钟内刚说过话,说明你醒着,就不拦。时段可以在设置里改。
  • 每天有上限。 每个对话每天最多主动发:微信 3 条,飞书 5 条。超出的合成一条摘要,第二天早上发。
  • 挨着的合成一条。 2 分钟内要发的几条,合成一条摘要,一项一行。
  • 随时暂停。 机器人设置 › 主动消息 ›「暂停后台工作」:任务、规则和主动消息都先停下,聊天照常。也可以直接跟机器人说一声。

💬 微信的 24 小时,老实说

微信只允许机器人在你最近一次发消息后的 24 小时内给你发消息,每次最多 10 条。AnyModelBot 把这当成硬规矩,不去绕:

  • 留着,不丢。 发不出去的结果先留着,桌面端「需要你」里看得到,也会弹一次桌面通知。
  • 你一开口就送到。 你下次在微信里发消息,留着的先合成一条「你不在时:…」发给你,然后才是这次的回复。
  • 到期前提醒一次。 窗口关闭前约 2 小时,如果之后还有东西要发给你,机器人会说一句:「接下来还有 2 条提醒要发给你(明早 8:00 天气、周一 9:00 周报)。回个「ok」我就能继续按时提醒你。」每个窗口最多一次,免打扰时不发,没东西要发就不发,可以在设置里关掉。
  • 给结果留配额。 有任务在跑时,会给结果预留发送次数,聊天回复不会把配额用光。
  • 建规则时就说清楚。 发到微信的规则,建的时候就告诉你这个限制。对时间敏感的提醒,建议发到飞书或桌面。

飞书没有这个限制。应用关着的时候飞书里发来的消息,下次启动会补收,需要给飞书应用开 im:message.history:readonly 权限。

🔍 看得见,但不啰嗦

推送很少,但你随时可以看。信息面板的「任务」组列着这个机器人的任务和规则;一个都没有时,这一组不出现。

点开一个任务:

GPU 价格调研                                              [停止]
● 已进行 12 分钟,有个问题等你回答
来自      微信 · 今天 10:02「帮我调研一下三家云的 A100 价格…」
问题      B 云的报价要登录才能看,先跳过它吗?
          不回复就按跳过做
最新进展  已比较 3 家,正在核对 B 云的包年价
预算      约 $0.08 / $1.00                                 [改]
文件夹    tasks/gpu-prices-3f2a1c  2.1 MB                  [打开]
第 1 次运行,已进行 12 分钟                                   ▸
  • 来自:哪个渠道、什么时候、你的原话。点一下回到那段对话。
  • 处理过程:每次运行的每一步,读了什么、跑了什么命令,折叠着,想看再展开。
  • 导出:任务和规则的完整记录,都能导出成 Markdown。

聊天里发起任务的那条消息下面,也有一个小标签「后台任务「GPU 价格调研」进行中」,点开是同样的详情。

在聊天里也一样:机器人干活时在步骤之间说的话,按顺序显示在回复里;读了什么、跑了什么命令,折叠在「处理过程」里。它交付的文件点一下就打开,桌面版用系统默认程序,网页版在新标签页;图片直接显示在对话里,点开看大图。

💰 权限、花费与清理

权限只会收紧,不会放大。

谁在干活 能动什么 越界操作
聊天 机器人的权限档位 聊天里弹审批卡片
后台任务 建任务那一刻机器人的权限档位 进「需要你」,12 小时内有效
观察中的规则 只读 自动拒绝,记下来
执行中的规则 最多可写工作区,完全权限的机器人也一样 进「需要你」,1 小时内有效

递归删除这类危险操作,不管什么档位,都会先问你。

每件事都有预算。 花费按 Modelflare 的公开价格估算,标着「约」,以账单为准。

默认预算 花到了怎么办
后台任务 $1.00 停下来问你:「已用约 $1.00,再给 $1 继续?」
规则每次运行 $0.10 这次停下,记一次失败
规则每月 $3.00 暂停到下个月 1 号,或者你在「需要你」里再给 $3
  • 任务每次运行最长 4 小时,等你回答的时间不算;规则每次最长 15 分钟。
  • 给机器人设了 Modelflare 预算时,余额低于 20%,后台工作先停下,剩下的留给聊天。
  • 没有公开价格的模型不估算花费,只受时间限制。
  • 预算可以在任务详情和规则编辑器里改。

用完会清理。 任务和运行记录保留 30 天。任务文件夹 30 天没动过会自动清理,不打扰你;任务详情里提前几天就显示清理日期,点「保留」就再留 30 天。

🧭 设计原则

这几条改编自 dsh-superagent 的设计哲学。界面上的每一处取舍,都照它们来:

  1. 占用尽量少的注意力,带来尽量多的价值。 每条消息、每个通知、每个设置、每个面板元素,都要说得出自己为什么存在。
  2. 只在被要求、或你写下的规则允许时才动手。 你的话就是授权,不用再确认一遍。
  3. 只在你必须动手、或能用上结果时才开口。 能自己定的自己定,说一句选了什么;真要问,一次只问一个具体的问题。老实汇报:草稿不是「做完了」,失败就是失败。
  4. 概念少,设置少。 一个值适合几乎所有人,就用默认值。你用话描述的行为,写成提示词,而不是做成开关。
  5. 一切正常时,什么都不显示。

🔧 工作原理

flowchart LR
  M[你的消息] -->|聊天智能体判断| T[后台任务]
  R[规则] -->|到点| RUN[一次运行]
  T --> RUN
  RUN --> REP[结构化汇报]
  REP -->|做完| D[发回原来的对话]
  REP -->|要你决定 / 失败| A[需要你]
  A -->|你回答| T
Loading
  • 应用说了算。 任务、时间表、送达和预算都由 AnyModelBot 自己管,DeepSeek Harness 只负责跑会话。每个机器人一个智能体进程,任务和规则在里面各开各的会话。
  • 结构化汇报。 后台会话用 task_report 工具汇报状态:进展、要你、做完、失败,附一句给你看的话,最多一个问题。「需要你」看的是这些字段,不去猜自由文本。
  • 时间表在应用里。 规则的定时由应用管,智能体进程没起来也照样到点;电脑睡眠醒来后会重新计算。
  • 送达走发件箱。 每条主动消息先存到本地再发,按渠道的规矩排队、合并、留存。重启后接着发,发过的不会再发。
  • 小内存也能长期跑。 智能体进程开过很多会话后,会在完全空闲时重启一次,把积累的内存还回去,不打断任何工作。

完整的设计见设计文档(英文)。

🙏 从 dsh-superagent 学到的

DeepSeek 开源的 dsh-superagent 是一个面向团队、盯着一个 GitHub 仓库的主动编程智能体,配套文章是《Exploring Super-agent Design: Towards a More Autonomous Agent System》。AnyModelBot 是一个人的助手,所以我们拿来了它的骨架,留下了只有团队才需要的部分。

dsh-superagent AnyModelBot
工单的阶段表,第一条匹配的算数 任务的状态表
重启后标记中断,附一条恢复说明,从最老的开始恢复 任务重启后接着做
给人的消息留一个专用位子,排在新任务前面 你回答问题时,任务插到最前面
后台命令跑完前占着位子,命令结束时唤醒会话 任务做完前的「收尾」
接受模式里的「观察」:只记下本会接受什么 规则可选的观察模式
一个结构化的问题,原样转给人 task_report 的问题,进「需要你」
只为「做好了、要决定、做不了」发消息,一句话,不报进展 不打扰的规矩
面板先回答「现在有什么要我处理」,正常时不占地方 「需要你」

没有拿的:Source、Trigger、Thread、Eval、Mandate 复核、Subscription、GitHub PR 生命周期和 Policy 版本。一个人的助手只听主人明确说的话,「要不要放到后台」由聊天智能体判断,这就是它的 Eval。

📝 接下来:工作负载

这是我们正在探索的方向,不是承诺。

每个人要盯的东西都不一样,所以 GitHub 这类集成不该写死在核心里。我们打算把它做成工作负载:一份你自己配置的组合,写明

  • 听什么:一个事件来源,比如某个 GitHub 仓库的新 issue;
  • 怎么处理:用话写的规则;
  • 准备什么:任务文件夹怎么准备,比如先拉一份代码;
  • 发到哪:结果回到哪段对话。

GitHub 会是第一个模板。规则已经留好了「事件触发」的接口,工作负载会建在它上面。设计会先公开讨论,再动手。

有想法?欢迎提 issue 或发起讨论。

🚀 试试看

  1. 下载 AnyModelBot,登录 Modelflare。
  2. 在应用、微信或飞书里,交代机器人一件要跑一阵子的事,或者直接说「后台做」。
  3. 说一句「每天早上 8 点……」,建一条规则,有值得说的它会告诉你。

Note

功能是否可用取决于你选择的模型、操作系统和授予的权限。花费都是估算,以 Modelflare 账单为准。微信的主动消息受 24 小时窗口限制,见上文。

AnyModelBot 以 MIT 许可证发布。