Bots
Bot 是有持久上下文、以普通文件保存的子代理。每个 Bot 都是一个普通目录,根目录有
BOT.md,旁边是它需要跨任务保留的上下文。用 @name 把它叫进任务,OpenCockpit 会把工作
交给独立子会话,再把结论和会话链接带回当前聊天。
Bot、Skill 还是会话?
| 对象 | 提供什么 | 怎么调用 |
|---|---|---|
| Skill | 某类任务可复用的做法 | /skill 在当前会话,/@skill 在子代理 |
| Bot | 持久身份、长期上下文和一组 Skills | @name 任务 |
| 会话 | 一次工作的运行过程与完整对话 | 新开 tab,或由 Bot 自动创建 |
Skill 回答“怎么做”;Bot 回答“谁来做、已经知道什么、负责持续维护什么”。每次 Bot 工作仍然 使用独立会话,因此你可以打开完整记录,检查过程,并在那个会话里继续追问。
创建并注册 Bot
调用内置创建 Skill:
/bot 创建一个 product Bot,记住路线图决策和未完成承诺
Agent 会先确认用途、名称和目录,再创建文件。未指定位置时,默认写到
~/.cockpit/bots/<name>/。创建完成后不会自动注册。
注册有两个入口:
- 打开项目侧栏的 Bots,选择添加 Bot,粘贴 Bot 目录或
BOT.md路径。 - 在 Explorer 打开
BOT.md,选择添加为 Bot。
从面板移除 Bot 只会删除注册记录,不会删除目录或记忆文件。
用 @name 把 Bot 叫进任务
在行首输入已注册名称:
@product 总结本周路线图变化
OpenCockpit 会把它标记为 Bot 任务。当前 Agent 先整理一份自包含 brief,再以当前项目为工作
目录创建独立会话并等待结果。Bot 子会话先读取通用契约,再读自己的 BOT.md 和本次任务真正
需要的上下文文件。当前聊天中的结果会附上完整子会话链接。
一条消息可以同时叫多个 Bot。所有 Bot 会话会先启动再等待,因此彼此独立的任务可以并行:
@product 总结本周路线图变化
@finance 对照这些变化核对 Q3 预算
只有已注册 Bot 名称才会被识别。普通 @某人、未知名称和旧写法 @skill 都保持普通文本。
要让 Skill 在子代理中运行,请使用 /@skill。
记忆必须是有意的
Bot 文件是可以直接阅读的 Markdown,不是隐藏的向量库。普通任务默认只读。只有任务明确要求 记住、更新、纠正或删除时,Bot 才修改长期上下文:
@product 记住:移动端 onboarding 已经移到 Q4
如果没有明确要求,Bot 可以在结尾列一份 “Could be recorded”,留给你稍后确认。写入使用协作 锁:多个会话可以同时读取,但同一时间只有一个会话更新。每轮都会列出读过和改过的 Bot 文件。
记录包含确认日期、来源、权威等级和状态。用户确认的事实高于模型推断;旧结论可以被明确标记 为 superseded,而不是静默覆盖;凭证永远不会被读进 Bot 的回答或记忆。
给 Bot 装 Skill
直接对已有 Bot 说:
@product 装上 /absolute/path/to/SKILL.md
这只会在 Bot 的 Skills 表里增加一行,不复制 Skill、不注册全局斜杠命令、不安装软件,也不复制
凭证。只有任务匹配该行用途时,Bot 才读取对应 SKILL.md。
复盘 Bot
长期上下文会过期。让 Bot 自己复盘:
@product 复盘一下
复盘会检查过期与矛盾条目、悬空承诺、来源缺失、重复内容、失效 Skill、上下文规模,以及冻结在
BOT.md 里的旧机制。它把报告以唯一文件名保存到 .reviews/,返回编号清单;在你选择要应用
的行之前,不修改任何长期上下文。
可以在该 Bot 会话里直接回复编号,也可以从任意聊天继续:
@product apply .reviews/2026-09-18-143012.md rows 1 3
Bot 不是什么
- Bot 不会自己醒来。确实需要主动追踪时,可以创建一条发送
@name提示词的 定时任务。 - Bot 不会自动吸收每段对话,长期记忆必须显式更新。
- 注册不会移动、复制或上传目录;Cockpit 只保存本地路径。
- 委派依靠 Agent 遵守 OpenCockpit 的 Bot 契约,并不是运行时强制的沙箱或权限边界。