独立审查 B:C 作者四章与发布版实战¶
审查员为 B 章节作者;本报告审查其他作者的 14/15/16/17,不把本人 04/09/10/11/12 自查计作独立验收。基线 main da00f7f5358f2949383b35c14f548bc20187d80c,发布 639ed015397290b3745d163aafe02ffee4aa3f84 / 0.2.0-rc.2。
初审状态:暂不 PASS。14.2 有一个必须澄清的 SDK fallback 配置边界;15.8 的错误工具名已经在审查期间由正文维护者修正并重新核对。18/19/20/26 尚未写好时不假定其正确,待续审。
源码实证的问题¶
B-C1 · P1 · 错误的模型工具名(现已修正)¶
初读 docs/15-ui-and-api.md §15.8 标题和正文称 present_files。两个冻结快照均在 packages/deliverables/tool-present/src/index.ts:38 注册 name: 'present';错误的调用名会让读者的程序无法解析工具。必须将 API 名统一为 present,不把其他产品的工具命名带入 DSH。
再次读取该节(当前行 147/155)已为 present;本审查员没有修改正文。已独立复核源码 execute/result 路径:maxFiles schema 默认 8、建议描述 4,成功 tools/result 后追加 deliverables/presented,记录路径而不是复制附件,这些正文结论相符。此项 RESOLVED。
B-C2 · P2 · sdk-minimal 的模型缺失说明漏掉官方 fallback(待修正)¶
位置:docs/14-sdk.md §14.2 末段,当前行 37:“选择 minimal 后,缺失模型适配器、附件服务或工具是配置缺失”。
证据:packages/sdk/server/src/server.ts:151–158 的 initialize() 检查已注册 provider;未注册且不是 deepseek-official 才 throw;未注册的 deepseek-official 会动态 ctx.plugin(LlmDeepSeek),再在该服务上 resolveCallConfig。文件 import 表确认 LlmDeepSeek 指向官方 API-key plugin。rc.2 具有同样流程。
精确修正:明确这个官方 route 的 fallback 例外;其他未注册 route 仍失败,fallback 不自动补齐附件、工具、凭据或所有缺失服务。保留“SDK 不是通用插件安装器”的结论,但不要把官方 adapter 未显式挂载描述成必然配置失败。
独立核对通过的源码边界(限定范围)¶
| 章节 | 实际连续阅读的重点 | 本轮结论 |
|---|---|---|
| 14 | sdk/client 的 launch.ts、api.ts、dispose.ts;client.ts 的请求/订阅/关闭;sdk/server/server.ts 初始化/创建/分派;python/sdk api.py/client.py 配置映射与运行收集 | 三请求协议、TS env 完整替换/Python env merge、惰性 TS session、活动区间收到 inbox 后到根 idle、request timeout 不等于 run 总预算、SDK 无冷恢复、close 终态均相符;官方 fallback 需补 |
| 15 | client/connection index.ts、api-request-trust.ts、browser-auth.ts;gateway prepareInvocation;session-controller agent/history/media;tool-present;ACP initialize/method分派;Desktop生命周期调用段 | API trust/auth 区分、authority cookie 无 Secure 属性、媒体文件访问非 Session attachment 围栏、冷读不激活与 resume、ACP once permission 控制均相符;present 名已修 |
| 16 | JSONL config/create/open/storage.ts append/drain/close;lease.ts;index.ts appendLines/rollback;checkpoint-policy;format filename/chain/generation;storage-domain spec/domain;sqlite schema/unit;query-sqlite schema/reconcile | V4/业务 schema1/派生 schema8 分开、首次物化、fsync 与 seq推进、无 TTL 写锁、不删除锁文件、失败回滚、旧generation保留、索引防误删均相符 |
| 17 | user-approval 请求/never;user-questions ask/answer/timed;plan-mode 状态与 exit consumer;schedule 工具/domain/runtime;webhook runtime/handler;credentials-local优先级/写;authorization begin/commit;auto-review gate与卸载;speech API | 一次授权、无人回答不批准、计划模式非文件沙箱、schedule receipt非任务成功、Webhook内存分派非队列、credential与认证分离、Auto卸载改fullaccess限制披露均相符 |
四章 101 个不可变源码 URL 的文件路径与行号范围检查通过,引用定义无缺失,代码 fence 配对通过。main→rc.2 SDK/Python 源码实现差异检查没有变更(只有 SDK README 改动),所以 14 开头的实现一致性描述成立。
未验与下一轮¶
本轮不声称测试过真实云模型、WebBrowser登录端到端、Electron/macOS/Windows、断电文件系统、SenseVoice或真实OAuth。源码核对不能代替这些平台验收。未修改被审正文。
下一轮在 root 的 18-own-plugin.md、19-own-agent.md、20-sdk-labs.md、26-version-delta.md 到齐后,独立检查 published rc.2 exports、examples 源码与锁文件、模型 SSE fixture、版本差异、所有实战执行/通过的陈述。B-C2 修复后再重新裁决 14/15/16/17,而非把本报告的待修事项默认为 PASS。
修正后续验与 root 实战初审¶
B-C2 已由 C 作者修正:重新读取14.2,明确官方 deepseek-official fallback及不会补齐其他能力/凭据;对照main/rc.2 server.ts初始化分支,RESOLVED。14/15/16/17本轮限定源码/API审查 PASS(不包含上述未实际测试平台)。保留前文初审问题与暂不PASS历史,避免伪装首次就无错误。
root18/19/20与examples各source/test已读;发布版API正确性重点为:命名sdk-minimal+overlay、baseURL字段、public DeepSeekHarness启动、TS环境替换、模型仅两个工具、真实permission/step边界、Python env merge的外层白名单、JSON输出类型与原样vendor版本。
B-R1 · P1 · Python源码链接路径不存在(待修)¶
20.4 “[rc.2 Python SDK]”链接写 packages/sdk/python-sdk;冻结tag真实目录为 python/sdk。请只修链接路径,commit仍保持639ed015。不是把main目录猜成tag目录。
B-R2 · P2 · offline-demo输出描述与实际程序不符(待修)¶
20.3称offline-demo打印“sessionId、finalResponse、requests、tools、end reason”。实际src/offline-demo.ts的console.log只打印finalResponse及 {requests,eventTypes,sessionId},没有tools或end reason字段。修正文列真实输出,或者真正修改代码并重新编译/打包/验收;审查员不替作者更改交付行为。
B-R3 · P2 · 连续两轮测试与demo主体混淆(待修)¶
20.3“此例顺序run,第二轮带first.sessionId”在offline-demo中没有第二次run。该行为在test/sdk-runtime.test.mjs的“同一runtime/session跨run继续”用例中真实存在。请明确这是集成测试,避免读者在demo找不到第二轮。
独立实际运行¶
本审查员执行 node --test --test-concurrency=1 test/sdk-runtime.test.mjs:6/6 PASS,6298.278994ms。它真实启动rc.2 dsh/CLI/SDK,分别验证3HTTP+2tool+V4日志、未知bash无文件副作用、步骤预算阻第3次请求、两轮上下文继续、目标AGENTS/SYSTEM未注入、401 error结算。
另外执行 node --test --test-concurrency=1 test/contracts.test.mjs:11/11 PASS,388.991ms,覆盖组件生命周期、provider替换、domain validation、pre/post gate、output schema、取消、await gate、不可变快照。只读测试样例源码后运行其实际断言,没有付费调用。
Python vendor的五个文件已逐字节比对release/python/sdk/src与SOURCE.json SHA256,一致。尚未由本审查员运行Python fixture;其他审查员/作者的Python通过不能冒充为本人证据。
26尚未写好,18/20下载ZIP与assets/research的证据链接尚待集成,不提前宣布整体root实战PASS。
独立联网核对发布渠道¶
读取官方包 PyPI JSON metadata 并检查 project_urls,deepseek-harness-sdk 与 deepseek-harness-runtime-bin 当前均为 0.1.5rc1,Source/Homepage 均指 deepseek-ai/deepseek-harness;20.4 的版本数与此一致。证据:SDK metadata、runtime metadata。
建议正文写这两个精确 distribution 名称,避免按 import 名误装另一个第三方 deepseek-harness 包;这是渠道身份核对,不能仅比较较大的版本数来选包。Python vendor 不是当前 PyPI wheel的声明已清楚。