尧图精选

RuView Cognitum Spaces OAuth 激活实战:基于 `spaces:read` 的租户隔离语义投影只读访问

🕒 发布时间:2026/9/10 1:23:41 📁 来源:尧图网络
RuView Cognitum Spaces OAuth 激活实战基于spaces:read的租户隔离语义投影只读访问【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuViewCognitum Spaces 是 RuView 的租户级云侧空间语义投影sites / buildings / floors / spaces / zones / entities / events / alerts 八类版本化集合。本指南完整讲解如何通过wifi-densepose login --spaces显式激活 OAuth 只读能力通过npx ruvnet/ruview spaces与 MCP 工具ruview_spaces_list安全地分页读取这些语义状态并解释了为什么整个过程坚持只读、无 token、fail-closed的边界设计。读完本文你将掌握一条从 OAuth 授权到语义结果校验的完整可信读取链路。边界这是只读的 P2/P3 语义投影在使用任何命令之前先明确 Cognitum Spaces 在 RuView 架构中的角色。来自 skills/cognitum-spaces.md 的边界定义是整套操作的准绳只读语义投影这是 P2/P3 级的语义投影HomeCore Edge 始终是权威状态源云端只是它的投影不是第二传感器禁止字段原始 CSI、CIR、RF 张量、录制数据、姿态帧、生命体征波形、身份观测均被禁止出现在响应中spaces:read权限边界该 scope 不授予配对pairing、发布publication、写入、命令、策略审批、消费或执行器actuator权限授权副作用一次读取可能刷新即将过期的 OAuth 会话并原子性地轮换本地凭据文件——这是被明确披露且允许的认证副作用不增加任何云写权限。这套边界在 ADR-325 中被正式定义为单向、类型化的空间交换本地 RF 捕获P0/P1→ 语义观测P2/P3→ HomeCore 权威边缘状态 → Cognitum Spaces 租户/工作区投影 → RuView 有界只读客户端 → RuVector 租户级记忆与解释 → 建议 → 策略授权 → 可选执行动作。云端永远不成为独立佐证模态也不会出现反馈洗白feedback laundering。显式激活 OAuthwifi-densepose login --spacesCognitum Spaces 的 OAuth 激活必须显式完成普通感知登录不会静默获得云访问能力——授权服务器的客户端注册就是一个上限只有明确请求spaces:read才会放行。先安装或构建wifi-denseposeCLI然后请求额外 scopewifi-densepose login --spaces对于没有浏览器的终端环境如远程 SSH、CI 沙箱wifi-densepose login --spaces --no-browser激活完成后确认账户报告spaces:read然后通过 metaharness 进行列表读取wifi-densepose whoami npx ruvnet/ruview spaces npx ruvnet/ruview spaces --resource sites npx ruvnet/ruview spaces --resource events --limit 25其中npx ruvnet/ruview是 harness/ruview 中无运行时依赖的 RuView metaharnessREADME 的 Quick start 也给出了同样的激活与读取序列。--resource用于选择版本化集合--limit控制页大小--cursor用于继续上一页。OAuth 令牌的服务端一致性校验spaces:read不是随便一个令牌就能满足的。ADR-325 明确列出资源服务器对 OAuth 访问令牌的合取式校验条件任何一条不满足即拒绝校验项要求值签名基于https://auth.cognitum.one/.well-known/jwks.json的 ES256签发者issuer精确https://auth.cognitum.one受众audience精确ruview客户端声明精确ruview令牌类型普通accesssetup/workload 令牌拒绝生命周期exp/nbf有效仅允许五秒时钟偏差作用域令牌精确包含spaces:read租户绑定有效的非空 UUIDorg_id与workspace_id同时必须理解API key 不是 OAuth。COGNITUM_SPACES_API兼容环境变量中只存放 API keyOAuth 令牌绝不存入该变量也绝不打印、记录或提交。这也是下文 metaharness 会主动剥离该环境变量的原因。版本化集合与不透明分页八类版本化集合分别是sites站点、buildings建筑、floors楼层、spaces空间/房间、zones区域、entities实体、events语义事件、alerts告警。# 读取某一集合并控制页大小 npx ruvnet/ruview spaces --resource events --limit 25 # 用上一页返回的 nextCursor 继续分页 npx ruvnet/ruview spaces --resource events --cursor opaque-next-cursor分页规则有两条硬性约定只能使用返回的nextCursor继续游标是不透明opaque的不得自行解码、推断或跨集合复用--limit取值范围是 1–100默认 50见 tools.js 中ruview_spaces_list的 schema 定义与 spaces.js 的校验逻辑。--credentials-path只在人类主动调用时使用# 仅当有意使用非默认凭据存储时才在人工 CLI 中传入 wifi-densepose spaces --resource sites --credentials-path /private/ruview/credentials.json规则是绝不把 bearer token 或 API key 放到命令行上。--credentials-path指向的是一个本地凭据文件路径而不是密钥本身。在 MCP 场景中连这个参数都会被拒绝见下文因为凭据路径只能由服务端操作员通过环境变量绑定。通过 MCP 使用ruview_spaces_list默认拒绝ruview_spaces_list是 metaharness 暴露的 MCP 工具名CLI 动词为spaces。尽管云端操作本身是只读的它在 MCP 中默认被拒绝——因为它会消费本地身份凭据并联系外部服务。MCP 服务端操作员必须显式授予该能力并可在服务端环境中绑定凭据路径RUVIEW_MCP_GRANTScredential-use \ RUVIEW_CREDENTIALS_PATH/private/ruview/credentials.json \ npx ruvnet/ruview mcp start这一默认拒绝在 policy.js 中写死ruview_spaces_list: { class: external-read, readOnly: true, requiredGrant: credential-use, openWorld: true, usesCredentials: true, mayRefreshCredentials: true }。对应的授权逻辑authorizeTool会先检查 MCP 上下文是否携带credential-usegrant否则直接返回authority_denied测试 spaces.test.mjs 验证了这一行为。为什么 MCP 调用不能选择凭据路径MCP 调用无法指定凭据路径工具 schema 中没有token、API-key、工作区覆盖或 base-URL 字段。这是刻意的安全设计API origin 固定为https://api.cognitum.one源码常量DEFAULT_BASE_URL适配器要求已安装的wifi-densepose二进制而不会从自动检测的仓库执行 Cargo 构建脚本避免在持有凭据权限时运行未审查代码测试 spaces.test.mjs 专门验证了这一点子进程环境排除COGNITUM_SPACES_API因此该表面只能走 OAuth 路径无法静默退回兼容 API-key 路径。如果 MCP 调用试图传入credentials_path会得到credentials_path_not_allowed的失败结果并提示在 MCP 服务端环境中设置 RUVIEW_CREDENTIALS_PATH见 spaces.js 与对应测试 spaces.test.mjs。源码级纵深metaharness 如何独立复验语义边界当npx ruvnet/ruview spaces或 MCP 的ruview_spaces_list被调用时spaces.js 中的listCognitumSpaces会先构造 OAuth-only 的 CLI 参数spaces --json --base-url https://api.cognitum.one --resource kind --limit n [--cursor c] [--credentials-path p]随后把子进程 stdout 交给parseSpacesOutput做独立二次校验OAuth 在 Rust CLI 中完成适配器本身从不接收 bearer token 或 API key只在返回给调用方前重新验证已经被验证过的语义投影。核心校验包括体积/深度边界响应上限 2 MiB、JSON 深度 ≤ 16、节点数 ≤ 10 000、数组 ≤ 1000 项、对象键 ≤ 128、字符串 ≤ 4096 字节、资源 ≤ 100 条信封校验必须是{ object: list, data: [...] }结构若带版本信息则schemaVersion必须为1.0且kind必须在八类集合内并与请求一致边界声明boundary.authoritativeState必须为HomeCore Edgeboundary.excluded必须完整包含七个禁止字段raw_csi、cir、rf_tensors、recordings、pose_frames、vital_waveforms、identity_observations缺一即报incomplete edge privacy boundary禁止字段递归扫描FORBIDDEN_FIELDS集合对键名做归一化去除非字母数字、转小写后匹配csi、pcap、recording、skeleton、biometric、face等别名同样被拦截测试 spaces.test.mjs 与 spaces.test.mjs 覆盖了raw_csi与packet_capture两类注入身份与隐私类每条记录必须有合法idID_RE正则最长 120 字符与非空tenantIdprivacy只能是P2或P3版本化记录还需通过 UUID 格式的workspaceId、非负eventSequence、≥1 的version、可解析的observedAt/expiresAt时间戳层级完整性floors必须有buildingIdspaces必须有buildingIdfloorIdzones/entities/events/alerts必须有spaceId缺父级即失败类型化合同entities的entityType只能是sensor/person/object/track其中person与track的identityMode必须为anonymousalerts的severity只能是info/warning/criticalstatus只能是open/acknowledged/resolvedconfidence 校验必须是不小于 0 且不大于 1 的有限数值游标校验nextCursor最长 512 字符且不含控制字符。任何畸形、超限、非语义或含原始字段的响应都会fail-closed——返回invalid_spaces_output而不是静默放行。commandFailure还会把错误详情中的 API key 与 JWT 形状的令牌脱敏为REDACTED测试 spaces.test.mjs。这套双重验证Rust CLI 一次 metaharness 一次正是 ADR-325 定义的纵深防御客户端独立拒绝禁止字段名是服务端投影之外的补充防线而非替代品。诚实地解释结果读取是容易的正确地解读结果才是关键。原 playbook 的最后一部分强调空data列表可能是合法结果对一个已认证的租户来说空列表证明的是读取路径与隔离行为工作正常而不是感知质量好或坏。ADR-325 的生产证据2026-08-18明确记录当前账户没有配对站点因此认证后的结果就是一个空列表而不是虚构的样例状态每个被接受的响应都必须声明 HomeCore Edge 为权威并携带完整的禁止字段列表独立校验项父级血缘parent lineage、schema 版本、匿名 person/track 身份、event/alert 字段、confidence、游标边界——每一项都独立检查fail-closed任何畸形、超限、非语义或含原始字段的响应都直接失败宁可拒绝也不降级放行。这套诚实读取哲学与 ADR-326 一脉相承空间记忆按(tenant_id, workspace_id)精确分区先分区后相似度检索不存在全局 ANN 查询explain明确声明相似不是因果。云端投影永远只是上下文不能授权任何动作。相关资源与继续深入skills/cognitum-spaces.md本 playbook 原文档src/spaces.jsmetaharness 的 Cognitum Spaces 适配器参数构造、环境剥离、边界复验test/spaces.test.mjs覆盖 OAuth-only 参数、MCP 授权拒绝、禁止字段、游标与脱敏的测试套件src/tools.jsruview_spaces_list工具注册与 schemasrc/policy.jscredential-use最小权限策略src/mcp-server.jsMCP stdio 服务端与RUVIEW_MCP_GRANTS解析harness/ruview/README.mdmetaharness 总览与快速开始docs/adr/ADR-325-cognitum-spaces-activation-and-governed-spatial-exchange.md激活、租户隔离、隐私边界与威胁模型的完整决策记录docs/adr/ADR-326-tenant-scoped-ruvector-spatial-memory.md租户分区空间记忆与解释的下游设计。实践上你只需要记住三条主线显式激活wifi-densepose login --spaces→经 metaharness 读取npx ruvnet/ruview spaces/ruview_spaces_list→诚实解读空列表 ≠ 感知质量fail-closed 优先于降级放行。这样你就拥有了一个不接触任何 bearer token 或 API key 的、租户隔离的只读空间语义读取链路。【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →