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)。
标签:AI编程助手, AI风险缓解, DLL 劫持, Petitpotam, SOC Prime, 可视化界面, 大语言模型, 开发工具, 镜像安全