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

dsh-decision-room

v0.9.12

Published

DSH 多模型决策室:独立评审、持续质询、证据与分歧、方案修订及人工续议

Downloads

657

Readme

DSH 多模型决策室

将一份方案交给多个模型的不同角色独立评审,围绕问题持续质询,再生成完整修订稿和独立复核。人负责目标、边界、补充事实与最终取舍。

首版是 DSH 插件,面向可信的单用户本地 Profile。开发预览复用同一套 Host 逻辑与页面,不是另一个独立业务系统。

项目地址:https://github.com/JinhangShi/dsh-decision-room

安装

从 npm 安装到 DSH Web Profile:

dsh plugin --profile web add [email protected]

本地开发包也可以按下文的“打包与 DSH 安装”方式安装。

当前功能

  • 默认四席为商业与客户价值、产品与交付、财务风险与合规、独立反方与证据审计;提供商业决策、企业尽调、产品方案、技术架构和采购评估模板。
  • 高级设置允许 2–6 个席位,自定义名称、职责、评审视角和模型;删除交付、风险或独立反方时显示警告。
  • 独立首评使用同一份冻结材料,不读取其他席位意见,全部提交后统一公开。
  • 以稳定的问题 ID 轮转分配交叉回应;高风险问题至少由两个不同席位独立覆盖,保留修改理由、证据缺口、阻断票与少数观点。
  • 每轮结束后由主持模型解读 Host 的确定性票型,说明关键阻断、变化和下一步;主聊天及右侧栏保留每轮快照,模型不能改写票数或把多数意见当作事实。
  • 评审简化为按讨论轮次区分的三档:快速最多 20 轮、标准最多 80 轮、深度最多 200 轮;模型调用额度分别为 200/800/2,000 次,MCP 均为 1,000 次。时间上限分别为 1/4/8 小时,Token 预算为 300 万/1,000 万/2,000 万。观点收敛时可提前完成,达到任一预算边界会停止派发,轮次上限不保证必须跑满。
  • Host 按问题覆盖、证据状态和信息增量决定收尾;覆盖达标后连续三轮没有新增证据或改票时强制收敛,模型自报“新信息”不能重置计数。票数呈现分歧但不能把事实投票为真。时间是上限,不是必须耗满的时长。
  • 每次调用前持久化预算预留。最多两个运行中任务、Profile 内最多四个并发请求。
  • 暂停、取消、检查点续跑、重启恢复、用户要求提前修订;迟到响应不会改写已暂停或取消的结论。
  • 无人值守运行仍需要 DSH 进程、插件宿主和电脑保持运行(建议关闭系统睡眠);进程或机器停止后任务会暂停,并在恢复后从检查点继续,不承诺离线期间继续调用。
  • 完整修订方案、逐项修改映射、独立复核、试点验证计划、Host 自动附加的未解决异议。
  • 人工采纳/不采纳/暂缓,绑定确切报告版本;补充反馈后创建新版本,旧记录保持不变。
  • Markdown/TXT 方案及补充材料、Markdown/安全 HTML 导出、当前会话历史。
  • DSH 主聊天显示角色评审、交叉回应、修订稿与复核;按版本留存,刷新和重启不会重复发布。
  • 左侧“决策室”与 MCP 连接器、访前尽调入口使用相同原生按钮样式与导航区域;主输入区不再出现重复的打开按钮。
  • 右侧“新的决策”卡片填写议题、材料、角色与预算,实时同步为可编辑的主聊天草稿;用户点击 DSH 发送后,主持 Agent 调用工具启动四席评审。
  • 主聊天执行卡片实时显示阶段、各模型调用状态与额度;暂停、继续、补充材料、二次修订和人工取舍都在同一聊天中完成。
  • 每次角色调用使用独立的 DSH 原生会话,完整历史保留;Host 提供冻结材料、相关议题和各席最新立场,不反复回灌全部旧轮次。首评完成前互相不可见。
  • 左侧入口打开 Better Sidebar 右侧配置卡片;发送后卡片转为只读进度,后续讨论和修订保留在主聊天。

已有模型与边界

默认使用现有网关的四个模型 ID:

| 席位 | 模型 ID | | -------------------------- | --------------------- | | 商业与客户价值、主持与编辑 | qwen3.8-max | | 产品与交付、独立复核 | kimi-k2.6 | | 财务、风险与合规 | glm-5.1 | | 独立反方 | deepseek-v4.1-flash |

2026-09-18 的短文本调查中,上述四项均成功且返回的 model 与请求一致。默认目录只展示这四个已测模型;其他供应商只有在 Host 明确配置并启用后才会出现。配置了协议不代表已有供应商权限。

不默认启用曾发生身份不一致的 MiniMax 别名和 DeepSeek Pro 日期别名。运行中仅接受请求名或明确登记的返回别名;其他模型名仍会停止并保留已报告用量。现有网关的 deepseek-v4.1-flash 可返回 deepseek-v4-1-flash-260910,该精确对应关系已纳入兼容列表,不泛化接受其他日期、Pro 或旧 Flash 标识。请求仍使用短名称,调用记录和报告保留网关原始返回名。DSH 原生流没有返回上游身份时显示未知。模型名匹配只能核对网关声明,不能独立认证真实供应商。

首轮独立评审公开后,讨论席从当前 DSH 已注册的 mcp__* 工具中按问题相关性加载最多 8 项,完整工具定义及检索入口合计不超过 8,000 Token,并受剩余上下文空间限制,不需要为企查查或其他 MCP 编写固定映射。模型自行选择工具和参数,需要其他工具时可通过 decision_room_find_tools 检索本地目录,下一步加载匹配工具的完整参数。每次角色调用最多检索三次;检索本身不执行外部查询,后续模型续答计入任务预算。新安装的 MCP 也会自动进入后续讨论的可检索目录。每次请求先写入任务检查点并受任务调用上限与 DSH 权限策略约束;实际是否执行由 DSH 的工具策略决定,模型不能绕过宿主权限。MCP 返回内容会以稳定证据 ID 写入账本并进入后续讨论,但始终按不可信、未经独立核验的数据处理,不会执行其中的指令。

席位返回的 continueDiscussion 只作为参考。达到独立覆盖后,如果连续三轮没有新增证据或改票,Host 会强制进入修订与独立复核;覆盖达标、本轮无增量且各席都建议停止时可以提前收尾。新增 MCP 材料会重新计算稳定窗口,重复取得同一内容不会重置。模型自报的新论点保留在原始记录中,但不能单独决定继续派发。

MCP 调用的等待授权、执行、拒绝、失败和取消状态都会持久化,宿主重启不会把旧请求误显示为仍在运行。认证失效会停止同连接器重复尝试;修复连接并明确继续后才允许重新尝试。主持收到调用状态,不能把失败表述为未调用,也不能要求触发未提供的技能。

Host 表决快照与主持解读使用独立消息 ID:先发布不可变快照,解读完成后追加关联消息;刷新与重启不会重复发布。讨论默认展示简短摘要,完整意见和异议可展开查看。

本地开发预览

要求 Node.js 22.19+ 或 24、pnpm 10。

pnpm install --frozen-lockfile
pnpm dev:demo

打开 http://127.0.0.1:4318/decision-room/。演示模式明确标注“无外部调用”,使用确定性合成结果。

真实模型模式只复用你已有的凭据。创建不提交 Git 的 .env.local:

DSH_DECISION_ENV_FILE=/absolute/path/to/existing/.env.dev

该文件只导入 AI_GATEWAY_ 和 DECISION_PROVIDER_ 前缀环境变量,不加载原仓库其他业务凭据。也可以直接在 Host 环境中设置 AI_GATEWAY_BASE_URL 和 AI_GATEWAY_API_KEY。调用只允许 HTTPS,不跟随重定向。

pnpm dev

页面代码和任务响应中都不会包含 API 密钥。当前交付的本机 .env.local 只引用已存在的环境文件路径,没有复制其中的密钥。

安装到现有 DSH

本项目参照现有 qcc-previsit-dsh 的 Host/Client、Bundle patch、Session 工作台和 storageDomain 方式实现。参考稳定组合为 DSH 0.1.1-rc.2 + Better Sidebar 0.17.1;候选组合为 DSH 0.1.2-rc.1 + Better Sidebar 0.18.1。不自动升级现有宿主或其他插件。

先构建并打包:

pnpm build
pnpm pack --pack-destination dist

完整停止你准备安装的 DSH Profile,然后执行:

dsh plugin --profile web add ./dist/dsh-decision-room-0.9.10.tgz

启动 DSH 的进程需要同一份 Host 环境配置,插件不会读取浏览器存储中的密钥:

DSH_DECISION_ENV_FILE=/Users/qcc/WebstormProjects/mcp_web/apps/web/.env.dev dsh web

通过 localhost / 127.0.0.1 打开 DSH。点击左侧“决策室”进入专属 Session,右侧打开“新的决策”卡片。填写“01 议题与材料”和“02 成员与边界”时,prompt 实时出现在主聊天输入框,不需要额外点击回填。这一步不会创建评审或调用模型;核对后点击 DSH 原生发送才启动。

如已手工修改主聊天草稿,自动同步会暂停并提示,避免覆盖输入。卡片草稿按工作空间/会话缓存在当前浏览器标签页中,刷新或重新打开可恢复。发送后右侧转为只读进度,补充意见和二次修订继续在主聊天完成。

自然语言入口:也可以直接在主聊天提供方案和明确的评审指令。DSH 主持 Agent 使用 decision_room_start 启动真实评审;只有暂存请求使用 decision_room_prepare。同一用户消息的重复启动会去重。decision_room_status 只读查看状态和结果。

在主聊天发送“请根据这些意见再次评审”,Agent 使用 decision_room_continue 创建并启动下一版,默认基于上一版修订稿及原预算。只补充或暂存意见时不自动收费续议。decision_room_control 控制暂停、继续、取消和收尾;decision_room_limits 接受用户明确要求的额度调整;decision_room_decide 记录人工取舍。

关闭页面不停止已经授权的评审。需要停止时,在主聊天发送“暂停评审”或“取消评审”;执行卡片也提供回填指令的快捷按钮。DSH 原生停止按钮只停止当前主持回复;评审任务以执行卡片的状态为准。

主聊天的主持 Agent 需要使用 DSH 中已配置、支持工具调用的模型。角色调用走决策室现有网关;主持的普通聊天调用由 DSH 自身管理,不计入角色评审的调用次数。

供应商与价格配置

复制 models.example.json 为 models.local.json,修改精确模型 ID、角色可选名称、协议及环境变量引用,然后设置:

DSH_DECISION_MODELS_FILE=/absolute/path/to/models.local.json

支持 chat(Chat Completions)、messages(Anthropic Messages)、responses(OpenAI Responses)、dsh(宿主 llm.stream)。同一供应商的 base URL、模型 ID 和凭据必须成套配置。dsh 模型需填写宿主已经配置的 provider;此路线使用宿主凭据,不经过插件 HTTP 适配器。

模型价格默认为 null。拿到实际 API 计价后,填写人民币/百万 Token 的 inputCnyPerMillion 和 outputCnyPerMillion,才能启用金额预算。缓存按输入价保守计算;这不是供应商结算账单。

DSH 中结合宿主 Token Meter、中文文本的 UTF-8 密度估算和工具定义大小预留预算;历史 usage 高于估算时提高同模型后续预留。每次实际请求在派发前持久化预留,收到 usage 后结算。实际发送前统一过滤其他插件的技能目录,估算和审计 hash 基于同一份请求;工具结果与历史回应仅向模型提供有界摘录,原始会话不改写。压缩请求单独计入调用次数、Token、金额及时间边界;同一次评审请求最多两次压缩,未有效缩短上下文时停止重复压缩。独立开发预览仍使用 UTF-8 字节数保守估算。

启动前持久化修订与复核的收尾预留,同时保护调用、Token、金额及时间;后续讨论、工具续答和压缩不得占用。预算已耗尽时保留可导出的阶段报告,明确尚未完成独立复核,不提示直接继续。

有持久化证明尚未进入发送的本地拦截/取消会释放预留,保留失败尝试记录;进入发送后超时、取消、网络中断、缺少 usage 的调用保留预留额度,显示“待对账”。上游推理 Token、计费语义和取消行为不能由插件保证;发现实际报告用量超过总额度会停止后续请求。没有配置价格时,使用 Token、调用次数和时间限制,不把费用显示为零。

每个逻辑步骤最多尝试三次,失败会暂停,用户点击继续才重试。重试消耗独立预算,不覆盖之前失败或中断的调用记录。修改模型配置后应创建新版本,已有任务不会静默使用变更后的模型定义。

验证命令

pnpm test          # 核心状态机、预算、协议、访问边界与存储测试
pnpm build         # Host、DSH Client、工作台资源、声明文件
pnpm test:e2e      # 合成模型浏览器验收;需要本机 Chrome 或 Playwright Chromium
pnpm typecheck    # 交付前最后一步

浏览器验收默认复用已安装的 Chromium/Google Chrome。可通过 DSH_DECISION_CHROME 指定可执行文件。截图保存在忽略 Git 的 test-results/。

pnpm smoke:live 是会产生 API 调用的显式验收命令:使用不含业务数据的合成方案,最多 16 次调用、1 轮讨论、15 分钟、60 万 Token 预留额度。结果保存在 .decision-room/live-smoke-result.json,不会提交到仓库。

存储、安全与适用范围

如需让当前 Profile 的所有任务统一采用 MCP 额度,同时保留三档轮次差异,在 ~/.dsh/profiles/web/cordis.patch.yml 中为插件配置(合并到现有补丁列表):

- id: dsh-decision-room
  name: dsh-decision-room
  config:
    reviewLimits:
      maxMcpCalls: 1000

这是用户明确启用的全局配置。Host 在新建、续议、单任务额度调整以及启动加载旧任务时,只统一其中已配置的字段,旧聊天提示词和缓存草稿无法覆盖。maxRounds、maxCalls 可选;如仍填写它们,会将所有档位覆盖成同一个次数值,按轮次选档时应移除这两个字段。已有任务会追加包含原始额度的审计事件,保留调用、材料、评审结论、报告及活动时间;其他预算按任务执行。没有启用此配置时,调用方明确提交的次数额度继续有效。

三档 MCP 调用预设均为 1,000 次,Host 校验及调用、证据持久化支持相同上限。已有 Profile 若配置了旧的 maxMcpCalls: 100,需将上述值改为 1000 并重启,Host 会统一迁移该 Profile 的旧任务。模型调用的派发与持久化硬上限同步提高至 2,000 次。

  • DSH 中由 decision_room_v1 Storage Domain 保存任务、预算和问题账本;角色历史和主聊天消息使用 DSH 原生 Session 持久化。开发预览使用 .decision-room/{demo,live}/runs.json。
  • 升级会把旧任务已公开的评审同步到原会话主聊天,并保留成功检查点;重启不会自行继续付费任务。
  • 千问 3.8 Max 的默认本地总容量按官方上下文说明设为 1,000,000 Token,单独输入上限为 991,808 Token(2026-09-23 核对并在配置网关上用合成材料验证边界)。发送前同时检查输入上限和输入加输出预留的总容量;工具加载也受两项边界约束。其他网关额外限制可通过 DSH_DECISION_MODELS_FILE 的 contextTokens、maxInputTokens 覆盖。
  • 自动压缩不意味着无限容量。单份输入本身过大、压缩失败或预算不足仍会暂停并保留结果,不会静默截掉硬约束。
  • Host 更新串行写入并先持久化再发布;开发文件存储以临时文件原子替换。损坏记录导致启动失败,不清空旧数据,不回退到无持久化模式。
  • 重启将运行中任务恢复为暂停,不自动产生新的付费请求。保留成功检查点、问题 ID、版本、事件与用量。
  • HTTP 路由同时检查本机 socket、Host、同源 Origin/Fetch Metadata;所有任务 API 还要求随机访问凭证,存放浏览器内存,不放 URL。它是可信本地 Profile 的防跨站边界,不是多人租户认证。
  • 任务操作、读取和导出都校验 Workspace/Session;版本冲突使用 revision 拒绝。Profile 的其他可信插件/本机进程仍属于同一信任边界。
  • 不接收前端提交的网关 URL、密钥或已完成报告;模型仅产出受 schema 和引用检查约束的数据。
  • 模型和材料文本以 React 文本节点或 HTML 转义呈现,不执行原始 HTML。未解决问题由 Host 自动附加,编辑模型不能将它们删除。
  • 第一版只显示当前会话历史;反馈续议重新进行完整独立评审,以免旧主持摘要影响首轮。自动识别影响范围后只复审局部问题、跨会话全局历史和多用户权限是后续扩展点。

开发方案见 docs/DEVELOPMENT-PLAN.md,架构与状态机见 docs/ARCHITECTURE.md,验收证据见 docs/VALIDATION.md。