plwslpld-arch/vouch

GitHub: plwslpld-arch/vouch

Vouch 是一个驻留在团队聊天中的 AI 工作助手,能将自然语言任务转化为代码引用经过确定性验证的工单和草稿,杜绝 AI 幻觉。

Stars: 1 | Forks: 0

Vouch # Vouch **你的 AI 工作分身,驻留在你的团队聊天中。** Vouch 会监视你的 IM 群组(飞书 · 钉钉 · 企业微信),提取出分配给你的任务,将其转化为已完成的工作或随时可发送的草稿,并 以**你的**口吻说话 —— 未经你点头,任何内容都不会发送出去。当涉及代码任务时,它交给你的 每一个文件、符号和代码行都会**根据你的真实 repo 进行验证**,因此它绝不会引用不 存在的东西。自带密钥 (BYO-key)、只读、人类在环 (human-in-the-loop)。 [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](./LICENSE) [![Node](https://img.shields.io/badge/node-%E2%89%A524-brightgreen.svg)](https://nodejs.org) [![npm](https://img.shields.io/npm/v/vouch.svg)](https://www.npmjs.com/package/vouch) [![Runtime deps](https://img.shields.io/badge/core%20runtime%20deps-0-brightgreen.svg)](./packages/core) English · [简体中文](./README.zh-CN.md)
## 它能为你做什么 它驻留在你的团队聊天中,帮你处理繁杂的日常工作。你始终保持掌控;它负责具体执行。 - **捕捉分配给你的任务。** 有人在群里说了一句“嘿,能不能……”,它就会捕捉到并将其放入确认队列中。它从不擅自行动。 - **真正去执行任务。** 任务会变成实际的东西——一个检查过 repo 引用的代码工单,或者是需求文档、设计、API 文档或测试计划。 - **以你的口吻回复。** 它会用各种语气起草内容(从 正经 到 含蓄阴阳),这些语气学习自你实际的书写方式和你已经做出的决定。你进行微调、批准,然后它就会以你的名义发出去。 - **逐渐了解你。** 你用得越多,它就越能理解你的偏好、立场和口吻。 - **发送摘要给你。** 定时总结已完成的事项和待办的事项。 - **监视你的机器(如果你允许的话)。** 一个可选的本地 daemon 会查看你和你的 coding agent 实际交付了什么,从而让工单自动闭环。 除非你发话,否则不会有任何东西离开本地——没有消耗密钥,没有发送消息,没有推送分支。 ## 快速开始 — 30秒演示(无需 API key) ``` # 检查工单(或任何 {path,symbol,line} 列表)中的代码引用是否与真实 repo 相符。 npx vouch verify ./work-order.md --repo . # → ✓ src/upload.ts#handleUpload:42 ✓ src/limits.ts#RateLimiter:9 # ✗ src/upload.ts#throttle — symbol 未在此处 DEFINED(call site 或名称错误) # ± src/queue.ts#drain:80 — 错误行 — 真实 definition 位于第 58 行 # 3/5 个引用已验证 (60%) ← 以非零状态退出,因此在 CI 中会导致 hallucinated docs 失败 ``` `verify` 和 `scope` **不需要密钥** —— 它们是确定性的。`plan` 使用**你自己**的 LLM endpoint: ``` # 确定性检索预览:哪些 files/symbols/callers 可以为分析提供 ground? npx vouch scope "add a concurrency cap to the uploader" --repo . # 完整工单:retrieve → synthesize → verify → patch。自带 OpenAI 兼容 key。 export VOUCH_BASE_URL=https://your-endpoint/v1 VOUCH_API_KEY=sk-... VOUCH_MODEL=your-model npx vouch plan "add a concurrency cap to the uploader" --repo . ``` 需要 Node ≥24 和 `git`。如果存在 `ripgrep` 则会使用它;否则 Vouch 会回退到 `git grep`,然后再回退到纯 Node 扫描——它在任何地方都能运行。 ## 引擎工作原理(快速*且*有据可查) 1. **确定性检索** (`scope`,无需 LLM):在中/英文同义词之间扩展任务概念 → 搜索 repo → 提取**整个函数体** + **跨文件调用点** + **反证**(“搜索了整个 repo,这个机制还不存在 → 必须构建”)。 2. **单次合成**:对*你的*模型进行一次调用即可生成工单(SPEC/BRIEF/STEPS),并进行了边界限制,因此即使在缓慢的推理模型上也能保持快速。 3. **确定性验证 → 修补**:每个引用的 `{path, symbol, line}` 都会与真实代码进行核对;只有失败的部分会被重新获取并进行一次纠正性处理。最坏情况下 ≤ 2 次模型调用。 4. **引用或弃权**:仍然无法验证的引用会*在*文档内标出,绝不偷偷混入交付物中。 ## 完整 agent(可选,自托管) 除了 CLI 之外,Vouch 还是一个完整的、自托管的、单操作员 agent,并带有 Web 面板: - **工单** — dry-run → 详情(引用检查 / token / 延迟)→ 优化 → 导出 / 发送。 - **确认队列** — 从你的团队聊天中捕捉到的任务在进行任何分析之前,会排队等待你的确认。 - **回复** — 以*你的*口吻起草各种语气的回复;你进行编辑/批准;编辑内容会作为口吻学习的反馈。 - **记忆** — 学习到的偏好(包含来源)、立场/标准的提炼。 - **总结** — 过去 7/30 天:工单、验证得分、花费/token/延迟。 - **执行器(可选启用,高级功能)** — 一个网络隔离的沙箱会在任何经人工批准的 push 之前验证 diff。 每一个对外的操作——消耗你的密钥、发送一条消息、push 一个分支——都需要明确的点击确认。聊天平台是一个**可插拔的 provider**: | Provider | "以你的名义发送" | 备注 | |---|---|---| | `local` (默认) | 仅生成 | 无外部服务;你输入任务并复制草稿出来 | | `feishu` (Lark) | **以你本人身份** | 基于用户身份 —— 回复真正由你本人署名发送 | | `dingtalk` (钉钉) | 代理发送 | OAuth 绑定你的账户;该平台以应用/机器人身份发送,因此会标记为*代你发* | | `wecom` (企业微信) | 代理发送 | 同上 —— OAuth 身份验证,应用身份发送,清晰标注代你发送 | **现实的局限:** 只有飞书支持真正的以用户身份发送。在钉钉/企业微信上,即使用户拥有 OAuth token,这些平台也不允许应用*以*任意员工的名义发布内容——因此 Vouch 提供**代理发送**(明确标注),绝不会伪装成你本人发送。添加一个平台只需在 `IMProvider` 接口后挂载一个 adapter;引擎本身不会改变。 ``` git clone vouch && cd vouch npm install npm run build # compiles packages/* to dist/ cd web && npm install && npm run build && cd .. # build the panel cp .env.example .env # edit PORT / VOUCH_PANEL_URL / VOUCH_IM_PROVIDER npm run serve # serves the API + panel on $PORT ``` 打开面板,登录,粘贴**你自己**的 LLM 密钥(Vouch 会自动探测模型),选择一个模型,将其指向你希望它读取的 repo,然后开始吧。 ## 原则(硬性约束) - **自带密钥 (BYO key)** — 每次 LLM 调用都使用*你的*密钥。零内置密钥。密钥在静止时加密。 - **只读** — 分析从隔离的、锁定 commit 的 checkout 中读取数据,绝不进行回写。 - **信任代码,而不是文档** — 每一个引用都要通过确定性验证器的检查。 - **人类在环 (Human-in-the-loop)** — 没有明确的批准,不会消耗任何密钥,也不会发送任何消息。 - **通用性** — 不需要 ripgrep,不需要飞书,不需要原生构建(使用 Node 内置的 SQLite)。 ## 架构 ``` packages/core the code-aware engine — retrieve → synthesize → verify. Zero runtime deps. packages/cli `vouch` — verify / scope / plan packages/providers pluggable chat layer: local (default) + Feishu · DingTalk · WeCom packages/agent the full self-hosted app (SQLite via node:sqlite, Express API) packages/executor opt-in sandbox (bwrap → docker → refuse) + Ed25519 job envelopes packages/daemon optional local observer/executor daemon web/ React + Vite + Tailwind panel ``` ## License [Apache-2.0](./LICENSE)。有关干净室声明,请参阅 [PROVENANCE.md](./PROVENANCE.md)。
标签:MITM代理, 人工智能, 代码生成, 开发辅助工具, 效率工具, 机器人, 渗透测试工具, 用户模式Hook绕过, 网络调试, 自动化, 自动化攻击