dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
本仓库定位:行业部门交互面板项目(
01men/RQ-DSH,本项目主仓)——面向不同行业的部门交互面板项目: 把企业级 AI 能力以「部门交互面板」形态交付到各行业一线。本项目与上游01men/ybkkasi(元冰可治理底座) 是两个不同的项目——本项目是调用方,通过既有契约调用底座的资产与权限(六类受管资产 MCP/Skill/Agent/AI 应用/模型路由/NAS + IAM/OIDC SSO/RBAC/场景级授权),不是它的备份仓库, 也不重复实现治理底座。唯一交付物为 「01门」——AI 代理与人类的协作前台:cordis 插件形态一键装进 dsh(dsh plugin add github:01men/RQ-DSH/ npm@ybkk/gate-01),打开http://127.0.0.1:<端口>/gate01/panel/即见内置演示看板;连接底座后全量数据 经本机代理接入(浏览器零跨域),登录在底座侧完成。本项目范围:部门面板/看板(plugin-panel-core)、 执行卡(plugin-rq-card)、钉钉桥(plugin-dingtalk-bridge)、14 行业图谱包(scenegraphs 业务数据) 与行业主题引擎。治理底座主仓库见 01men/ybkkasi(本项目经 merge 吸收上游 main,下文为底座平台说明)。 产权归属:本项目(含「01门」与元冰可治理底座)产权归 杭州元冰可科技有限公司 所有。 定位决策记录:docs/positioning-rq-dsh-panel-project-20261019.md。 产品定版:docs/plan-gate01.md。产品介绍单页:产品.html——首屏 slogan「AI 会做事,管得住才算数」;版式借鉴 agent-git.com 的排版骨架与留白节奏,配色为科技深蓝主色(#1554e8)+ 微信绿语义色(#07c160):蓝承担权威与主 CTA,绿只用于「通过 / 安全 / 验证 / 复制成功 / 微信联系」;CFO 财务卡保留独立暖金,避免与主色抢位。内容仍为治理层定位:两张装机卡(终端命令 + Agent 提示词,各带一键复制)/ 四通道安装 / 市场数据带 / CIO·CTO·CFO 三决策者 / 前台×底座架构图(六类资产 + 四支柱)/ 四场景 tabs / 交付与定价 / 三阶段路线 / FAQ / 联系。交互动效(光标聚光灯卡片、hero 视差与渐变标题、架构图连线流动、数字滚动、阅读进度条、按钮扫光、导航下划线、FAQ 淡入、可收起微信入口)全部为增强层:默认 CSS 不生效,JS 完整跑通才加.fx-on打开;prefers-reduced-motion整体关闭。单文件自包含:零外部 CSS/JS/字体依赖,内网与私有化环境可离线打开。测试环境http://mdzx.fun:8801/product.html(及/%E4%BA%A7%E5%93%81.html、/产品.html)。 现状(2026-09-12):行业 AI 工作台(IAW)v1.0 已落地——五空间信息架构、14 行业图谱包 (packages/platform-core/scenegraphs/)与 14 行业主题引擎、未激活行业只读演示预览;钉钉设备流登录 (面板代发起,未登录/未绑定自动弹激活指令);npm 通道已实发布 @ybkk/gate-01@1.2.1 (scripts/release.mjs 一键发布)。
基于 DeepSeek Harness(dsh)「一切皆插件」 架构实现的企业级 AI 资源管理平台。 对应设计方案:《企业服务资源统一管理方案 V1.0》与《技术实现规划》;生态平台演进设计见 docs/ecosystem-design-v1.2.md(商业化部分已随 M0 废止,见文内横幅), 宿主轨迭代计划以《元冰可开发计划-主分支》为最新基线(M1-1 契约冻结见下)。
组织账号(IAM)· 统一认证(Authn + OIDC Provider)· MCP 部署服务 · Skill/插件市场 · Agent 本体 · AI 应用本体 · 用量透明计量(usage)· 模型接入网关(modelgw)· 审计与告警 ——多类资源,一套身份、一套权限、一套计量、一套审计。
M0 合规收敛(2026-09-09):废止按用量计费/转售/分账,平台对外只呈现用量与内部成本穿透—— 价格簿为零价快照(charge 恒 0)+ 内部采购成本参考,不呈现任何金额结算语义;用量透明月度报表 (部门/Agent/Skill tokens 三维聚合 + CSV 自助导出)见 J4 契约 docs/contract-j4-usage-report.md。 原钱包/分账子系统(plugin-billing)已整体下线封存(存量流水 CSV 封存 90 天,登记见 docs/billing-archive-register.md)。
商业模式(2026-09-15 更新):按**「团队 + 领域资产」定价,而非平台级打包定价——按开通团队规模与 所选领域资产(行业图谱包/场景包)计价;制造业客户亦可走私有化交付项目制**。
M1-1 契约冻结 v1 齐套(2026-09-11):J1 面板技能/Agent 点名直调(诚实降级 200+ok:false, contract-j1-panel-invoke.md)· J2 统一入口分诊 (contract-j2-entry-triage.md)· J3 会话直通 (contract-j3-session-passthrough.md)· J4 用量报表。 同批加固:安全响应头默认开启(
SECURITY_HEADERS=off可关)、usage 事件保留策略默认 730 天 (USAGE_RETENTION_DAYS,0=永久)——详见 docs/release-notes-2026-09-11-optimization.md。IAW 缺口批次 + F 域余量反馈(2026-09-11):新增 flow-core 流程编排域(TF 编排 + 步骤状态机 / 模板库 contextPack / SLA 与进度 / 甘特时间轴,contract-c2-flow-tf.md)· 数据要素域(数据集登记 / 四维质量分 / 血缘反向追溯 / 指标字典口径仲裁)· 模型渠道治理 (分级路由 / 渠道组降级链 / 预算熔断,contract-c1-modelgw-channel-governance.md)· Agent 自治与 A2A(autonomy A0-A3 + 点名调用端点,contract-c3-agent-a2a.md)· IAM 场景级授权(sceneCode,deny→allow→fail-closed)· 审计证据锚点与场景维度时间线 · 通知中心持久化—— 详见 docs/release-notes-2026-09-11-iaw-batch.md。
npm install # 安装依赖(@deepseek-ai/cordis)
npm start # 启动平台(默认 http://127.0.0.1:7300)
打开 http://127.0.0.1:7300 进入管理控制台。首次启动在空数据目录上执行基线初始化(生产形态):
内置角色 + 根组织 + 平台管理员 admin(无任何演示业务数据)。
admin 口令取 ADMIN_PASSWORD 环境变量;未设置则随机生成,一次性写入 data/admin-initial-password.txt 并打印在启动日志(请立即登录并妥善保管)。iam.user.write 的管理员在「组织与账号 → 账号详情 → 重置口令」重置。演示模式(评估/培训,自动生成完整演示数据与演示账号,口令均为 Ybk@2026):
DEMO_SEED=1 npm start # 首次启动注入演示数据(组织树/演示账号/MCP/Skill/Agent/应用/28 天历史)
| 演示账号 | 角色 | 用途 |
|---|---|---|
admin | 平台超级管理员 | 全功能 |
ops | 资源管理员 | MCP/Skill/Agent/应用管理 |
hr | 组织管理员 | 组织/账号/三方同步 |
dev | 开发者 | 提交 Skill、注册 Agent |
audit | 审计员(只读) | 审计与告警 |
演示模式下钉钉免密登录可用(mock 连接器):登录页「钉钉扫码」输入工号 DD0002(林小满);生产基线不配置连接器,三方登录入口自动隐藏。
npm run selftest # 功能自测:隔离实例(DEMO_SEED)端到端断言,全绿(数量以本次运行为准)
npm run lint:manifests # 插件清单五面 YAML 校验
DSHCTL_USER=admin DSHCTL_PASS=*** node cli/dshctl.mjs help # CLI 帮助(凭据经环境变量或 DSHCTL_TOKEN 提供)
两类安装形态(GitHub 源码检出 / dsh 插件市场安装)都能感知上游仓库新版本,是否升级永远由管理员决定:
package.json 版本 + GitHub compare 提交差;
发现新版本 → 控制台顶栏「可更新」徽标 + platform.update.available 事件(audit 留痕)。控制台抽屉可开关/调频。git pull --ff-only + npm install,支持
dry-run 预演、原因留痕、完成后提示重启);CLI:dshctl update status | check | apply [--dry-run];
Agent 工具:update_status / update_check / update_apply。bundle 形态给出 dsh plugin update 指引。GITHUB_TOKEN 提升限额;DSH_UPDATE_API_BASE / DSH_UPDATE_RAW_BASE 指向私有镜像;
DSH_UPDATE_AUTO_CHECK=off 关闭自动检查。权限点:platform.update.read(查看/检查)、platform.update.apply(升级)。企业部署 / Agent 一键接入:部署 runbook、dsh 运行时接入与「可直接下达给 dsh 自带 Agent 的一键部署指引」 见 docs/deploy-enterprise.md;日常运维 Agent 指引见
skills/dsh-ops-admin/SKILL.md。
运行中的平台就是一棵 cordis 插件树(与 dsh 同一插件框架,@deepseek-ai/cordis)。
每个业务域 = 一个插件包,独立声明依赖/权限点/事件,可独立启停:
接入层 dsh-plugin-console REST 网关 + 控制台 SPA + 工具桥 + 种子数据
业务域 dsh-plugin-iam 组织/账号/角色/用户组/三方连接器(钉钉演示)
dsh-plugin-authn 双轨身份 + 令牌 + on-behalf-of 链
dsh-plugin-mcp 部署/灰度/回滚/健康熔断/权限组/调用网关/监控(真实 HTTP 传输层)
dsh-plugin-skillhub 提交→静态扫描→两级审批→版本化上架
dsh-plugin-agent Agent 本体(resource-core 底座 + 机器凭证)
dsh-plugin-app AI 应用(编排拓扑 + 应用指标 + 成本穿透)
dsh-plugin-usage 计量管道(schema v1 / 幂等 / 死信重放 / 价格簿 / 三方对账 / 能力漂移)
dsh-plugin-modelgw 模型接入网关(OpenAI 兼容真实转发 / 零价快照计量 / 内部成本参考)
dsh-plugin-market 第三方与自营插件市场(契约五面 / Ed25519 验签 / L0 运行时 / 零价计量声明)
dsh-plugin-audit 四类审计日志 + 告警规则 + 成本归集 + 审批中心
dsh-plugin-connect 远程 dsh 接入(宿主角色:接入码/enroll/客户端管理;客户端角色:凭证申请 + 工具远程代理 + 本机配置页)
dsh-plugin-update 平台自更新:上游版本检查(自动+手动)→ 通知 → source 形态一键升级(git pull + npm install,dry-run/审计/权限点)
dsh-plugin-portal 门户数据通道(外部拉取端点·非核心:企业门户免鉴权只读拉取已上线应用/Agent/技能,CORS + 可见性留痕,PORTAL_SYNC=off 可停用,见 docs/portal-integration.md)
底座 dsh-plugin-resource-core 资源本体:属性 schema + 生命周期状态机 + 依赖图
基础层 dsh-plugin-platform-core 存储(JSON集合/原子落盘) + SQLite 事务存储 + YAML 解析 + 事件总线 + ToolRuntime-lite + HTTP
插件协作铁律:状态变更必发事件;跨插件联动只通过事件总线或扩展点(ctx.platformBus),
禁止直连对方数据。例:iam.user.frozen → authn 吊销全部令牌、agent.offlined → 凭证吊销 + 绑定用户通知、
skill.deprecated → 引用 Agent 告警、mcp.unhealthy → 熔断 + 审计。
node src/main.ts 启动完整平台(控制台 + API + 工具)。cordis.yml 把同一批插件挂载进 dsh web——此时平台注册的
运维工具直接进入 dsh 原生 ToolRuntime、对模型可见可调用(provideToolRuntime: false),
Agent 即可按自然语言运维整个平台(「列出所有 MCP 服务和健康状态」→ mcp_service_list,
「Skill 市场里能装什么」→ skill_search)。plugin-dsh-bridge 把元冰可数据面(REST/控制台 SPA/docs/MCP)
以 /rq 前缀挂进 dsh webServer,dsh web 端口即唯一入口;startHttp: false 关闭平台独立端口。
配套 plugin-panel-core(部门 Agent 工作台面板)、plugin-dingtalk-bridge(群桥/审批推送/告警通道)、
plugin-rq-card(会话内四态执行卡,dsh.client 双面插件)。升级与运维须知
(AGENT_SSO_ENFORCE 上线门禁 / CORS 行为 / SSE 日志脱敏)见 docs/host-features-ops-notes.md。源码检出模式(本地开发)——两条硬性要求,缺一不可:
cordis.yml 中 <PROJECT_ROOT> 必须替换为 file:/// URL 形式的绝对路径
(Windows 下裸盘符路径会被 ESM 判为 ERR_UNSUPPORTED_ESM_URL_SCHEME);node_modules/@deepseek-ai/cordis 必须指向 dsh 源码树的 vendor/cordis
(junction),保证插件与宿主加载同一个 cordis 实例——两份实例会导致
ctx.plugin(类插件) 静默失效、服务链(iam→usage→audit…)全部 pending:# 一次性设置(PowerShell,替换两处路径为你的实际检出位置):
Remove-Item -Recurse -Force node_modules/@deepseek-ai/cordis
New-Item -ItemType Junction -Path node_modules/@deepseek-ai/cordis -Target D:\dsh-harness\vendor\cordis
# 之后每次(在 deepseek-harness 源码检出中):
pnpm dsh web --patch <本项目绝对路径>/cordis.yml
安装模式(发布使用)——dsh plugin add 走 pnpm 安装,补丁里的 entry 以
「包名 + 子路径」声明(Node 从 profile 目录沿 node_modules 解析,无需感知安装位置):
dsh plugin --profile web add github:01men/ybkkasi
# 验证:dsh --profile web --dump-config 应列出全部 ops-* entry;
# 会话中问「列出所有 MCP 服务和健康状态」,模型应调用 mcp_service_list 而非静态作答。
安装模式的关键约束:@deepseek-ai/cordis 只在 devDependencies(本地开发/独立宿主用),
绝不能进 dependencies——否则 pnpm 会把它 hoist 进 profile 的 node_modules,
插件解析到第二份 cordis 实例,服务链整体失效(同上)。安装后插件沿
<profile>/node_modules → $DSH_HOME/profiles/node_modules(dsh 自建的宿主闭包 symlink)
解析到宿主自己的 cordis。
平台服务键已做宿主去冲突:JSON 存储服务键为 opsStorage(不是 storage——
dsh 宿主自带同名 storage 服务,曾导致 iam 等插件构造时拿到宿主服务、方法不存在而崩溃)。
tools 键是刻意共享的接缝:独立宿主下由 ToolRuntimeLite 提供,dsh 下即原生
ToolRuntime——37 个运维工具由此进入 dsh。
领域 Skill 手册(skills/dsh-ops-*/SKILL.md)默认不随插件自动进入 dsh 技能系统
(dsh 只扫描 <project>/.dsh/skills、~/.dsh/skills 等根目录)。要让 Agent 获得
分领域操作手册,复制或链接一份:
# 用户级(所有会话可用):
cp -r skills/dsh-ops-* ~/.dsh/skills/
# 或项目级(仅当前项目):
mkdir -p .dsh/skills && cp -r skills/dsh-ops-* .dsh/skills/
其他电脑经插件市场安装本平台后(安装模式见上),无需源码检出、也无需与宿主共享
data/ 目录——插件树中的 plugin-connect 以 client 角色运行,向宿主平台申请
机器凭证并把全部运维工具的执行远程代理到宿主(权限按模板收敛、全程审计):
宿主侧(管理员,一次性) 远程电脑(使用者,两条通道任选)
──────────────────────── ─────────────────────────────────
控制台「平台接入」页创建接入码 → ① dsh 界面对 Agent 说:
(一次性,默认 15 分钟有效, 「接入宿主 http://宿主IP:7300,
模板:readonly/operator/full) 接入码 enr_xxx…」
Agent 调 connect_setup 自动申请口令
② 浏览器打开 http://127.0.0.1:7390
本机配置页可视化填写/更新/断开
接入成功后:远程 dsh 里的 37 个运维工具自动切换为转发宿主执行(本地不再持有数据),
另新增 connect_status / connect_setup / connect_login / connect_test / connect_reset
5 个接入工具供 Agent 自助管理;客户端接入后默认每 5 分钟向 POST /api/connect/heartbeat
主动推送心跳(存活 + 工具数/运行版本/uptime 元信息,heartbeatIntervalMinutes=0 可关闭),
宿主控制台「平台接入」页可查看已接入客户端、最近使用与最近心跳,
并可随时禁用(联动吊销全部机器令牌,立即生效)。宿主侧另有 4 个接入管理工具
(connect_code_create / connect_codes / connect_clients / connect_client_disable)。
安全基线:接入码只存哈希(创建时一次性展示)、一次性消费、TTL 可配、按来源 IP
接入宿主既有失败锁定(15 分钟窗口 5 次锁定);机器凭证等价口令仅保存在远程电脑本机
(0600);enroll 端点公开但接入码本身即凭证。
详细流程与验收清单见 docs/deploy-enterprise.md 第四节。
选择性吸收了 01men/OS-skill 两个模块中具有长远价值的设计(决策全记录见 docs/roadmap.md):
collection.uniqueOn() 模拟数据库部分唯一索引,「一人一号」等业务唯一性由存储引擎兜底,取代「先查后插」npm run selftest在 v1.0 基础上完成生态化演进(实施依据 docs/ecosystem-design-v1.2.md):
aud 受众校验 + 插件 scope 命名空间强制(唯一收敛面)。npm run selftest 244/244、npm run lint:manifests 60/60;KBaaS/连接器市场/合规门户与
L1 有码沙箱为下一迭代(设计见 docs/roadmap-9-10.md)。针对外部技术评审(严重 S1–S4 / 中等 M1–M5 / 轻微 L1–L4)逐项整改:
*.corrupt-* 并显式告警,不再静默当空集合。OIDC_ISSUER 环境变量对外声明。资产运营 控制台页 + REST——统一台账(MCP/Agent/应用/Skill/模型路由
五类资产一处盘点,含归属组织、负责人、健康、近 N 天调用与消耗)、一键健康巡检(批量探活留审计)、
用量与成本穿透报表(Top 资产 / 主体分摊 / 日趋势,零价快照 + 内部成本参考口径、单位 DAU 成本)
与下架分析(弃用/下线原因聚合)。企业内自研 AI 应用上线前完成身份纳管——「注册应用 → 签发 SSO 凭据 → 上线门禁 → 跳转登录」闭环 (设计:docs/dev-plan-app-sso.md · 执行版:docs/app-sso-实施计划-执行版.md · 接入文档:docs/app-sso-integration.md):
GET /oauth/authorize 校验(response_type/client/redirect_uri 白名单/scope
白名单/强制 PKCE S256)→ 落授权请求(5 分钟单次消费)→ 302 平台授权页 /#/oauth/authorize?req=;
失败一律 302 平台错误页(绝不携带外部 redirect_uri,防开放重定向);POST /api/authn/oidc/authorize
用户确认(human-only,consent 卡片)→ code/state/iss(RFC 9207)回跳。
旧账密式 POST /oauth/authorize 已删除。/api/auth/providers 连接器配置显隐)——钉钉用户在授权页内即可完成免密登录
(首次身份走绑定/注册分支),无需预登录控制台,随后直接进入授权确认,全程闭环在 SSO 流内。client_secret_basic + client_secret_post 双认证 × form/JSON 双编码;错误码状态码
归位(invalid_grant→400、invalid_client→401+WWW-Authenticate);access/id token 打标 token_use;
userinfo 校验 token 类型与 aud 受众,email claim 按 scope 裁剪;JWKS 数组化(kid 匹配验签)。GET /api/apps/:id 附 sso 块。「认证与令牌」新增 OIDC 客户端全局
管理面。owner-based 授权为全库首例(human 且 app.ownerId === userId,或持 authn.oidc.write;
机器一律 403)。requestOnline() 早反馈(APP_SSO_ENFORCE 默认 web,h5 形态须有 active 客户端,
审批单快照 ssoClientId)+ app.online 审批执行器执行期复核(挂单期间禁用 → 上线失败留痕)。app.offlined/app.archived → 客户端禁用(refresh 链吊销);app.onlined → 启用;
app.updated → 客户端名称同步(plugin-app 补发历史缺失事件)。/oauth/end_session(id_token_hint 定位 client + postLogoutUris 白名单 + 登出即
吊销 refresh 链);/oauth/revoke(RFC 7009,access jti 黑名单 / refresh 整链,恒 200);JWKS 密钥
轮换端点(新 key 签名、旧 key 24h 宽限验签);冻结/禁用客户端全链即时失效。OIDC_ACCESS_TTL_SECONDS)/ refresh 默认 7d(OIDC_REFRESH_TTL_SECONDS),
与平台会话(30min/7d)独立可调;授权码与授权请求 5 分钟单次消费。POST /api/apps/:id/metrics-report
(app.write)/ app_metrics_report 工具 / CLI app report 三端同契约(PV/UV/DAU/会话/会话深度/7 日留存,
同日 PV 累加、UV/DAU 取最大,可指定 date 补录历史);计量事件推送走 POST /api/usage/record
(usage.write,schema v1 + 幂等键,CLI usage record,resource 支持 mcp:<slug> / skill:<id> /
nas:<id> / model:<slug> / plugin:<id>;meter key 须与价格簿一致——mcp:* 用 tokens、model:* 用
output_tokens,不符硬拒绝且报错直接给出期望键),宿主侧据此外部应用全生命周期监测。NAS 成为第六类受管资产(FS 文件存储类),Skill 上架产物可直传 NAS,平台能力对 CLI / REST / MCP 三端同构开放 (设计与可行性结论:docs/dev-plan-nas.md):
X-NAS-IP 设备路由头,全部文件操作经网关 tools/call 完成
(fs_list/fs_upload/fs_delete/fs_search 等),不直连 DSM 私有 API。属性表三组(基本/接入/治理)、
生命周期 draft → online → offline → archived(上线前 initialize 探活护栏)、健康巡检接入资产运营、
写类操作审计留痕、令牌回显脱敏。POST /api/nas/import(CLI nas import / 控制台导入弹窗)直接吃
synology-filestation 形态的 mcpServers 配置 → 创建资产 → 探活 → 上线 → 工具发现。GET/PUT /api/skill-storage(skill.storage.write)配置包后端
local | nas(引用已纳管 NAS 资产 + basePath,凭证不重复配置)。上架时:提交携带的
packageBase64(CLI skill submit --package=<zip> / 控制台附件)原样上传;无包时由
platform-core 零依赖 ZIP 打包器(zip.ts,deflate + CRC32)从 SKILL.md 现场打包 →
平台 staging → 网关 fs_upload → 版本记录回写 package { storage, nasId, path, sizeBytes }。
fail-closed:上传失败即上架失败。部署约束:fs_upload 在网关进程侧读本地路径,
平台与网关需同机或共享卷(资产 stagingDir 可配共享挂载点)。POST /mcp(Streamable HTTP 纯 JSON 形态)——initialize(会话头 +
serverInfo)/ tools/list(全部运维工具 40+)/ tools/call / ping;复用平台 Bearer 令牌与
工具级权限点(含身份注入防参数伪造),ZCode / Claude / Cursor 等任意 MCP 客户端可直接纳管平台。nas_* 八个工具对 dsh 插件 / REST 工具桥 / /mcp 端点同一契约;CLI 新增
nas 命令组(list/get/create/import/health/online/offline/shares/files/mkdir/delete/upload/search)
与 skill storage get|set;控制台新增「NAS 存储」页(列表/详情/文件浏览器/导入),
资产台账与一键巡检覆盖 nas 类型。围绕「接入后自主提报 + 宿主自动监测」与「分析看板」两条主线补齐观测口径:
fsCall 单点埋点)自动产生
usage 事件(skill:<ID> / nas:<ID>,calls/bytes 口径);价格簿逐条幂等播种 skill:* / nas:*
零费率默认规则(观测先行,口径调整由运营决定,存量部署升级自动补齐)。
跨机部署与中文 slug 兼容:skill 资源键用资产 ID(中文名 slug 含非 ASCII,过不了 resource 校验)。metrics-report / app_metrics_report / app report 三端新增 --pv/--uv
(同日 PV 累加、UV 取最大,与 DAU 同语义);应用详情指标页展示 PV 柱图与 UV/DAU 双线。sub 同日去重),零改造即有数据;新增公开访客埋点 beacon GET/POST /api/apps/beacon
(?app=&vid=&uid=,1x1 GIF / JSON,CORS *,未知应用不泄露存在性,IP+应用 60 次/分钟限流)——
应用一行埋点即得 PV/UV(PV 逐次累加、UV 按 vid 同日去重),与主动上报经 max/累加语义自然合并
(详见 docs/app-sso-integration.md §十一)。GET /api/assets/benefit——按资产聚合 用量/内部采购成本参考,应用类资产关联
窗口 DAU 派生单位 DAU 成本(指标×成本首次打通);「资产运营」页新增成本穿透表 + 主体分摊
(谁在用、内部成本多少,byPrincipal 前端首次渲染)。M0-3 起金额口径仅内部成本参考。GET /api/skills/usage-heatmap——skill × 日使用矩阵(usage 事件为主、计量接入前的
下载流水按日回填去重);Skill 市场页顶部热力图卡片(色深=当日使用次数)。GET /api/assets/retire-reasons 聚合 弃用/下线 原因(审计 change 日志 +
生命周期留痕 + Skill 落库原因三源合一、去重),「资产运营」页新增下架分析卡片。npm run selftest 405/405(新增 10 项:skill/nas 计量入账与外部上报放行、PV/UV 累加语义、
成本穿透恒等、热力矩阵、弃用护栏与落库、下架原因聚合)。对外接入提示词(Agent 注册接入 / AI 应用接入)评审发现的四个平台侧缺口逐一封堵:
usage.write:注册签发的机器凭证 scopes 由
['mcp.invoke','skill.read','agent.read'] 扩为含 usage.write——Agent 按提示词自推直连消耗的计量
不再必然 403。存量部署一次性迁移(幂等标记 agent-scopes-usage-write-v1,只跑一次防覆盖后续人工
收权;迁移动作逐条入 change 审计 agent.credential.scopes-backfill)。usage.record 校验事件必含价格簿 meter_key,缺失 400 且错误信息
直接携带期望键(价格簿对调用方不可见,错误信息是唯一自纠线索)——消灭「静默按 0 口径入库」这一
比报错更危险的漏计量面。skillhub 内部管道同步对齐(meters 补计量键 calls,downloads/installs
观测维度保留,热力图口径不变)。PATCH /api/authn/principals/:id(scopes 调整,须全部命中权限目录或恰为
['*'])+ POST /api/authn/principals/:id/rotate-secret(clientId 不变、旧 secret 立即失效、新值仅此
一次返回)+ enable 端点补齐;调整/轮换联动吊销全部存量令牌(令牌 scopes 为签发时快照,不吊销
则收权不生效)。控制台「认证与令牌」principals 表新增 scopes 列与「编辑权限(按权限目录分组勾选)/
轮换密钥(一次性展示)」行操作;CLI credential list | scopes | rotate + create --scope 逗号多值;
工具 authn_credential_scopes / authn_credential_rotate。凭证丢失/泄露的补救从「重新注册 Agent」
变为「管理员一键轮换」。GET /api/authn/principals 与治理响应一律剔除 clientSecretHash。agent.verify):机器令牌调 GET /api/agents(list 与 get)在审计留痕
(auth 类、含 act 链)——接入提示词「发一句话即接入验证且平台留痕」成为事实;人类控制台读操作
不记录(噪音控制)。npm run selftest 445/445(新增 19 项:凭证默认含 usage.write 与机器令牌自推计量、
计量键不符拒绝/匹配路径计价不变/skill 事件含计价键、scopes 调整联动吊销/拼错与 * 混用拒绝/
轮换旧值即废/列表 hash 脱敏、机器读台账留痕与人类噪音控制)。SaaS 数据面网关(roadmap 第 9 步之二「连接器市场」执行缺口):元冰可=治理控制面,open-connector v1.4.0 sidecar=数据面 + 凭证保险库(AES-256-GCM)。能力零重叠强互补——不自研 provider 目录(1,000+ Provider / 10,000+ Action)、不自研 OAuth、不自研密钥库。
packages/plugin-connector:OcClient 版本锁定适配层(契约面单文件)+ ConnectorHubService。六个集合 connector:gateway|connections|catalog|permGroups|tokens|runs;强制 env fail-closed(OOMOL_CONNECT_ENCRYPTION_KEY/OOMOL_CONNECT_ADMIN_TOKEN 缺失即拒绝一切 invoke 并告警);30s 探活熔断。/api/connector/* guarded 路由段 + 5 个工具 connector_catalog_search/connector_connection_list/connector_execute/connector_perm_group_list/connector_run_list(REST 工具桥与 POST /mcp 自动暴露)+ CLI dshctl connector … 全树。oauth_client_config_required 带向导指引)/ API Key 表单过手不落盘(回显脱敏 slice(0,6)+'…')/ no_auth 虚拟登记;别名强制 org:<orgId>: 前缀;删除做权限组引用级联检查。connector.action.admin 单(批准后 executor 自动完成调用,同图 pending 复用);受控连接两段式 connector.connect(审批负载零凭证字段,approve 后携 approvalId 提交实际凭证)。usage.record(resource='connector:<service>', meter=calls, trace_id=meta.executionId, 幂等键=connector:<runId>),价格簿 connector:* 零费率起步;runs 按 runtimeTokenId 与 usage trace_id 交叉校验,「有 run 无 meter」即绕行 critical 告警;Idempotency-Key 写类自动生成(24h 重放窗口)。/mcp 经既有 POST /api/mcp/import 一键纳管(header x-bridged-from: open-connector 打「桥接过渡」徽章);治理降级语义显式声明(无 action 级授权/连接绑定/令牌镜像),仅用于连通性验证。connector.gateway.write/catalog.read/connection.read/write/invoke/permgroup.write/runs.read/market.publish(M3);内置角色迁移幂等补齐(resource_admin connector.*、developer catalog+invoke、auditor runs+connection 读);Agent 机器凭证默认 scopes 补 connector.invoke(存量一次性迁移)。#/connectors:网关设置(env 门禁预演探针可视化)/ 目录浏览(provider 卡片 + action schema & agent.md 预览 & riskLevel 徽章)/ 连接卡片墙 + 三形态向导(OAuth 授权页跳转+状态轮询)/ 权限组管理(JSON 策略编辑器 + 影响面预览「N 令牌/M 连接」+ 只读模板二次确认)/ 运行日志抽屉 + oct_ 台账(永不显示令牌值)/ 对账按钮。npm run selftest 新增 section 全绿(stub 覆盖 open-connector v1.4.0 全契约面,断言组 T-01~T-25/T-28/T-29 共 26 组)。对应开发计划 dev-plan-nas-authz v1.1(附件方案 + saas-permission-service 判定语义移植 + 网关强制点收敛)。实施说明全文见 docs/nas-authz.md。
NasAuthzService(plugin-nas,服务键 nasAuthz):判定引擎纯函数化(src/authz/engine.ts,无容器/无 IO,selftest 直接单测)——五步判定序:账号特殊规则(外部白名单只读/可疑标记 deny 转人工/挂根 deny/未落班组只读/兼任子树只读)→ 显式 deny(尾通配)→ 显式 allow(可过期)→ 角色矩阵 × 作用域边界 →