Bot:一个可以随时 @ 进任务的持久化子代理
用普通文件创建拥有长期、可审阅上下文的子代理,再用 @name 把它叫进任意 OpenCockpit 任务。
子代理好用,因为它把一块工作从主线对话里拿走了。子代理也容易忘:下一个通常又从白纸开始。
OpenCockpit Bot 保留了前一个特点,改变了后一个。Bot 是持久化、文件原生的子代理:有名字、身份、显式长期上下文,也知道自己会用哪些 Skills。用 @name 把它叫进任务;它在独立会话中工作,再带着结论和完整会话链接回来。
Bot 就是一个目录
没有托管在云上的 Agent 对象,也没有藏起来的记忆数据库。Bot 是一个普通目录:
product/
├── BOT.md
├── identity/
├── relationships/
├── memory/
├── projects/
├── commitments/
└── evidence/
BOT.md 说明它是谁、先读哪些文件、会哪些 Skills、各类更新该写去哪里。其他内容都是普通 Markdown。你可以读、改、放进 Git、搬到另一台机器,也可以不再使用 Cockpit,无须先导出任何东西。
用内置 Skill 创建:
/bot 创建一个维护路线图决策与承诺的 product Bot
确认用途、名称和目录后,从 Bots 面板注册,或直接打开它的 BOT.md 添加。
叫进一个专家,不是再开一张白纸
@product 总结本周路线图变化
当前 Agent 先把对话整理成一份自包含 brief,再以当前项目为工作目录创建独立会话,把通用 Bot 契约和该 Bot 的 BOT.md 路径交给子会话。子会话只读这次需要的上下文,完成工作后回报。主会话拿到结论和链接;完整过程留在子会话里,可以随时打开续问。
一条消息可以同时叫多个 Bot,OpenCockpit 会先启动各自的会话再等待:
@product 总结路线图变化
@finance 对照这些变化核对 Q3 预算
所以对象叫 Bot,@name 才是动作:你把一个持久专家 tag 进当前任务。
记忆必须是有意的
最容易演示的记忆系统是“什么都记”。它也最容易让 Agent 堆满猜测、过期事实、被复制进来的密钥和偶然出现的指令。
Bot 默认只读。只有你明确要求记住、更新、纠正或删除时,它才更新长期上下文:
@product 记住:移动端 onboarding 已经移到 Q4
否则 Bot 只会列一份 “Could be recorded”,留给你确认。每条记录带确认日期、来源、权威等级和状态;用户确认的事实高于模型推断;被替代的结论会标成 superseded,而不是悄悄消失;凭证则完全跳过。
写入使用协作锁,读取仍可以并发。每轮都会列出读过和改过的 Bot 文件,因此“这个回答依据了什么”有可核对的答案。
Skill 与身份分开
Skill 是一种可复用的做法;Bot 是一个持久专家,知道这种做法何时该用。不复制文件,直接关联:
@product 装上 /absolute/path/to/SKILL.md
它只在 Bot 的 Skills 表增加一行,不复制文件、凭证或软件,也不会创建全局斜杠命令。
长期上下文也需要保养
记忆会老化:承诺会完成,数字会过期,两句在不同月份都正确的话后来可能变成矛盾。让 Bot 检查自己:
@product 复盘一下
Bot 会输出编号清单,检查过期条目、矛盾、悬空承诺、缺少来源、失效 Skill、重复内容和规模过大的上下文。报告保存在 .reviews/,你可以在子会话里选行,也可以从任何聊天恢复。选定要应用的行之前,长期记忆不会改变。
持久不等于自主运行
Bot 不会自己醒来,不会悄悄吸收每段聊天,也不是后台服务。某项承诺确实需要主动追踪时,可以让 Cockpit 定时任务按计划发送同样的 @name 提示词。更常见的情况保持简单:需要时叫来正确的专家,它的记忆始终显式可见。
查看 Bots 文档,或更新 OpenCockpit 后输入 /bot 创建第一个 Bot。