Skip to content

feat: TASK058 DSH 前端与引擎深度对齐(权限闭环/模型切换/设置落盘/流事件/斜杠命令/子代理/分叉) - #437

Merged
liuqihonggit merged 8 commits into
mainfrom
w4
Oct 20, 2026
Merged

liuqihonggit merged 8 commits into
mainfrom
w4

Conversation

@liuqihonggit

Copy link
Copy Markdown
Owner

Summary

TASK058 — DSH 前端与自有引擎深度对齐(相同 DTO 原则),7 批次渐进交付:

  • B1 权限确认链闭环:DshApprovalBroker 桥接引擎确认点 → $events waterfall 帧(前端 approval 审批面板)→ $events/result 回帖结算;未连接/断开/无人处理/监听器抛错四路 fail-closed Deny;permissionPresets/catalog 改 PermissionMode 枚举唯一数据源(硬编码三元组退役)
  • B2 模型切换:session/selectModel 路由引擎(vendor 变化先 SetVendorAsync 重置默认再 SetModelAsync 覆盖,effort 枚举映射);llm/listProviders 与 modelCatalog 同源投影
  • B3 设置统一落盘:DshSettingsStore 退役进程内假数据 → ~/.jcc/dsh-settings.json 持久化(RelaxedJson + DTO,重启不丢);permission/defaultPreset 写触发 SetPermissionModeAsync + 引擎 attach 补应用
  • B4 流事件扩展:DshAssistantReplyProjection 单点投影 — Thinking → assistant/message 前置 reasoning 块;Complete.Usage → data.usage 四桶(前端"本轮用量"弹窗)
  • B5 斜杠命令:commands/list 投影 [ChatCommand] 源生成目录(唯一数据源);commands/execute 委托 SlashCommandRunner(与 CLI/TUI 同链路)
  • B6 子代理流事件:DshAgentRunTracker 把 AgentStarted/Finished 投影为 tool-workflow 事件族(前端 workflow-run 节点渲染子代理卡片;取消/异常分支 run-end 收尾)
  • B7 会话分叉:session/fork 宿主侧复制 meta/转录/journal 事件到新 ID(源会话不受影响)

Test plan

  • GUI 单测 248/248 绿(新增 36:权限桥 11 / 模型选择 4 / 设置持久化 12 / 流事件投影 4 / 命令 5 / 子代理投影 7 / 分叉 3)
  • 真机冒烟:GUI 启动全链路正常($events 权限桥 attach、workspace/follow、session/control 三流全开,无崩溃)
  • 深化项已记录 TASK058 文档:steer(引擎未暴露轮内注入)、逐字流式(TASK043)、subagentCatalog 运行实例目录、fork atSeq 截断

…瀑布流(五键硬契约+fail-closed三态), permissionPresets目录改PermissionMode枚举唯一数据源(硬编码三元组退役), GetCurrentPermissionModeAsync补引擎门面
…Vendor重置默认再SetModel覆盖, effort枚举FromValue映射未知忽略), llm/listProviders与modelCatalog同源投影Groups, 引擎分支真机验收
…settings.json持久化(RelaxedJson+DTO,重启不丢), permission命名空间接PermissionMode枚举词汇唯一数据源(defaultPreset写触发SetPermissionModeAsync+引擎attach补应用), 两命名空间schema信封保留前端configForms硬契约
…ing前置reasoning块+Complete.Usage四桶映射prompt-cacheRead=uncached), assistant/message带data.usage前端本轮用量弹窗, ToolProgress暂缓transient非核心
…(去/前缀+ArgumentHint作input.hint), commands/execute委托SlashCommandRunner与CLI/TUI同链路, DshCommandsProjection翻译单点
…inished投影成tool-workflow事件族(每轮合成run+AgentId配对seq+取消异常分支run-end收尾), 前端workflow-run节点渲染子代理卡片; subagentCatalog运行实例目录属深水区另立任务
…(v1全量,atSeq截断深化项), 清空/回退无前端RPC消费点不做, TASK058 B1-B7批次全收口(新增36测试全绿,累计248)
@liuqihonggit
liuqihonggit enabled auto-merge (squash) October 20, 2026 21:47
@liuqihonggit
liuqihonggit disabled auto-merge October 20, 2026 21:59
@liuqihonggit
liuqihonggit merged commit 2b538cf into main Oct 20, 2026
27 checks passed
@liuqihonggit
liuqihonggit deleted the w4 branch October 20, 2026 22:00
liuqihonggit added a commit that referenced this pull request Oct 20, 2026
## Summary

TASK058 B8 — subagentCatalog 投影回放(PR #437 的补充批次):

- **投影缺口修复**:前端子代理面板读 `projections.values.subagentCatalog`,undefined
会让面板永久停在 loading 态 — 现在所有会话投影(列表项 / session/projections /
session/control 基线)统一携带该键
- **`DshSubagentCatalogProjector`**:从 journal 的
`tool-workflow/agent-start`
事件回放实例目录(id/createdAt/mode/label);实例目录语义含已完成条目,重启后可还原;空会话输出空数组(ready 态)
- **`DshSessionStore` 注入 journal**:列表投影与单会话投影统一回放(与既有 per-session 转录 IO
同级开销模式)

## Test plan

- 新增 3 测试(空会话空数组消除 loading 挂起 / agent-start 事件回放条目 / agent-end 保留条目)
- GUI 全量 251/251 绿
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant