文档
CONTEXT.md 源文件

工作区

共享目录、产物、附件、搜索。

本页
  1. 工作区(Workspace)
  2. 工作目录(Work dir)
  3. 产物(Artifact)
  4. 批注(Annotation)
  5. 附件(Attachment)
  6. 搜索(Search)

工作区(Workspace)

账户级一个本地目录。文件、产物、交接附件都在这里;所有 Bot 共用。Bot 之间不隔离。信使侧栏可打开整棵工作区目录(桌面端是一块窗格:文件树 + 预览,不占用对话框旁那条产物预览;窄屏和手机上仍是从右侧滑出的浮层);区内 UTF-8 文本可在查看器里改并保存回同一路径。

Avoid: 云电脑, 每 Bot 一个目录, sandbox(除非以后另开)

工作目录(Work dir)

一件事的中间产物集中的那个文件夹,在工作区的 work/ 下,名字是日期 + 触发消息开头 + 一小段 id。谁开的:一条用户消息或一次日程触发。谁继承:交接、点名、判断下场、Bot↔Bot 私聊和中断续跑都用唤醒方那一轮的目录,所以一件事跨 Bot、跨会话仍是同一个文件夹。日程每次触发新开一个;同一会话静默够久之后的下一轮也新开;一个会话同时只有一个开着的。第一次真被用到才创建,只说话的轮次不留空壳。壳默认在里面跑,文件工具的路径仍相对工作区根。交付物不进来:你点名了路径就写在那儿,没点名的落这个目录里。里面有两个保留子目录:tool-results/ 是守护进程存的大工具结果(关闭够久后自动清掉),scratch/ 是纯过程文件——两处的东西都不会挂成产物。删掉工作目录是你的事,应用只清 tool-results/。这件事可以在信使里按叫醒关系从上到下看经过,产物挂在交出它的那一轮上,点开就接在那一轮后面展开,只读。

Avoid: 任务表, 计划 DAG, 状态机, 负责人, 每 Bot 一个目录, 产物库, 把它当沙箱, 应用替你删整个目录

产物(Artifact)

一条消息里引用的工作区相对路径,或 http/https 链接。文件本体在工作区(或远端 URL)上。本轮写入的区内文件会自动出现在最终消息里。点开后在聊天右侧预览面板查看(图 / 音视频 / PDF / 文本 / 单文件 HTML);桌面端这条预览也可以拖成自己的一块窗格。面板左侧的树列的是这件事引用过的全部路径——不是只有这一条消息的,也不是工作目录里的全部文件,相关指的是被引用过;树以工作目录为根,这件事在目录之外引用的路径和它并列平铺,本条消息自己引用的那几个标出来,面板与聊天共用一栏、中间拖条改宽度;同一条消息多个路径或打开工作区时左侧是文件树,树和内容之间可拖。拖过的预览栏宽度和文件树宽度,退出后再开还在。文本用 Monaco + Shiki 编辑(行号、查找 / 替换走 ⌘F、匹配括号·标签·标题折叠、换行);预览自己不再放查找、换行、复制、保存、关闭这些按钮。Markdown 和单文件 HTML 默认看渲染结果,内容顶部正中有一个浮动按钮,不随正文滚动,在预览和源码之间切换。PDF 用内置的 pdf.js 渲染(翻页、缩放、适合宽度 / 整页、页内查找),不走系统的 PDF 查看器。区内 UTF-8 文本可 Cmd+S / 保存写回同一路径;未保存切文件或关面板先确认。桌面端预览没有自己的标题栏,文件名和关闭都在工作台标签上;窄屏和手机留一条返回加文件名。文件树每一项右键是「在 Finder 中打开」和「用系统默认应用打开」,本机窗口才生效。交接时把路径写进给对方的那条消息,不另建种类。种类按扩展名在预览时推导。区内的产物可以批注(见「批注」)。

Avoid: 资产库, Artifact 表, 快照副本, 每 Bot 产物目录, @文件

批注(Annotation)

你对某个产物的某一处写的一句意见。挂在一个工作区相对路径、一个锚点和交出这个产物的那条消息上。先是草稿,Bot 看不见;攒够一批一起发出,合成一条引用交付消息的回复,并 @ 交出它的 Bot。发出后是「待处理」,Bot 或你把它标成「已处理」;已处理的可以重新打开。一标成已处理就从文件上撤下——图上的框、代码页边的点、Markdown 里的标记、PDF 页上的框、HTML 的编号、时间轴上的标记——留在文件上的就是还没处理的;列表里照旧列着。预览栏的「显示已处理」勾上才画回来,只对这块预览有效;从列表点一条已处理的去定位,那一条在定位期间画出来,再点一下取消选中就撤下来;对话里点它的卡片只打开列表停在那一条,不画回文件上。文件改了、锚点对不上时标「原文已变」,状态不变;文件不在了标「文件不在了」。批注不是产物的快照:只记下当时的引文、位置和文件哈希,不保存旧文件(选区长过引文上限时,另记整段的长度和指纹,用来判断这一段还在不在、变没变)。挂到谁:从某条消息打开的预览,就挂到那条消息和交出它的 Bot;交付消息在你不在的 Bot↔Bot 私聊里时,这批发到你和交付 Bot 的私聊里,消息上记着来源。只批工作区内的文件,链接类产物不能批注。批注消息叫醒的每个 Bot 沿用它自己交出产物那一轮的工作目录(这批里它最近的一次交付),哪怕会话已经静默够久、那件事已经关了——改的是同一件交付物;那件事属于别的会话(Bot↔Bot 私聊交出的)时,这一轮只是在那个目录里干活,不把那件事重新打开,两边会话各自接着的事都不受影响。它就是一条普通的后续发言:落在交付那一轮上、进纠正链,不加权。一批最多 50 条,一条正文最多 2000 字。群里一批可以同时交给几个 Bot:上下文里每条批注都写明交给了哪个 Bot(交出那个产物的 Bot,删了就写「已删除的 Bot」),list_annotations 也带上;每个 Bot 只处理交给自己的,交给别的 Bot 的留给那个 Bot,可以提一句;交给已删除的 Bot 的没人接,归这批叫醒的 Bot 处理。Bot 能做的:逐条处理交给自己的,改了的用 resolve_annotation 标成已处理并写一句怎么改的(任何 Bot 都可以标——Bot 不是权限边界——记下是谁标的),用 list_annotations 查还没处理完的(路径和 read_file 一样解析,工作区外的路径直接报错),read_file 读到还有待处理批注的文件时会被提醒。Bot 不能做的:重新打开、删除、新建批注。清空历史、删会话时挂在这些消息上的批注一起删掉;删了文件不删批注。锚点种类:文本 / 代码行区间、Markdown 渲染态划词、图片框选、PDF 页内区域、HTML 元素、音视频时间点。

Avoid: 评论(留给以后可能有的多人场景), 审阅, 新的消息种类, 批注存旧版本, 每条批注单独叫醒一次, Bot 给你批注

附件(Attachment)

聊天里你丢进来的文件,复制到工作区 inbox/,消息上保留指向该副本的链接。远程连接另有一条专门用来发文件的会话:发到那里的文件同样进 inbox/,也能发文字,文字只留在这条会话里;这条会话没有 Bot,不叫醒任何人。在普通会话里发的文件仍叫醒那条会话。Bot 把工作区里已有文件当产物挂上时也走同一套附件行,但不复制、不进 inbox/。工作区是电脑,附件不是第二套文件系统。栅格图进轮次窗时按像素发给模型,但一轮最多带 20 张、20 MB:从触发消息起、由新到旧取,放不下的旧图只留路径;大图先缩到长边 1568、不透明的转 JPEG 再发。其它文件只给路径,要读走 read_file。

Avoid: 只挂在消息上的幽灵文件

搜索(Search)

跨 Bot、群、文件和日程的查找,跳回原会话位置。v1 做本机检索,不是另一个 Bot。

Avoid: 语义记忆层