mcpField
O
Otter Bridge

Otter Bridge

本地服务
github.com/typangaa开发工具34 周前更新

关于 Otter Bridge

输入描述与 README 不一致:README 描述的是 weir,一个用于受限 CLI Agent Worker 的任务运行器和 GPU 时隙调度器,而非 Otter Bridge。它通过独立 Git worktree、运行期限、隔离检查和 JSON 记录管理任务,不使用 MCP。

主要功能

  1. 01为任务创建独立 Git worktree
  2. 02独占 GPU 时隙租约
  3. 03设置硬性运行期限
  4. 04在沙箱中运行验证检查
  5. 05以 JSON 记录任务结果

适用场景

  1. 01将有界编码任务交给较低成本 Worker
  2. 02在多个 Worker 间分配 GPU 时隙
  3. 03隔离运行代码检查并审阅补丁

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

weir

用于受限 CLI Agent 工作进程的任务运行器和 GPU 插槽调度器。一个静态二进制文件,无守护进程。

编码 Agent(例如 Claude Code 子 Agent)会将一个有明确边界的任务交给成本更低的工作进程。weir 会为该任务创建一个全新的 git 工作树、分配一个 GPU 插槽的租约、设置硬性截止时间、运行受限验证检查,并生成一条 JSON 记录,然后便退出。调用方负责检查补丁并提交。

  • 无 HTTP、无 MCP、无服务、无 API 密钥。工作进程自行管理身份验证。
  • weir 只会执行 pi-worker、agy-worker、agent-jail 和 git。
  • weir 从不提交、合并或推送。
  • 每次启动时,stdin 均为 null,提示词管道除外。

设计:DESIGN.md。决策记录:docs/design-v1.md。 历史记录:CHANGELOG.md。

安装

cargo install --path . --root ~/.local          # installs ~/.local/bin/weir

或者从 GitHub 发布页面下载 weir-<version>-x86_64-unknown-linux-gnu.tar.gz,验证旁边的 .sha256,并将 weir 放到 PATH 中。

运行时要求:Linux、git、你配置的工作进程包装器(PATH 中的 pi-worker、agy-worker),以及用于检查的 agent-jail(带有 bwrap)。

快速开始

mkdir -p ~/.config/weir
cp examples/weir.v2.example.toml ~/.config/weir/weir.toml   # edit paths and checks
weir validate --deep          # wrappers, bwrap, agent-jail WT_ROOTS, state_dir
weir status
weir task run --repo ~/code/myrepo --base main --worker pi \
  --prompt-file notes.md --check web-typecheck --json

配置查找顺序:--config > $WEIR_CONFIG > $XDG_CONFIG_HOME/weir/weir.toml > ~/.config/weir/weir.toml。系统会刻意忽略 ./weir.toml。文件必须包含 version = 2;weir schema 会输出其 JSON Schema。

命令

所有命令均接受 --json、-c/--config、--log-level 和 --log-format。

task
# One worker, two checks, keep the worktree for review (default cleanup=never)
weir task run --repo ~/code/myrepo --base main --worker pi --replica auto \
  --prompt-file notes.md --check web-typecheck --check web-lint --json

# Walk an escalation ladder: pi, then cloud models, on timeout/empty/quota
weir task run --repo ~/code/myrepo --ladder default --prompt-stdin --json < notes.md

weir task list --since 24h
weir task show 20261001-fix-tones-3fa2            # ledger record
weir task show 20261001-fix-tones-3fa2 --patch    # the diff
weir task clean --merged                          # or: <ID>, --older-than 7d

每次运行都会在 paths.wt_roots 中的某个路径下创建 wt/<id>,运行包装器,捕获 patch.diff,运行受限的 [check.*] 条目,向 <state_dir>/ledger.jsonl 追加一行 weir.task/1,并通过 --json 输出该行。--cleanup never|on-success|always 控制工作树的移除。

lease
# Run a wrapper under an exclusive slot; {replica} is filled with the winner
weir lease run --slot gpu-a=a --slot gpu-b=b --wait-timeout 600 -- \
  pi-worker -b {replica} /wt/notes /tmp/prompt.md
weir lease status --json     # {"slots":[...],"cooldowns":{"agy":{"<model>":<unix>}}}

租约使用 flock 文件,因此持有者崩溃后,其插槽会自动释放。--affinity KEY 会优先选择上次为该键提供服务的插槽(热前缀缓存)。lease 不读取配置;只接受 pi-worker 和 agy-worker。

worker
weir worker run --worker pi --replica a /wt/notes /tmp/prompt.md

在独立进程组中运行一个包装器,并限制输出量和设置硬性截止时间。不使用租约、工作树或检查。

validate、status、schema、config
weir validate [--deep]    # exit 0 valid, 1 invalid
weir status               # workers, slots, ladders, checks, active agy cooldowns
weir schema               # JSON Schema of the v2 config
weir config path          # resolved config file
weir version

退出代码

Code含义
0成功(task:工作进程成功,且所有检查均通过)
1配置或运行时错误
2用法错误
3工作进程输出为空
5Jail 拒绝
6工作进程操作被拒绝
7配额耗尽(梯级也已耗尽)
10工作进程成功,但有检查失败
124超时
75lease run:在 --wait-timeout 结束前所有插槽一直处于忙碌状态
126 / 127lease run:无法启动工作进程 / 未找到工作进程

其他情况下,lease run 会返回子进程自身的退出代码。调用脚本无需解析 JSON,即可根据这些代码进行分支处理。

包装器约定

weir 按照 <worker>-worker [-b REPLICA | -m MODEL] -t <secs> <WORKDIR> <PROMPT_FILE> 的形式驱动包装器,并期望:

Wrapper exit含义weir 类型
0成功ok
124包装器超时timeout
3输出为空,或 stderr 包含 quota_pattern 时表示配额耗尽empty / quota
6操作被拒绝denied
5Jail 拒绝jail_refused
2用法错误usage
其他失败error
  • pi-worker:本地 llama.cpp 工作进程,使用 -b a|b 固定;插槽为 gpu-a/gpu-b。
  • agy-worker:云端工作进程,通过 -m 选择模型;配额耗尽时,会将针对该模型的冷却时间写入 <state_dir>/cooldown.json。
  • agent-jail:沙箱(bubblewrap),用于将工作进程及每项检查限制在 WT_ROOTS 下的单个工作树中。weir 从不在该范围之外运行工作进程代码。 weir validate --deep 会验证 paths.wt_roots 是否与之匹配。

梯级仅在出现 timeout、empty 或 quota 时前进,每个步骤都在全新的工作树中执行。出现 denied、jail_refused 或检查失败时,梯级不会前进。

开发

export CARGO_TARGET_DIR=$HOME/.cache/weir-target
cargo fmt --all --check
cargo clippy --all-targets --locked -- -D warnings
cargo test --all-targets --locked
cargo build --release --locked

许可证

Apache-2.0。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。