Skip to content

Releases

v0.1.1

Choose a tag to compare

@BlkSword BlkSword released this 19 Oct 10:16

修复了一个高危依赖漏洞,补齐了会话自愈、回调加固、瞬时故障重试与一批使用体验改进。本次升级不需要重新授权。

安全

  • 依赖升级到修复版本。 @modelcontextprotocol/client 由 2.0.0 提升到 ^2.2.0,覆盖 GHSA-6qxp-vccf-f47h / CVE-2026-104850(高危,CVSS 7.5):旧版 OAuth 客户端不把凭据绑定到授权服务器,恶意或失陷的 MCP 服务器可以指定自己的授权服务器,并在无用户交互的情况下拿到已保存的 refresh_token 与 client_secret。
  • 插件自己也拒绝跨授权服务器出示凭据。 当请求的授权服务器与凭据记录的 issuer 不一致时,tokens() / clientInformation() 不再返回凭据,用户被要求重新登录而不是泄露刷新令牌。
  • 回调不再能被本机任意进程取消。 先校验本次登录的 state(常量时间、唯一值)再处理 error,只接受 GET,无法证明归属的回调只作答、不结束登录;监听地址强制 loopback(RFC 8252 §7.3);帮助页回显的服务器文本经转义并截断。
  • 凭据绑定资源 URL。 配置的 serverUrl 指向另一资源时,插件拒绝出示令牌并要求重新授权,而不是把 FlowUs 令牌发给第三方端点。
  • 服务器 instructions 不再能撑爆提示词。 新增 maxInstructionChars(默认 32000,与内置 MCP 桥的 32 KiB 口径一致),超出部分截断并在日志中提示;该段落在系统提示里明确标注为服务器提供的数据。
  • 状态文件改用宿主的原子写与跨进程文件锁(@deepseek-ai/dsh-atomic-write,可选 peer):随机后缀 + wx 独占创建 + rename,并以文件锁串行化跨进程读-改-写;缺失该依赖时回退到等价的本地实现,登出会清理残留的临时/损坏文件。

新增

  • 瞬时故障退避重试。 mcp.flowus.cn 前的 nginx 会给出秒级 503 窗口。网关拒绝现在以指数退避 + 抖动重放(最多 3 次,500ms 起、8s 封顶);可能已被处理的模糊失败只对只读工具重放,写操作不会因插件自身重试而重复执行;同步失败后还会自动补试(5s / 15s / 60s)。
  • 错误脱敏。 SDK 会把响应正文整段塞进错误信息,现在对外(状态快照、设置页、/flowus status、模型看到的工具错误)只给出一句短文本,网关 HTML 原文只进日志;快照新增 lastErrorKind,界面会标明「暂时性,插件会自动重试」。
  • 结果上界。 maxResultChars(默认 32000)保留首尾并注明省略了多少字符;结构化内容同样受限;超大内联负载(base64 图片/blob)以大小占位。
  • 调用卡片。 每个工具提供 presentCall:kind 区分搜索/读取/写入,标题给出本次调用的对象。
  • deferToolLoading(默认关闭)。 以 defer_loading 声明工具,支持该能力的路由可将其移出常驻 schema 块(41 个工具、约 8,424 tokens/请求的上限)。
  • 开发基线。 npm run typecheck(JSDoc 类型校验)、提交锁文件使 npm audit 可用、GitHub Actions 覆盖三个受支持 DSH 版本、逐包链接脚本(避免 npm 误删运行时安装)。

修复

  • 会话自愈。 服务器遗忘会话(-32001)时自动重连一次、重新注册工具列表并重放当前调用,无需人工 /flowus reload。
  • tools/list_changed 真正重新注册工具代次(此前只更新了一个没人读的缓存)。
  • 设置页只读标签的底色:此前使用了无填充的 quiet 色调,看起来像纯文本;改为 neutral 胶囊。
  • 设置页体验:工具目录可搜索、只读/写入标签、凭据路径与授权地址一键复制、相对时间、服务端版本、切回标签页立即刷新、等待与错误均有 aria-live 播报。
  • 测试覆盖:login.js 36.5% → 96.5%、mcp-session.js 43.9% → 93.7%,套件共 180 项。

兼容性

  • 支持 DSH 0.2.0-rc.2、0.2.1-alpha.1、0.2.1-alpha.2;peer 依赖与 0.1.0 相同,另新增可选 peer @deepseek-ai/dsh-atomic-write。
  • 0.2.1-alpha.3 的宿主半层已在一份完整运行时上实测通过(180 项用例零失败,配对 cordis@4.0.5-alpha.2、schemastery@3.18.5-alpha.2、dsh-tools@0.2.1-alpha.3 均落在声明范围内);客户端半层尚待验证,因此暂不声明支持该版本。

安装

dsh plugin --profile web add @blksword/dsh-flowus@0.1.1

安装后需重启 dsh web 并刷新浏览器页面(客户端入口图在进程启动时组装)。授权凭据保存在 <DSH_HOME>/flowus/oauth.json;已有凭据的 issuer 与资源 URL 与配置一致,无需重新登录。若用 @latest 安装被 pnpm 的 minimumReleaseAge 跳过(发布不足 24 小时),请写确切版本号。

v0.1.0

Choose a tag to compare

@BlkSword BlkSword released this 12 Oct 05:15

首个公开版本。

功能

  • 面向 FlowUs 官方 MCP 服务器(https://mcp.flowus.cn/message)的 OAuth 2.1 浏览器授权:RFC 9728 元数据发现、RFC 8414 授权服务器元数据、RFC 7591 动态客户端注册与 PKCE S256,回调为 127.0.0.1 上的 loopback 监听,全程不使用静态令牌。
  • 将服务器公布的工具注册为 DSH 原生工具,命名与内置 MCP 桥一致:mcp__flowus__<工具名>。
  • /flowus 命令:status、login、logout、tools、call <工具> [JSON]、reload、help。
  • 设置面板“FlowUs”页面:展示授权与连接状态,并提供登录、取消、重连、登出与刷新操作。
  • 系统提示词段落:并入服务器 instructions 与当前工具目录,未授权时给出明确指引。

修复

  • 工具调用按 MCP 会话串行化。FlowUs 服务端限制同一会话同时仅允许一个工具调用(并发调用返回 JSON-RPC -32002),现以串行队列执行并对并发拒绝进行有限次退避重试。验证结果:5 个并发调用全部成功。

兼容性

  • 支持的 DSH 版本:0.2.0-rc.2、0.2.1-alpha.1、0.2.1-alpha.2。三个运行时均经实测:离线套件与联网冒烟测试零失败,具名导出集合一致。

安装

dsh plugin --profile web add @blksword/dsh-flowus@0.1.0

安装后需重启 dsh web 并刷新浏览器页面(客户端入口图在进程启动时组装)。授权凭据保存在 <DSH_HOME>/flowus/oauth.json。