Repository navigation
Releases
Releases · BlkSword/dsh-flowus
v0.1.1
修复了一个高危依赖漏洞,补齐了会话自愈、回调加固、瞬时故障重试与一批使用体验改进。本次升级不需要重新授权。
安全
- 依赖升级到修复版本。
@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.js36.5% → 96.5%、mcp-session.js43.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
首个公开版本。
功能
- 面向 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。