内容
<h1 align="center">⚡ Barq</h1>
<p align="center">
<strong>AI-native macOS 终端。原生 Swift。零延迟。为代理而建。</strong>
</p>
<p align="center">
<em>برق — "闪电",以及电报的旧阿拉伯语:<br>命令通过电线传递到远处的机器。这就是 Barq 所做的,带有 AI 操作员。</em>
</p>
---
Barq 是一个现代化的终端模拟器和连接管理器,适用于 macOS,使用 **纯 Swift** 编写(SwiftUI + [SwiftTerm](https://github.com/migueldeicaza/SwiftTerm))。没有 Electron,没有网页视图,没有延迟。
它围绕三个理念构建 AI-first:
1. **代理也是用户。** Barq 配备了 MCP 服务器 - 任何 AI 代理(Claude Desktop,Claude Code,任何 MCP 客户端)都可以发现您的主机,打开会话,运行命令和传输文件,通过每个配置文件权限芯片进行控制。
2. **上下文保险库。** 一个系统范围的存储库,用于存储构成您工作上下文的变量 - 设备 IPs,端点,令牌,部署密钥。值存储在 macOS 钥匙串中。代理可以 *发现* 每个变量,但他们可以 *读取* 什么由您决定,按变量:**打开**,**询问我**,或 **秘密** - 其中秘密 *可用* 在命令中(`${BARQ:DEPLOY_KEY}`)但从不以明文显示。每个代理访问都会被审计。
3. **本地优先 AI。** 默认情况下,内置助手在 **Ollama** 上运行 - 私有,免费,在您的机器上。插入一个 **OpenRouter** 密钥以使用前沿模型。⌘K 将纯英文转换为命令;AI 面板查看您的会话并解释失败原因。
## 功能
### 终端
- 原生 SwiftTerm 模拟器,真实颜色,清晰的 CoreGraphics 渲染
- 标签页,**分割窗格** (⌘D / ⇧⌘D),**分离窗口** (⇧⌘N)
- **标签组** - 有颜色的,可折叠的组,根据配置文件的标签自动形成;拖动标签在组之间,重新命名/重新着色,折叠
- **命令调色板** (⇧⌘P)和**全局搜索** (⇧⌘F)跨越每个会话的滚动记录
- **⌘F 查找**,中键粘贴,标签重命名,实时主题
- **广播输入** - 输入一次,发送到标签页中的每个窗格
- **会话记录** 到 asciinema v2 `.cast`
- 6 种内置主题(Catppuccin Mocha/Latte,Dracula,Nord,Tokyo Night,Solarized Dark)
### 连接
- **SSH** - 代理/密码/身份文件/粘贴密钥身份验证(浏览选择密钥),代理转发,自定义 `-o` 选项,跳转主机(ProxyJump),**Cloudflare Access**,端口转发(-L/-R/-D SOCKS5),保持活动,旧式 SCP 模式适用于 BusyBox/dropbear 设备
- **快速连接** (⇧⌘K)适用于临时 `user@host:port`,以及字体缩放(⌘+/⌘-/⌘0)
- **串行** - 原始 termios,所有波特率,数据/停止位,奇偶校验
- **Telnet** - 内置客户端,带有 IAC 协商(不需要系统 telnet)
- **本地 shell** 带有 cwd 跟踪;**SFTP** 会话标签页
- **Chrome SOCKS 启动器** - 打开一个代理的 Chrome,带有包含/排除主机过滤
- **拖放 SCP 上传** - 将文件拖放到 SSH 终端
- 配置文件带有标签,侧边栏分组,搜索,自定义操作;JSON 和 `~/.ssh/config` 导入/导出
- **会话恢复** 在重启时; **`barq://` URL 方案** 和 Finder "在 Barq 中打开文件夹"
- 密码和密钥从不以明文形式触及磁盘 - 所有内容都由 Keychain 支持
### AI
- **⌘K 撰写** - 描述您想要的内容;获取命令;运行或插入它
- **AI 面板** (⇧⌘A)- 与完整的会话上下文聊天;建议的命令是可单击运行的
- **⌘E** - 解释最后一个输出/错误
- Ollama 自动检测,或 OpenRouter 带有任意模型 ID
### MCP - 17 种代理工具
`list_profiles` · `add_profile` · `remove_profile` · `connect` · `list_sessions` · `get_status` · `run_command` · `run_on_tag` · `send_input` · `read_output` · `disconnect` · `list_serial_ports` · `upload_file` · `download_file` · `vault_list` · `vault_get` · `vault_set`
安全模型:
- 代理只能连接到您开启了 **AI 芯片** 的配置文件
- 代理创建的配置文件一开始 AI 访问权限 **关闭**
- 保险库读取遵循每个变量的策略;**秘密** 值在服务器端插入命令中,从不返回给代理
- **防护栏**:破坏性命令(rm -rf,mkfs,强制推送,DB 删除,管道到 shell …)需要本地批准提示
- **`run_on_tag`**:跨越每个带有标签的 AI 允许的主机的舰队操作
- 保险库窗口中每个代理访问的完整审计日志
## 安装
**Homebrew(推荐 - 通过 `brew upgrade` 处理更新):**
```bash
brew tap awaistechnologist/barq
brew install --cask barq-term # 添加 --no-quarantine 以跳过 Gatekeeper 提示
```
**直接下载:** 从
[Releases](https://github.com/awaistechnologist/barq-term/releases) 获取最新的 `Barq-<version>.dmg`,打开它,
并将 Barq 拖到应用程序。Barq 在应用程序中通知您有新版本时。
> Barq 目前是临时签名的(未 notarized)。在第一次启动时,macOS 可能会警告:
> **右键 Barq → 打开**,或 **系统设置 → 隐私和安全 → 打开任意方式**。
## 从源代码构建
```bash
git clone https://github.com/awaistechnologist/barq-term && cd barq-term
swift run Barq # 运行它
./scripts/make-app.sh 0.7.1 && ./scripts/make-dmg.sh 0.7.1 # 或构建 DMG
```
注册 MCP 服务器(设置 → MCP → 一键),或手动:
```bash
claude mcp add barq /path/to/Barq.app/Contents/MacOS/barq-mcp
```
对于本地 AI:安装 [Ollama](https://ollama.com),`ollama pull llama3.2`,完成 - Barq 自动找到它。
## 示例:代理使用保险库
```
您(对 Claude): "检查 staging 服务器的磁盘使用情况"
Claude → vault_list # 发现 STAGING_IP("staging 服务器地址",打开)
Claude → connect(profile_name: "staging")
Claude → run_command(session_id: "1",
command: "df -h ${BARQ:STAGING_IP}...") # Barq 扩展变量
```
如果变量是策略 `approval`,您将在读取前获得本地提示;如果 `secret`,代理可以使用它但永远不会看到它。
## 开发
TDD 是代码风格 - 逻辑层完全覆盖,套件在 ~2s 内运行:
```bash
./scripts/test.sh # 完整套件(184 测试 / 32 套件)
./scripts/test.sh --filter VaultStore # 一个套件
swift build # 应用程序 + barq-mcp
```
需求:macOS 13+,Swift 6 工具链(命令行工具足够 - 不需要 Xcode)。
## 路线图
最近发布:Barq Home + 全能条,在应用内模型顾问 + 一键 Ollama,DMG + Homebrew 软件包 + 应用内更新通知器(0.5–0.7);标签组(0.3)。
接下来:
- [ ] 开发者 ID 签名 + notarization(删除 Gatekeeper 提示;启用 Sparkle 自我更新)
- [ ] 基于块的输出(AI 可寻址的命令/输出单元)
- [ ] SFTP 双窗格浏览器(超出交互式 SFTP 标签页)
- [ ] 运行手册:记录会话 → 参数化,可重放的过程
- [ ] 只读代理模式和每个配置文件的命令允许列表
## 许可证
[PolyForm Noncommercial 1.0.0](LICENSE) - 个人和非商业用途免费。用于商业用途时,请通过存储库联系我们。"Barq" 和其徽标是作者的商标。