agentscope-ai / agentscope-ai/agentscope-java

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

未關閉
#2,244 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area/harness enhancement
主要語言
Java
星號
5.6k
分支
1.3k
平均合併
4 天 12 小時
30 天內合併 PR
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 摘要。