Repository navigation
feat: TASK058 P2 收官批次(CI 双平台拆分 + changes 流 + goals 七方法) - #445
Merged
Merged
Conversation
… 测试 ubuntu 可跑,web_host 17+webview 3+persistence 3+hosting 契约 3)+ NativeGui.Host.Tests(windows TFM 34 测试,JccChatSession 装配+Headless 视觉);CI matrix apps-gui 拆 gui-core(ubuntu)/gui-host(windows),main 分支保护 required contexts 同步(API PUT 全量快照),Gui.slnx 双登记;零 Avalonia 依赖由编译兜底
…Async 复用 IFileSystem.Watch 统一工厂(内存实现自带写联动/物理实现内置防抖),Created|Changed→{absolutePath,version} 帧(version 复用 size-mtime 合成)、Deleted→absent 帧;DshWebHost 加流端点(ready 首帧+后台泵+DetachLease 三事件解绑+watcher 后台释放);验证: 单元 4/4 + Core.Tests 240/240 + 真机 WS 全链(ready→写根级探针→change 帧含 absolutePath+version)
B9 已完成并真机验收: dsh-webui-history/prompt/tool/cancel/queue/reload 六脚本 ALL_PASS; 引擎读写 transcript.jsonl 双向打通 (ADR 0144); wait-webui 超时 15s 提到 45s 以覆盖引擎组装+WebView2 就绪
…走完整权限管线 真机 exe 验收 33 项 ALL_PASS(连续两次):waterfall 帧 approval/request 键集/工具名/原因正确 → 前端审批面板 → 拒绝时工具不执行(isError + 拒绝文案,文件内容不入流)→ 允许一次时工具真正执行(tool/result 即文件内容,卡片 state=ok)→ 两轮 turn/end completed。新增桩分支 USE_APPROVAL_TOOL(真实 read 调用)与 dumps/dsh-webui-approval.mjs(工具目录,gitignored)。遗留:approval/asked|decided 审计事件未落会话日志
宿主 DshApprovalBroker 在轮内成对写入审计事件:asked 在发 waterfall 帧前落、decided 由 TrySetResult 赢家只落一次;DshTurnRunner finally 调 CloseTurnAsync 先结清审计对再 EndTurn,保证被 hasOpenTurn 包住。 决策: 审计由宿主侧写入会话流(Audit 委托注入 StreamHub.PublishElementAsync),而非引擎侧落盘 —— 审批是宿主与前端之间的协议对象,引擎只见「工具需确认」,同刻产生才能成对且轮内闭合 验证: 真机 dsh-webui-approval.mjs ALL_PASS 48/48(连跑两次,含刷新回放);单测 276 通过/0 失败;NativeGui.Host + JoinCodeGui.Tests Debug 编译通过
…nAsync 统一入口)+ 断流补写屏障 _detachedAudit 由 CloseTurnAsync 排空 根因: 取消路径 fire-and-forget 的 detach 补写与异常分支先发 turn/end,approval/decided 落到轮外(实测 decided=8 > turn/end=7),违反 DSH invariant。 验证: 边界脚本 detach/cancel 全 ALL_PASS(0/4/5/9、0/4/6/8);单测 277/0(新增红->绿屏障测试);approval 48/48;prompt/tool/queue/cancel/reload/history 回归全绿;NativeGui.Host Debug 编译 0 警告
…代宿主自发事件,引擎步首 drain 并对齐 DSH「有待注入不收尾」
引擎: ISteerInputMailbox 按会话寻址 FIFO + SteerInputMailbox 单例;QueryLoopMiddleware 步首 drain 成 AddUserMessage(SteerInput) 与 ChatStreamEventType.SteerInput,且无工具调用但邮箱非空时继续下一步(对齐 DSH next-step 语义) 宿主: session/prompt mode=steer 运行中受理投递、空闲回落开轮;updateQueue action.kind=steer 升级排队项并在投递成功后出队,不可收则保留队列并回 session/steer-unavailable 带引导 验证: QueryLoopMiddlewareTests 9/9;NativeGui.Core.Tests WebHost 142/0(含 DshSteerInputTests 3 例与 updateQueue steer 正反例);真机 dsh-webui-steer ALL_PASS 9.6s,事件序 tool/result=4 < steer=5 < ack=6 < turn/end=8 且单 turn/start;9 个 E2E 脚本全量回归 ALL_PASS 决策: 用按会话寻址的 steer 邮箱替代宿主自发事件,引擎步首 drain 保证注入进入下一次 LLM 请求(ADR 0146 accepted)
…e 宿主数据闭环对齐 DshSettingsStore 模式(~/.jcc/dsh_goals.json 落盘),七方法状态机(active/paused/complete × armed/disarmed)+ revision CAS(stale→goals/conflict 引导)+ roundsStarted 挂 DshTurnRunner 受理钩子;activation 翻转经 GoalChanged→ waterfall 帧(goal/activation-changed,前端 $on 监听);引擎节点图 goal 联动深化项另行立项;验证: 单元 4/4(生命周期/CAS/重复/conflict/轮次计数)+ Core.Tests 244/244 + 真机全链(create→pause CAS→落盘)
…eerInjectionMiddleware(工具间隙 TryRead 探针+ISteerChannel+Steered 事件,拒绝下轮优先降级——欺骗性兼容);terminal 走 modules/perception/terminal 功能域(ConPTY P/Invoke+TerminalService+guard 权限管道首建 approval,拒绝假终端/第三方库);各含开放问题清单拍板后实施
…ests 用 Windows 盘符路径,Linux 上 IsPathFullyQualified=false 被拼 cwd 前缀(/test/C:/demo/proj-a)——改 Path.GetFullPath("/demo/proj-a") 双平台动态绝对路径 ②AskWithRetry Idempotent_AllowFalse 精确断言 success-at-1 撞 CI 调度(实收 -2)——契约是不抛异常,前缀断言+Retry16 ③Downloader Pause_PersistsMetadata GET 信号窗 10s 被调度饿死(上轮绿 run889 同代码绿=CI flaky)——Retry16 外壳全新 session 每轮;验证: 三域全量 100/255/600×2 绿
…e 建立走 Workspaces.CreateAsync→Normalize(GetFullPath),Linux 拼前缀 /test/C:/demo/ws-1(同族上笔已修 DshWorkspaceStore,此测试漏扫)——改 Path.GetFullPath("/demo/ws-1") 双平台动态绝对路径,断言同步;其余 C://demo 字面量为 InMemory 直存直读不经归一,两侧平台恒绿不动;验证: 29/29 绿
…ire-and-forget),与 StartActivityAsync 的 Start 命令乱序时首个 50ms tick 前回调未注册——150ms 固定窗内 callCount=0 假红(run 39662954991 实证 518/519);修复: 回调进站即 Set 信号量(注册+触发双确认)20s 收敛窗 + Retry16 外壳(乱序轮直接换新实例重试);验证: 单测试 10/10 压测 + clock 域全量 519/519 绿
…瞬态帧,块下标按内容块首次出现顺序分配(固定槽位会留 0 号空洞导致前端不渲染正文) 根因: 前端 updateChunk 以 chunk.index 写稀疏块数组,正文固定用 1 而本轮无思考块 → 0 号空洞,流式正文不渲染(DOM 5s 内零增量)。 修复: DshTurnRunner 改为块首次出现即分配 index(reasoning 先到 0/正文 1;纯正文轮 0);新增 EmitThinking 测试接缝 + 纯正文块下标单测。 验证: DshAssistantStreamTests 5/5 绿;dsh-webui-assistant-stream.mjs ALL_PASS(界面显示流式正文前缀 partial=true)。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary