Skip to content

工作集(beta) ​

在一个编辑器窗口中打开存储和使用该存储的各个仓库,让你的 agent 同时看到两者。

有了存储之后,你的 agent 所需的上下文就分散在不同文件夹里:specs 和变更放在存储中,代码放在各个仓库中。在某个仓库里启动的 agent 只能读取和 grep 那一个仓库,因此它只能基于一半的信息来工作。

工作集就是 OpenSpec 为此提供的工具。工作集是一份已保存、有名称的文件夹列表,这些文件夹会被一起打开。本页假设存储已经搭建好,并已在你机器上注册。存储(beta) 介绍了这部分内容。

工作原理 ​

  • 它是什么:一份有名称的文件夹列表,仅保存在你自己的机器上。不会向成员文件夹写入任何内容,也不会提交任何内容。
  • 打开时会做什么:OpenSpec 根据该列表生成一个 .code-workspace 文件,并在其上启动你的编辑器。所有成员文件夹都位于同一个窗口中。
  • 你能得到什么:编辑器的搜索功能,以及你在该窗口中运行的任何 agent,都能读取每一个成员文件夹。agent 可以在一次会话中同时 grep 存储里的 specs 和仓库里的代码。
  • 它不会改变什么:某条命令使用哪个 openspec/ 文件夹。这仍然遵循制品创建位置。

配置 ​

  1. 保存工作集(每台机器一次)。把仓库和存储列为成员,并指定用于打开它们的工具:

    bash
    # 保存一份会被一起打开的文件夹的命名列表
    openspec workset create platform \
      --member ~/src/web-app \
      --member ~/openspec/team-plans \
      --tool code
    yaml
    Saved workset 'platform' (2 members) to your machine.
    Open it any time with: openspec workset open platform
  2. 打开它——每次开始工作时:

    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 键下添加它们。