squadron-cli
v0.4.2
Published
AI coding agent CLI with multi-agent support - Claude Code alternative powered by GitHub Copilot, Anthropic, OpenAI, and Ollama
Maintainers
Readme
Squadron CLI
支持多 Agent 和多 Provider 的 AI 编程助手 CLI 工具。
特性
- 多 Provider 支持 - GitHub Copilot、Anthropic Claude、OpenAI、Ollama (本地 LLM)
- 交互式聊天 - 类似 Claude Code 的界面,支持流式响应
- 多 Agent 并行 - 同时运行多个 Agent,实时显示输出
- 子 Agent 支持 - 主 Agent 可以派生子任务
- MCP 协议 - 通过 Model Context Protocol 扩展外部工具
- LSP 集成 - 代码智能 (悬停提示、跳转定义、查找引用)
- 文件操作 - 读取、写入、编辑文件,支持语法高亮
- 代码搜索 - 基于 ripgrep 的快速搜索 (比 grep 快 10 倍)
- Git 集成 - 完整的 Git 工作流支持
- YAML 配置 - 项目级和全局配置
安装
# 全局安装
npm install -g squadron-cli
# 或使用 npx 无需安装
npx squadron-cli要求: Node.js >= 18
快速开始
# 1. 登录 GitHub Copilot
squadron login
# 2. 启动交互式聊天
squadron
# 3. 或运行单个任务
squadron run "解释这个代码库"Provider 支持
Squadron 支持多种 LLM Provider:
| Provider | 模型 | 设置方式 |
|----------|------|----------|
| GitHub Copilot | GPT-4o, Claude Sonnet 4, o1 等 | squadron login |
| Anthropic | Claude 3.5/4 Sonnet, Opus, Haiku | 设置 ANTHROPIC_API_KEY |
| OpenAI | GPT-4, GPT-4o, o1 等 | 设置 OPENAI_API_KEY |
| Ollama | Llama 3, Mistral, CodeLlama 等 | 本地安装 Ollama |
使用不同的 Provider
# GitHub Copilot (默认)
squadron chat -m claude-sonnet-4
# 直接使用 Anthropic API
export ANTHROPIC_API_KEY=sk-ant-...
squadron chat -m anthropic:claude-sonnet-4-20250514
# Ollama (本地)
ollama pull llama3.2
squadron chat -m ollama:llama3.2
# OpenAI 兼容 API
export OPENAI_API_KEY=sk-...
export OPENAI_BASE_URL=https://api.openai.com
squadron chat -m openai:gpt-4o配置
Squadron 使用 YAML 配置文件。配置按以下优先级合并:
- 项目配置: 当前目录下的
.squadron.yml - 全局配置:
~/.config/squadron-cli/config.yml
快速设置
# 创建项目配置
squadron config init
# 编辑全局配置
squadron config edit配置文件
在项目根目录创建 .squadron.yml:
# Provider 设置
provider:
type: copilot # copilot | anthropic | openai | ollama
model: claude-sonnet-4
# 或使用 Ollama 本地 LLM
# provider:
# type: ollama
# model: llama3.2
# baseURL: http://localhost:11434
# 默认 AI 模型
model: claude-sonnet-4
# AI 人格 (风格)
persona: claude-code # default | claude-code | cursor-agent | windsurf | cline | devin | minimal | teacher
# 自定义指令 (添加到系统提示)
instructions: |
你是一位资深 TypeScript 开发者。
始终使用严格的 TypeScript 类型。
遵循项目现有的代码风格。
# 工具权限级别: ask | allow | deny
permissions:
# 安全工具 (默认: allow)
read_file: allow
glob: allow
grep: allow
git_status: allow
git_log: allow
git_diff: allow
# 写入工具 (默认: ask)
write_file: ask
edit_file: ask
# 执行工具 (默认: ask)
bash: ask
run_tests: ask
# 推送工具 (默认: ask)
git_commit: ask
git_push: ask
git_pull: ask
# YOLO 模式: 跳过所有确认 (谨慎使用!)
yolo: false
# 始终包含的上下文路径
contextPaths:
- README.md
- docs/architecture.md
- src/types.ts
# 提交信息署名风格
attribution:
style: co-authored-by # co-authored-by | assisted-by | none
# MCP (Model Context Protocol) 服务器
mcp:
# 文件系统访问
filesystem:
type: stdio
command: npx
args: ["-y", "@anthropic-ai/mcp-server-filesystem", "/path/to/allowed/dir"]
# GitHub 集成
github:
type: stdio
command: npx
args: ["-y", "@anthropic-ai/mcp-server-github"]
env:
GITHUB_TOKEN: ${GITHUB_TOKEN}
# HTTP 类型的 MCP 服务器
custom-api:
type: http
url: http://localhost:3000/mcp
headers:
Authorization: Bearer ${API_TOKEN}
# 临时禁用某个服务器
disabled-server:
type: stdio
command: some-command
disabled: true
# LSP (Language Server Protocol) 服务器,用于代码智能
lsp:
typescript:
command: typescript-language-server
args: ["--stdio"]
python:
command: pylsp
go:
command: gopls
rust:
command: rust-analyzer
# 自定义忽略规则 (在 .gitignore 基础上)
ignore:
- "*.log"
- "tmp/"
- "coverage/"环境变量
配置值可以引用环境变量:
mcp:
github:
env:
GITHUB_TOKEN: ${GITHUB_TOKEN} # 必需
API_URL: ${API_URL:-default} # 带默认值支持的环境变量:
| 变量 | 说明 |
|------|------|
| ANTHROPIC_API_KEY | Anthropic API 密钥 |
| OPENAI_API_KEY | OpenAI API 密钥 |
| OPENAI_BASE_URL | OpenAI 兼容 API 地址 |
| OLLAMA_BASE_URL | Ollama 服务器地址 (默认: http://localhost:11434) |
| LLM_PROVIDER | 强制使用指定 Provider: copilot, anthropic, openai, ollama |
| GITHUB_TOKEN | GitHub Token (MCP GitHub 服务器使用) |
命令
| 命令 | 说明 |
|------|------|
| squadron | 启动交互式聊天 (默认) |
| squadron chat | 启动交互式聊天会话 |
| squadron run <task> | 运行单个任务 (非交互式) |
| squadron multi [tasks...] | 并行运行多个 Agent |
| squadron login | 登录 GitHub Copilot |
| squadron logout | 登出 |
| squadron status | 显示认证状态 |
| squadron models | 列出可用模型 |
| squadron config init | 创建项目配置 |
| squadron config edit | 编辑全局配置 |
| squadron providers | 列出可用 Provider 及状态 |
| squadron explain <code> | 解释代码或概念 |
| squadron suggest <desc> | 建议 Shell 命令 |
选项
# 使用不同模型
squadron chat -m gpt-4o
squadron chat -m claude-sonnet-4
squadron chat -m ollama:llama3.2
# 指定 Provider
squadron chat --provider anthropic -m claude-sonnet-4-20250514
# 跳过确认提示 (YOLO 模式)
squadron chat --yolo
# 查看可用模型
squadron models
# 刷新模型列表
squadron models --refresh聊天界面
快捷键
| 按键 | 操作 |
|------|------|
| Enter | 发送消息 |
| Esc | 取消当前任务 |
| ↑/↓ | 浏览历史 |
| Tab | 补全 @file 引用 |
特殊命令
| 命令 | 说明 |
|------|------|
| /help | 显示帮助 |
| /clear | 清屏 |
| /model | 切换 AI 模型 |
| /persona | 切换 AI 人格 |
| /session | 管理会话 |
| /compact | 压缩上下文 |
| /providers | 列出可用 Provider |
| /quit | 退出 |
AI 人格
Squadron 内置多种 AI 风格,灵感来自业界工具:
| 人格 | 说明 |
|------|------|
| default | 平衡的编程助手 |
| claude-code | 专业、简洁 (Claude Code 风格) |
| cursor-agent | 主动、分步骤 (Cursor 风格) |
| windsurf | 自主、上下文感知 (Windsurf 风格) |
| cline | 谨慎的工程师 (Cline/RooCode 风格) |
| devin | 独立 Agent (Devin 风格) |
| minimal | 极简回复 |
| teacher | 边编码边讲解 |
使用 /persona 切换,或在配置中设置:
persona: cursor-agent@file 引用
输入 @ 自动补全文件引用:
> @src/ # 浏览目录
> @package.json # 引用特定文件
> @src/cli # 模糊搜索MCP (Model Context Protocol)
MCP 允许你通过外部工具和上下文 Provider 扩展 Squadron。
支持的传输类型
| 类型 | 说明 |
|------|------|
| stdio | 本地进程通信 (推荐) |
| http | HTTP REST API |
| sse | Server-Sent Events 流式通信 |
可用的 MCP 服务器
mcp:
# 官方 Anthropic MCP 服务器
filesystem:
type: stdio
command: npx
args: ["-y", "@anthropic-ai/mcp-server-filesystem", "."]
github:
type: stdio
command: npx
args: ["-y", "@anthropic-ai/mcp-server-github"]
env:
GITHUB_TOKEN: ${GITHUB_TOKEN}
sqlite:
type: stdio
command: npx
args: ["-y", "@anthropic-ai/mcp-server-sqlite", "./data.db"]
# 社区 MCP 服务器
brave-search:
type: stdio
command: npx
args: ["-y", "@anthropic-ai/mcp-server-brave-search"]
env:
BRAVE_API_KEY: ${BRAVE_API_KEY}MCP 工具会以 mcp_<server>_<tool> 的命名格式出现在 Agent 的工具列表中。
LSP (Language Server Protocol)
LSP 提供代码智能功能,如悬停提示、跳转定义和查找引用。
安装
为你的语言安装语言服务器:
# TypeScript/JavaScript
npm install -g typescript-language-server typescript
# Python
pip install python-lsp-server
# Go
go install golang.org/x/tools/gopls@latest
# Rust
rustup component add rust-analyzer在 .squadron.yml 中配置:
lsp:
typescript:
command: typescript-language-server
args: ["--stdio"]
python:
command: pylsp
go:
command: gopls
rust:
command: rust-analyzer功能
- 悬停提示: 获取类型信息和文档
- 跳转定义: 跳转到符号定义
- 查找引用: 查找符号的所有使用位置
- 文档符号: 列出文件中的所有符号
可用工具
Agent 可以使用 17+ 个内置工具:
文件操作
| 工具 | 说明 |
|------|------|
| read_file | 读取文件内容 (带行号) |
| write_file | 创建或覆写文件 |
| edit_file | 替换文件中的特定字符串 |
代码搜索
| 工具 | 说明 |
|------|------|
| glob | 按模式查找文件 (fast-glob) |
| grep | 搜索文件内容 (ripgrep) |
Shell & Git
| 工具 | 说明 |
|------|------|
| bash | 执行 Shell 命令 |
| git_status | 显示工作区状态 |
| git_diff | 显示差异 |
| git_log | 显示提交历史 |
| git_commit | 创建提交 |
| git_add | 暂存文件 |
| git_branch | 管理分支 |
| git_push | 推送到远程 |
| git_pull | 从远程拉取 |
其他
| 工具 | 说明 |
|------|------|
| run_tests | 自动检测并运行测试 |
| web_fetch | 获取网页并转为 Markdown |
| todo_write | 跟踪任务进度 |
| subagent | 派生子 Agent 处理子任务 |
MCP 工具
配置 MCP 服务器后,其工具以 mcp_<server>_<tool> 的命名格式可用。
架构
squadron-cli/
├── src/
│ ├── cli.ts # CLI 入口 (Commander.js)
│ ├── providers/
│ │ ├── index.ts # 多 Provider 路由
│ │ ├── copilot.ts # GitHub Copilot API
│ │ ├── anthropic.ts # Anthropic Claude API
│ │ └── ollama.ts # Ollama + OpenAI 兼容
│ ├── agents/
│ │ └── orchestrator.ts # Agent 执行引擎
│ ├── tools/
│ │ └── index.ts # 工具定义 (17+ 工具)
│ ├── mcp/
│ │ └── client.ts # MCP 协议客户端
│ ├── lsp/
│ │ └── client.ts # LSP 协议客户端
│ ├── ui/
│ │ ├── InkChat.tsx # 主聊天界面 (Ink/React)
│ │ ├── ParallelChat.tsx # 多 Agent 视图
│ │ ├── theme.ts # UI 主题
│ │ └── components.tsx # 可复用 UI 组件
│ └── utils/
│ ├── config.ts # YAML 配置
│ ├── permissions.ts # 工具权限系统
│ ├── persona.ts # AI 人格
│ ├── fileIndex.ts # 文件索引 & @mentions
│ ├── session.ts # 会话管理
│ └── markdown.ts # Markdown 渲染
├── CLAUDE.md # 开发指南
└── docs/ # 文档技术栈
| 库 | 用途 | |---|------| | Ink | 终端 UI (React) | | simple-git | Git 操作 | | @vscode/ripgrep | 快速代码搜索 | | eventsource-parser | SSE 流式处理 | | turndown | HTML 转 Markdown | | fast-glob | 文件模式匹配 | | yaml | YAML 配置 | | @anthropic-ai/sdk | Anthropic API | | better-sqlite3 | 会话持久化 | | ignore | Gitignore 解析 |
开发
# 克隆仓库
git clone https://github.com/JingYeoh/squadron.git
cd squadron
# 安装依赖
npm install
# 构建
npm run build
# 运行测试
npm test
# 本地运行
npm start
# 全局链接用于开发
npm link
squadron贡献
欢迎贡献!请先阅读我们的贡献指南。
- Fork 仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
许可证
MIT © Squadron CLI Contributors
致谢
- 灵感来自 Claude Code 和 Crush
- 由 GitHub Copilot、Anthropic Claude 和 Ollama 驱动
