什么是 Shim?
Shim 是一款面向终端用户的小型、本地优先 AI 代理工具。它提供了一个通用接口,用于连接受支持的模型 API、Agent Skills 和 Model Context Protocol 服务器,无需桌面应用、后台守护进程、数据库、Docker、Node.js 或 Python。
Shim 以静态二进制文件形式分发,使用普通 JSON 进行配置,并使用仅追加的 JSONL 文件保存会话。API 密钥从环境变量读取,而不会写入 Shim 的配置。
Shim 是代理工具,而不是推理引擎。本地模型权重必须通过 Ollama、LM Studio、llama.cpp 或其他兼容服务等推理服务器运行。托管模型必须通过受支持的 HTTP API 提供。
主要功能
- 对话式与显式控制:使用自然语言输入管理请求,或使用完整的可脚本化 CLI。
- 本地命令路由:可选的本地小型模型能够将管理请求转换为允许使用的 Shim 命令。
- 多个模型提供商:Shim 支持兼容 OpenAI 的 API、Anthropic Messages、本地提供商预设和自定义端点。
- Agent Skills:Shim 会发现
SKILL.md文件,并仅在需要时加载其中的完整指令。 - MCP 集成:连接 stdio 或 Streamable HTTP MCP 服务器,并向代理提供其工具。
- 权限控制:可选择只读、需要确认或自动执行。
- 可移植状态:配置和会话使用普通 JSON 与 JSONL 文件。
- 无遥测:网络活动仅限于明确发起的模型调用、技能下载、本地发现以及已配置的 MCP 服务器。
安装 Shim
选项 1:下载发行版
从 Shim 发行版页面下载适用于 Windows、macOS 或 Linux 的静态二进制文件。将可执行文件放入系统 PATH,然后初始化 Shim:
shim setup
shim在 PowerShell 中直接从当前目录运行下载的可执行文件时,请使用 .\shim.exe。
选项 2:使用 Go 安装
如果已安装 Go 1.25 或更高版本,可使用以下命令安装 Shim:
go install github.com/Balanov/shim/cmd/shim@v0.1.0
shim setup选项 3:从源代码构建
克隆代码仓库,运行测试并构建二进制文件:
git clone https://github.com/Balanov/shim.git
cd shim
go test ./...
go build -trimpath -ldflags="-s -w" -o shim ./cmd/shim
./shim setup代码仓库还包含适用于 Windows 的 scripts/build.ps1 和适用于 Unix 系统的 scripts/build.sh。
连接模型
发现本地模型服务器
如果 Ollama、LM Studio、llama.cpp 或其他兼容的本地服务器已经在运行,可让 Shim 发现并配置可用模型:
shim model discover --addShim 不包含模型权重,也不会静默下载模型。运行本地模型的工作仍由模型服务器负责。
添加托管提供商
Shim 为 OpenAI、OpenRouter、Anthropic、Gemini、GitHub Models、Hugging Face 以及多个本地提供商提供预设。在添加模型之前,请先在环境中设置提供商凭据。
例如,PowerShell 用户可以这样配置 OpenRouter:
$env:OPENROUTER_API_KEY = "..."
shim model add openrouter your/model --name main --use
shim model test main其他凭据变量包括 OPENAI_API_KEY、ANTHROPIC_API_KEY、GEMINI_API_KEY、GITHUB_TOKEN 和 HF_TOKEN。对于持久化凭据,请使用操作系统或 Shell 的标准密钥管理机制。不要将 API 密钥放入 Shim 的项目配置中。
添加托管模型的示例包括:
shim model add openrouter anthropic/claude-sonnet-4.5 --name claude --use
shim model add openai gpt-5 --name gpt --use
shim model add huggingface org/model --name hf --use添加自定义端点
对于任何受支持的兼容 OpenAI 的端点,请提供其基础 URL 和模型标识符:
shim model add custom my-model --name mine \
--base-url http://127.0.0.1:8000/v1 --use自定义提供商可以使用兼容 OpenAI 或 Anthropic 的适配器。自定义服务的凭据可选,并且可以配置。
运行第一个代理任务
执行一次性运行
检查代码仓库最安全的方式是执行只读运行:
shim run --read-only "explain this repository"对于需要编辑文件并执行验证命令的任务,请使用 --yes 批准本次运行中的操作,并使用 --verbose 获取更多输出:
shim run --yes --verbose "fix the tests and verify the result"仅当你信任工作区、模型和请求的任务时,才使用 --yes。
启动交互式终端
不带子命令运行 Shim,即可启动交互式会话:
shim然后可以输入如下代理请求:
fix the failing tests in this repository运行 shim help 可查看完整的命令列表。
使用自然语言控制 Shim
Shim 能识别用于常见英语和俄语管理操作的确定性离线短语。对于其他语言或更灵活的解释,请将模型配置为命令路由器:
shim router use ollama/qwen3:4b路由器接收非命令式的聊天文本,并判断其代表配置请求还是普通代理任务。当它提出会修改状态的命令时,Shim 会在执行前请求确认。
如果路由过程必须保留在本机,请使用回环模型端点。路由器只负责管理命令解释;选定的主模型则使用其支持的语言处理普通对话。
添加代理技能
Shim 会在配置文件旁的全局 skills/ 目录,以及工作区目录 .shim/skills/、.agents/skills/ 和 .claude/skills/ 中发现 SKILL.md 文件。
系统提示词最初只会加入技能名称和描述。完整指令会通过 load_skill 按需加载,从而减少不必要的提示词内容。
可从仓库引用、GitHub URL 或本地路径添加技能:
shim skill add owner/repository
shim skill add https://github.com/owner/repository
shim skill add ./local/skill-or-collection使用以下命令检查和管理已安装的技能:
shim skill list
shim skill show name
shim skill remove name技能包含不受信任的指令。使用前请先检查,尤其是当它们要求执行 shell 命令或访问网络时。
连接 MCP 服务器
添加 Stdio 服务器
以下示例会为当前目录注册 MCP 文件系统服务器,列出其工具,并直接调用其中一个工具:
shim mcp add filesystem npx -y @modelcontextprotocol/server-filesystem .
shim mcp tools filesystem
shim mcp call filesystem list_allowed_directories '{}'添加可流式传输的 HTTP 服务器
提供名称和 URL,即可注册远程可流式传输 HTTP 端点:
shim mcp add internal https://mcp.example.com/mcp使用以下命令列出或移除已配置的服务器:
shim mcp list
shim mcp remove filesystemMCP 工具会以类似 mcp_filesystem_list_allowed_directories 的名称公开。在默认权限模式下,调用 MCP 需要确认。
可以通过 Shim 的 JSON 配置添加 HTTP 标头和 stdio 环境变量。值支持 ${ENV_VAR} 展开,因此可以将密钥保留在环境变量中,而不是配置文件内。
选择权限模式
Shim 默认使用 ask 模式。读取、列出和搜索工作区文件均获允许,而文件写入、编辑、shell 命令和 MCP 调用需要确认。
使用以下命令选择全局权限策略:
shim permissions read-only
shim permissions ask
shim permissions auto- read-only:禁用写入、shell 命令和 MCP 调用。
- ask:对具有重要影响的操作请求确认。
- auto:允许代理执行操作而不弹出确认提示。
对于临时更改,建议使用 shim run --read-only 或 shim run --yes,而不是修改全局默认设置。
Shim 不是操作系统级沙箱。Shell 命令和 MCP 服务器会使用你用户账户的权限运行。对于不受信任的工作负载,请使用容器、虚拟机或操作系统沙箱。
Shim 的文件工具会拒绝从工作区进行的词法路径遍历和符号链接逃逸,但这些检查无法限制恶意进程。请将模型输出、仓库内容、技能和 MCP 响应视为不受信任的数据。
管理会话和配置
检查会话、启动全新会话,或继续之前的会话:
shim session list
shim session new
shim run --resume SESSION_ID "continue"排查问题时,可使用诊断和配置命令:
shim status
shim doctor
shim config path
shim config show主配置文件位于操作系统用户配置位置下的 shim/config.json。可以使用 SHIM_CONFIG 环境变量或 --config 选项覆盖该路径。会话记录以仅追加的 JSONL 文件形式存储在配置文件旁。
高级提示
- 以只读模式启动。 在允许编辑或执行命令前,使用
--read-only分析仓库。 - 测试模型配置。 添加提供商后,运行
shim model test NAME验证连接和凭据。 - 保持路由在本地。 当自然语言命令分类必须保留在你的计算机上时,将回环模型指定为路由器。
- 使用环境变量展开处理 MCP 密钥。 在配置中引用
${ENV_VAR},而不是直接存储密钥值。 - 优先使用单次运行权限。 对单个任务使用
--read-only和--yes,不要让全局策略一直处于auto。 - 检查第三方指令。 检查下载的技能,并在授予 shell、文件系统或网络访问权限前考虑 MCP 服务器的行为。
- 先运行诊断。
shim status和shim doctor等命令可以帮助在代理运行前发现配置问题。
结语
Shim 提供了一个紧凑的终端层,用于连接受支持的模型 API、代理技能和 MCP 服务器。其静态二进制文件、纯文件配置、基于环境的凭据以及明确的权限模式,适合希望使用轻量且可检查的 AI 代理工作流的用户。请从只读任务开始,验证每个提供商或工具,仅在必要时授予更广泛的权限。
