AI Skill Hub 强烈推荐:协同AI工作流 是一款优质的Agent工作流。AI 综合评分 8.0 分,在同类工具中表现稳健。如果你正在寻找可靠的Agent工作流解决方案,这是一个值得深入了解的选择。
协同AI工作流 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
协同AI工作流 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。
# 方式一:go install(推荐) go install github.com/AndrewDryga/coop@latest # 方式二:从源码编译 git clone https://github.com/AndrewDryga/coop cd coop go build -o coop . # 方式三:下载预编译二进制 # 访问 Releases 页面下载对应平台二进制文件 # https://github.com/AndrewDryga/coop/releases
# 查看帮助 coop --help # 基本运行 coop [options] <input> # 详细使用说明请查阅文档 # https://github.com/AndrewDryga/coop
# coop 配置说明 # 查看配置选项 coop --config-example > config.yml # 常见配置项 # output_dir: ./output # log_level: info # workers: 4 # 环境变量(覆盖配置文件) export COOP_CONFIG="/path/to/config.yml"
curl -fsSL https://raw.githubusercontent.com/AndrewDryga/coop/main/install.sh | sh
Downloads the prebuilt coop binary for your OS/arch into ~/.local/bin — no Go, no clone. If a container runtime is present, the installer also builds the sandbox image and runs coop doctor; otherwise do that once yourself:
coop build && coop doctor
Requirements: the installer needs curl, tar, and either sha256sum or shasum. Running Coop needs a container runtime — Apple container (macOS 26+), Docker, or Podman — which Coop auto-detects. The installed coop binary itself is static.
Staying current: coop update self-updates the binary and rebuilds the box image fresh, pulling the latest agent CLIs and ACP adapters (they ship features often) plus a newer base. (Re-running the install one-liner still works.)
<details><summary><b>Other ways to install</b></summary>
git clone https://github.com/AndrewDryga/coop && cd coop && make install # from source </details>
<details><summary><b>Verifying a download</b></summary>
The one-line command executes the mutable main/install.sh first, so that bootstrap trusts GitHub and the repository's current main branch. The script then requires the release's checksums.txt and verifies the downloaded archive with sha256sum or shasum; it aborts if either the metadata or tool is missing. When cosign is installed, it also authenticates the checksum file to the exact release workflow and requested tag — and, for every release from v2.2.2 on (all of them ship a bundle), refuses to install when the bundle is missing rather than falling back to the checksum alone. Without cosign it says the signature was not verified.
For verification before executing project code, download the release artifacts by hand. Set VER and ASSET for your platform — e.g. VER=v0.1.0 ASSET=coop_0.1.0_darwin_arm64.tar.gz:
```bash base="https://github.com/AndrewDryga/coop/releases/download/$VER" curl -fsSLO "$base/$ASSET" curl -fsSLO "$base/checksums.txt" curl -fsSLO "$base/checksums.txt.bundle"
cd ~/code/your-repo # 1. any git repo coop init # 2. scaffold AGENTS.md, the .agent/ queue, and the hooks coop login claude # 3. authenticate once (paste-code, no browser; token persists) coop doctor # 4. prove isolation holds (run 'coop build' first if needed)
From nothing to disposable agents draining a task queue, sandboxed:
```bash curl -fsSL https://raw.githubusercontent.com/AndrewDryga/coop/main/install.sh | sh
One box, four agents. Each reads its config and credentials from ~/.config/coop/agents/<name>/, mounted into the box at ~/.claude, ~/.codex, ~/.gemini, and ~/.grok. That directory lives outside any repo, so credentials never land in git — edit those files on the host and they take effect in the box. The folders appear on first run, and each tool's normal user-level config works there as-is — claude/settings.json, codex/config.toml, gemini/settings.json, grok/config.toml. Only the active credential is mounted, so a running agent sees just the account it's using, not the whole vault.
Each run mounts only the launched agent's credentials: coop claude mounts ~/.claude (and that agent's API key from the env file), never the Codex or Gemini ones. The exceptions are runs where the lead is explicitly told to call peers — coop <target> --peer <target>... (including loops and forks) — which also mount the named peers so they can be consulted read-only (only those you name, never everyone signed in). A preset is explicit too: every signed-in provider named by a consult/delegate role ladder is mounted for that role; unavailable rungs are skipped. Raw runs (coop run, coop shell) and maintenance runs (the merge gate, coop doctor) mount no agent credentials at all. coop login <agent> mounts only the agent being signed in.
Blast radius. That credential dir is mounted read-write — the agent must write its session history, and OAuth refresh rewrites the token in place. So a prompt-injected agent can (a) read its own credentials and try to exfiltrate them — setCOOP_EGRESS=noneto cut the box off the network — and (b) write config its CLI auto-loads next launch (e.g. asettings.jsonhook), which then runs in future boxes for that credential. (b) stays inside the container — not a host escape — but it's a durable foothold. A fuller fix (copy credentials into an ephemeral in-box location, persist nothing host-side) is planned; for now,COOP_EGRESS=nonecovers the exfil half.
Every command runs against the repo in your current directory. -h/--help works on any of them.
The groups below match coop help — same commands in each, with more of the flags spelled out here (there's room to render them).
Agents
| Command | What it does |
|---|---|
coop <target> [args] | a sandboxed Claude, Codex, Gemini, or Grok target (<agent>[:model][/effort][@account]) — its autonomous flags, plus any args you add |
coop acp <target|preset> | run as an [ACP](#drive-it-from-zed-acp) agent over stdio (for Zed) — coop owns the Preset/Provider/Account selectors, runs yolo, and rides out box restarts and rate limits for you; pin a per-entry model/effort/account in the target (or name a preset in the same slot); name each peer with --peer <target> (repeatable) to let it ask them read-only |
coop <target> --peer <target>... | [opt-in second opinion](#second-opinions---peer) — name each peer with --peer <target> (repeatable); may ask those peers on hard calls |
coop <preset> | run an [orchestration preset](#presets-the-whole-arrangement-in-one-yaml-file) interactively — its lead leads, its roles ride along (a preset name shares the who-runs slot with an agent target) |
coop <agent>:<model>[/effort] | [pick the model and reasoning effort](#picking-models) for that run — works on agent runs, forks, the loop, and acp |
Credentials, models & presets (details)
| Command | What it does |
|---|---|
coop login <agent>[@<name>] | [authenticate](#authentication) an agent (token persists in the config dir); @<name> adds a second account |
coop credentials [agent [credential]] | list stored credentials + which are signed in; a path grammar edits one (e.g. coop credentials claude work default · … rm) |
coop models [agent] | the model menu per agent ([picking models](#picking-models)) — set one in the target (<agent>:<model>) or a [preset](#presets-the-whole-arrangement-in-one-yaml-file) |
coop presets [name] | list [orchestration presets](#presets-the-whole-arrangement-in-one-yaml-file) (lead + roles) or show one; coop presets init scaffolds the frontier recipe |
The box
| Command | What it does |
|---|---|
coop run -- <cmd> | run any command in the box (raw — none of coop's agent flags) |
coop shell | a shell in the box, to look around |
Forks — hand off work like a PR (details)
| Command | What it does |
|---|---|
coop fork <name> [<target|preset>] [--new] | open or re-enter a [secrets-free fork](#forks-hand-off-work-like-a-pr) + run an agent or preset (re-entry resumes the session; --new resets) |
coop fork ls | list this repo's forks: agent, branch, state, tasks done/total, change size, last activity |
coop fork review <name> [--stat\|--tool\|--open] [--gate] | dossier + diff; --gate previews the rebase and gate without touching either source repo |
coop fork merge <name> [--force] [--yes] | rebase one fork onto your branch and land it (--yes confirms non-interactively); refuses a fork that adds or edits something that runs on your machine by itself — a commit hook, editor or agent settings, compose — unless you pass --force after reading it |
coop fork merge --all [--force] [--yes] | rebase and land every fork (--yes confirms non-interactively; cannot be combined with a name) |
coop fork logs [name] [-f] · stop <name> | tail a loop log (no name = all) · stop a detached loop |
coop fork rm <name> [--force] [--yes] | discard a fork — confirms first; --force may stop its detached worker and return/discard Git plus canonical task authority |
coop fork open <name> · path <name> | open the fork in your editor · print its filesystem path |
coop fork <name> <target|preset> --loop [--tasks <path>] [-d] | claim canonical project tasks one at a time in an isolated fork (--tasks selects one queue; -d detaches) |
coop fork <name> acp <target> | drive the fork's [sandboxed agent from Zed](#drive-it-from-zed-acp) over ACP |
Unattended (details)
| Command | What it does |
|---|---|
coop loop [<target|preset>] [--tasks <path>] [--peer <target>...] [--max-tasks <n>] [--preflight] [--debug-on-fail] | work the [.agent/tasks/](#the-loop) queue until done, then sign off (name an agent target — claude/codex/gemini/grok, with optional model/effort/account — or a preset in the same slot, whose lead supplies it); --tasks picks the queue (default .agent/tasks, repeatable); the target's model/effort or the preset's ladder set the [rotation](#picking-models); name each peer with --peer <target> (repeatable) so iterations may ask them read-only; --max-tasks <n> works a bounded batch through retries and immediate audits, then pauses before another task or final signoff; --preflight tidies .agent/ state first; --debug-on-fail opens a box shell on a failure |
Tasks — a folder-per-task queue in .agent/tasks/ (details)
| Command | What it does |
|---|---|
coop tasks ls | show the queue, grouped by state (a folder per task; its directory *is* its state) |
coop tasks watch | one live board for canonical tasks and every local/fork/ACP/session sandbox (auto-exits when work drains, exits 1 when a queue cannot be read; Ctrl-C anytime) |
coop tasks add "<title>" · claim [--as <label>] [--pid <n>] [--force] · release · block · unblock · done · rm | move one task through its states (moving its folder is the state change); an agent's claim binds to its process so ls/watch show who holds the task and whether it is still alive, and coop loop --preflight releases a claim whose process is gone; release hands a claim back without finishing it |
coop tasks flags [<id>] [--ack] | list the finished tasks whose commits changed what runs on your machine (hooks, settings, compose, Makefile); show one task's files, or acknowledge them after reading — the board carries a ⚠ until you do |
coop tasks lease <id> [--as <label>] [--pid <n>] [-- <command...>] | hold the task's work lock — the one a loop iteration holds — for a command's lifetime, or until the bound process exits or the task moves; ls/watch show busy <label> and a loop in this checkout skips the task meanwhile |
coop tasks decisions [-i] · lint | what's blocked on a decision (-i to answer) · check the canonical tree |
coop backlog · add "<title>" · promote <id> · rm <id> | park unscheduled ideas in the xx_backlog/ drawer — same folder format, but outside the lifecycle (never auto-worked, never nagged); promote moves one into 00_todo/ when it's ready |
Sessions — the local remote-session controller (details)
| Command | What it does |
|---|---|
coop sessions serve [--state <path>] [--policies <path>] [--socket <path>] | run the session controller over an owner-only Unix socket (it never listens on TCP) |
coop sessions doctor [--json] · policies [--json] · compact --backup <path> | check the socket · print the trusted policy and authority digests a fleet worker must advertise · back up, then compact turn retry receipts |
coop worker connect --config <absolute-path> | join one private Coop daemon to an external fleet controller over an outbound mutual-TLS poll stream; see [worker setup and recovery](docs/worker.md) |
Services — the box's .agent/compose.yml sidecars (details)
| Command | What it does |
|---|---|
coop up · down [-v] | start/stop [sibling services](#services) (Postgres, Redis) for this repo |
Safety — prove the box holds, catch committed secrets
| Command | What it does |
|---|---|
coop doctor | [prove isolation](#prove-it-coop-doctor) — attack the box and check it holds |
coop check-secrets [--include-ignored] | scan committed files for secrets by content — --include-ignored widens to the [whole visible tree](#secrets-never-enter-the-box) (exit 1 on a hit) |
Set up & maintain
| Command | What it does |
|---|---|
coop init [--stack asdf] | [scaffold](#project-toolchain--services) the queue, hooks, skills, and selected [agent directories](#instructions-one-source-of-truth) (and optionally a toolchain) |
coop build · update | build the box image · [self-update coop + rebuild it fresh](#keeping-the-box-current) (latest agents/adapters) |
coop completion <shell> | shell tab-completion (bash, zsh) |
coop help · version | print help · print the version |
For Zsh, generate with coop completion zsh > "${fpath[1]}/_coop", then source that file after compinit in .zshrc: source "${fpath[1]}/_coop". Existing file-only installs need the source line too; it keeps Zsh spelling correction on globally while marking only coop arguments nocorrect.
cosign verify-blob checksums.txt \ --bundle checksums.txt.bundle \ --certificate-identity "https://github.com/AndrewDryga/coop/.github/workflows/release.yml@refs/tags/$VER" \ --certificate-oidc-issuer https://token.actions.githubusercontent.com
git config --global diff.tool vscode git config --global difftool.vscode.cmd 'code --wait --diff "$LOCAL" "$REMOTE"'
coop 是一个专为开发者设计的沙盒化 AI Agent 运行环境。它允许你在隔离的容器中安全地运行 Claude、Codex 或 Gemini 等 AI 模型,确保 AI 在处理本地代码库时既能获得完整的上下文,又不会泄露敏感信息或破坏系统环境。
使用 coop 需要系统中已安装容器运行时(Container Runtime),支持 Docker、Podman 或 macOS 26+ 自带的 Apple container。此外,运行特定的 AI 模型需要相应的 API 凭证。
可以通过官方提供的安装脚本一键完成部署:使用 `curl -fsSL https://raw.githubusercontent.com/AndrewDryga/coop/main/install.sh | sh` 将预编译的 `coop` 二进制文件下载至 `~/.local/bin`。安装完成后,若系统已存在容器运行时,脚本会自动构建沙盒镜像并运行 `coop doctor` 进行环境检查;若未检测到运行时,请手动执行 `coop build && coop doctor`。
coop 的使用非常直观。首先进入你的代码仓库目录,通过 `coop login claude` 进行一次性身份验证。随后,你可以直接运行 `coop claude`、`coop codex` 或 `coop gemini` 来启动对应的沙盒 Agent。此外,`coop fusion` 支持多模型协作模式,而 `coop shell` 和 `coop run` 则允许你在沙盒环境中执行命令或测试脚本,实现完全隔离的开发体验。
coop 采用“一箱三 Agent”的设计理念。每个 Agent 的配置与凭证均存储在宿主机的 `~/.config/coop/agents/<name>/` 目录下,并以挂载方式映射到沙盒内的对应路径(如 `~/.claude`)。这种设计确保了敏感凭证不会进入 Git 仓库。此外,coop 支持通过 `.tool-versions` (asdf) 实现零配置环境,能够根据仓库定义的版本自动在运行时配置工具链。
coop 的所有命令均基于当前工作目录的仓库运行。核心命令包括:`coop [agent]` 用于启动沙盒化的 AI Agent;`coop fusion [agent]` 用于启动多模型治理模式;`coop fork` 则允许你将特定的分支交给 Agent 在临时克隆环境中处理,实现安全的代码重构与评审。
项目的发布流程高度自动化且安全,通过 GitHub Release Workflow 进行签名。利用 cosign 技术对 `checksums.txt` 进行校验,确保分发的二进制文件在传输过程中未被篡改,符合现代云原生安全标准。
针对常见问题,若遇到 "no container runtime found" 错误,请安装 Docker 或 Podman,或通过 `COOP_RUNTIME=docker` 强制指定运行时。若提示镜像未构建,请执行 `coop build`。所有安装包均通过 GitHub Workflow 进行签名,确保安全性。
高质量的开源AI工作流项目,具有自动化和安全性
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
总体来看,协同AI工作流 是一款质量优秀的Agent工作流,在同类工具中具备一定竞争力。AI Skill Hub 将持续追踪其更新动态,建议收藏备用,结合自身场景选择合适时机引入使用。
| 原始名称 | coop |
| 原始描述 | 开源AI工作流:Run a coding agent on your real repos every day — in a box it can't escape, with。⭐18 · Go |
| Topics | aillmsandboxgo |
| GitHub | https://github.com/AndrewDryga/coop |
| License | MIT |
| 语言 | Go |
收录时间:2026-06-24 · 更新时间:2026-06-26 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端