Replies: 11 comments 2 replies
|
新增一条已核实条目(完整分析、复现与修复见 #6524),建议并入清单: 21. todo 任务栏在回合中断后永久消失(todos 投影被 turn/start 无条件清空)
|
|
感谢补充,已逐项对照 master
同意并入,我会把本条更新进主贴清单(第 21 条),并按上面的修正调整 invariant 那句表述。感谢 #6524 的完整分析、复现与红绿测试。 |
|
按清单格式补几条我在 0.1.5-rc.1 上核实过的(都有源码位置和实测,如果需要我贴原始数据)。 1)压缩阈值按整窗口算,落在 provider 实际接受上限之上
2)overflow 分支
3)
4)压缩后旧轮推理整段不回传,而推理占摘要器输入 58.8%
5)token-meter 的 CJK 增量低估
核实方式:全部可复现。会话日志是 zstd 多帧 + 两代副本,必须逐帧解码 + 按会话目录去重, 影响的能力
|
|
感谢这五条,质量很高。我逐条对照 master(c291e7961a)源码复核,结果如下——1/2/3/5 全部确认,第 4 条机制确认、数字接受你的测量:
这五条将并入主帖清单(第 22–26 条),每条按你的口径标注状态与来源讨论。感谢提供的复现方法与「逐帧解码 + 按会话目录去重」的统计注意点——这条对任何想复核的人都很有价值。 |
|
话说官方会看这些玩意么,如果真的打算让社区介入,早就放开 PR 板块了。这个讨论区更多的作用类似贴吧。贴吧还有管理员互动,这里面看到的基本都是网友。 |
|
@PerryLink 给第 2 条补一份可复现的证据,以及一条可立即使用、不需要动 session 存储的止血手段(不新开条目)。 为什么这条一直没有复现:仓库自带的 mock 在结构上造不出这个条件
所以 复现环境:DSH
后果这一环:用 DSH 自己的序列化器跑通不手写模仿—— 网关侧(按 装上下面的插件后,同一请求返回 一条可立即使用的接缝(不需要改 session 文件)
插件与原始输出:https://github.com/apex-mochen/dsh-reasoning-only-guard ( 请在并入时保留的边界
顺带一个读会话的坑(复核这类问题时可能有用)
|
|
@PerryLink 给第 1 条补一份复现,以及一条可立即使用的缓解接缝(不新开条目)。 复现A. 交互式会话里当场复现。 当前策略是 与 B. 真实落盘会话里复现同级情形。 headless 会话策略为 命令从未执行(输出里没有 机制已确认,且确认它是执行期检查
// Strict widening is an EXECUTION check against the call's effective mode —
// deliberately not a schema constraint (the enum is the closed target
// vocabulary; the effective mode is per-call truth).
if (!(WIDER_MODES[effectiveMode] ?? []).includes(mode as SandboxMode)) {
throw new Error(`sandbox escalation to "${mode}" is not strictly wider than this call's current "${effectiveMode}" mode`)
}所以 schema 在结构上没法告诉模型"对这一次调用来说哪些值合法"。这条注释正是该条目所说"schema/执行不一致"的出处。 一条可立即使用的接缝:
|
|
@PerryLink 给追加第 21 条(todo 投影)补一份可复现的夹具、真实 A/B,以及一条不需要 fork 机制已确认,并且源码把它写成有意的
// Standing-plan fold: latest whole todo/write list, cleared by the next
// turn/start (turn/end keeps the finished checklist visible); null before the
// first write or after a later turn begins; every other event returns the
// same state reference.
apply: (state, event) => {
if (event.type === 'todo/write') return event.data.todos
if (event.type === 'turn/start') return null
return state
},
stateVersion: 2,而工具描述本身就叫模型"每次发送完整清单"。所以"每轮重写"是既定契约,不是漏了兜底。 真正的问题是中断这种情形没有出口:下一个 复现:真实会话上的受控 A/B难点是插件只在" 两次运行内容完全相同,唯一差别是装没装插件;都用真正的 无插件(折叠终态 装插件(折叠终态为该 3 项清单): 为什么多出来的事件是插件造成的: 接缝:不用 fork插件换不掉投影:注册表对重复 key 只在 一个实现上的坑,值得写下来:不能在 // core/session/src/index.ts:729-731
if (entry?.appending) {
throw new Error('session append cannot reenter while another append is being published')
}顺序是 插件与原始输出:https://github.com/apex-mochen/dsh-todo-continuity 给上游的修法方向(与 #6524 的方向一致)
请一并保留的边界
|
EN / English@PerryLink — one entry for the list, if the format fits. It is a sibling of item 28 in this list (same family: healthy data, a consumer with no way to fail): that item is the read path silently truncating; this one is the render path looping on a block it cannot attribute. 33. A session containing a
Authorship note: reproduced and documented by me in real-world usage; root-cause tracing and drafting assisted by AI; verification and publication by me. I have no engineering background — if any technical claim reads wrong, please call it out; I will re-verify against the toolchain and correct. Reported by the OfferKuai Team — Founder: Zhaofeng (Yaming). Website: https://www.offerkuai.com/ | Contact: contact@offerkuai.com 中文版 / ZH@PerryLink —— 若格式合适,这里给清单补一条。它与本清单第 28 条同族(数据健康、某个消费者却没有失败出口):那一条是读路径静默截断;这条是渲染路径在一个无法归属的块上打转。 33. 会话含
协作说明:本文由我在真实使用中复现并记录;根因与成文由 AI 协助完成,我负责校验与发布。我非工程背景,技术表述如有错误,欢迎指出——我会回去用工具链重新验证后更正。 本报告由 OfferKuai(Offer快)团队提交 —— 创始人:Zhaofeng(Yaming)。官网:https://www.offerkuai.com/ | 联系:contact@offerkuai.com |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
核实人:社区成员 PerryLink。初版基准提交:
c291e7961a515f6d7af9304e7fd1d257929aef26(2026-09-10 快照,0.1.5-rc.2 era)。2026-09-15 已对照最新 master0d1f50007f9bca3f52b06e1c3074fa14d5fb0720(0.1.6-alpha.1 世代,区间 666 提交 / 3123 改动文件)整体复核:1 项已修复(次级 #6129,e779831f40)、1 项转为部分修复待复测(#2)、22 项仅行号/路径漂移、其余结论不变——下方行号已按复核结果更新。方法:逐条对照该提交的源码(read/grep)复核,下方每个「位置」都在该快照上成立;无法在源码里复核的两处已如实标注。本清单是对 73 个社区讨论的收敛:凡涉及的问题都已链接到原帖,便于维护者直接看到完整分析、复现与既有补丁。1. 同级/更窄的
sandbox_permissions直接报错(模型整轮循环失败)sandbox_permissions(同级或更窄)时,工具调用直接报错,GPT 系模型会整轮循环。packages/sandbox/sandbox/src/escalation.ts:163(“not strictly wider” 抛错,任何非严格加宽组合都过不去);schema 恒广告全枚举:41。danger-full-access 变体:packages/bundle/base/cordis.patch.yml:226强制 policy=never,而packages/fs/fs-sandbox/src/index.ts:65-67仍返回默认模式导致packages/fs/tool-fs/src/sandbox.ts:39-45,59-70继续广告升级字段。packages/sandbox/sandbox/tests/escalation.spec.ts:88,90钉死了该抛错行为,属于“schema/执行不一致”的缺陷。2. 纯推理轮毒死整会话(之后每轮 400)
packages/llm/llm-deepseek/src/protocols/chat-completions/serialize.ts:196-229——chat-completions 协议下推理轮仍序列化为content:""(无 tool_calls),风险注释:212-219原样保留;旧路径src/serialize.ts已随6a137ea702(2026-09-10 协议统一重构)删除。packages/llm/llm-deepseek/src/config.ts:81,207,b0641b83fc),Messages 侧把推理块序列化为thinking(src/protocols/messages/serialize.ts:29-32),不再产出空 content;因此默认路由上的 400 砖化未在源码内复现,需真机对messages(默认)与chat-completions(显式配置)两条路由各复测一次才能定论。若 profile 显式配置了protocol: chat-completions,下述规避手段仍然适用。3. Windows windows-acl 沙箱:缓存临时目录消失后该会话永久损坏
packages/sandbox/sandbox-local/src/index.ts:415-417(tempCapabilities缓存命中直接return existing,无 existsSync/statSync 复核);预检失败点packages/sandbox/sandbox-windows-acl/src/runner.ts:110-113(由:120-121对--workspace/--temp各调一次)。4. read_image 在所有预设中一调即失败
cannot get property 'fs' without inject;注册时传错 scope,兄弟工具正常。packages/fs/tool-fs/src/index.ts:70-71(ctx.inject(['attachments'], imageCtx => applyReadImageTool(imageCtx)),imageCtx 只声明 attachments);执行体解引用packages/fs/tool-fs/src/read-image.ts:209(:265同类)。5. 升级后
code预设会话全部无法恢复(无 legacy 别名)preset "code" not found (available: standard, ptc, minimal, cordis)。packages/preset/agent-presets/src/index.ts:372-381(resolve 逐字查找,无 legacy 映射;仓库中不存在 LEGACY_PRESET_IDS);删除自定义预设的会话错误仍被包成gateway/internal(packages/api/session-controller/src/agent.ts:216)。~/.dsh/.agent-presets/code/(Windows:%USERPROFILE%\.dsh\.agent-presets\code\)后重启;或改绑 standard/ptc;settings.yaml 里agent-presets.default: code一并改掉。6. exFAT 卷 write 必败(EISDIR)+ 盘根写入 EPERM
EISDIR ... link(覆盖/编辑正常);任何卷的盘根写入报 EPERM。packages/fs/fs-local/src/fsio.ts:633-638(createIfAbsent 用硬链接发布,默认link在:608,失败即throwGuardedCreateFailure,:536-571无 rename 降级;exFAT 不支持硬链接);:597-598(mkdir recursive 只容忍 EEXIST,Windows 盘根返回 EPERM)。7. Node < 22.19/24.2 安装后静默深埋失败
apps/cli/src/bin.ts(入口共 66 行,无任何运行时版本检查);apps/cli/package.json(无 engines);仅根package.json:8-9声明"node": "^22.19.0 || >=24.0.0"——npm 对 engines 只警告不拦截。8. 单个损坏插件条目令所有对话请求失败(REQUEST_EXTENSION)
DeepSeek request extension preparation failed(REQUEST_EXTENSION)。packages/llm/llm-deepseek/src/common/request-extensions.ts:20-24(prepare()任何异常一律升级为LlmError(..., 'REQUEST_EXTENSION'),cause 不进入 UI 文案)——原src/adapter.ts:627-637已随6a137ea702的协议拆分消失;packages/llm/plugin-package-inventory-deepseek/src/index.ts:123(resolve()对不可解析包抛错);该插件在基础 bundle 默认挂载(packages/bundle/base/cordis.patch.yml:70-71)。plugin-package-inventory-deepseek;治本是修复损坏的 loader 条目。9. PTC 模式零参数工具绑定必失败
packages/ptc-runtime/ptc-runtime-node/src/bootstrap.ts:326-335(无参调用 args=undefined →snapshotPtcJsonValue返回 undefined →:333-334拒绝binding arguments must be lossless JSON);wire 侧packages/ptc-runtime/ptc-runtime-node/src/json-wire.ts(原worker-json.ts)。旧包packages/code-runtime/code-runtime-worker-thread已随7c9bb5914c(2026-09-12,PTC 命名统一)删除。合同歧义:参数快照校验未区分“无参”与“非法参数”。10. opencode-go 路由:缺
x-opencode-session头 + 缺 deepseek-v4.1-flash 目录项packages/llm/llm-pi-ai/src/adapter.ts:384(harness 已把 sessionId 转发进 pi-ai);packages/llm/llm-pi-ai/package.json:44("@earendil-works/pi-ai": "^0.85.1"——该版本 dist 中无 x-opencode-session、opencode-go 目录缺 4.1-flash,此环由 S2 分诊对 vendored dist 核实;2026-09-15 复核:harness 侧仍只转发 sessionId、仓库内无该头字样,但本地未安装该依赖的 dist,该半边未复验)。x-opencode-session头(代价:全会话共享一个亲和 id);profilemodels里手写 4.1-flash 条目即可被选中。11. Python SDK:跨进程续接旧会话不落盘
run(input, session_id=已存在id)流式正常但永不写回 session.jsonl;同进程续接正常(行为不对称)。packages/sdk/server/src/server.ts:259-292——getOrCreateSession 只查进程内内存表,createSession 恒ctx.agents.create(...)空种子新建,整个 server.ts 无 agents.resume。with块)。12. append() 不执行消息身份校验:插件注入缺 id/role 的消息写坏会话
packages/core/session/src/index.ts:719-770——append 只调 validateSessionEventData(:748,仅检查 request/header 与 tool/result);assertMessageEventShape(:327-386)只挂在 adoptSessionEvent(:169)与 seed(:272)上。id、role:'user'、source:{kind:<合法值>}。13.
dsh plugin子命令无法自愈 profile 依赖dsh plugin exec/add依赖的安装 peers 无法解析时子命令失败,且永不尝试修复 profile 的 node_modules/回退路径(profile-boot 只在启动时自愈)。apps/cli/src/plugin.ts:120-163(仅 spawnSync pnpm,成功才 reconcilePlugins;无 healing 分支);附带缺陷::134-138的 spawnSync 无 windowsHide(同族 CLI 半侧 [Bug] Windows: dsh CLI 插件管理 spawnSync("pnpm", ..., { shell: true }) 未设置 windowsHide,安装插件时弹出 CMD 窗口 #4024)。14. 插件经
connection.rpc.handle()注册的通道静默失效(405)packages/client/connection/src/rpc-host.ts:79-84(get rpc()的 owner 取服务自身 ctx)、:178-179(owner.effect(() => owner.webServer.register(route)))。dsh-v0.1.2-rc.1的packages/client/connection/src/index.ts是inject = ['webServer', 'credentials'],dsh-v0.1.5-rc.2收紧为['credentials'](index.ts:69)——0.1.5 世代起第三方rpc.handle()通道全挂,调用方 inject 无法自救(owner 解析发生在宿主 ctx 上)。dsh-v0.1.6-alpha.1仍未修);社区修复分支 cb9b6e2(wsxwj123)未合入。15. 文档预览插件钉版 pdfjs-dist 6.3.289:旧 Safari/WebView 无法启动 dsh web
Failed to load plugins ... Can't find variable: Iterator,dsh web 无法启动(2026-09-09 起出现)。packages/client/ui-sidebar-documentpreview/package.json:69("pdfjs-dist": "6.3.289");src/client/index.ts:37(静态 import)、:116(注册)。pdfjs 6.3.289 的 build/pdf.mjs 直接引用全局Iterator(此环由 S1 分诊对安装树核实;本次复核了钉版与静态 import 链)。16. pwsh 沙箱对临时根未加保护的 realpath(RAM 盘报 EISDIR)
EISDIR ... realpath 'z:\Temp',沙箱启动前失败。packages/sandbox/sandbox-windows-acl/src/path-boundary.ts:11-12(containsDirectory 直接 realpathSync.native,无 try/catch;同仓库 roots.ts 的 canonicalPath 有回退先例)。17. 编程式
agents.create缺 model 时静默死轮ctx.agents.create({agentOptions:{provider,...}})省略 model 时 {{model}} 变量渲染抛错被 kick() 吞掉,whenIdle() 正常返回——调用方无法区分完成与崩溃。packages/core/agent-loop/src/index.ts:421(ctx.systemPrompt.variable('model', context => context.agent?.options.model)无回退);webhook 已有回退先例(packages/webhook/webhook/src/session.ts:63-66)。agentDefaultModel.currentSelection()再显式传 provider/model;并检查 followup/日志而非信任静默返回。18. grep/read 行预览从列 0 截断,匹配可能被同时断言又隐藏
packages/fs/tool-fs-search/src/grep.ts:35(GREP_MAX_LINE_BYTES=2000);packages/fs/tool-fs-search/src/search-core.ts:324-325(预览从行首取,kind:'head');packages/fs/tool-fs/src/read-render.ts:11(read 同样 2000 字符截断)。19. dsh-llm 发布类型引用 devDependencies(npm 消费者 TS2724)
packages/llm/llm/package.json:21-24(./invariant是已发布子路径导出,属公共 API)、:76-77(两包在 devDependencies)。20. /compact 在 agent 未空闲时一律报“active compaction”,诊断串味
packages/core/agent-loop/src/agent.ts:157-158(runMaintenance 拒绝文案);packages/compaction/compaction-basic/src/index.ts:410-416(一切异常折叠为 busy)。次级清单(已核实、优先级较低)
dsh-attachment-local(python/sdk-runtime/package.json依赖清单;dsh-attachment在:23,全清单仍无dsh-attachment-local。注意该清单在 0.1.6 世代已改:dsh-code-runtime*→dsh-ptc-runtime*,新增dsh-compaction-image-offload、dsh-session-title-llm)→ 挂载即 ERR_MODULE_NOT_FOUND;规避:SDK 组合不挂该插件。packages/api/session-controller/src/index.ts:223-225;cursor 仅保留位types.ts:245);规避:拆分工作区/清理旧会话。packages/api/session-controller/src/client/sessions/service.ts:145-152的 displayTitleOf 回退链)。cordis_mount/cordis_inspect/cordis_unmountvs 实现注册的 7 个新名;packages/preset/agent-presets/presets/cordis/skills/editing-cordis-compositions/SKILL.md:32,34,64,80,118,122;新名packages/extensions/tool-cordis/src/index.ts:45,64,100,152,244,333,355);文档修复型 PR。同批还有生成文件与文档残留:tool-cordis/src/api-catalog.ts:6、cordis-client-runner/src/client/slot-catalog.ts:7,74、docs/subsystems/slots.md:176(+.zh.md),以及三个内嵌整篇 SKILL.md 的 snapshot 需重生成(snapshots/web/skill-tool-row/ui.expected.md:36、snapshots/session/skill-load/session.v2.jsonl:17、session.v3.jsonl:18)。dsh restart(apps/cli/src/process-shutdown.ts:4,69-75;dispose=cancel+whenIdlepackages/core/agent-loop/src/index.ts:594-595;launcher 无 restart,apps/cli/src/args.ts:145-201)。llm-pi-ai/src/config.ts:46300s 空闲看门狗、adapter.ts:355;util/http-proxy/src/install.ts:208-220)。本轮复核新增的已修复项(2026-09-15,对照
0d1f500)e779831f40"fix(client): restore assistant timing from recorded streams"(2026-09-14 经a85778448a进入 master;不在初版基线c291e7961a中)。packages/client/ui-trajectory/src/client/trajectory-assistant-definition.ts:195-203新增settleTiming(),用assistantStreamFirstTokenTime(event.data.stream)从已记录流恢复首 token 时间,并挂到assistant/message(:210-213)与新增的assistant/attempt分支(:238-243,367)。回放/已结流的轨迹面板不再是空洞——更新到含该提交的 master(≥ 0.1.6-alpha.1 世代)即可,无需社区补丁。给维护者的说明:以上 31 项仍未修复 + 1 项部分修复(#2,待真机复测)+ 6 项次级(第 21–32 条见文末第二/三/四批社区条目),初版全部在 master(
c291e7961a)上逐行核实,并于 2026-09-15 对照0d1f50007f9bca3f52b06e1c3074fa14d5fb0720(0.1.6-alpha.1 世代,666 提交区间)整体复核(1 项已修复、1 项转部分修复、22 项行号/路径刷新——见文末第五批)。repo 的 issues 已关闭(has_issues=false),PR 通道同样不接受外部合并,因此社区把完整分析、复现与修复分支都留在了 Discussions 里——本清单把散落的线索收拢到一处,并逐条链接原帖。若任何一条在后续提交中已修复、或我们对某行代码的解读有误,请直接在对应原帖或本帖下指出,我们会立即更新清单并标注核实日期。另请知悉:多项 bug 已有社区验证过的修复分支/补丁(#4021 族、#4981、#6065、#6224、#6227、#6483、#4591 等),欢迎官方直接取用或指正。EN summary: A community-verified list of bugs still unfixed on master: 31 primary unfixed + 1 partial (#2, pending a real-run retest) + 6 secondary. The initial verification used commit
c291e7961a(0.1.5-rc.2 era) and was re-verified on 2026-09-15 against0d1f5000(0.1.6-alpha.1 generation, a 666-commit interval): 1 item fixed on master (#6129,e779831f40), 1 item partially fixed (#2, DeepSeek now defaults to the Messages protocol), 22 items had stalepath:linereferences refreshed (thellm-deepseekprotocol split, thecode-runtime→ptc-runtimepackage rename, theworkflow-worker-thread→workflow-ptcrow rename). Items 21-26 were appended 2026-09-13/14 from #6524 and VillagerUncle02's verified measurements; item 27 on 2026-09-14; items 28-32 on 2026-09-15. Each item carries symptom, location (path:line), status, workaround, and links to the original discussions. Highlights: same-modesandbox_permissionshard-errors (escalation.ts:163, family #4021/#5570); Windows windows-acl sandbox dies permanently after its cached temp dir vanishes (#6483/#5034); read_image is broken in every preset (#4612); pre-0.1.2code-preset sessions cannot resume (no legacy alias, #5657 family); exFAT writes fail (hard-link publish without rename fallback, #5704/#4981); missing Node-version gate (#6115/#6124); one broken plugin entry fails every request (REQUEST_EXTENSION, #6161); 0.1.2→0.1.5 rpc.handle inject regression (tag-bisected, still unfixed as of 0.1.6-alpha.1, #6227 family/#6681); silently truncated seq-gapped history reads (#6562/#3631); unguarded post-migration projections (#6686); http-proxy leaking[::1]into child env (#6655); lazy File snapshot breaking pasted images (#6673); unguarded NAT64 discovery (#6664); plus packaging and plugin-channel defects (#5913, #4377, #6507, #6679). The repo has issues disabled, so Discussions are the community tracking channel; maintainers are invited to correct any misreading, and several community fix branches are linked and ready to be picked up.21. todo 任务栏在回合中断后永久消失
packages/todo/tool-todo/src/index.ts:134-145——投影 apply 在turn/start无条件返回 null(:140),stateVersion: 2(:144);注释 :130-133 写明「standing plan」语义(turn/end 保留已完成清单、下一回合开始清空,依赖模型重写 todo_write)。修复需 bump stateVersion 2→3(投影缓存对 ver 不匹配的行是 discards rather than migrates,packages/session/session-projection-cache/README.md:80),否则旧null检查点继续生效。更新(2026-09-13,第二批社区条目)
22. 压缩阈值按整窗口计算,1M 窗口下高于 provider 实际输入上限
packages/compaction/compaction-basic/src/config.ts:20(DEFAULT_THRESHOLD_RATIO = 0.8)、:144(thresholdTokens = floor(contextWindow × thresholdRatio),不减输出预算,两处均未变);llm-deepseek 的DEFAULT_MAX_TOKENS = 256_000现位于packages/llm/llm-deepseek/src/common/defaults.ts:8(配套DEFAULT_CONTEXT_WINDOW = 1_000_000在:6;原adapter.ts:149已随协议拆分消失)——838,860 > provider 实际消息上限(实测 792,576,来自本条目提交者)。23. overflow 分支 retainTokens = 0,一次清掉约 98%
packages/compaction/compaction-basic/src/index.ts:281-285——overflow 直接selectCompactableRange(session, measurement, 0)(:285),注释 :248 写明 "overflow bypasses the normal threshold and retained-tail policy"。24. tool-result 剪枝跑在压缩选区之前,摘要器输入已失真
packages/compaction/compaction-basic/src/index.ts:281-285(overflow:prune :281-282 → select :285)、:305-313(pressure:prune :305-306 → remeasure → select :313)。25. 压缩后旧轮推理整段不回传(推理占摘要器输入 58.8%)
packages/compaction/compaction-basic/src/region.ts:174compactSurfaceRegion+commitCompactionBody:472-500(shadowedSeqs写入:500、sourceEventSeqs:509),保留清单不要求保留推理)。该文件在 09-10→09-15 区间内被改过(新增摘要错误恢复:391-409),但未触及推理回传语义。26. token-meter 的 CJK 增量低估(+26% ~ +57%)
packages/llm/token-meter/src/estimate.ts:13(CHARS_PER_TOKEN = 4;estimate 只作用于每步增量,总量 provider-anchored)。(第 22–26 条由 VillagerUncle02 提供与实测,PerryLink 对照 master 源码复核后并入。)
更新(2026-09-14,第三批社区条目)
27. 桌面端打包在 prepare:dsh 阶段必败(payload smoke 引用已移除的 fs-ext)
pnpm run package:desktop:win:x64:unsigned在prepare:dsh报Cannot find module 'fs-ext'([Bug] Desktop packaging fails at prepare:dsh: runtime-payload-smoke.mjs still requires removed fs-ext #6589 / [Windows] Desktop packaging fails: payload smoke test requires the removed `fs-ext` dependency #6612 两份独立复报,0.1.5-rc.2 era)。apps/desktop/scripts/prepare-dsh.ts:142(execFile 运行tests/fixtures/runtime-payload-smoke.mjs);smoke 的checkFsExt()(apps/desktop/tests/fixtures/runtime-payload-smoke.mjs:67-83,调用点:124)用requireRuntime('fs-ext')做 seek 断言;当前依赖树已无任何包依赖 fs-ext(pnpm-lock 只有 fs-extra),而策略残留仍在apps/desktop/scripts/runtime-file-policy.ts:26-30与apps/desktop/src/project-manager.ts:111。native/system 的 flock 现由仓库自带 system.node 实现,fs-ext 确无运行时消费者。pnpm add -D fs-ext后重试(smoke 是构建期依赖,devDependencies 足够)。更新(2026-09-15,第四批社区条目)
28. 读路径静默截断 seq gap / 损坏行(valid aborted-turn 被当作 no more history)
packages/session/session-persistence-jsonl/src/index.ts:915(new SessionLogScanner(headerFrame.value)无 recovery 实参);format.ts:403(构造器默认recoverable)、:482-484与:497-514(issue 暂存后静默 return,仅后续 turn/end 重抛)、:369(header 侧 restore 实为recovery:'strict',被扫描器默认值覆盖);strict 仅验证路径generation.ts:583/597;语义被测试钉死tests/jsonl.spec.ts:2163/2175/2225。:915传'strict',或暴露format.ts:394的 issue 让调用方呈现"历史在 seq N 结束、其后有丢弃行"。29. v0→v3 迁移后三类 stock 投影未守卫 message 读取 → hydrate 崩溃
packages/session/session-turn-outline/src/projection.ts:110,113,119(event.data.source.kind/event.data.content/event.data.message.content);session-stats/src/projection.ts:174(event.data.message.source.callId);session-telemetry/src/coordinator.ts:270(event.data.message.content[0].isError)。git diff dsh-v0.1.5-rc.2..HEAD三文件无功能变化(仅 1 行 oxlint 注释)→ master 仍带该缺陷。迁移器normalizeLegacyMessage只部分合成 envelope(session-format-v0-to-v1/src/migration.ts:366-415),每个 case 都有直通分支(:354-357user/message、:366-368assistant/message、:390-395tool/result)——"迁移器保证完整 envelope"不是今天的契约(区间内该文件只把provenance字面量换成LEGACY_ASSISTANT_SOURCE_KEY,语义等价)。30. http-proxy 把
[::1]写进子进程 no_proxy → httpx 系 MCP server 崩溃no_proxy=...,[::1],httpx 系 MCP server 报无效 URL 崩溃。packages/util/http-proxy/src/policy.ts:33(LOOPBACK_NO_PROXY含[::1],注释:25-32自认括号项是为 undici 匹配器);:206-210(withLoopback 并入)→install.ts:79-92,113-129(applyPolicyEnv 双大小写写 env)→ 子进程继承。harness 自身匹配器不需要括号项(bypassesProxy:279-295先去括号、splitHostPort:223-237正确拆裸 IPv6)。::1、undici 消费处保留括号项(两处消费者分离),并同步改写policy.ts:25-32注释。31. 粘贴图片惰性持有 File 快照:剪贴板同步后提交 NotFoundError
A requested file or directory could not be found。packages/client/ui-conversation/src/client/service.ts:73-80(browserDraftAttachment 只存 File+objectURL,提交才读字节)、:124-135(base64ImageOf FileReader)、:286-291(失败 abandon);对比文件类附件立即后台上传(:316-324)。粘贴入口editor/keymap.ts:146-155。arrayBuffer()固化字节到 Blob 副本、previewUrl 指向副本。32. web-fetch NAT64 探测无守卫:无 DNS64 网络下双栈主机全灭
packages/web/web-fetch-http/src/network.ts:90-92(有 IPv6 即调discoverNat64Prefixes,无 try/catch)、:113-134(探测)、:38(IPV4ONLY_DISCOVERY_HOST);SSRF 检查独立(:96-106);取消错误无 code 字段(:273),按 code 过滤不会吞取消。(第 28–32 条由 PerryLink 对照 master 源码核实;另:#14 补充了 0.1.2→0.1.5 inject 收紧的标签级回归证据,#22/#23 并入 #6671/#6672 的新讨论。)
更新(2026-09-15,第五批:对照
0d1f500/ 0.1.6-alpha.1 的整体复核)初版核实基线
c291e7961a(2026-09-10)到0d1f50007f9bca3f52b06e1c3074fa14d5fb0720(2026-09-15,0.1.6-alpha.1 世代)之间共 666 个提交、3123 个改动文件。本轮把 32+7 项逐条对照新基线重核,结果:e779831f40,详见上文「本轮复核新增的已修复项」。llm-deepseek已按协议拆包(旧src/serialize.ts于6a137ea702删除),chat-completions 侧行为未变;但 master 已把 DeepSeek 默认协议切到 Messages(src/config.ts:81,207,b0641b83fc),Messages 侧推理走thinking块,不再产出空 content。默认路由上是否仍会 400 需真机两条路由各复测一次,因此标为部分修复、不宣称已修。packages/code-runtime/code-runtime-worker-thread→packages/ptc-runtime/ptc-runtime-node(7c9bb5914c,2026-09-12),worker-json.ts→json-wire.ts→ 影响 #9;llm-deepseek协议统一重构(6a137ea702)→ #8 的REQUEST_EXTENSION升级点迁到src/common/request-extensions.ts:20-24,dsh yyds :) #22 的默认值迁到src/common/defaults.ts:6,8(deepseek-flash 目录条目src/common/models.ts:8-13);packages/boot/app-boot/src/profile.ts、apps/desktop/src/project-manager.ts、ui-conversation/.../facade.ts、session-format-v0-to-v1/migration.ts等文件内位移。诚实标注(本轮未能闭环、维持"未验证",未因此改动结论):#2 默认协议下的实际 400 行为(需真机);#10 中
@earendil-works/pi-ai@^0.85.1vendored dist 是否缺头/缺目录项(本地未安装该依赖);#16 RAM 盘 realpath 行为;#27prepare:dsh实跑与 lock 内 fs-ext 依赖树;#15 旧 Safari/WebView;#3 Windows 端到端文案;#1 的"整轮循环"、#20 的"标题窗口"、#31 的"微信输入法粘贴"、#32 的"无 DNS64"等环境类断言(本轮只复核源码路径与逻辑,均仍在)。(本轮复核由 PerryLink 主持,4 个分片交叉核对;#6681 另确认截至
dsh-v0.1.6-alpha.1仍未修。)All reactions