mcpField
W
withvibe-voter

withvibe-voter

本地服务
github.com/withvibeAI 与智能体020 周前更新

关于 withvibe-voter

withvibe-voter 是面向 WithVibe 团队的插件,可在 Agent 修改工作区前发起提案并由团队投票。它记录获批变更或失败结果。

主要功能

  1. 01发起变更提案
  2. 02等待团队决策
  3. 03记录已应用变更
  4. 04报告变更失败
  5. 05查看提案看板

适用场景

  1. 01在编辑工作区前要求团队审批
  2. 02跟踪获批变更和构建失败

MCP 相关

提供五个 MCP 工具,用于发起提案、轮询决策、记录结果、报告失败和查看提案状态。审批门禁依赖 Agent 遵循工具指示。

配置

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

暂未收录安装方式

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

代码仓库

工具

还没有获取到工具列表

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

详细介绍

Voter — 一个 WithVibe 插件

将任意 WithVibe 环境变成由团队投票决定的工作区。启用此插件后,AI 不会立即应用提示词,而是会创建一个提案供团队投票,只有获批的提案才会执行。在任意环境中启用它,该环境就会成为一个需投票通过的沙盒。

You (in chat):  "add a dark-mode toggle"
        │
        ▼
   voter_propose_change ──────►  Proposal #7 opens (10-min vote)
        │                           👍 👎  team votes in the panel
   voter_await_decision  ◄───────  APPROVED ✅  /  REJECTED ✗
        │
        ▼  (only if approved)
   agent makes the change  ──►  voter_record_change  ──►  shows up in History

它与内容无关——并不了解环境中包含什么内容。无论环境是什么(应用、文档、3D 场景、配置),启用 Voter 后,每项更改都必须先经团队审议。多个环境 = 多个相互独立的投票板。

投票门槛如何运作(以及为什么它只是一个插件)

WithVibe 会自动将已启用插件的 MCP 工具注入 Agent 的当前轮次。 Voter 利用这一点来约束提示词,无需对 WithVibe 核心进行任何更改:

  1. voter_propose_change(prompt) — 创建一个提案,并告知 Agent 暂时不要进行任何更改。
  2. voter_await_decision(proposal_id) — 长轮询投票结果。平台的 MCP 桥接层将单次工具调用限制为 60s,因此此工具会在约 45s 后返回 STILL_VOTING,Agent 只需再次调用,直到投票结束。
  3. 投票结果为 APPROVED 时,Agent 执行更改并调用 voter_record_change。结果为 REJECTED / EXPIRED 时,不进行任何更改。

与此同时,每位队友都可以在插件自己的 UI 面板中投票,与 Agent 无关。此门槛由 Agent 配合执行(通过工具说明约束),这对于轻松协作的工作流来说是恰当的权衡;以后也可以通过添加一个小型核心钩子来加固,使其无法绕过。

MCP 工具

工具用途
voter_propose_change为请求的更改创建提案。Agent 必须调用此工具,而不是直接编辑。
voter_await_decision长轮询团队的裁决结果(APPROVED / REJECTED / EXPIRED / STILL_VOTING)。
voter_record_change应用获批的更改后,记录已交付的内容。
voter_report_failure将获批的更改标记为失败(例如,构建失败)。
voter_status显示当前投票板:正在投票的提案和最近已处理的提案。

状态

插件隔离的 Postgres 架构(shared-postgres 存储)中有四张表: settings(投票时限和阈值)、proposal、vote、feed_event。

决议规则:赞成票达到阈值时提案通过,反对票达到阈值时提案失败;截止时间到达时由多数票决定(平票则过期)。默认值:600s 投票时限、赞成票阈值 1 / 反对票阈值 1——可在面板中调整。

架构

manifest.yaml ──► WithVibe spawns one container per env (scope: env)
       │
   server.js (express)
   ├── /health      platform health probe
   ├── /mcp         agent's MCP endpoint            ─► mcp.js  (the gate)
   ├── /ui          htmx voting panel               ─► ui.js
   └── /ui/version  cheap freshness check (live updates)
                │
              db.js (pg) ─► shared-postgres, per-env schema

构建

docker build -t local/voter:0.1 .

在市场发布时,此插件以多架构镜像形式发布为 ghcr.io/withvibe/voter:<version>。

在 WithVibe 中安装

  1. 工作区管理员 → 插件 → 安装插件(或在插件上架后前往市场)。
  2. 粘贴 manifest.yaml(或通过目录一键安装)。
  3. 打开任意环境 → 启用 Voter → 该环境现在就是一个需投票通过的工作区。

本地开发

docker build -t local/voter:0.1 .
docker run --rm -p 8080:8080 \
  -e DATABASE_URL="postgres://user:[email protected]:5432/withvibe_plugins" \
  -e PGSCHEMA="voter_dev" \
  local/voter:0.1
# open http://localhost:8080/ui  — two browsers = two voters

仓库结构

manifest.yaml   WithVibe plugin manifest (install input)
Dockerfile      runtime image
package.json    deps (express, pg, @modelcontextprotocol/sdk, zod)
server.js       express entry — HTTP + MCP routes + vote handling
db.js           pg pool, schema, proposal/vote/resolution helpers
mcp.js          the gate: propose / await / record MCP tools
ui.js           htmx voting panel + dark theme

许可证

Apache License 2.0。归属信息请参阅 NOTICE。

评论

支持 Markdown

第一次接触 MCP?

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

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