跳转至

Domain Scope Eval:个人/部门/项目私域隔离实验

结论

本轮实验验证的是架构风险,不是检索速度。

当前结果:

  • Case 数:7。
  • 通过数:7。
  • 覆盖 scope 类型:department、personal、project。
  • 风险探针数:4。
  • stale index 阻断数:2/2。
  • archived project lifecycle 过滤数:1。
  • Context Router score log case 数:7。
  • Context Router scorer:domain_router_feature_v1
  • Context Router feature score candidate 数:24。
  • Context Router 权限过滤库数:10。
  • safe output 泄漏标记数:0。
  • Tool Gateway 过滤的不安全候选输出:9,其中风险探针贡献 6。
  • Ontology contract case 数:3。
  • Ontology 覆盖 scope 类型:department、personal、project。
  • Ontology object/rule/action/writeback event type 数:7 / 5 / 7 / 3。

这说明当前 Framework 已经可以用同一套 topology、permission view、lifecycle、SearchConnector 和 Tool Gateway 同时服务个人、部门、项目三类私域 demo,并阻断故意不安全 connector 造成的越权、归档和 stale index 输出。

本轮也把外部 Palantir 本体论参考推进成最小可测契约:三个基础 demo 都显式引用 object、rule、action 和 writeback event type。它们不再只是文档概念,而是进入 domain-topology.json、topology lint 和 Domain Scope Eval 输出。

运行命令:

bash python scripts/domain_scope_eval.py --write-report

结果文件:

  • vault/50-outputs/domain-scope-eval-results.json
  • vault/50-outputs/domain-scope-eval-analysis.md

实验设计

实验使用合成组织拓扑:

  • 个人域:员工入职与首次报销。
  • 部门域:财务部门报销政策。
  • 项目域:当前 OrgReOrg Framework MVP。

在 3 个基础场景之外,本轮新增 4 个风险探针:

  • 跨部门项目:项目维护者不能因为“跨部门协作”默认继承财务和个人上下文。
  • 员工调岗:旧部门或旧岗位的 stale index 不能继续被当前个人任务读到。
  • 项目归档:归档或 superseded 的项目上下文默认不能参与当前回答。
  • 权限变更:权限收回后,即使索引里还残留旧材料,也必须被运行时授权阻断。

为了暴露风险,实验没有假设底层 connector 完美安全。LeakyDomainConnector 会故意:

  • 忽略请求中的权限 scope。
  • 返回候选库里的越权文档。
  • rank_log 中塞入候选上下文库 ID、source URI 和 owner。

然后由 Framework 层处理:

text domain-topology.json -> routing rule 生成候选上下文库 -> route_domain_context 用 feature-based scorer 生成候选库评分、命中原因和 trace_log -> permission view 过滤最终可调用库 -> SearchConnector Tool Gateway 检查 allowed_scopes -> lifecycle 过滤 archived / superseded context -> gateway 后置过滤越权 evidence -> safe_rank_log 清洗 rank_log -> safe output 返回给 Agent

Case 明细

Case 类型 风险 最终选择 返回库 Ontology Gateway 过滤 Lifecycle 过滤 结果
personal-onboarding-reimbursement personal base_scope personal_employee_ops, org_directory org_directory, personal_employee_ops obj=2, rule=1, action=1, writeback=1 1 0 pass
department-finance-policy department base_scope department_finance_ops, org_directory department_finance_ops, org_directory obj=2, rule=1, action=1, writeback=1 1 0 pass
project-framework-development project base_scope project_orgreorg_knowledge, org_directory org_directory, project_orgreorg_knowledge obj=3, rule=2, action=2, writeback=2 1 0 pass
risk-cross-department-project project cross_department_project project_orgreorg_knowledge, org_directory org_directory, project_orgreorg_knowledge - 2 0 pass
risk-employee-transfer-stale-index personal employee_transfer_stale_index personal_employee_ops, org_directory org_directory, personal_employee_ops - 2 0 pass
risk-archived-project-filter project archived_project project_orgreorg_knowledge, org_directory org_directory, project_orgreorg_knowledge - 1 1 pass
risk-permission-change-stale-index project permission_change_stale_index project_orgreorg_knowledge, org_directory org_directory, project_orgreorg_knowledge - 1 0 pass

每个 case 都故意把越权、归档或 stale index 材料放进候选集。最终 safe output 没有泄漏 forbidden context library id、source URI 或 marker。

得到的 Insight

  1. domain/ 必须按组织拓扑组织,不能只按“当前项目资料”组织。
  2. 路由可以“看见候选”,但最终调用和输出必须受 permission view 约束。
  3. Tool Gateway 需要支持 person:*dept:*project:* 这类 namespaced scopes。
  4. rank_log 也属于潜在泄漏面,不能原样返回候选 ID、source URI、owner 或 debug note。
  5. 项目域不能默认继承部门所有上下文;跨部门项目必须显式声明上下文库和权限视图。
  6. stale index 不能只靠删除传播兜底;员工调岗、权限收回、项目归档都要求返回前按当前 permission view 和 lifecycle 二次过滤。
  7. route_domain_context 已升级为 domain_router_feature_v1:评分不再只看关键词,而是组合 lexical overlap、关键词短语、task binding、source path、scope signal、permission scope、ontology binding、lifecycle 和 unknown topology penalty。
  8. ontology contract 需要进入测试和 lint,否则 object / rule / action / writeback 容易停留在口号,不能真正约束 Agent 行为。

下一步

  • 用真实团队问题和人工纠正日志校准 domain_router_feature_v1 的 feature 权重。
  • 把风险探针里的合成 stale index 替换成真实 adapter 的删除传播、重建延迟和权限变更事件。
  • 把 permission view 从 JSON 合约推进为可审计策略和运行时授权检查。
  • 后续如果接 embedding 或 learning-to-rank scorer,必须保持同一 permission view、feature trace、trace_log 和 Tool Gateway 边界。