演进路线:OS-skill 模块融合决策

August 21, 2026 · View on GitHub

来源:01men/OS-skill(企业级 AI 应用可复用功能模块集锦) 原则:选择性融合——只吸收对插件化平台有长远建设价值、且符合 dsh「一切皆插件」规范的设计; 暂缓项明确记录触发条件与实施手册出处,避免盲目堆功能。

一、已融合(v1.1)

#融合项来源模块落点(dsh 插件)长远价值
1IdentityProviderAdapter 统一抽象buildAuthorizeUrl / exchangeCode / getUserInfo / normalizeProfile + 三场景归一(web_qr/h5/in_app)+ NormalizedProfileauth-identity docs/03plugin-iam/src/providers.ts登录主流程面向接口编程;接入真实钉钉/飞书/企微只需替换 Adapter 实现与凭证配置,零改主流程
2身份链接事实源 + 引擎级唯一约束iam:identityLinks 集合,collection.uniqueOn() 模拟数据库部分唯一索引(provider+providerUserId 活跃唯一);「禁止先查后插」红线工程化到存储引擎,users/orgs 同受益auth-identity docs/01/02 红线platform-core/src/storage.tsplugin-iam一人一号由引擎兜底,并发/竞态下不可能产生重复绑定——平台数据完整性的通用底座能力
3refresh_token 轮转链 + sid 会话:access 30min + refresh 7d(仅存 SHA-256 哈希)、单次轮转、重放检测→整链吊销;sid 贯穿会话,登出/封禁按会话即时吊销auth-identity docs/06plugin-authn令牌体系达到生产基线;前端 401 静默续期,体验与安全兼得
4OAuth state 防 CSRF + code 一次性消费beginSso 签发一次性 state(10min),completeSso 消费校验;授权码 5 分钟窗口内单次消费auth-identity docs/07 攻击演练plugin-authn登录攻击面收敛,自测覆盖三类重放演练
5未命中三分支:三方登录未命中 → 待绑定票据(5min 一次性)→「绑定已有账号(验密)/ 注册新账号」auth-identity docs/04/05plugin-authn + plugin-console(REST + 登录页 UI)首次三方登录的标准产品化流程,而非直接报错

自测新增 15 项安全演练断言(state 重放/伪造、code 重放、refresh 重放整链吊销、 密码错误不烧票据、一人一号引擎拒绝、注册分支),合计 97/97 通过

二、暂缓项(记录触发条件与实施手册)

暂缓项来源触发条件实施要点(届时照做)
多租户三层隔离(网关注入 X-Tenant-Id + 剥离客户端伪造头 + ORM 强制 scope;「不存在全局角色」,角色只挂 organization_members)auth-identity docs/06平台从「单组织树」演进为「多租户 SaaS」时先改 ER(organization_members 中间表),再三层依次落地;本平台 users.orgId+orgSubtreeIds 数据权限是它的单租户简化形态
非对称签名 RS256/ES256 + JWKS 轮换(私钥不出身份服务)auth-identity docs/06网关/多服务分别验签成为需求时当前单服务 HMAC 已够用;升级路径:authn 插件内换库 + 暴露 /.well-known/jwks.json
账号合并(人工确认 + 事务迁移)auth-identity docs/05出现真实重复账号治理需求时两活跃账号禁止自动合并;迁移 membership/资源需事务 + 审计
最后登录方式保护auth-identity docs/05 红线引入「无密码纯三方账号」时当前平台账号必有密码(密码即保底登录方式),红线天然满足
钉钉机器人渠道(OAuth 识别 → 单聊推送 → jumprobot 唤起)dingtalk-robot-oauth 全模块AI 应用「渠道接入」排期时(app.attrs.channels 已预留)实施手册:OS-skill modules/dingtalk-robot-oauth/SKILL.md(含 5 个实测坑:企业 token 仅 POST、chatbotUserId 获取、webhook 公网要求、整页跳转、端口残留);建议以 dsh-plugin-channel-dingtalk 新插件落地,向 app 插件注册渠道扩展点

三、融合过程沉淀的工程规范

  • 存储引擎唯一约束collection.uniqueOn(label, keyOf))已成为平台通用能力: 后续任何集合需要业务唯一性时,在访问器中声明即可,insert/update 自动校验并抛错。
  • Service 内跨服务访问必须在插件 inject 声明(cordis 严格服务隔离);插件不得 inject 自己提供的服务(循环等待)——执行器闭包直持服务实例(见 agent/app/mcp 插件 apply)。
  • 异步边界三查:Adapter 链路(exchangeCode/getUserInfo)必须逐级 await; HTTP 处理器调用 async 服务方法必须 await;Node 原生 TS 运行不支持参数属性语法。