清理 Notebook
由 Main 或其指定所有者自动选择时,始终仅使用下面的 scope=current-task,绝不使用整个会话的默认值。仅在已确认存在可丢弃记录、且结果与必要的检查已完成、并且任务暂存区清理已完成(使用其所有权/链接)之后,才应启动清理工作流。否则不要启动清理。保留指令、请求的 Notebook 结果、必需的原始文件以及仍被使用的链接是排除项。请勿仅为了启用删除而移动或归档它们。暂停、阻塞、等待审批、回合结束、Agent 停止以及未放弃的取消都不视为完成;需保留继续执行所需的内容。未经该作用域限定的直接公开调用授权删除此 Cursor 会话的整个任务 Notebook 目录,包括已完成的记录。对于该公开默认行为,不要等待任务完成或要求二次确认。
整个会话的公开默认值
仅在 Cursor 任务上下文中明确提供当前 session_id 时才采用它。使用 Node.js 内置函数,将 sessionKey 计算为 Buffer.from(session_id, 'utf8').toString('hex'),然后精确计算目标路径为 path.join(os.tmpdir(), 'scope-focus', 'task-notebook', sessionKey)。要求 session ID 非空。如果不可用,则不删除任何内容,并报告无法识别当前会话的 notebook。切勿从目录列表、旧 notebook 或其他任务中推断会话。
如果目标不存在,则报告无需删除任何内容。如果存在,则验证 Scope Focus notebook 根目录和目标均为真实目录,而非符号链接。当 plan.md 存在时,要求它是常规文件,而非符号链接,并且其 Session: 头部必须与当前 session ID 匹配。枚举其内容,并在删除前重新检查确切目标和排除项。不要跟随目标外部的链接,也不要删除其他会话目录、仓库文件或存储在别处的 HTML 报告。
仅使用 fs.rmSync(target, { recursive: true }) 删除已验证的目标,不使用 force 或通配符。之后确认目标已不存在并报告结果。如果所有权或目标不明确,则不删除任何内容,并报告确切原因。不要自动创建替换 notebook。
scope=current-task
自动用于符合条件的当前任务记录,或在明确指定此作用域的请求中使用。它绝不授权整个会话的删除。等待实际实质性结果、必要证据以及每个已选择或必需的 CLEAN,以及仍待清理的关闭 notebook 结果。当这些条件中任何一项未满足时,保留继续执行所需的记录。
需要确切的任务键、其与此已完成执行的关系,以及明确可用的当前 session_id 或明确提供的 notebook plan.md 路径(针对同一选定任务,依据 Task Notebook 的手动延续契约)。不要搜索 notebook 或从目录或旧记录推断当前会话。对于当前会话,计算上述现有的 session-key 路径。对于提供的手动路径,验证原始 Session: 头部与其 session-key 目录以及与此任务的明确关系;不要将其重新分配给当前会话。
使用 fs.realpathSync 解析实际的 os.tmpdir()。要求 notebook 会话目录直接位于其 scope-focus/task-notebook 命名空间内。命名空间、会话和任务目录必须是真实目录,而非符号链接;入口 plan(如果存在)必须是常规文件。在变更前验证规范的包含关系以及每个受影响的路径组件。任务键必须是一个对文件系统安全的 basename,绝不能包含分隔符、. 或 ..。检查 Session:、Task:、直接选择或自动选择及其顺序来源与需求,以及确切的执行关联。Main 提供的根定位器优先于子级本地的钩子定位器;仅凭元数据不授予所有权。提供的手动路径必须通过与计算路径相同的位置和所有权检查。
仅枚举确切的目标和排除项。仅当任务键目录的内容被证明是此次执行的记录时,才删除该目录;保留必需的原始文件、结果、其他任务以及每个未知或模棱两可的条目。未知的所有权阻止删除该目标,但不阻止删除其父目录。仅当 plan.md 的头部仍标明此次执行时,才删除会话条目 plan.md。如果它现在属于另一个任务,则保留它,并为此任务目录使用既有的所有权记录;不同的头部并非删除其他任务的依据。缺失或矛盾的证明不授权任何删除。
在删除前立即重新检查确切路径、所有权、完成情况以及排除项。对已证明的目标使用 Node.js 内置函数,不使用 force、通配符或跟随符号链接。仅当会话和命名空间父目录确实为空时才删除它们;保留其他任务键和会话。确认所选目标已不存在且排除项仍存在。如果已不存在,则不创建任何内容。报告实际结果或具体限制;不要创建替换 notebook、迁移或归档。
如果所需的合格删除仍未完成,则保留继续执行所需的内容,并报告具体的剩余工作。未知或保留的记录被排除在自动删除之外,而非允许删除其父目录。在强制性工作仍未完成时,不要声称完全完成。