agentscope-ai / agentscope-ai/agentscope-java

[Feature]: 支持 Local 文件系统共享只读目录配置

オープン
#2,244 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
area/harness enhancement
主要言語
Java
スター
5.6k
フォーク
1.3k
平均マージ
4日 12時間
マージ済み PR(30日)
77

説明

## 背景

`RemoteFilesystemSpec` 已支持通过 `addSharedPrefix()` 将工作区中的指定目录作为多租户共享只读基线。

但 `LocalFilesystemSpec` 尚未提供对应能力。在 Local 多租户模式下,直接放置在工作区根目录中的共享文件,会因为用户命名空间隔离而无法被 Agent 访问。

一些简单业务需要 Local 也支持多租户共享文件模式。

例如公共文件位于:

```text
workspace/docs/guide.md
```

用户 Bob 的文件系统默认只能访问:

```text
workspace/bob/docs/guide.md
```

因此 Bob 无法看到公共 `docs` 目录。

## 期望行为

为 `LocalFilesystemSpec` 增加共享目录前缀配置,并与 Remote 模式保持一致的语义:

- 所有租户均可读取共享目录中的文件。
- 租户写入采用 Copy-on-Write,不修改共享源文件。
- 租户覆盖文件按照 `IsolationScope` 隔离。
- 支持配置多个共享目录。
- 拒绝路径穿越及无效目录前缀。
- 保留 Local 模式原有的 Shell 执行能力。
- 未配置共享目录时,完全保持原有 Local 文件系统行为。

## 使用示例

```java
LocalFilesystemSpec spec =
new LocalFilesystemSpec()
.isolationScope(IsolationScope.USER)
.addSharedPrefix("docs/");
```

假设存在公共文件:

```text
workspace/docs/guide.md
```

用户 Bob 可以通过以下虚拟路径读取:

```text
docs/guide.md
```

Bob 修改该文件后,覆盖内容写入:

```text
workspace/bob/docs/guide.md
```

公共源文件保持不变:

```text
workspace/docs/guide.md
```

其他用户仍然读取公共版本,或者读取各自的租户覆盖版本。

默认不启用任何共享目录。未配置时,不应自动共享 `docs/` 或其他目录。

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。