Astra 独立交叉初审:DSH 课程¶
审查者:Pi 课程作者,独立审查另一位作者的 DSH 正文与实验。日期:2026-10-04。没有以作者自查 PASS 为结论依据,也没有修改 DSH 正文或实验。
初审结论:需修正三项 P2 图语义问题。主教学链、固定版本与已执行离线实验未发现 P0/P1 阻断;这里的结论不代替最终网站、下载包和收费模型验收。
问题¶
| ID | 级别 | 位置与读者困境 | 实际源码证据 | 所需修正 |
|---|---|---|---|---|
| XPI-01 | P2 | 10.1 图将 ctx.shell / ctx.terminals / ctx.lsp 合为 Shell 节点,再实线连接 sandbox.confine;读者会据图认为 LSP 进程也自动经过 confinement,与 10.10 正文相反 |
da00 packages/lsp/lsp-stdio/src/connection.ts:84–103 直接调用传入的 subprocess spawner;该路径没有 confine |
拆出 LSP 的直接 subprocess 路径;shell→confine 标明是 sandbox consumer 的路径 |
| XPI-02 | P2 | 24.1 图在没有 assistant settlement 时只引向 route/key/transport/SSE,漏掉首个 pre-step 拒绝;学生可能改模型配置而非查实际 gate | da00 packages/core/agent-loop/src/agent.ts:313–334 先调用 preStep,reject 立即以 blocked 结束,不创建 step/start、不请求模型 |
缺 settlement 时先判 turn/end、blocked/取消/空消息等无请求结局,再走尚未结算的模型路径 |
| XPI-03 | P2 | 8.5 图把 approval.request 的所有结果连到 monotonic guards,掩盖审批拒绝的直接结果路径 | da00 packages/core/tools/src/index.ts:1508–1535 serviceAsk 后 cancel 直接 post-result;仅 allow 执行 guardReason,deny 直接产生错误 |
审批允许→guards;拒绝/取消/unavailable→normalized error |
三项均已逐项发给作者与整合者。正文相关说明本身正确;修图即可,不需要为文案增加镜像测试。
独立执行证据¶
将 examples 的可分发输入复制到 /tmp/dsh-cross-pi,排除 node_modules/dist/artifacts/.venv/pycache,从头运行 npm ci --ignore-scripts、npm run check、npm run build。安装、类型、构建通过。npm 报 16 项依赖问题(7 moderate、9 high),与正文披露一致,没有运行 audit fix。
首次测试执行中 Node 20 项通过;我误指定的不存在 Python 环境导致 Python 那项 ENOENT,不能记为框架或正文失败。按正文建立环境时系统 python3 缺 ensurepip;正文已经提供 uv 替代。用 uv venv --clear .venv 与锁定 requirements 安装,再运行 Python 专项,通过。全部 21 项均实际运行通过;没有把初次 20/21 写成全绿。
另外逐一执行 checkpoint 0–5,获得真实 CLI/SDK/HTTP fixture 产物:
| 阶段 | 实际 HTTP 数 | runtime reason | taskStatus | 关键事实 |
|---|---|---|---|---|
| 0 | 1 | completed | runtime-only | 没有证据与引用 |
| 1 | 3 | completed | answered-with-evidence | 搜索摘要→读取全文→固定答案 |
| 2 | 3 | completed | answered-with-evidence | 替换 JSON provider,consumer 不变 |
| 3 | 3 | completed | insufficient-evidence | call-2 被拒;下一请求无全文 |
| 4 | 2 | blocked | budget-exhausted | evidenceRead=true,仍无合格最终答案 |
| 5 | 3 | completed | answered-with-evidence | 关闭后官方 JSONL provider 读到 25 个逻辑事件,逐 seq 等于 SDK 事件 |
3/4/5 在 checkpoints.ts 确实分别从 2 的 JSON provider 基线改变政策、预算、保留 home;没有把前一步限制累计下去。fixture 核对具体 tool_use_id 与实际 tool_result,而不是直接 mock SDK 返回预写答案。测试也执行错 callId 的 HTTP 400 反例。
审查依据与范围¶
独立阅读 README、index、01–26 的讲授正文、所有 Mermaid 声明、examples 所有 TS 源与测试、Python 入口/依赖/来源记录及 SDK 运行收集路径。23 的大表作为自动索引核对,不将目录出现或全文指纹当作逐个上游文件语义审查。
独立回到 da00 核心源码核对 Agent pre-step/attempt/settlement/tool scheduler、Tools gate/审批/输出链、SDK 三方法/create/先订阅后 prompt 的运行区间、Session checkpoint 与 JSONL close/drain、MCP generation swap/reconnect,以及小模型 compaction 算式。Python 五文件来源与最新发布脚本增量另在最终复验中逐字节核对。Pi 对照按 1.0.1,不混入旧 MCP/CodeMode 能力结论。
教学判断基于具体学习动作:18 先跑最小入口;同一笔记任务有预览与全文的信息增量;19 将每 turn 步数和业务完成分开;20 对照三次真实请求的 callId、内容与 Session 事件;03 用卸载/重挂解释 effect;16 区分原始事实、surface、索引与冷读;21 按相同应用变更比较维护责任。高级模块保留设计选择和未执行边界,没有将目录数量当作教学质量。
未执行收费模型、真实云 API、远端 OAuth/MCP/SSH、Electron/浏览器/电脑/语音服务、生产 Teams、Windows/macOS sandbox、断电/kill-9/任意旧格式迁移、完整上游测试。网页实际 SVG/搜索/部署/公网 ZIP 由整合者另验,不纳入本交叉审的运行 PASS。