在嵌套仓库间共享同一项目记忆
默认情况下,项目由其包围的 git 仓库标识,因此每个
物理 git 仓库都有自己独立的记忆存储。这对
多仓库工作区是错误的 — 由 Google repo
管理的树、单体仓库,或任何多个嵌套 git 仓库属于同一
逻辑项目的布局 — 因为每个子仓库都会被隔离。
在工作区根目录放置一个空的 .opencode-mem-project 标记文件:
my-workspace/├── .opencode-mem-project ← workspace root├── kernel/ (own git repo)├── userspace/ (own git repo)└── tools/ (own git repo)然后,在标记下方任意位置启动的每个会话都会解析到该 根目录并共享一个记忆存储,无论工作目录位于哪个子仓库:
touch ~/my-workspace/.opencode-mem-project标记通过从每条代码路径已经传入的工作目录向上遍历来查找
(插件的工作目录、Web API 的
process.cwd()),因此身份是目录驱动且与进程无关的。
它不依赖环境变量或全局配置值,在这里这些会
不可靠:opencode-mem 跨多个共享单个 Web 服务器的
opencode 进程运行,而这些进程中只有一部分携带给定
环境变量。有了标记,项目根始终从会话实际
运行的位置派生。
标记优先于 git 检测。存在时, 子仓库自己的 git remote 会被有意忽略(它只会描述一个 嵌套仓库)。没有标记时,行为不变(基于 git 的 身份)。