Multica Docs

项目资源

为项目关联 GitHub 仓库或本地目录,让后续执行获得稳定的工作上下文。

项目资源告诉智能体这组工作会用到哪些代码,以及在哪里执行。资源会持续关联在项目上,不必在每条任务中重复粘贴仓库地址或本地路径。

目前支持两种资源:

资源适用场景执行位置
GitHub 仓库团队共享的代码库,希望由运行时管理 checkout运行时管理的工作目录
本地目录已经存在的 checkout、很大的仓库,或需要直接查看本地改动指定电脑上的原目录

资源进入执行的方式

当智能体处理项目内的任务时,Multica 会把项目名称、项目描述和资源列表加入执行上下文,并在工作目录中写入 .multica/project/resources.json。

工作区关联的仓库列表始终包含在执行上下文中。项目关联的仓库在此基础上指明这组工作使用的代码和默认 ref。

本地目录只对绑定它的守护进程有效。本次执行所在的守护进程有匹配的本地目录时,智能体直接进入该目录工作;其他电脑仍使用项目中的 GitHub 仓库或工作区仓库。

添加 GitHub 仓库

打开项目,在 资源 中选择"添加资源"。可以选择已关联到工作区的仓库,也可以粘贴 Git URL。工作区仓库在 设置 → 代码 中维护;连接 GitHub 后,可在同一页面通过 从 GitHub 选择 导入 App 已授权的仓库。

仓库不限于 GitHub:任何运行时能访问的 Git URL 都可以作为仓库资源。自部署的 Multica 还可以在 设置 → 代码 连接自托管的 Forgejo、Gitea 或 GitLab,见自托管 Git 代码托管。

创建项目时,也可以直接在 Repos 中选择仓库。一个项目可以关联多个 GitHub 仓库。

资源中的 ref 可以指定后续 checkout 默认使用的分支、tag 或 commit。default_branch_hint 只向智能体提供默认分支提示,不会强制切换分支。

添加本地目录

添加本地目录的界面只在 Desktop 中提供,因为浏览器不能选择电脑上的文件夹。

这是特殊情况下的选项,不要因为方便就选它。 local_directory 是给那些"不得不这么开发"的人准备的,典型是一个 checkout 就几十 GB 的游戏项目,不可能每来一次运行就重新 clone 一份。

如果你的目录只是一个能正常 clone 的普通 git 仓库,请用 github_repo:它默认走 worktree 模式,同一个仓库上的运行可以同时进行,数量不受限制。local_directory 默认同一时间只进行一次运行;如果这个目录本身是 git 仓库,可以主动开启 worktree 模式恢复并发(见运行如何共享这个目录)。拿不准时,先对照页首的两种资源。

确认 Desktop 的本地守护进程在线。

打开项目的 资源,或者创建项目对话框里的 本地目录 标签页。项目还没建出来时,也能在这里做同样的选择。

选择"添加本地目录",再选择要使用的文件夹。

选择运行如何使用它:原地 还是 并行,区别见运行如何共享这个目录。如果这个文件夹是 git 仓库、并且那台机器上的运行时能做隔离,Desktop 会预选 并行,否则预选 原地。当场可以改,之后也可以在 资源 里点目录旁边的铅笔图标改。

预选只作用于你此刻正在关联的目录。之前关联好的目录仍然保持保存时的模式,已有配置不会在你不知情时被切换。

目录必须是绝对路径,已经存在,并且当前守护进程可以读取和写入。以下路径会被拒绝:系统根目录和盘符根(/、C:\)、用户主目录本身及各主目录的上级(如 /Users、/home、/root),以及 /etc、/var、/tmp、/usr、/opt 等系统目录。如果所选路径是符号链接,会先解析为真实路径再按同样的规则校验一次,串行锁也按真实路径生效。

每个项目在同一台守护进程上最多关联一个本地目录。团队中的不同电脑可以分别为同一个项目关联各自的目录。

在默认的 in_place 模式下,本地目录不是隔离环境:智能体会直接看到并修改当前分支和未提交的文件,Multica 也不会自动切换分支、stash、commit、push 或创建 PR。worktree 模式不一样,见下面的运行如何共享这个目录。

运行如何共享这个目录

本地目录有两种执行模式,按资源逐个设置。在资源面板里可以直接切换,CLI 用 --execution-mode。Desktop 里这两种模式显示为 原地 和 并行;API、CLI 和本页其余部分都使用标识符。

动手试试OPS-21 和 OPS-22 · 同一个本地文件夹上的两次运行
每次运行如何使用这个文件夹?
~/Documents/website-copy
两条任务都要修改同一个本地文件夹里的官网文案。

智能体直接在你的目录里工作,同一时间只进行一次运行。两次运行使用同一个真实目录时,后到的运行进入 waiting_local_directory,等前一次释放目录后继续。两个路径经不同符号链接指向同一目录时,同样串行。

等待不会修改目录。等待中的运行可以取消,否则会一直等到目录可用。

普通的非 git 目录只能用这种模式:worktree 模式只面向 git 仓库。

执行期间写入的内容

除了智能体产生的代码改动,运行时还可能在目录中写入当前 AI 编程工具所需的说明文件,以及 .multica/project/resources.json。不希望它们进入版本控制时,加入 .gitignore 即可。

Multica 清理执行环境时不会删除关联的本地目录。智能体对该目录的改动,与你在终端中直接运行 AI 编程工具的改动性质相同,需要同样的审查。

使用 CLI 管理资源

# 创建项目时关联仓库
multica project create \
 --title "Agent UX" \
 --repo https://github.com/multica-ai/multica

# 查看和添加资源
multica project resource list <project-id>
multica project resource add <project-id> \
 --type github_repo \
 --url https://github.com/multica-ai/multica \
 --ref main

# 关联指定守护进程上的本地目录
multica project resource add <project-id> \
 --type local_directory \
 --local-path /absolute/path/to/repo \
 --daemon-id <daemon-id>

# 关联一个本地 git 仓库,并让每次运行在各自的 worktree 中并发执行
multica project resource add <project-id> \
 --type local_directory \
 --local-path /absolute/path/to/repo \
 --daemon-id <daemon-id> \
 --execution-mode worktree

# 为已有的本地目录切换模式
multica project resource update <project-id> <resource-id> --execution-mode worktree
multica project resource update <project-id> <resource-id> --execution-mode in_place

# 移除资源
multica project resource remove <project-id> <resource-id>

资源变更会影响之后创建的运行,不会改写已经结束的执行记录。

接下来

  • 项目 — 了解项目上下文、进度和负责人。
  • 守护进程与运行时 — 了解运行由哪台电脑领取。
  • 运行 — 查看 waiting_local_directory 等执行状态。

本页目录