跳到正文
浏览文档
本页提纲

Workspace 与执行环境

有关心智模型,请参阅 Workspace;有关操作步骤,请参阅在 Workspace 或 Worktree 中工作。 内部不变式与详细契约请查阅工作区与执行规格。 每个 Agent 始终只有一个活动 Workspace,它可以指向规范仓库根目录,也可以指向已注册的 Worktree 投影。

Workspace 定义了什么

关注点由 Workspace 设定
指令根目录AGENTS.md 与策略文件的解析基准路径
执行根目录活动投影中命令的默认工作目录
ApplyPatch 目标相对路径补丁的基准位置;显式绝对路径仍保持绝对目标
记忆范围Workspace 作用域内的片段记录与索引

Workspace 与 Shell 目录的区别

作用域层面的具体区别请参阅 Workspace。

操作效果
在 shell 里 cd /other仅影响当前这一个命令进程
AttachWorkspace添加 Workspace 绑定,但不切换活动投影
SwitchWorkspace切换后续操作的活动 Workspace
holon workspace attach /path绑定路径,但不改变活动 Workspace

Workspace 命令

附加(attach)

holon workspace attach [--agent <id>] <path>

此命令为目标目录发现或创建 Workspace 记录,并将其绑定至 Agent。附加操作本身不会改变活动 Workspace;准备在该目录工作时,需使用 SwitchWorkspace 激活。该绑定跨会话持久保留。

退出(exit)

holon workspace exit [--agent <id>] 返回 Agent 的 Home Workspace。

分离(detach)

holon workspace detach [--agent <id>] <workspace-id> 移除目标 Agent 的绑定。如果目标当前处于活动状态,会自动先返回 Agent Home。

分离操作不会删除项目源码文件或保留的 Worktree 产物。与该 Workspace 关联的记忆和片段记录也会完整保留。

Worktree 隔离机制

CreateWorktree 通过显式指定的已附加 Workspace、分支与基准引用创建受管链接 Worktree:

字段契约说明
workspace_id必填,已附加的仓库 Workspace
branch必填,检出的目标分支
base_ref必填,新 Worktree 的起始基准引用
activate默认为 true,创建后立即激活
on_existingreuse 或 error;reuse 要求存在唯一且明确的活动 Worktree,且不会对其执行 reset
label可选,语义化描述标签

RemoveWorktree 仅接受 execution_root_id 或 path 中的一个作为唯一定位参数。 若目标 Worktree 处于脏状态、已锁定、未注册、属于规范根目录或被其他 Agent/任务占用,移除将被拒绝。 移除当前活动根目录时必须提供 return_to。branch_policy 可设为 keep 或 delete_if_merged;选择后者时可通过 merged_into 指定用于比对的合并分支引用。 安全清理流程请参阅 Workspace 操作指南。

Agent Home 与项目 Workspace

角色定位请参阅 Workspace,指引文件的配置位置请参阅定制 Agent。Agent Home 通常位于 ~/.holon/agents/<agent-id>/;当配置了自定义 HOLON_HOME 或处于特定活动投影时,请以运行时实际报告的路径为准。

Agent Workspace 工具

  • GetWorkspaceState({}) — 查看绑定、活动投影、Worktree 及占用情况
  • AttachWorkspace({ path: "/repo" }) — 仅附加 Workspace 绑定,不执行切换
  • SwitchWorkspace({ workspace_id: "ws_..." }) — 激活规范仓库根目录
  • SwitchWorkspace({ execution_root_id: "..." }) — 激活保留的 Worktree 投影
  • SwitchWorkspace({ workspace_id: "agent_home" }) — 返回 Agent Home
  • CreateWorktree(...) — 创建或安全复用链接 Worktree
  • RemoveWorktree(...) — 仅限清理目的的注册表清理
  • DetachWorkspace({ workspace_id: "ws_..." }) — 移除绑定;活动目标会先返回 Agent Home

UseWorkspace 仅作为兼容历史调用的隐藏别名保留。 SwitchWorkspace 接受 workspace_id、execution_root_id 或 path 中的唯一选择器,并支持可选的 cwd。该工具仅用于激活已有绑定或已注册投影,不会执行仓库附加。Shell 命令中的 workdir 和 cd 不会改变该激活状态。

另见