---
title: "mount 与多工作区自然融合"
---


### 1. 什么是挂载

"挂载"就是把 **其他目录** 以逻辑别名的方式，附加到当前工作区中，让 AI 助手的视野覆盖多个工作区域（或项目）。

SolonCode 支持三种挂载类型。其中文件类型挂载：

| 类型 | 说明 | 典型用途 |
|------|------|----------|
| **文件类型（FILES）** | 挂载一个完整的目录树 | 把关联的子项目、共享库、配置文件目录挂进来 |


文件挂载的核心价值在于：**跨项目协作**。你可以对一个提示词同时操作两个工作区，比如 "把 `@common-lib` 下的版本号更新到 2.0.0，同时在 `@web-app` 的 pom.xml 里更新依赖"——一次对话完成。


### 2. 在设置页添加挂载

#### 打开设置 / 挂载

点击右上角的「齿轮」图标打开设置面板，选择「挂载」tab，再点添加挂载：

![设置面板挂载页](/img/d2ad88ddc87f429e8a043209516502a9.png)

#### 添加一个文件类型挂载

1. 在挂载页面点击「添加挂载」
2. 填写表单：
   - **别名**：为挂载取一个唯一的名字（如 `@my-lib`、`@config`），这是后续在 AI 对话中引用它的标识
   - **类型**：选择 `FILES`（文件/目录类型）
   - **路径**：选择要挂载的目录（绝对路径）
   - **是否可写**：这个开放权限很重要（可以只读，可以又读又写）
3. 点击「保存」


#### 启用 / 禁用挂载

每个挂载条目右侧有一个开关（toggle），可以随时启用或禁用挂载。禁用后，AI 助手的视野中不再包含该挂载，但配置保留，方便再次启用。

#### 删除挂载

点击挂载条目右侧的删除按钮，确认后移除。删除不会影响原始文件，仅移除 SolonCode 中的挂载配置。


### 3. 挂载后的即时同步体验

在设置页中对挂载进行任何操作（添加/更新/启用禁用/删除）后，右侧区域的**文件面板**和**审查面板**会**即时同步变化**：

| 操作 | 文件面板变化 | 审查面板变化 |
|------|-------------|-------------|
| 添加挂载 | 立即出现新的工作区节点（带 @别名） | 工作区下拉列表中出现新的挂载选项 |
| 禁用挂载 | 对应工作区节点消失 | 工作区下拉中移除该选项 |
| 启用挂载 | 对应工作区节点重新出现 | 工作区下拉中重新出现 |
| 删除挂载 | 对应节点彻底移除 | 下拉中彻底移除 |

无需手动刷新页面，也无需关闭设置面板再打开，一切实时生效。


![](/img/07d65566f57242a9b5a58304cc80bcf8.png)

### 4. 文件面板的快捷入口

在文件面板底部，随时可以看到一个「添加文件类型挂载」入口：

- 当你想把另一个项目目录加进来时，点击它直接跳转到「设置 → 挂载」页面
- 不需要在设置面板中翻找，从文件面板一步直达



### 5. 在对话中操控多个工作区

挂载的目录和文件，会在文件面板中以独立的工作区节点展示，每个节点前带有 `@别名` 标识。

在 AI 对话中，你可以通过 `@别名` 来引用不同工作区中的资源：

#### 语法

```
@工作区别名/相对路径
```

#### 示例

假设你挂载了两个工作区：

- 当前工作区（默认，无需 @ 前缀）
- `@solon-ai-source` (已挂载的目录)

对话示例：

> "把工作区的 `a.md` 删掉，@solon-ai-source 的 `b.md` 删掉"

SolonCode 会识别 `@solon-ai-source` 前缀，将操作定位到对应的挂载目录，同时执行两次删除。

更实际的场景：

> "把 @web-app 下 `src/main/resources/application.yml` 的端口改成 8081，然后在 @backend 下添加一个新的接口路由"

一次对话，跨两个项目完成需求。


### 6. 在审查面板中筛选工作区

审查面板的「工作区」下拉菜单列出了所有已启用且可访问的挂载。选择某个工作区后，审查范围将被限定在该工作区内：

- **Git 状态**：仅显示该工作区的变更文件
- **文件差异**：对比仅限于该工作区路径
- **提交记录**：针对该工作区进行版本查看

这让「审查」变得精准——不会把不同项目的变更混在一起，也不会因为项目庞大而加载过慢。


### 7. 挂载配置的存储

挂载配置保存在当前工作区的 `settings.json` 中（位于 `.soloncode/settings.json`），结构大致如下：

```json
{
  "mounts": [
    {
      "alias": "@solon-ai-source",
      "type": "FILES",
      "path": "/Users/me/projects/solon-ai",
      "enabled": true
    },
    {
      "alias": "@shared-config",
      "type": "FILES",
      "path": "/Users/me/config/shared.properties",
      "enabled": true
    }
  ]
}
```

这意味着：

- **可版本控制**：`settings.json` 可纳入 Git（当然需留意路径在不同机器上的差异）
- **可迁移**：复制 `settings.json` 即可迁移挂载配置
- **可脚本化**：可以用文本编辑器或脚本批量修改挂载配置


### 8. 最佳实践

#### 什么时候用挂载？

- **微服务/模块化项目**：将多个模块以挂载形式加入，AI 可以理解整个调用链路
- **共享库引用**：把公共 SDK、工具库挂进来，AI 在写代码时能自动参考其 API
- **文档与代码联动**：把需求文档目录挂进来，AI 可以按文档描述实现功能

#### 小建议

- 别挂太多：通常 3~5 个工作区挂载是比较舒适的范围，过多会让 AI 上下文变重
- 常用挂载保持启用：不常用的可以禁用而非删除，下次需要时一键恢复
- 别名要语义化：`@common-lib` 比 `@lib1` 更容易记住和理解
- 关闭不再需要的挂载：避免 AI 被不相关的文件干扰


### 9. 常见问题

**Q：挂载会影响源文件吗？**
A：不会。挂载仅指 AI 助手的"视野"范围，文件的操作仍然通过你的工作区控制。删除/修改文件是真实的操作。

**Q：挂载的目录路径变了怎么办？**
A：在设置页编辑该挂载，更新路径即可。如果是共用 `settings.json` 的场景，直接修改 JSON 中的 `path` 字段最快。

**Q：为什么有的挂载在文件面板中不可见？**
A：请检查该挂载是否已启用（toggle 处于开启状态），以及路径是否依旧有效（目录未被移动或删除）。

**Q：不同工作区有同名文件时，AI 怎么区分？**
A：通过 `@别名` 前缀明确指定。不指定默认操作当前工作区。
