npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lapland/vouch

v0.1.1

Published

An AI teammate for your team chat (Feishu/DingTalk/WeCom): it picks up tasks, gets them done, and drafts replies in your voice — with a deterministic code-reference verifier as the trust layer. BYO-key, read-only, human-in-the-loop, self-hosted.

Readme

Vouch

你的 AI 工作分身,活在你的团队 IM 里。 Vouch 盯着你的群(飞书 · 钉钉 · 企微),接住派给你的活, 替你办成、或起草成待发的稿,并用你的语气代你说话——每一步外发都要你点头。碰到代码类的活,它给你的 每个文件、符号、行号都对着你真实仓库验过,绝不给一个不存在的引用。自带你的 key、只读、人在环内。

License Node npm Runtime deps

English · 简体中文

它替你干什么

它待在你的团队群里,把杂活从你手上接过去——你只管拍板,跑腿的事它来。

  • 认出派给你的活。 群里谁丢一句「帮我看下…」,它捞出来、扔进确认队列。绝不自作主张先动手。
  • 真把活办出来。 一句话变成能用的东西:代码工单(引用对着你仓库验过),或者需求、方案、接口、测试文档。
  • 用你的语气回。 从正经到含蓄阴阳都能起草,学的是你平时怎么说话、拍过什么板。你改一改、点确认,它以你的身份发出去。
  • 越用越懂你。 你的偏好、立场、语气,用得多了它慢慢就摸清了。
  • 定时给你发小结。 这阵子干完了啥、还欠着啥,按点推给你。
  • 想的话,还能盯你本机。 一个本地 daemon 看你和你的 coding agent 实际提交了什么,工单自己就闭环了。

花你的 key、发消息、推分支——任何对外的动作,你不点头就不发生。

两种用法:要完整体验就跑自托管助手(面板 + 你的 IM);只要「一句话出工单」那半,用 vouch CLI 就够了。

多端「代你发」说句实话:只有飞书能真·以你本人身份发。钉钉/企微就算拿到用户 OAuth token,平台也不让 应用冒充员工发言——所以这两家 Vouch 是**「代你发」(明确标注)**,绝不伪装成你本人。加个平台 = 写一个 adapter,引擎不动。

问任何一个 AI 助手「限流该加在上传器的哪里?」,它会信誓旦旦地给你文件路径、函数名、行号—— 其中一部分根本不存在。Vouch 让模型给出引用,然后逐条对着真实代码核验:这个文件在不在、 这个符号是不是定义在这(而不是只被调用)、标注的行号是否落在定义处(±3)。查出来的幻觉引用会用 一次定点修补纠正,或直接标红提醒。任何外发都要你先点头。

信代码,不信文档。 校验器是确定性的——不调模型、不花 key。无论引用来自 Vouch 自己的分析, 还是你指过来的任何别的 agent,都是同一套核验。

快速上手 —— 30 秒零密钥演示

# 把一份工单(或任意 {path,symbol,line} 列表)里的代码引用对着真实仓库核验。
npx @lapland/vouch verify ./work-order.md --repo .
# → ✓ src/upload.ts#handleUpload:42   ✗ src/upload.ts#throttle —— 此处查无该符号定义(是调用点或名字写错)
#   3/5 references verified (60%)     ← 有引用不过就退出非 0,可直接卡在 CI 里让幻觉工单挂掉

verifyscope 不需要 key——它们是确定性的。plan你自己的 LLM 端点:

npx @lapland/vouch scope "给上传器加并发上限" --repo .
export VOUCH_BASE_URL=https://你的端点/v1  VOUCH_API_KEY=sk-...  VOUCH_MODEL=你的模型
npx @lapland/vouch plan "给上传器加并发上限" --repo .

需要 Node ≥24 和 git。装了 ripgrep 会用它;没装就退回 git grep,再退回纯 Node 扫描——哪都能跑。

引擎怎么工作(又快又扎实)

  1. 确定性检索scope,不调模型):中英概念扩展 → 搜仓库 → 拉完整函数体 + 跨文件调用点 + 反证("全仓搜过,这机制还不存在 → 得新建")。
  2. 单次合成:一次调用你的模型产出工单(SPEC/BRIEF/STEPS),带上机器可读的引用清单。
  3. 确定性校验 → 修补:每条 {path, symbol, line} 对着真实代码核;只把没过的重新取片段做一次定点纠正。 最坏 ≤2 次模型调用。
  4. 要么引用、要么弃权:仍然核不过的引用,会明写在文档里提醒,绝不悄悄发出去。

完整 agent(可选、自托管)

除了 CLI,Vouch 还是一个完整的、自托管、单人使用的 agent,带 Web 面板:工单 / 确认队列 / 语气回复 / 记忆 / 汇总 / 执行器(可选、进阶:先在断网沙箱里验过 diff,人点头才推送)。

聊天平台是可插拔的 provider:默认的 local 不需要任何外部服务(你手动喂任务、回复只生成不发), 另附飞书 · 钉钉 · 企微三个适配(只有飞书能真·以你身份发,钉钉/企微是「代你发」标注)。每一次外发——花 key、发消息、推分支——都要显式点头。

git clone https://github.com/plwslpld-arch/vouch && cd vouch
npm install && npm run build
cd web && npm install && npm run build && cd ..
cp .env.example .env        # 改 PORT / VOUCH_PANEL_URL / VOUCH_IM_PROVIDER
npm run serve

要上生产(HTTPS 反代、接钉钉/企微 OAuth),看 DEPLOY.md

原则(硬约束)

  • 自带 key —— 每次调用都用你的 key,零内置 key,落库加密。
  • 只读 —— 从隔离的、锁定提交的检出里读,绝不写回。
  • 信代码不信文档 —— 每条引用都过确定性校验。
  • 人在环内 —— 不点头,不花 key、不发消息。
  • 通用 —— 不强依赖 ripgrep、不强依赖飞书、无需原生编译(用 Node 内置 SQLite)。

架构

packages/core       代码感知引擎:检索 → 合成 → 校验。零运行时依赖。
packages/cli        vouch —— verify / scope / plan
packages/providers  可插拔聊天层:local(默认) + 飞书 · 钉钉 · 企微
packages/agent      完整自托管应用(node:sqlite + Express API)
packages/executor   可选沙箱(bwrap → docker → 拒跑)+ Ed25519 任务信封
packages/daemon     可选的本地观察/执行 daemon
web/                React + Vite + Tailwind 面板

许可

Apache-2.0。干净重写声明见 PROVENANCE.md