使用说明
[!重要] 这个项目已经日落,因为大多数工具都可以作为技能文件实现,您可以将其添加到代理中。我将专注于此。新代码将位于 @zaherg/技能.
巴布
[!重要] 这个项目正在大力开发中。预计会有频繁的突破性更改、新功能和返工的内部。如果您在生产中依赖特定版本,请锁定该版本。
Bab是一个基于Bun构建的TypeScript MCP服务器。它的灵感来自 PAL MCP服务器 并专注于委托CLI插件、精简的Vercel AI SDK提供者层和可重用的MCP工具。
为什么叫“巴布”?
Bab 来源于阿拉伯语单词 باب,这意味着 door 或 gateway.
这个名字很适合这个项目,因为Bab充当MCP客户端和它们背后的系统之间的网关:
- CLI代理工具
- 人工智能提供商
- 当地项目背景
- 未来插件集成
特性
- MCP服务器通过stdio使用
@modelcontextprotocol/sdk - 具有清单发现和可选功能的代理插件系统
adapter.ts - 内置代理角色:
default,planner,codereviewer,coding - 由Vercel AI SDK支持的提供商注册表,具有每个提供商的思维模式映射
- 用于统一模型路由的ModelGateway:通过ID/别名或插件模型
pluginId/modelName - 并行执行的多模型共识、每个模型的温度和思维模式
- 通过MCP提示协议执行Slash命令(
/bab:chat,/bab:review,/bab:think等等) - 具有连续支持和20圈限制的内存对话存储
- 完整的核心和专门的工作流工具套件
- 默认情况下延迟加载工具(启动时5个工具,启动时17个工具),按需自动加载
- CLI入口点
serve,add,remove,list,config,selfupdate,以及test-plugin命令 - 插件SDK导出界面通过
@zaherg/bab/sdk - 委托环境强化:API密钥和
BAB_*内部变量永远不会泄露给子进程 - 专用错误日志位于
~/.config/bab/logs/error.log用于快速调试
安装
安装脚本(macOS/Linux)
curl -fsSL https://raw.githubusercontent.com/zaherg/bab/main/scripts/install.sh | bash
选项:
# custom install directory
curl -fsSL https://raw.githubusercontent.com/zaherg/bab/main/scripts/install.sh | bash -s -- --prefix /usr/local/bin
# skip checksum verification (not recommended)
curl -fsSL https://raw.githubusercontent.com/zaherg/bab/main/scripts/install.sh | bash -s -- --no-verify
# install the latest pre-release (beta, rc, or dated builds)
curl -fsSL https://raw.githubusercontent.com/zaherg/bab/main/scripts/install.sh | bash -s -- --prerelease
该脚本将二进制文件下载到临时目录,验证其SHA-256是否符合 checksums.sha256,删除最终安装路径上的macOS隔离xattr,然后 mv是吗 --prefix (默认值 ~/.local/bin).
二进制下载
从获取适用于您平台的最新二进制文件 发布页面:
| 平台 | 架构 | 资产 |
|---|---|---|
| macOS | 苹果硅 | bab-darwin-arm64 |
| macOS | 英特尔 | bab-darwin-x64 |
| Linux | x64 | bab-linux-x64 |
| Linux | ARM64 | bab-linux-arm64 |
chmod +x bab-*
mv bab-* /usr/local/bin/bab
在macOS上,下载的二进制文件带有
com.apple.quarantinexattr和Gatekeeper将阻止执行。通过安装脚本(剥离xatr)重新下载或运行xattr -d com.apple.quarantine /usr/local/bin/bab一次。
来源
需要 包子 1.3.9或更新版本。
git clone https://github.com/zaherg/bab.git && cd bab
bun install
bun run build:binary # compiled binary at dist/bab
自我更新
安装后,更新到最新版本:
bab selfupdate
快速开始
启动MCP服务器:
bab serve
安装第一方插件:
bab add https://github.com/zaherg/bab-plugins
# OR
bab add zaherg/bab-plugins
运行测试套件:
bun test
将Bab连接到MCP客户端
使用已安装的 bab 二进制文件作为本地stdio MCP服务器。替换 /absolute/path/to/bab 输出为:
which bab
法典
把这个加到 ~/.codex/config.toml:
[mcp_servers.bab]
command = "/absolute/path/to/bab"
args = ["serve"]
startup_timeout_sec = 300.0
tool_timeout_sec = 1200.0
然后重新启动Codex或重新加载MCP服务器。
克劳德代码
将Bab添加为用户范围的stdio MCP服务器:
claude mcp add-json --scope user bab \
'{"type":"stdio","command":"/absolute/path/to/bab","args":["serve"]}'
通过以下方式进行验证:
claude mcp get bab
GitHub Copilot 命令行界面
把这个加到 ~/.copilot/mcp-config.json:
{
"mcpServers": {
"bab": {
"type": "local",
"command": "/absolute/path/to/bab",
"args": ["serve"],
"tools": ["*"]
}
}
}
您还可以通过Copilot CLI以交互方式添加它 /mcp add.
配置
Bab创造并使用 ~/.config/bab/ 首次运行时:
~/.config/bab/envdotenv样式的环境文件~/.config/bab/plugins/委托插件,每个插件一个目录~/.config/bab/plugins/<plugin-id>/env可选的每插件env覆盖合并到全局env文件上~/.config/bab/prompts/即时覆盖或额外的即时资产
注: MCP客户端配置中设置的环境变量优先于 这
~/.config/bab/env文件。例如,如果您设置OPENAI_API_KEY两者都 MCP配置值获胜。{ "mcpServers": { "bab": { "command": "/absolute/path/to/bab", "args": ["serve"], "env": { "OPENAI_API_KEY": "sk-mcp-value" } } } }# ~/.config/bab/env OPENAI_API_KEY=sk-file-value # overridden by the MCP config above
支持的提供程序环境变量:
GOOGLE_API_KEYOPENAI_API_KEYANTHROPIC_API_KEYOPENROUTER_API_KEYCUSTOM_API_KEYCUSTOM_API_URL
环境变量
全部 BAB_* 变量在启动时通过Zod模式进行验证。无效值会产生清晰的错误消息。
| 变量 | 类型 | 描述 |
|---|---|---|
BAB_DISABLED_TOOLS |
逗号分隔 | 要排除的工具名称 tools/list 不区分大小写 |
BAB_ENABLED_TOOLS |
逗号分隔 | 如果设置,则仅注册这些工具 |
BAB_EAGER_TOOLS |
boolean | 设置为 1 在启动时注册所有工具,而不是延迟加载 |
BAB_PERSIST |
boolean | 设置为 false 禁用报表持久性(默认值: true) |
BAB_PERSIST_TOOLS |
逗号分隔 | 仅保留这些工具的报告 |
BAB_DISABLED_PERSIST_TOOLS |
逗号分隔 | 禁用这些工具的持久性 |
BAB_CLI_TIMEOUT_MS |
integer | 覆盖代理CLI超时(默认值:5分钟) |
BAB_PROVIDER_TIMEOUT_MS |
integer | 覆盖模型调用和发现的提供程序API超时(默认值:60秒) |
BAB_MAX_CONCURRENT_PROCESSES |
integer | 最大并发委托进程数(默认值:5) |
BAB_LOG_LEVEL |
string | 日志记录级别: debug, info, warn, error (默认值: info). debug 可以在MCP工具错误响应中包括堆栈轨迹;不要在不受信任的MCP客户端上启用它。 |
例子:
# ~/.config/bab/env
BAB_DISABLED_TOOLS=delegate,tracer
BAB_LOG_LEVEL=debug
或者通过您的MCP客户端配置:
{
"mcpServers": {
"bab": {
"command": "/absolute/path/to/bab",
"args": ["serve"],
"env": {
"BAB_DISABLED_TOOLS": "delegate,tracer"
}
}
}
}
日志记录
日志文件存储在 ~/.config/bab/logs/:
| 文件 | 内容 |
|---|---|
mcp.log |
服务器生命周期、工具调用、协议事件(所有级别) |
error.log |
仅警告和错误——快速调试 |
<pluginId>.log 每个插件委派 I/O(例如 copilot.log, opencode.log) |
集 BAB_LOG_LEVEL=debug 仅用于本地故障排除。调试模式将堆栈跟踪添加到MCP工具错误响应中,因此连接的MCP客户端可以看到文件路径和堆栈帧。
安全
委托子流程将收到一个经过净化的环境:
- API密钥已剥离:
ANTHROPIC_API_KEY,OPENAI_API_KEY,GOOGLE_API_KEY,GEMINI_API_KEY,OPENROUTER_API_KEY,GITHUB_TOKEN,GH_TOKEN - 内部清漆已剥离:全部
BAB_*,CLAUDE_*,以及CLAUDECODE*前缀变量 - 运行时注入变量已剥离:
LD_PRELOAD,NODE_OPTIONS,DYLD_INSERT_LIBRARIES等等。 - 堆栈复写:仅在以下情况下包含在MCP工具错误响应中
BAB_LOG_LEVEL=debug;关闭不受信任的MCP客户端的调试模式 - 工作目录:已验证位于项目根目录、主目录或tmp中
需要API密钥的插件必须在自己的密钥中声明 env 文件(~/.config/bab/plugins/<id>/env).
代理插件
每个插件都位于 ~/.config/bab/plugins/<plugin-id>/ 并被发现 manifest.yaml.
巴布保持 opencode 捆绑为内置参考插件。安装外部第一方插件:
# Install all first-party plugins (claude, codex, copilot)
bab add zaherg/bab-plugins
# List installed plugins
bab list
# Remove a specific plugin
bab remove <plugin-id>
最小清单形状:
id: echo
name: Echo Plugin
version: 1.0.0
command: echo
roles:
- default
delegate_api_version: 1
插件还可以通过以下方式为工作流工具提供自定义系统提示 tool_prompts:
tool_prompts:
codereview: prompts/codereview.txt
secaudit: prompts/secaudit.txt
当工具通过插件模型路由时,bab使用插件的提示而不是内置的默认值。看 插件创作 了解详情。
可选的 adapter.ts 文件可以实现CLI解析、验证和取消的运行时行为。没有适配器的插件仍然可以被发现,但 delegate 该工具需要一个适配器来执行它们。
内置工具
delegate通过配置的CLI插件运行提示chat,thinkdeep,codereview,planner,consensus核心工作流工具debug,analyze,tracer,refactor,testgen,docgen,secaudit,precommit,challenge专用工作流工具list_models列出配置的提供程序中可用的模型version返回Bab和运行时版本详细信息
文档
完整文档可在 zaherg.github.io/bab 或在 docs/:
项目布局
src/
config.ts # BAB_* env validation, config loading
server.ts # MCP server setup, tool registration
version.ts # Centralized version constant
bootstrap.ts # Core tool names, startup wiring
delegate/ # Plugin discovery, loading, caching, process runner
memory/ # Conversation store, report persistence
prompts/ # Built-in tool and role prompts
providers/ # Vercel AI SDK registry, model gateway
tools/ # 17 built-in tools (lazy-loaded by default)
sdk/ # Plugin author SDK (@zaherg/bab/sdk)
commands/ # CLI commands (serve, add, remove, list, selfupdate)
types/ # Shared type definitions
utils/ # Env sanitization, path containment, logging, tokens
plugins/ # Bundled plugins (opencode)
tests/ # bun:test test suite
docs/ # GitHub Pages documentation
发展
有用的命令:
bun test
bun run build
bun run build:binary
bunx tsc -p tsconfig.json --noEmit
bun run src/cli.ts serve
bun run src/cli.ts add git@github.com:zaherg/bab-plugins.git --yes
bun run src/cli.ts list
bun run src/cli.ts config
bun run src/cli.ts test-plugin ../bab-plugins/claude
回购目前使用:
- Bun用于运行时和包管理
- 带有ES模块的TypeScript
- Zod v4用于验证
- 植绒和格式化的生物特征
免责声明
看 免责声明.md.
