跳到内容
MagicFrog

任务与 Agent

项目以任务的形式运行;agent 是显式加入其中的具名、持久参与者。

MagicFrog 把经常被混为一谈的两件事分开:任务(task)——要做的工作本身;agent——做这项工作的具名执行者。历史与状态由任务承载;身份、角色、人格(persona)与记忆由 agent 承载。两个界面各自独立管理,一个 agent 可以同时参与任意多个任务。

任务

任务是把既有的会话系统提升为一等对象。会话仍是载体——持久事件、历史与执行声明都存放在那里——而任务是这段会话在任务列表与详情界面上的一层投影:

  • 身份:会话 ID、标题与所属项目
  • 状态:running、idle 或 archived
  • 上一轮已完成 run 的结果(run 达到终态迁移后)

任务界面与 agent 管理相互分离。列出、打开、配置任务从不触碰 agent 定义。

Agent

agent 是一份具名档案(profile):一个跨任务、跨会话存续的持久身份,不依附于任何一段具体对话。档案就是本地 Markdown 文档——MagicFrog 数据目录下 agent-profiles/ 里每个 agent 一个文件——所以一个文本编辑器就足以作为档案客户端:

---
name: "Release engineer"
role: "Owns release preparation and changelog accuracy"
status: active
---
You prepare releases. Check the changelog against merged changes before
proposing a version bump.
  • id 以 agp_ 开头,跨机器稳定。
  • name 与 role 是该 agent 参与之处的身份标识。
  • status 为 active 或 archived——归档让 agent 退役,但不删除其历史。
  • 文档正文就是人格(persona):agent 带进每个任务的工作指令。
  • summary 是该 agent 滚动更新的工作摘要;随工作推进而更新,并可跨任务复用。
  • 每份档案都带 revision;携带过期 revision 的更新会失败,而不是覆盖别处的修改。

档案与运行时无关(runtime-agnostic)——同一份档案既可以驱动本地 runtime 会话,也可以驱动云端 runtime 会话,选择权在会话而不在档案。

MagicFrog 网页控制台:Settings → Agents 页,组织 agent 只读区与个人 agent 管理区,图为空态

图为真实的 Settings → Agents 页面:组织 agent 由组织分发、只读;个人 agent 本地管理。图如实呈现空态,未做任何摆拍。

内置 agent:Pi

Pi 是内置的默认 agent,全新安装无需再装一个运行时就能干活。它通过已配置的 provider 路由执行模型循环,并通过与其他 agent 相同的工具层调用工具,因此目标路由、权限、能力校验与审计对它的约束完全一致。第三方 coding agent 走同一个 agent 注册通道;换 agent 不会改变有哪些工具,也不会改变工具如何被授权。

加入任务

关联在两个方向上都是显式的。把 agent 拉进任务会创建一条花名册成员;没有任何东西隐式加入,移除 agent 同样是显式操作。

  • 角色:每个成员都带一个角色。owner——同一时刻至多一个——是任务所有者;其余参与者角色自由命名,并显示在任务的参与者列表中,每个参与者都能看到谁握着什么角色。
  • 加入上下文:被拉进运行中任务的 agent 会收到任务上下文摘要——任务目标与此前活动的摘要,外加逐字保留的最近历史,以与上下文压缩相同的形态渲染——连同参与者花名册一起注入会话,让正在进行的对话真正收到它。
  • 并发:多个参与者可以在同一个运行中的任务里工作;拉入另一个 agent 不会暂停或重启对话。
  • 多重性:一个 agent 可以同时出现在任意多个任务花名册上。任务之间不存在独占锁。
  • 交接:责任只通过一次显式移交从当前 owner 转给一名既有参与者,每次交接都记录在任务的移交日志里。所有权从不漂移。
  • 持久化:花名册按任务持久化为一份文档;损坏的花名册失败即关闭(fail-closed),而不是静默重置为空参与者列表。

@ 人类

在群聊任务中,agent 可以用显式 @ 引用指向一名人类参与者。这条 mention 不只是聊天文本——它会成为全局事件收件箱中的一阶待处理事件,与既有 HITL 卡面同队排列。任务/agent 这对关系与人机事件队列是人机环路的两个端点:agent 通过 @你发问,你在卡片上回应,回应写回任务的会话。

任务内共享

任务拥有的一切都住在这份任务自己的命名空间里——记忆、文件、产物与触发器都挂在任务 ID 之下——参与者能在任务内看到彼此的工作,却不会与另一个任务相撞。记忆遵循同一约定:带任务 ID 前缀的任务维度笔记属于该任务,对该任务的参与者可见。

任务到达终态时,每个已登记资源按其保留策略处置:keep(默认,为了可追溯)保留它;显式 purge 则执行所属子系统登记的处置动作。没有登记处置动作的 purge 会失败即关闭——不会有东西被静默保留,也不会有东西被假装删除。

Agent 的记忆与漫游

每个具名 agent 都有自己的记忆系统切片:记忆的 agent 维度,按 agent ID 隔离,跨会话持久保存偏好与角色上下文。agent 定义及其记忆摘要随云端 profile 同步面一起走,所以在登录你账号的每台机器上,一个具名 agent 都是同一个 agent。