基于产品交付包《Star_AI 决策智能高保真 Mock v0.1(2026-08-22)》全量源码深读(10,523 行 / 6 组件 / 4 套 fixture),对照 raixis-desktop 基座现状,给出功能全景、三大自研引擎、三条可自选的任务线与里程碑。
这个产品不是"聊天生成报告",而是一台事件驱动的决策案卷状态机:Agent 的一切产出都是带类型、带状态、带来源的案卷对象,直接长在最终交付物的位置上;人只在少数责任关口(Gate)签认;世界变化后只重开受影响的对象,不整案重跑。
交付包自述:这是 V3/V4 时期反复迭代形成的历史高保真 Mock,不是当前 V5 产品定义的实现基线;混合了多个时期的交互假设,接手前要先识别哪些组件仅用于复盘、哪些能力仍有复用价值。全部状态为组件内 useState、零持久化——它是交互契约与验收标准,前端要按真实数据流重写,不能增量改造。
canonical-case-a-fixture.ts(720 行)为唯一权威数据模型:23 种对象类型 × 14 种关系 × 9 种状态 × 7 种 mutation 原语 + 纯 reducer + 一致性校验器。这份类型层就是可落库的领域模型草案,mutation 流就是 Agent→UI 的增量契约。StrategicDecisionDemo 是孤儿代码(无任何文件 import),它是 V4 引擎的前身。价值只有两点:frame 1 的「上桌」输入面是最完整的输入面参考;14 帧叙事顺序可直接当「战略选择类 Case」的验收脚本。不要移植它的代码。整个产品可以压缩成四层状态机,所有界面都是它们的投影。这四层也是服务端 schema 设计的直接输入。
Case = 冻结的输入快照 + append-only 事件流。事件携带 mutation 原语(upsert/patch 对象、加关系、改资源态、设 Gate、设 Checkpoint)。snapshot = fold(事件流),任意时点可重建——回放、审计、Fork、局部重开是同一机制的四种用法。
Agent 不产出聊天卡片,产出带类型的案卷对象(观察/矛盾/假设/测算/结论/选项/阈值/建议/决定记录…),直接落到最终交付物的对应章节。生命周期 draft→forming→candidate→verified/contested→accepted→superseded,版本只增不覆盖。
对象类型 ↔ 渲染表面一一对应(22 种 Surface:阈值尺、矛盾叉、解释轨、证据编织、选项台账…)。页面永不整体替换:新内容原位显影,旧矛盾留在案卷里,镜头只移动焦点。机械活动折叠在事件轨,正式对象在右侧成形。
唯一能阻塞状态机的东西。local Gate 只暂停依赖它的一条工作前沿,其余照跑;global Gate(正式决定)停全案——"Agent 可以准备依据,不能代替签署"。裁决人、理由、依据版本进不可覆盖的 Decision Record。
只有四类事件打断人,其余一律自己往前跑、把摩擦如实显示:①口径/标准定义(什么算"真实需求"——机器无权定义业务口径);②正式决定签署(责任不可转移);③高影响现实动作授权(按可逆性分级:可回滚走规则内自动通过,高影响必须指定授权人,越界动作被策略引擎主动拦截并缩小范围);④组织规则回写(学习成果限范围 + 30 天试用 + 到期自动结算,Case 不得静默改变组织规则)。
六大模块 · 每项标注它背后真正要做的服务端能力。「装饰」= Mock 里的演示装置,不进产品。
| 模块 | 功能点 | 背后的真实能力 |
|---|---|---|
| 案卷主线 产品核心 |
上桌 Intake:材料引用不复制、一键优化要求、上桌/直接交代/现成办事三档路由、边界条 | 资源引用表 + 权限预检;决策需求补全 Agent(补齐选项/投入边界/升级退出条件);意图分诊器 |
| 观察面 / 矛盾叉 / 竞争解释轨 / 仍需查明 | 抽取式观察(无源陈述禁止);跨源口径冲突检测;假设管理(互斥可证伪 + 支持度由证据边计算);信息需求按 VOI 排序 + 停止规则 | |
| 测算与预测:指标瀑布 + 三档情景带 | 口径重算引擎、单元格级血缘(点 29.1% 回到 Unit Economics!F18)、参数化情景(禁止 LLM 编数) | |
| 结论层:证据编织 → Finding → Judgment 证明结构 | 证据准入带用途范围(scope_limit 防过度引申);晋级门槛;双向血缘闭包查询 | |
| 选项台账 / 阈值尺 / 条件建议 / 决定记录 | 不行动基线强制在场;建议必须带升级+停止条件(硬校验);阈值=长期活监测器;Decision Record append-only + 证据截面快照 | |
| 变化脊柱:Checkpoint / Material Event / Impact Set 局部重开 | 见 §05 引擎三——产品护城河 | |
| 工作区外壳 | 租户/项目上下文、待我处理、运行中、刚刚改变(Delta Spine) | attention 队列(关联具体对象锚点 + SLA + 角色路由);run 注册表 + 实时进度;判断变化的写入时因果记录(不能事后编) |
| 项目目录 + 新建项目(项目说明 + 持续项目记忆开关) | 项目级提示词注入;记忆管道走「候选→人工确认→生效」三态,不许自动写入 | |
| 全局搜索 ⌘K、通知 | 跨对象统一检索(项目/证据/产出物/运行/决策对象)带权限过滤 | |
| 报告生产 | 受约束目录脑图:章节拖拽排序/升降级、素材投放到章节 | 大纲版本化;素材指定=写作作用域约束(该章只能用指定素材+全局已核验证据,落在 prompt 组装层);改序增量重写 |
| 章节核验 + 整稿预览 + 委员会 Deck | 页级核验(数字→来源反查/结论→反证/图注确认);Deck=同一决策状态的另一投影(每页保留来源脚注) | |
| 发布门 | 版本/受众/敏感材料/引用/版式五项预检,Issue 清零才可发布 | |
| 文件预览中心 | 六型原生预览:REPORT/PDF/PPT/XLSX(公式栏+来源列)/AUDIO(波形+转写+Agent 标记)/DASHBOARD | 六种服务端渲染;版本快照不可覆盖 + diff + 审批;反向引用索引(此文件被哪些章节/判断使用) |
| 谱系 Inspector | 原始材料→提取计算→当前产物的三级血缘链 | |
| 能力中心 | 连接器目录 + 自定义 MCP 接入 | 真 MCP client(streamable HTTP/SSE × 4 种鉴权)+ 网络出口策略服务端强制;授权到期监测 |
| 凭据保管库 | 信封加密(复用 star_ai enc2)+ 按作用域即时下发短效凭证 + 使用审计;凭据绝不落客户端明文 | |
| Skill 卡片库 + 文件工作台 + 固定测试 + 版本发布 | Skill 包存储、草稿/发布双轨、固定测试集沙箱执行器、发布三项检查;SKILL.md 是注入面,入库必扫 | |
| Skill 任务模式创建 + AI 应用表单 | 结构化追问 Agent(场景/输入/步骤/停止条件/成功样例五槽位)+ 历史案例自动试跑;应用=表单 schema+固定 instructions 的模板化 run,不是第二套运行时 | |
| 租户治理 | 成员/角色/数据边界/能力授权/审计 | 多租户 + RBAC + 数据域硬闸(敏感域禁止 Agent 访问必须在数据访问层强制)+ 人与 Agent 同表审计 |
| 结果与学习 | 执行舱回执 / 持续监测 / 双账本结算 / 学习回写 | 两阶段提交动作批次(dry-run→授权→执行→回执/回滚);预测事前冻结到期自动结算(反事实不判真);决策质量与预测准确分开记账;规则限范围试用+到期结算 |
已判定为演示装饰、不进产品:自动播放器与倍速、tick 手动步进、全部硬编码数字(健康环 92 分、假设强度 72/43/81、贡献账本 118+71+42…)、假过滤按钮、假上传 dropzone、伪造波形与恢复曲线、所有只弹 toast 的按钮。但 narrationCue 里的每句话是验收标准不是注释("300ms 内出现工作脉搏""页面没有被替换""不是整案重跑""侧问不污染主流程")。
raixis-desktop(main @ f8707a9)PRD 阶段一、二已全部落地。下面是与新需求直接相关的已建成能力与扩展点。
| 已建成 | 对新需求的意义 |
|---|---|
| WS 反向工具桥 生产级 | 协议是单一事实源(PROTOCOL_VERSION 强握手),新增「决策对象/事件流」消息族=加联合类型变体,编译期穷举检查,不动桥本身。64KB 上行截断是能力边界:需要全量数据的判断必须本机算出摘要再上行 |
| 会话持久化 + restore 真续跑 + compact | Checkpoint/收桌恢复的客户端基础已在;但「连接即会话、服务端无持久化」必须改(见缺口) |
| star_ai 登录(OAuth 回环 PKCE)+ 积分实扣 | Gate 签认的身份绑定、Case 级计费直接复用;幂等上报出口已收口在 billing.ts |
| 审批三档 + diff 弹卡 + 注入防护 S9 + 风险扫描 | 「高风险动作必须人工确认」的完整基础设施——决策类动作(发布/写回业务系统)复用这套弹卡,不新造确认 UI;风险判定留在 Rust 层的纪律一起继承 |
| 文件面板体系(多标签/版本驱动刷新/9 类渲染器) | 把面板 key 从「文件路径」泛化成「对象 URI」(decision:// dataset:// chart://),零重构接入决策卡/指标看板/假设树 |
| 托管 Python(uv sidecar)/ 表格编辑 / 产物探测 / ASR / 写前备份 / 自动更新 | 数据分析执行面、语音补充、产物 chips 全部现成;产物需从聊天附属字段升级为一等产物库(artifactsIndex) |
可直接复用 star_ai 侧资产:事实闸/溯源徽章 → 章节核验与来源反查;enc2 信封加密 → 凭据保管库;导出工具链(pandoc/libreoffice/CJK 字体)→ 报告与 Deck;QA map-reduce → 整稿核验;ECI 沙箱模型 → 高危动作隔离执行;飞书通知 → Gate 待办与阈值告警。
除去可复用部分,真正必须从零自研的核心只有三块。它们决定产品成败,也是三条任务线的技术锚点。
append-only 事件表 + 7 种 mutation 原语落库 + snapshot 物化与定期 checkpoint + 任意时点重建 API。三个 fixture 已暴露的坑必须在 schema 期解决:① patch 找不到目标直接 throw——真实多 Agent 并发 + 网络乱序必炸,要幂等 + 乱序缓冲 + 死信;② object.version 无并发控制——要 OCC(读版本 CAS 写);③ 关系失效路径完全没设计(relation.state=superseded 定义了但 720 行从未用过)——结论被推翻时支撑它的边如何级联失效,是重开引擎的第一个坑。
scope 分级挂起(local 只 pause 依赖前沿,需要依赖 DAG)、通知/超时/代理人、裁决留痕进 Decision Record。最大认知陷阱:Mock 里每个 Gate 选项预置了完整后果(选"严格口径"→14 家变 3 家),真产品绝不能照抄——结果必须由裁决后重新调度 Agent 真算。但 UI 又承诺了选项旁的后果预览,所以需要影子 dry-run:在不落库的 shadow snapshot 上试算每个选项的影响面,成本与延迟要提前评估并设计降级(先给"预计影响 N 个对象",点开再细算)。低估这一点 Gate 体验会塌。
外部变化 → 材质性判定(是否命中某对象的 sourceIds 或某阈值的输入)→ 沿关系图反向闭包算最小重开集合(带可解释路径)→ 只把受影响对象置 contested/superseded 并局部重算,其余 verified 保持有效 → 原位 diff 修订 + supersede 链。这同时是成本控制手段(不整案重跑 LLM)与产品差异点("你离开后发生了什么")。建议单独立项先做 spike,验证传播算法的可解释性与性能。
按产品架构切成三条边界清晰的线,与此前开源研读的三条线一一对应——不指定谁负责哪条,三人自己选;原则上每人主责一条、通晓三条。接口契约 = canonical fixture 的类型层 + 桥协议扩展,三线之间不需要开会定接口,照契约做。
合并两套事件模型为 canonical 一套(lane/actor 补进事件);对象 schema + mutation 协议定稿并进 packages/protocol;App.tsx 拆面板注册表;A/B/C 三案 fixture 全部改写为 canonical mutation 流。schema 和事件模型定错了后面全推倒——M0 不赶工。
单 Case 端到端:上桌冻结 → 事件流/对象图 → 原生表面子集(观察/矛盾/假设/测算)→ 来源锚点点击回原文 → 并行 work_front。先 fixture 驱动跑通契约,再接真 Agent。
Gate 引擎(local/global + 影子 dry-run)、动作批次两阶段提交、Decision Record 不可覆盖存证、待我处理工作流。
常驻监测器、Material Event→选择性重开、双账本结算、学习回写试用闸。能力中心与报告生产在线 C 内跨里程碑并行推进。
验收脚本:StrategicDecisionDemo 的 14 帧叙事(战略选择类)+ Case B 的 13 镜头(经营异常类)+ narrationCue 全部断言。
Mock 没有回答、动工前必须由产品/技术共同钉死的问题。
| # | 待决问题 | 背景 |
|---|---|---|
| Q1 | V5 基线裁定:哪些组件仅复盘、哪些进一期 | 交付包自述是 V3/V4 历史 Mock;B 案「动作授权+ERP 回执+30 天结算」、C 案「复核台 Issue 清零才可预览」在 V4 组件里没实现但文案已承诺,进不进 V1? |
| Q2 | 报告大纲编排两版合并成哪版 | DecisionApp 版有层级/无障碍;SurfaceLab 版有同屏可编辑预览。取并集还是取一 |
| Q3 | 「上桌 / 直接交代」轻重两模式的产品定义 | Mock 里按钮只改样式;research/decision 两类 intake 无产品,只有 task 链路是真的 |
| Q4 | Task 执行中发现异常如何派生新 Case | 硬约束写了"单独升级不许埋掉",但 fixture 无任何「Case 派生 Case」mutation;建议复用 material_event 链路 spawn 子 Case |
| Q5 | Gate 后果预览的成本策略 | 影子 dry-run 全算 or 降级(先给影响对象数)?弹卡等待时长的预算 |
| Q6 | 对象内补充说明(ObjectComposer)是否触发重算、是否需审批 | Mock 未回答;不定义就是留言板 |
| Q7 | 关系失效级联规则 | 结论 superseded 时其支撑边如何失效——fixture 完全没设计 |
| Q8 | 租户模型的范围 | 一期是否真做多租户 + 数据域硬闸,还是先单租户留 schema 位 |
| Q9 | 「完整性分 92」这类合成分数的口径 | 建议降级为确定性计数(N 项待处理),不造说不清的分数 |
| Q10 | 侧问 token 的计费口径 | 隔离侧问单独计量但不污染 Case 成本口径——账本维度要先定 |
工程纪律:fixture 即契约(改契约先改 protocol 包再改两端);遗留问题一律进 star_ai ledger;生产只合 main;每条线的 PR 按仓库 PR 模板写。