工作集(beta)
在一个编辑器窗口中打开存储和使用该存储的各个仓库,让你的 agent 同时看到两者。
有了存储之后,你的 agent 所需的上下文就分散在不同文件夹里:specs 和变更放在存储中,代码放在各个仓库中。在某个仓库里启动的 agent 只能读取和 grep 那一个仓库,因此它只能基于一半的信息来工作。
工作集就是 OpenSpec 为此提供的工具。工作集是一份已保存、有名称的文件夹列表,这些文件夹会被一起打开。本页假设存储已经搭建好,并已在你机器上注册。存储(beta) 介绍了这部分内容。
工作原理
- 它是什么:一份有名称的文件夹列表,仅保存在你自己的机器上。不会向成员文件夹写入任何内容,也不会提交任何内容。
- 打开时会做什么:OpenSpec 根据该列表生成一个
.code-workspace文件,并在其上启动你的编辑器。所有成员文件夹都位于同一个窗口中。 - 你能得到什么:编辑器的搜索功能,以及你在该窗口中运行的任何 agent,都能读取每一个成员文件夹。agent 可以在一次会话中同时 grep 存储里的 specs 和仓库里的代码。
- 它不会改变什么:某条命令使用哪个
openspec/文件夹。这仍然遵循制品创建位置。
配置
保存工作集(每台机器一次)。把仓库和存储列为成员,并指定用于打开它们的工具:
bash# 保存一份会被一起打开的文件夹的命名列表 openspec workset create platform \ --member ~/src/web-app \ --member ~/openspec/team-plans \ --tool codeyamlSaved workset 'platform' (2 members) to your machine. Open it any time with: openspec workset open platform打开它——每次开始工作时:
bash# 在一个 VS Code 窗口中打开所有成员 openspec workset open platform
openspec workset list 会显示你已保存的内容,openspec workset remove <name> 会删除某个工作集,但不会改动成员文件夹:
yaml
platform (opens in VS Code)
web-app /Users/you/src/web-app
team-plans /Users/you/openspec/team-plans使用它:一个变更,两个文件夹
假设 add-login 变更位于 team-plans 存储中,而它的代码位于 web-app 中。打开 platform 工作集,让你的 agent 实现这个变更。在那一次会话中,它可以:
- 读取
team-plans/openspec/changes/add-login/及其旁边的 specs - 编辑
web-app/中的代码 - 在
web-app内部运行openspec命令
没有工作集时,agent 只能看到它启动时所在的那个文件夹。
开箱即用的工具
- VS Code(
--tool code)和 Cursor(--tool cursor):内置支持。每个都会打开一个包含所有成员文件夹的窗口。 - 终端中的 Claude Code 和 Codex:在重新设计该流程期间,它们作为工作集打开器的功能被暂时禁用。
--tool claude或--tool codex会以报错的方式停止,并提示你改用 VS Code 或 Cursor。 - 其他编辑器:在 CLI 设置(config.json) 的
openers键下添加它们。