poolsideai/pool
GitHub: poolsideai/pool
Poolside 的终端 AI 编程 agent,支持独立运行、编辑器集成(ACP)及非交互式脚本调用,并可灵活对接多种模型后端。
Stars: 298 | Forks: 13
# pool
pool 是 [Poolside](https://poolside.ai) 的编程 agent。它可以在多种模式下运行:
- 在终端中作为独立的交互式应用程序运行
- 作为 [ACP](https://agentclientprotocol.com/) 服务器与[兼容的编辑器](#run-as-an-acp-server-pool-acp)一起运行
- 作为 ACP 客户端连接到 [ACP 服务器](#run-as-an-acp-client-pool---agent-server)
- 使用 `pool exec` 进行非交互式运行。
| Ghostty | Terminal.app |
| --- | --- |
|
|
|
## 目录
- [安装](#install)
- [快速开始](#quick-start)
- [模式](#modes)
- [规范支持](#spec-support)
- [作为 ACP 服务器运行 (`pool acp`)](#run-as-an-acp-server-pool-acp)
- [作为 ACP 客户端运行 (`pool --agent-server`)](#run-as-an-acp-client-pool---agent-server)
- [非交互式运行 (`pool exec`)](#run-non-interactively-pool-exec)
- [OpenRouter](#openrouter)
- [Ollama](#ollama)
- [OpenAI 兼容 API](#openai-compatible-api)
- [MCP 服务器](#mcp-servers)
- [配置](#configuration)
- [权限](#permissions)
- [反馈与 bug](#feedback-and-bugs)
## 安装
Linux 和 macOS:
Windows(预览版):
## 快速开始
在任何项目中运行 `pool`:
```
cd your-project
pool
```
运行 `pool -h` 查看所有可用选项。
### 交互功能
- 使用 `/` 的斜杠命令
- 使用 `@` 对文件和目录进行模糊搜索
- 使用 `!` 的 Shell 模式
- 按两次 `esc` 回退到之前的消息
在会话期间输入 `?` 或 `/help` 查看所有可用命令和快捷键。
## 模式
默认情况下,pool 在每次调用工具前都会请求批准。当您希望它在不提示的情况下执行操作时,请切换到“接受编辑”或“允许全部”。
| 模式 | ID | 功能 |
| ------------- | -------------- | ------------------------------------------------------------------ |
| 总是询问 | `default` | 首次使用每种工具类型时提示批准 |
| 接受编辑 | `accept-edits` | 自动批准工作区文件的读取和写入 |
| 允许所有 | `allow-all` | 自动批准工具调用 |
| 规划 | `plan` | 规划更改而不修改您的代码库 |
按 `Shift+Tab` 循环切换模式,或使用 `/mode ` 直接切换。
## 作为 ACP 服务器运行 (`pool acp`)
`pool acp` 是一个 [Agent Client Protocol](https://agentclientprotocol.com) 服务器。您可以从任何兼容 ACP 的客户端使用它,例如 [Zed](https://zed.dev/acp)、[JetBrains](https://www.jetbrains.com/acp/)、[Xcode](https://developer.apple.com/documentation/Xcode/setting-up-coding-intelligence) 和[其他编辑器](https://agentclientprotocol.com/get-started/clients)。
从 [ACP registry](https://agentclientprotocol.com/get-started/registry) 安装它。
### 其他编辑器
将编辑器的 ACP 配置指向 `pool acp`:
```
{
"command": "pool",
"args": ["acp"]
}
```
要将标志传递给 ACP 服务器,请将它们添加到 args 数组中,例如 `["acp", "--sandbox", "required"]`。
### ACP 功能
- 会话持久化:`session/list` 和 `session/load`
- 会话配置选项:模式和模型。这些可以保存在 `pool.json` 中
,并在启动时使用 `session/set_config_option` 发送
- 向客户端播报斜杠命令
## 作为 ACP 客户端运行 (`pool --agent-server`)
默认情况下,`pool` 通过 `pool acp` 连接到 Poolside 的内置 agent。您也可以将其连接到任何其他 [ACP 服务器](https://agentclientprotocol.com/get-started/agents):
```
# Claude Agent
npm install -g @agentclientprotocol/claude-agent-acp
pool --agent-server claude-agent-acp
# Codex
npm install -g @agentclientprotocol/codex-acp
pool --agent-server codex-acp
```
要将非 Poolside 服务器设置为默认服务器,请编辑 `~/.config/poolside/pool.json`:
```
{
"agent_servers": {
"default": {
"command": "claude-agent-acp"
}
}
}
```
`--` 之后的标志将被转发给正在运行的 ACP 服务器 `pool`。例如:
```
pool -- --sandbox required
```
## 非交互式运行 (`pool exec`)
运行 `pool exec` 发送单个提示,并在任务完成后退出。将其用于脚本、CI pipeline 和一次性任务。
```
# Inline prompt
pool exec -p "scan cmd/cli code for vulnerabilities" -o json --unsafe-auto-allow
# 文件中的 prompt
pool exec -f prompt.txt -o json
```
## OpenRouter
`pool` 原生支持 [OpenRouter](https://openrouter.ai)。
运行 `pool login` 并选择 `Log in with OpenRouter`。
## Ollama
[Ollama](https://ollama.com) 原生支持 `pool`:
```
# 启动模型选择器
ollama launch pool
# 直接使用模型启动
ollama launch pool --model laguna-xs.2
```
## OpenAI 兼容 API
您可以针对任何 OpenAI 兼容 API 运行 `pool`。例如,将其用于 [`llama.cpp`](https://llama.app) 的本地模型或本地运行的 [vLLM](https://vllm.ai)。
```
POOLSIDE_STANDALONE_BASE_URL="http://127.0.0.1:8080" POOLSIDE_API_KEY="EMPTY" pool
```
在某些环境中,您也需要传递模型:
```
POOLSIDE_STANDALONE_BASE_URL="http://127.0.0.1:8080" POOLSIDE_API_KEY="EMPTY" POOLSIDE_STANDALONE_MODEL="ggml-org/gemma-3-1b-it-GGUF" pool
```
## MCP 服务器
`pool` 可以连接到 [Model Context Protocol](https://modelcontextprotocol.io) 服务器,以向 agent 公开额外的工具。使用 `pool mcp` 管理它们:
```
# 基于命令 (stdio)
pool mcp add filesystem -- node filesystem-server.js
# 远程 HTTP 服务器
pool mcp add --transport http notion https://mcp.notion.com/mcp
# 远程 SSE 服务器
pool mcp add --transport sse linear https://mcp.linear.app/sse
# 传递环境变量或 HTTP headers
pool mcp add --env API_KEY=your-key myserver -- npx -y myserver-mcp
pool mcp add --transport http --header "Authorization: Bearer $TOKEN" svc https://example.com/mcp
# 检查和移除
pool mcp list
pool mcp get
pool mcp remove
```
服务器存储在 `~/.config/poolside/settings.yaml` 的 `mcp_servers` 下。您也可以直接编辑该文件,或者通过将它们添加到 `.poolside/settings.yaml` 来为每个项目配置服务器。
## 配置
运行 `pool config` 打印日志、轨迹和配置目录,以及凭证文件路径。运行 `pool config settings` 在您的编辑器中打开 `settings.yaml`。
默认情况下,Poolside 将配置文件存储在 `~/.config/poolside`。这包括 `settings.yaml`(CLI 设置)、`credentials.json`(API token)和 `pool.json`(agent 服务器默认设置)。
对于自动化环境,请设置 `POOLSIDE_API_KEY` 而不是使用存储的凭证。`pool` 会在读取配置文件之前检查它。
## 权限
权限规则可以在三个范围内设置:
- `.poolside/settings.local.yaml` – 本地,每个项目独立(被 gitignore 忽略)
- `.poolside/settings.yaml` – 每个项目共享(已提交)
- `~/.config/poolside/settings.yaml` – 跨项目的个人默认设置
当同一个设置出现在多个文件中时,以最具体的文件为准。
### 工具权限
```
tools:
shell:
allow:
- "git log *"
- "rg *"
deny:
- "rm *"
- "git push *"
```
工具规则的工作原理:
### 路径权限
```
paths:
allow:
- path: ~/Documents/**
- path: ~/workspace/docs/**
write: true
deny:
- path: ~/.ssh/**
- path: ~/.env
```
路径规则的工作原理:
- 路径默认为只读;`write: true` 允许编辑、删除、移动、重命名
- `deny` 覆盖 `allow`
- 路径模式支持 `*` 和 `**`
- 所有路径均使用正斜杠,包括 Windows 路径
- 在 `.poolside/settings.local.yaml` 中,路径必须相对于项目
- 在 `~/.config/poolside/settings.yaml` 中,路径必须是绝对路径或以 `~` 开头
## 反馈与 bug
在交互式会话中运行 `/feedback` 发送反馈或报告 bug。要附加上一次的会话,请先使用 `pool -r` 恢复它,然后再运行 `/feedback`。
## 许可证
参见 [LICENSE.md](https://github.com/poolsideai/pool/blob/main/LICENSE.md)。
|
## 目录
- [安装](#install)
- [快速开始](#quick-start)
- [模式](#modes)
- [规范支持](#spec-support)
- [作为 ACP 服务器运行 (`pool acp`)](#run-as-an-acp-server-pool-acp)
- [作为 ACP 客户端运行 (`pool --agent-server`)](#run-as-an-acp-client-pool---agent-server)
- [非交互式运行 (`pool exec`)](#run-non-interactively-pool-exec)
- [OpenRouter](#openrouter)
- [Ollama](#ollama)
- [OpenAI 兼容 API](#openai-compatible-api)
- [MCP 服务器](#mcp-servers)
- [配置](#configuration)
- [权限](#permissions)
- [反馈与 bug](#feedback-and-bugs)
## 安装
Linux 和 macOS:
Windows(预览版):
## 快速开始
在任何项目中运行 `pool`:
```
cd your-project
pool
```
运行 `pool -h` 查看所有可用选项。
### 交互功能
- 使用 `/` 的斜杠命令
- 使用 `@` 对文件和目录进行模糊搜索
- 使用 `!` 的 Shell 模式
- 按两次 `esc` 回退到之前的消息
在会话期间输入 `?` 或 `/help` 查看所有可用命令和快捷键。
## 模式
默认情况下,pool 在每次调用工具前都会请求批准。当您希望它在不提示的情况下执行操作时,请切换到“接受编辑”或“允许全部”。
| 模式 | ID | 功能 |
| ------------- | -------------- | ------------------------------------------------------------------ |
| 总是询问 | `default` | 首次使用每种工具类型时提示批准 |
| 接受编辑 | `accept-edits` | 自动批准工作区文件的读取和写入 |
| 允许所有 | `allow-all` | 自动批准工具调用 |
| 规划 | `plan` | 规划更改而不修改您的代码库 |
按 `Shift+Tab` 循环切换模式,或使用 `/mode 标签:AI编程助手, AI风险缓解, DLL 劫持, Petitpotam, SOC Prime, 可视化界面, 大语言模型, 开发工具, 镜像安全