mytuo1/supergrokie
GitHub: mytuo1/supergrokie
一款支持多供应商接入的终端 AI 代码助手,帮助开发者在命令行中灵活调用各类大模型完成编程、文件操作和代码审查等任务。
Stars: 19 | Forks: 4
# Super Grokie — 多提供商 AI 代码助手
Super Grokie 是一个基于终端的 AI 代码助手,可与**任何**具备推理能力的 API 配合使用:OpenAI、xAI (Grok)、Anthropic、本地模型(Ollama、LM Studio、vLLM),以及任何 OpenAI 兼容的 endpoint。
它提供了一个交互式 REPL,支持工具使用(bash、文件读/写/编辑、glob、grep、网络搜索、MCP)、会话管理、成本跟踪和多 Agent 工作流 —— 所有这些都由一个使用 **Bun** 构建的 `main.tsx` 入口驱动。
## 快速开始
```
# 1. 安装 Bun(如果尚未安装)
curl -fsSL https://bun.sh/install | bash
# 2. Clone & install
git clone https://github.com/mytuo1/supergrokie.git
cd supergrokie
bun install
```
或者根据您的平台运行 `./install.sh` 或 `./install.cmd`。
```
# 3. Configure your provider
# (首次运行时创建 ~/.supergrok/providers.json)
export SUPERGROK_PROVIDER=openai
export OPENAI_API_KEY=sk-...
# 4. Run
bun run dev # hot-reload dev mode
# — 或 —
bun run build # one-shot production build
bun run start # run the production build
```
## 支持的提供商
| 提供商 | 密钥环境变量 | 默认 base URL | 示例模型 |
|----------|----------------|------------------|----------------|
| **OpenAI** | `OPENAI_API_KEY` | `https://api.openai.com/v1` | gpt-5.4-nano, gpt-5.4-mini, gpt-4o |
| **xAI** | `XAI_API_KEY` | `https://api.x.ai/v1` | grok-4.20, grok-3, grok-3-mini |
| **Anthropic** | `ANTHROPIC_API_KEY` | `https://api.anthropic.com/v1` | claude-sonnet-4-5-20250929, claude-opus-4-6 |
| **本地** | *(不需要)* | `http://localhost:11434/v1` | llama3, deepseek-r1, qwen3 |
| **任何 OpenAI 兼容** | `SUPERGROK_API_KEY` | 通过 `SUPERGROK_BASE_URL` 设置 | 您的 endpoint 提供的任何模型 |
## 配置
SuperGrok 从 `~/.supergrok/providers.json` 读取其配置。
首次启动时会创建一个默认模板:
```
{
"activeProvider": "openai",
"providers": {
"openai": {
"apiKey": "sk-...",
"baseURL": "https://api.openai.com/v1",
"defaultModel": "gpt-5.4-mini",
"models": [
{ "name": "gpt-5.4-nano", "label": "GPT-5.4 Nano", "description": "Fast and lightweight" },
{ "name": "gpt-5.4-mini", "label": "GPT-5.4 Mini", "description": "Balanced performance" }
]
},
"xai": {
"apiKey": "xai-...",
"baseURL": "https://api.x.ai/v1",
"defaultModel": "grok-4.20",
"models": [
{ "name": "grok-4.20", "label": "Grok 4.20", "description": "Latest Grok model" }
]
},
"anthropic": {
"apiKey": "sk-ant-...",
"baseURL": "https://api.anthropic.com/v1",
"defaultModel": "claude-sonnet-4-5-20250929"
},
"local": {
"baseURL": "http://localhost:11434/v1",
"defaultModel": "llama3",
"models": [
{ "name": "llama3", "label": "LLaMA 3", "description": "Meta LLaMA 3" }
]
}
}
}
```
### 环境变量覆盖
| 变量 | 用途 |
|----------|---------|
| `SUPERGROK_PROVIDER` | 在运行时覆盖当前活动的提供商 |
| `SUPERGROK_API_KEY` | 覆盖当前活动的提供商的 API 密钥 |
| `SUPERGROK_BASE_URL` | 覆盖当前活动的提供商的 base URL |
| `SUPERGROK_MODEL` | 覆盖当前活动的提供商的默认模型 |
| `SUPERGROK_CONFIG_DIR` | 自定义配置目录(默认为 `~/.supergrok`) |
| `SUPERGROK_PROVIDERS_CONFIG` | 自定义 `providers.json` 的完整路径 |
| `OPENAI_API_KEY` | 旧版:当提供商为 `openai` 时自动使用 |
| `XAI_API_KEY` | 旧版:当提供商为 `xai` 时自动使用 |
| `ANTHROPIC_API_KEY` | 旧版:当提供商为 `anthropic` 时自动使用 |
## 功能开关
功能开关本地存储在 `~/.supergrok/features.json` 中。
通过 `SUPERGROK_FC_OVERRIDES` 环境变量(JSON 字符串)覆盖任何开关:
```
SUPERGROK_FC_OVERRIDES='{"my_feature":true}' bun run dev
```
不会联系任何外部服务(GrowthBook、Statsig 等)。
## 分析与遥测
所有分析都**仅在本地进行**。事件将被追加到:
```
~/.supergrok/analytics.log
```
这是一个 JSONL 文件(每行一个 JSON 对象),您可以随时检查、grep 或删除它。不会向 Datadog、Anthropic 或任何第三方发送任何数据。
## 架构
```
src/
├── main.tsx # CLI entry point (commander + React Ink REPL)
├── services/
│ └── api/
│ ├── providers/ # ★ Multi-provider abstraction layer
│ │ ├── types.ts # Universal types replacing @anthropic-ai/sdk
│ │ ├── provider.ts # AIProvider interface
│ │ ├── config.ts # providers.json reader
│ │ ├── registry.ts # Provider singleton registry
│ │ ├── openaiCompatible.ts # OpenAI/xAI/local adapter
│ │ └── index.ts # Barrel export
│ ├── claude.ts # Core message loop (provider-agnostic types)
│ ├── client.ts # API client factory
│ ├── errors.ts # Error classification
│ └── withRetry.ts # Retry with exponential backoff
│ └── analytics/
│ ├── growthbook.ts # Local feature flag system (no SDK)
│ ├── firstPartyEventLogger.ts # Local JSONL file logger
│ ├── datadog.ts # No-op stub
│ └── ...
├── tools/ # Tool implementations (Bash, FileRead, etc.)
├── commands/ # Slash-commands (/model, /help, /cost, etc.)
├── utils/
│ ├── auth.ts # Auth utilities (OAuth disabled, key from config)
│ ├── model/ # Model definitions & switching
│ ├── messages.ts # Message normalization
│ └── ...
└── constants/
├── system.ts # System prompt prefix
└── ...
```
## 可用命令
在 REPL 中,输入 `/` 查看所有命令。主要命令如下:
| 命令 | 描述 |
|---------|-------------|
| `/model ` | 动态切换模型 |
| `/cost` | 显示会话成本和 token 使用情况 |
| `/help` | 列出所有命令 |
| `/config` | 查看 / 编辑设置 |
| `/compact` | 压缩对话上下文 |
| `/review` | 运行代码审查 |
| `/diff` | 显示 git diff |
| `/commit` | 生成并应用一个 commit |
## 构建
```
bun run build # → dist/cli.js
```
构建使用 Bun 的打包器并加上 `--packages external` 参数,以便在运行时解析原生依赖(sharp、chokidar 等)。
## 功能状态(对比原版 Claude Code)
SuperGrok 是 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 的一个分支。
下表总结了哪些功能正常运作、哪些被有意移除以及哪些发生了变化。
### ✅ 正常运作
| 功能 | 说明 |
|---------|-------|
| 交互式 REPL (TUI) | 支持所有提供商的全屏终端 UI |
| 非交互式 / 打印模式 (`-p`) | 单次提示输出到 stdout |
| 所有内置工具 | Bash、Edit、Read、Write、Glob、Grep、WebFetch、WebSearch、Task 等 |
| MCP server 支持 | `mcp list`、`mcp add`、自定义工具 |
| 会话持久化 | `--resume`、`--continue`、`--name` |
| `/model` 选择器 | 跨提供商模型切换 |
| 成本跟踪 (`/cost`) | 每个会话的 token 使用情况 |
| 多 Agent 工作流 | Agent 工具、内置 Agent |
| 权限模式 | `acceptEdits`、`plan`、`--dangerously-skip-permissions` |
| 自定义 system prompt | `--system-prompt`、`--append-system-prompt` |
| SUPERGROKIE.md 项目指令 | 在项目根目录自动发现 |
| 调试模式 | `--debug`、`--debug-file` |
| 插件 | `plugin list`、`plugin install` |
### ❌ 已移除(有意为之)
| 功能 | 原因 |
|---------|--------|
| 通过 claude.ai 的 OAuth 登录 | 替换为来自配置 / 环境变量的 API-key 认证 |
| AWS Bedrock 提供商 | SDK 已移除 —— 如有需要,请使用带有自定义 `baseURL` 的 Anthropic 提供商 |
| GCP Vertex AI 提供商 | SDK 已移除 |
| Foundry 提供商 | SDK 已移除 |
| 订阅 / 等级检测 | 无单一供应商的订阅模式 |
| 查询前配额检查 | 每个提供商管理自己的速率限制 |
| 远程遥测(Datadog、GrowthBook) | 替换为仅限本地的分析(`~/.supergrok/analytics.log`) |
### ⚠️ 已知限制
| 领域 | 详情 |
|------|--------|
| `claude-code-guide` Agent 名称 | 内置的指南 Agent 仍然保留了旧版名称 |
| 部分内部 URL 引用 `claude.ai` | 用于 Chrome 扩展 / 远程会话的产品 URL 是残留的 |
| `--help` 输出中的 `Usage: claude` | 帮助文本中的 CLI 程序名称仍然显示上游名称 |
## 另请参阅
- [deployment.md](deployment.md) — 在 Ubuntu、macOS 和 Windows 上的分步部署
- [instructions.md](instructions.md) — 所有配置变量、值和更改详情
标签:AI编程助手, Bun, TypeScript, 多智能体, 多模型接入, 安全插件, 自动化攻击