激活上下文与任务看板 (active-context.md)
September 18, 2026 · View on GitHub
本项目当前 Sprint 的滚动看板(≤100 行活信息)——新会话开工第一读:与
docs/PROJECT-RULES.md一起构成 AI 协作权威入口 (用法见docs/startup-prompts.md)。维护协议见本文 05 节;历史全文从 git 历史找回。 本文件原位于.trae/rules/(TRAE 时代自动注入配置),2026-09 随规则体系迁移至docs/。
本文件是滚动窗口:只保留「活」信息;完成条目一行收口,过程细节归 docs 台账与 git log,历史全文可从 git 历史找回。
01. 当前迭代目标 (Current Sprint Goal)
- 阶段:M3 代码全部完成(2026-08-26)→ M6 全量自绘 UI 主线(D-20 · ADR-006);M3-b4 dogfood 进行中(= M3 收尾门禁,不阻塞自绘);M4 分发整体延后,重启时机 = 自绘可日常使用
- M6 主线:逐槽位替换官方 ui-*(P1 骨架 ✅ → P2 外壳 → P3 侧栏 → P4 对话区 → P5 过程可视化 → P6 设置底座),每阶段可用可验证;数据面零新增(IPC 载波 + desktopBridge)
- 上游基线:
dsh-v0.1.5-rc.2(2026-09-11 人工适配升级,REVIEW 判定经用户决策:ui-primitives/ui-chat 两包差异人工内容级 diff 摸底均为呈现层、两包入口零变化,零代码适配,见 C-7;前基线 alpha.2 见 C-6;每日 02:00 北京时间定时任务跑npm run upstream:auto;新版判据源 = GitHub releases,npm 仅作「是否可安装」校验,判定 safe 才动;升级后台账人工同步硬约束见 workflow.md 场景 D) - 上游待办(pending):无(原
0.1.3-alpha.1pending 随 C-5 升级一并跨越收口);下一版本出现时按预评→人工对照流程,破坏性变更禁 auto 硬升(坑 31)
02. 任务看板 (Task Kanban · 滚动窗口)
里程碑索引(一行收口;历史全文找 git log)
- M1 桌面骨架 ✅ · M2 桌面能力插件化 ✅ · M3 代码侧 ✅(2026-08-25~26)
- M3-c 布局/标题栏/骨架宿主化 ✅(= M6-P1,2026-09-01 实机验证)
- M3-a4 命令面板 + M3-a5 多窗口验证 ⏸️ 用户决策挂起(Ctrl+K 已隐藏;恢复 = revert
forge-cmdpalette-client.js禁用壳) - M4-a1 electron-builder 基建 ✅;v0.1.1-alpha.1~alpha.3 Win/mac 安装包发布 ✅;v0.1.1-alpha.4 发布 ✅(2026-09-08 · CI win+mac 双平台自动构建并上传 GitHub Releases pre-release;坑 41:资产名对齐 latest.yml path 后自动更新链路匿名 HEAD 200 验证);v0.1.1-alpha.5 发布(2026-09-09 · 首载 M4-a4 数据目录分层/DSH Forge 命名/规则收敛,tag 推 CI 双平台构建);v0.1.1-alpha.6 发布(2026-09-09 · 载 M4-a1 根锚点入 asar 修复安装版无法聊天,坑 45);v0.1.1-alpha.7 发布(2026-09-10 · 载 0.1.5-alpha.2 基线升级 + 启动报错根治/右侧栏面板恢复,坑 46/47/48;tag 推 CI 双平台构建);v0.1.1-alpha.8 发布(2026-09-10 · 载 更新链诊断面 + 网络代理设置(三态)+ 手动检查结果反馈,坑 50/51/52;tag 推 CI 双平台构建);v0.1.1-alpha.9 发布(2026-09-10 · 载 标题栏版本号自有化,dogfood #20;tag 推 CI 双平台构建);v0.1.1-rc.1 发布 ✅(2026-09-10 ·
0.1.1线首个rc候选:极简模式 token 修复(坑 53)+ 品牌资产 v2(坑 54)+ 创造模式修复(坑 55)+ 自研插件命名空间全量更名dsh-forge(D-27);CI 双平台出包、更新说明人工写入 Release、匿名 HEAD 200 复核通过;open:未产出latest-rc.yml(实测 404)→ 应用内 rc 渠道不自动可见);v0.1.1-rc.2 发布 ✅(2026-09-11 · 载 0.1.5-rc.2 基线升级(C-7,零代码适配)+ 插件列表全自研;main+tag 推送以ls-remote回验、CI win/mac/pages 三 workflow 全绿、pre-release 15 产物、经本地代理匿名复核latest.yml/latest-mac.yml/SHA256SUMS(-mac)均 200;open:latest-rc.yml仍 404 → rc 渠道不自动可见(方案 B 待做 =electron-builder配channel: rc+ CI 上传该描述符);更新说明待人工写入 Release)(打包链坑见docs/pitfalls.md);v0.1.1-rc.5 发布 ✅(2026-09-15 ·--publish-local本地直发首跑:本地先传 5 资产,随后 Release 创建隐式建 tag → 触发 CI 双平台重建并--clobber→ 终态 15 资产(win 4 + mac 8 + 3 描述符,CI 自洽产物);本地 HEAD 与 origin/main 逐字一致3c97817;载坑 67/68/70) - M4-d 上游升级链:rc.8 → alpha.3(载波整链重写,方案见
docs/m4-d3-012-alpha3-migration-plan.md)→ alpha.4 → alpha.5(scripts/upstream.cjs自动化首跑)→ rc.1(首次跨 next 线)→ 0.1.5-alpha.1(2026-09-09 人工适配 · C-5:rightbar 契约 + 官方新增 9 包全装 + boot.ts 3 host 行 + workspaces state/owningGroupKey,typecheck/lint/build/17 单测/图谱 61 条目全绿)→ 0.1.5-alpha.2(2026-09-10 人工适配 · C-6:ui- 六包契约差异摸底无破坏 + primitives 官方内联 dist + textpreview 随官方换代 documentpreview,typecheck/lint/build 全绿)* → 0.1.5-rc.2(2026-09-11 人工适配 · C-7:ui-primitives/ui-chat 两包差异均为呈现层且两包入口零变化,零代码适配,typecheck/lint/build/30 单测全绿);登记docs/upstream-migrations.mdC-1~C-7 - M4-d6 工具修正 ✅(2026-09-07):
check判据源 npm dist-tags → GitHub releases(npm 降级为可安装校验,新增 pending 三态),修「连续 3 天漏检 0.1.3-alpha.1」,见坑 31 / ADR-005 第 6 条 - M4-a4 数据目录分层 ✅(2026-09-09 · ADR-008):sessions/storages/themes/icons/window-state 归位
$DSH_HOME(幂等迁移,失败保持原位)+ 应用命名统一DSH Forge(旧设备目录/旧注册表键自动迁移)+ 卸载删除路径安全校验 +--data-dir与注册表种子;typecheck/lint/29 单测/build 全绿 + 实机验证通过(2026-09-09) - 规则体系迁移 ✅(2026-09 · 弃用 TRAE):
.trae/已删除;权威规则合并为docs/PROJECT-RULES.md(A/B/C 任务分级、HTML 双落盘废弃);看板迁移至本文件(docs/ 下);原 5 规则归档docs/rules-archive/(rtk-usage 随 TRAE 作废);新会话启动咒语见docs/startup-prompts.md - 生成器回流 ✅(2026-09-17 ·
dsh-preset-dev-flow→ v2.2):forge 是 dev-flow 生成器的 v1 产物,本次把 v2 治理结论回灌生成器——persona 精简为「门/流程/红线」+ Gate 4 强制加载 start-project;SKILL.md 单入口生成(docs/PROJECT-RULES.md+ 仅 MD 看板 +AGENTS.md)+ 生成后审阅闸门;幂等判定锚点改为规则本体;4 份旧指南移入references/archive/;移除 fetch-url 外部依赖 → 零先决条件;README 中英同步。方案docs/dev-flow-v2-upgrade.md· 交接单docs/dev-flow-v2-handoff.md。首个端到端实例验收 ✅(2026-09-18 ·_verify-blank/ md-wordcount):全链跑通(挂载成功 → Gate 4 强制加载技能 → 5 维头脑风暴 + Sign-off → 幂等生成 4 件套 + pitfalls → 审阅闸门 → 门禁三连全绿 → 规则自演进);缺口 = 双源同步漏一次(踩坑后改了 PROJECT-RULES/看板/坑档,漏改 PRD §03)→ 已回灌生成器(完成门禁新增「双源同步」项 + AGENTS.md 措辞改 ≤15 行,推送2572fdd);另修 harness 漂移(personatext→prefix/suffix,34093c4,详见方案文档 ⑩) - 自研插件命名空间全量自有化 ✅(2026-09-10 · D-27):插件 ID
@lansi-ai/dsh-desktop-*→@lansi-ai/dsh-forge-*(15 个 client + host 侧命名);目录src/desktop-{host,shell}→src/forge-{host,shell},desktop-*.ts/desktop-*-client.js/desktop-patch.yml→forge-*,CSS 类.dsh-desktop-*、样式 IDdsh-*-appearance-vars、日志标签[dsh-desktop]、docs/07-desktop-shell.md一并更名;迁移常量LEGACY_APP_DIR_NAME='dsh-desktop'与历史台账(pitfalls/dogfood/upstream/adr)保留原样;typecheck/lint/build/30 单测全绿 - M6-P3 侧栏 workspaces ✅(2026-09-08 实机验收):
@lansi-ai/dsh-forge-workspacesW1 五接管+picker 承重(坑 35)→ W2 派生层 → W3 Rows/视图选项 → W4 内容搜索 → W5 实机对照点;搜索索引开启openAt startup+$DSH_HOME 持久化(坑 36 探测锁定 / 坑 37 app 未定义);单测 16 项+图谱实测,见docs/plugin-inventory.md;2026-09-14 补齐接管面服务漏项(坑 62 / dogfood #24):uiWorkspace的openSession/openWorkspace/forkSession(官方 0.1.5 已有,自研件按旧快照抄漏)+ 自研ctx.layout的selectPanel/beginNavigation(只补前者会换成beginNavigation is not a function)+ inject 补'layout' - 官网站点 ✅(2026-09-09):
website/VitePress 中文站点(首页 Landing + 用户指南 8 页:安装/快速上手/工作区/桌面能力/设置/更新/FAQ/下载)→ GitHub Pages 项目页 已上线https://lansi-ai.github.io/dsh-forge/(Pages Source=GitHub Actions;首页与/guide/quickstart实测可达,cleanUrls/侧栏/上下篇/编辑此页均正常);npm run docs:dev|build|preview;CIdeploy-pages.yml - 品牌 logo 自有化 ✅(2026-09-09):应用图标(= 标题栏品牌 logo / 窗口 / 任务栏 / 安装包)与托盘图标改用自有金标(
scripts/process-logo.cjs从根logo.png抽透明通道,npm run logo,共 10 个产物);官网导航/首页/favicon 同步 - 外部插件装载通路 ✅(2026-09-11 · 实机验证通过):复用上游 profile 机制打通「装了就生效、不装零影响」的外部插件层——
src/forge-host/profile-plugins.ts+plugin-package.ts(解析$DSH_HOME/profiles/dsh-forge用户补丁层 → 外部包体检 → 插入行裸名改写为入口绝对路径,因打包态bareModuleBaseUrl固定指向 asar 内 node_modules)+图谱并入其 client 半;装坏只跳过不连坐(Loader 对任一未激活条目回滚整棵树);首个外部插件dsh-llm-app-credentials(凭据取自本机另一应用落盘文件 + 设置页 + 自动探测出两条路由)实机验证通过(2026-09-11 · 用户确认);npm run verify:profile-plugins8/8 + typecheck/lint/build/30 单测全绿;见docs/extension-guide.md§2.5 / 坑 58/59/60;2026-09-14 安装脚本假阳性修复(坑 64):install-forge.cjs的「已装」判定被自身模板注释骗到(报"完成"但补丁层仍是[]、插件静默不加载)→ 判定改为只看生效行;装完必复核补丁层 insert 行 + 跑npm run verify:profile-plugins(本条已装forge-home并 7 项全 PASS) - Electron 子进程运行时修复 ✅(2026-09-11 · 坑 61):forge 内所有走
ctx.subprocess的工具(pwsh / grep)卡死且停止无效(实机判据:echo ok在workspace-write下转圈、danger-full-access下正常——完全访问会绕过沙箱 runner 而掩盖真相);上游两处都以process.execPath拉起 Node 版 runner,Electron 下即 GUI 子系统的electron.exe(脚本不执行、IPC 永不到达)。两层互补修复(均不动全局 env):① 入口首条 import 的subprocess-run-as-node.ts对spawn收窄注入 + 失效自检兜底;②installSubprocessHook()在ctx.subprocess启动面给spec.env补一项(覆盖沙箱包裹后的目标命令)。typecheck/lint/build/30 单测 + Electron 内三类探针(外层 IPC / 目标 env 注入 / 自检正反例)全绿;实机验证通过(2026-09-11 · 用户确认 ·danger-full-access下:grep恢复 +pwsh全能力清单全通,含文件写入/cmd子进程/stdout-stderr 分离/错误 trace) - ⏸️ M2-c 旧插件门禁置后(载体待确认,不阻塞);R6 技术债留 M5
- Windows 控制台适配 ✅(2026-09-14 · 实机验证通过 · 坑 63 / dogfood #25 · 连带收口 R23):上游 Windows 进程原语按「子进程共享宿主控制台」设计(
dsh-win32-process创建目标不带任何控制台标志 + 沙箱 README 第 115 行明写该前提),官方 CLI/web 跑在终端里天然满足;forge 的 main/runner 都是 GUI 子系统的electron.exe→ 控制台类目标被 Windows 自建可见控制台(实测count=1/visible=1)= 闪框,受限令牌下同一动作死在 DLL 初始化 = R23 的0xC0000142(两个现象一个根因)。新增src/forge-host/win32-console.ts(AttachConsole优先 →AllocConsole+隐藏;幂等、绝不抛)+win32-console-preload.ts(runner 预载)+ 双注入点(child_process.spawnargv 与spec.argv)+ main 启动即挂;实机确认:workspace-write下 pwsh 恢复可用(原恒0xC0000142)→ 与闪框一并消失、短期口径(danger-full-access)解除;typecheck/lint/30 单测/build 全绿 - 打包态子进程 asar 路径改写 ✅(2026-09-15 · 坑 68 / dogfood #26):安装版
Glob/Grep恒报ripgrep provider failure——上游rgPath由require.resolve得来、打包后指向app.asar内(CreateProcess无法启动归档内文件;dev 无 asar 层故只在打包态暴露,danger-full-access同样失败)。在既有ctx.subprocess启动咽喉加 asar →app.asar.unpacked孪生改写(toUnpackedAsarPath+withUnpackedAsarSpecArgv,双条件收窄、零上游耦合,见 D-31);typecheck/lint/build/50 单测全绿 + 安装版 asar 复刻验证「改写后 rg 可启动」 - web_fetch 两处修复 ✅(2026-09-15 · 坑 71/72 · dogfood #27/#28 · 用户实机确认):① 恒报
no usable web provider is registered= forge roster 漏抄官方dsh-base的web-fetch-http插入行与web行fetchProvider键(工具在、provider 不在——tool-web的fetch只管开关,能不能抓看fetchProviders;search/fetch 是两个独立注册表,故「搜得到」不等于「抓得到」;用户首轮「状态漂移」结论已证伪);② 打不开被墙站点 = 上游dsh-http-proxy是 library、不装策略即proxyRouteFor恒直连,而「安装」属 launcher 职责、Electron 宿主缺位 → 新增forge-node-proxy.ts把 Node 出口接入同一份网络设置(system= 镜像session.resolveProxy的系统代理 + DIRECT 回落进程 env;manual用手动规则解析出的host:port;direct释放策略)
M3-b4 · dogfood 门禁(🔄 进行中)
- 全量回归(M1+M2+M3 全链)+
netstat零监听再验证 + 崩溃恢复/多窗口组合测试(多窗口仅验「不崩不干扰」) - #25 工具调用闪 cmd 框 + 「工作区内修改」下 pwsh 不可用 ✅(2026-09-14 · 坑 63 · 用户实机确认):同一根因——创建者(GUI
electron.exe)无控制台时目标被迫自建控制台,受限令牌下自建死在 DLL 初始化(0xC0000142)、普通令牌下自建出可见窗口(闪框);控制台适配落地后受限子进程改走共享 →workspace-write下 pwsh 恢复、闪窗消失,R23 随之 closed - #26 安装版 Glob/Grep 全挂(
ripgrep provider failure)✅(2026-09-15 · 坑 68):真因 = 上游解析出的rg.exe落在app.asar内(CreateProcess无法启动归档内文件;dev 正常、danger-full-access同样失败);一轮误判曾指向「沙箱禁止命名管道」,已证伪(建管道的是无限制 runner,受限的只有最终目标)。修复 = 启动咽喉 asar → unpacked 孪生改写;待随 rc.5 装机实机点验 glob/grep - #27/#28/#29 forge 工具面三项 ✅(2026-09-15 · 坑 71/72 · D-33 · 用户实机确认):①/#27
web_fetch恒报「无可用 provider」=roster 漏抄官方web-fetch-http行与fetchProvider键;②/#28 打不开被墙站点=dsh-http-proxy不装策略即恒直连 → 新增forge-node-proxy.ts(system镜像系统代理);③/#29 图片不可用=外部插件dsh-llm-app-credentials的路由自声明 text-only(模型能力本无问题)→ 插件侧按模型声明inputModalities+ 改多模态发送,已实机验证(详见docs/dogfood-issues.md#27/#28/#29)。①②已提交(6f09dbe/354100d)。open:上游网络层失败恒TypeError: fetch failed(error.cause被吞,不改官方代码) - 待实机点验(2026-09-04 批次):外观 section V2(#8)· 图标需求清单+新建包(#9)· 图标光学归一(#10)· 标题栏图标主题化(#11)· 全局图标分层 D-23(#12)· 工作区图标槽位 4 项(搜索/视图选项/新建/文件夹两态;
ICON_SLOTS增 match 官方 path 特征,上传自动并写包内 ui-overrides.json,ui-icons 覆盖层升级 themeIcon 内联上色 + img 兜底) - 上游 0.1.5-rc.2 实机冒烟随 dogfood 合并观察(重点:交付文件卡片排版/对话间距、代码文件图标换全彩 artwork、会话统计 cacheWrite=0 隐藏该行、反馈弹窗确认;0.1.5 系 session 域与 roster 装配无回归;工作区侧栏内联图标槽位 match 特征基于 dist 探测、未被 assess 覆盖,需一并点验)
- #15 安装版无法聊天 ✅(2026-09-09 · 坑 45):根锚点 cordis.yml 移入 asar(copy-web 生成
dist/cordis.yml+ boot 打包分支改app.getAppPath()/dist/cordis.yml),win-unpacked 实机验证预设 4 个无 broken +session/prompt通 + 会话落盘;待发 alpha.6 方可到达存量安装版 - #16 启动期 rightbar 崩溃(
usePanelInfo is not a function)✅(2026-09-10 · 坑 46/47):0.1.5 rightbar 契约——自研 layout 补齐官方panelInforoot hook(实机验证该类报错消失);附带根治 index.html 无缓存头致注入图谱陈旧(入口 URL 加启动版本 query + no-store) - #17
sessions in inactive context启动刷屏 ✅(2026-09-10 · 坑 48):真因=自研 layout 只声明conversation而漏官方语义的main(keyed+root),致上游 ui-conversation 自建该槽位并继承session-maybe→ agent-preset 条目随会话状态反复重建、踩 Cordis 激活窗口;单变量对照(官方 web 版无此错 / 换回官方 ui-layout 报错消失)锁定,补齐main槽位后启动零报错 - #21 极简模式 token 远超官方 ✅(2026-09-10 · 坑 53):宿主 roster 抄了官方
dsh-base全量 insert,却漏抄官方 web profile 的 23 行「模型可见」关停表 → 全局层工具渗进所有预设(view(scope) = global + 链,persona.complete只裁提示词段落);已补boot.ts§3b 24 行 disabled + 删除被 shipped 根永久遮蔽的自带 standard 预设(预设来源回归官方 shipped 根);typecheck/lint/build/30 测试全绿 + 实机验证通过(2026-09-10 · 用户确认) - 问题登记
docs/dogfood-issues.md(跨会话移交锚点,新会话按 #N 直取);排障$env:DSH_VERBOSE='1' - #23 创造模式(
cordis预设)挂载失败 ✅(2026-09-10 · 坑 55):预设行tool-cordis静态 injectdynamicCordisRunner/cordisInspect,而宿主半cordis-host-runner从未 insert(§3 那条disabled是「禁用未插入行」的空操作);已按官方 web profile 回填三处——§1 insert 宿主半 + boot-graph 回填 client 两半(cordis-client-runner / ui-cordis)+ 自绘侧栏补声明并渲染sidebar.footer.action;cordis-inventory兼容面退役dynamicCordisRunner/inventory(只留pluginInventory/list,防遮蔽官方实现);安全口径登记docs/08-security.md§4;typecheck/lint/build 全绿 + 实机验证通过(2026-09-10 · 用户确认) - #24 选择/添加工作区弹「无法打开文件夹」✅(2026-09-14 · 坑 62):自研 ui-workspace 顶替官方包后服务面按旧快照抄,漏 0.1.5 的
openSession/openWorkspace/forkSession(官方 ui-conversation hero 的selectWorkspace直调openWorkspace)→ TypeError 被 picker 的.catch吞成「目录失败」弹层;同源第二处 = 自研ctx.layout漏selectPanel/beginNavigation。已逐方法对齐官方 +inject补'layout'+BROWSER_GLOBALS补AbortSignal;typecheck/lint/30 单测/build 全绿,待实机点验
M6 · 全量自绘 UI(🔥 主线)
- P1 骨架 = M3-c ✅;sidebar 壳
@lansi-ai/dsh-forge-sidebar✅(2026-09-01 实机验证);@lansi-ai/dsh-forge-session-export✅(2026-09-02);2026-09-10 补齐接管面:官方 ui-layout 的panelInforoot hook(坑 46)+main(keyed/root) 槽位语义(坑 48 —— 缺它致上游 ui-conversation 的注册被隐式降为 session-maybe scope) - ✅ 标题栏版本号自有化(2026-09-10 · 用户指定 · dogfood #20):
.dsh-forge-titlebar-brand-version由上游基线(__DSH_BASE_VERSION__)改显自有版本v${__DSH_APP_VERSION__}(协议层新增注入 =app.getVersion(),与基线合成同一 script);上游基线降为悬停title,关于页两者仍并存 - ✅ 品牌资产 v2 · 黑底(2026-09-10 · 用户指定 · dogfood #22 · 坑 54):应用/托盘/Dock 图标改「纯黑
#000000+ 22% 圆角实底 + 金标」(process-logo.cjs,浅深两版同形);标题栏品牌标记独立为透明底brand-mark-{light,dark}.png(新 global 槽位,revert dogfood #14 的复用口径);存量安装靠品牌修订号BRAND_REVISION+ 哈希标记自动刷新(syncGlobalBrandAssets取代只增不改的包根迁移);typecheck/lint/30 测试/build 全绿 + 任务栏/托盘实机确认(2026-09-10 · 用户点验);桌面快捷方式/安装包图标已随 v0.1.1-rc.2 重新打包(待点验) - P2 外壳小件 · 当前焦点 =
@lansi-ai/dsh-forge-brand(sidebar.brand.mark + sidebar.brand.name 洞),会话 header 重排评估(✅ 前置:标题栏品牌标记已独立为brand-mark-*.png全局槽位,见 dogfood #22) - P3 侧栏已全量完成 ✅(2026-09-08 实机验收):workspaces W1–W5(含 picker 承重、派生层、行组件/视图选项、内容搜索 + 索引开启),见里程碑索引
- P4 对话主区(最大单件):ui-conversation/ui-renderer/ui-input-trigger/ui-attachment/ui-reference → 自研 dsh-forge-conversation 族
- P5 过程可视化:ui-tool/ui-subagent/ui-plan/ui-goal/ui-jobs/ui-skill/ui-workflow-run/ui-trajectory
- ✅ P6 首件 · 插件列表全自研(2026-09-10):界面件
@lansi-ai/dsh-forge-plugin-inventory接管settings.plugins.tab(桌面定制口径 v3:两级分组「全局插件 / 预设组成」+ 承载面筛选 chips + 精简两行、点行展开详情;预设组成组带预设切换器并照列已停用/条件行——对齐官方「会话插件 · N 个」(极简模式 = 6 行);官方同名 Tab 入CLIENT_EXCLUDE_IDS,「插件」section 外壳仍官方);数据面cordis-inventory.ts由「仅客户端图谱」升级为三源合并(Cordis 真实 Loader 条目 ∪ 客户端图谱 ∪ 预设组成;新增bindCordisInventoryHost于 boot 后绑定),根治「forge 搜不到 tool-pwsh」——官方读 Loader 真实树、forge 旧实现只读图谱致宿主侧插件全缺,见坑 57;typecheck/lint/build/30 单测全绿 + 实机验证通过(2026-09-11 · 用户确认:极简模式 6 行、预设切换器与分组均正确) - P6 设置与底座(余):ui-settings 余下 section + ui-theme/ui-locale/ui-model-selection/ui-permission-presets
- M6 门禁:每阶段对照官方不回归 + dogfood 无感切换;全部完成后功能性 ui-* 全量入 CLIENT_EXCLUDE_IDS;M6-x harness 基线动态化(前置 M4-b,随 M4 延后)
M4 · 分发与更新(⏸️ 剩余项延后)
- ✅ M4-a2 R10 协议安全白名单(dsh:// 来源校验 + zod 强校验)· ✅ M4-b 三通道稳定自动更新(stable/rc/off + 运行时切换,v0.1.1-alpha.4 链路验证)· M4-a3 零依赖实机验证 🔄(首轮已验,待新包复验)
- ✅ 发版脚本 + 坑 41 根治(2026-09-09):
npm run release -- <version> [--local] [--clean] [--push](预检→门禁→bump→commit/tag→push 一条链,push 以ls-remote回验避坑 44)+scripts/align-release-assets.cjs产物名对齐 latest.yml path(本地与 CI 共用,win/mac workflow 已插入该步);用法见docs/10-development.md§9 + README「发版(维护者)」;--publish-local本地直发链(2026-09-15):本地出 Windows 包 → 只推main不推 tag(推 tag 会触发 CI 双平台重建并--clobber覆盖本地产物)→gh release create/upload(清单与 release-win.yml 逐字一致)→ 资产核对 + 匿名 HEAD 复核;需gh auth login(装插件侧配套 = 坑 67:默认分支查询限流回退main/master) - ✅ #18 更新失败零可观测性 → 诊断面已验证(2026-09-10 · 坑 50/51):updater 关键相位落
audit.jsonl(downloading进度帧拦截,含 channel / errorStack)+ 关于页 error 相位显示status.error原文;顺带修error字段从不重置。open:①rc渠道名与 tag-alpha.N不匹配(预发布渠道必然失败)② 更新源依赖github.com,国内呈 IP 级不可达(Gitee 备选已实测链路,待验 132MB 上传上限);实机验证已闭环:真因捕获 =net::ERR_CONNECTION_RESET(关于页显示原文 + 审计落盘checking/error) - ✅ 网络代理设置(通用设置「网络设置」)✅(2026-09-10 · M4-b 配套):三态 direct/system/manual —— host 模块
src/forge-host/forge-proxy.ts+ 自研插件@lansi-ai/dsh-forge-network(注入settings.general.item);关键点:updater 走独立 session 分区electron-updater,必须对其单独setProxy(只设 defaultSession 会静默失效);作用域限 Chromium 栈(模型 API 等 Node 栈请求不在内,UI 已标注);立即生效无需重启,配置落 settingsdesktop;typecheck/lint/30 单测/build 全绿 + 实机验证通过(2026-09-10 · 用户确认);拴合面已登记docs/upstream-contracts.md§7.1/§7.2 - ✅ #19 手动「检查更新」结果零反馈 ✅(2026-09-10 · 坑 52):
check()拆checkInternal(manual)分流手动/静默;手动检查的not-available/error补系统通知(仅主窗口未聚焦,错误取首行摘要)+manual随app-update:status下行 → 关于页 6 秒结果提示;静默自检与渠道/开关联动保持安静(无契约破坏,payload 本为z.unknown()) - ✅ 检查更新链路端到端已验证(2026-09-10 · dogfood #18 收口):安装版 alpha.7 → 自更新至 alpha.8 → 再自更新至 alpha.9,检查更新 / 自动下载 / 重启安装 / 新版运行全通(
latest.yml匿名 HEAD 200 + 注册表版本号随升级更新) - ✅ v0.1.1-rc.3 发布 + 更新链排障 ✅(2026-09-14 · 坑 66):首发时 Windows 产物整体漏传(
release-win的Ensure release exists撞 mac 已建 Release →gh的HTTP 422写 stderr,在shell: powershell(EAP=Stop)下升级为终止错误、exit 0跑不到 → 后续 Align/校验/上传全 skip);修 CI 后以workflow_dispatch补传(Re-run 无效——固定旧 YAML),资产 10→15、latest.yml就位、应用内检查更新恢复;并更正长期误判:客户端要的是rc.yml(404 后回退latest.yml),不是latest-rc.yml - ✅ v0.1.1-rc.5 本地直发 ✅(2026-09-15 ·
--publish-local首跑 · 坑 67/68/69/70):门禁 → bump →npm run dist本地出包 → align/sums → commit+tag → 只推 main →gh release create --prerelease --target main+ 上传 5 资产 + 资产核对;但 Release 创建会在远端隐式建 tag → 触发release-{win,mac}双平台重建并以--clobber覆盖本地产物(坑 70;终态 15 资产,latest.yml/SHA256SUMS(-mac)与 CI 产物自洽);gh 免登录走~/.git-credentials→GH_TOKEN;已决(坑 70 · B2 · D-32):release-{win,mac}去掉on: push: tags→ 本地产物为准、mac 每版手动 dispatch;更新说明已写入 Release - M4-c 离线 e2e · M4-e 门禁(≥3 人安装即用 + SHA256SUMS 外部可验证)
03. 活跃决策与风险(一行索引;全文找 git 历史 / docs/adr/)
- 活跃决策:D-18 布局接管 root 槽位 · D-19 scope=
@lansi-ai/dsh-*· D-20 全量自绘 · D-21 骨架宿主化(--dsd-*外观契约)· D-22 启动即时响应 · D-23 图标资产 global(userData/icons/)/pack(包内icons/)分层 · D-24 用户数据跟随$DSH_HOME、设备数据(指针/Chromium 缓存/审计)留 userData(ADR-008) · D-25 品牌 logo 自有化(2026-09-09):应用图标(标题栏品牌 logo/窗口/任务栏/安装包)与托盘图标均为自有金标(logo.png→scripts/process-logo.cjs;托盘为圆角实底 + 放大金标,保 16px 可辨识)· D-26 cordis 双半启用(2026-09-10 · 创造模式):宿主半cordis-host-runnerinsert + 客户端两半(cordis-client-runner / ui-cordis)回填 + 侧栏sidebar.footer.action槽位(dogfood #23);安全口径 = 动态包 ≈ bash 访问、vm 非安全边界(docs/08-security.md§4)· D-27 自研插件命名空间统一dsh-forge(2026-09-10):插件 ID / 目录 / 文件名 / CSS 前缀全量更名,迁移常量与历史台账保留 · D-28 外部插件复用上游 profile 装载(2026-09-11):boot()本身不读 profile(loadProfile是调用方职责),forge 补上$DSH_HOME/profiles/dsh-forge用户补丁层 + 把插入行裸名改写为入口绝对路径 + 图谱并入其 client 半;外部包 peer 必须在插件目录内以 junction 指向宿主node_modules(否则模块身份不一致),装坏只跳过不连坐(坑 58 /docs/extension-guide.md§2.5)· D-29 Electron 宿主子进程运行时适配(2026-09-11):唯一改动点 =subprocess-run-as-node.ts(入口首条 import)对child_process.spawn做收窄补丁(仅command === process.execPath时注入ELECTRON_RUN_AS_NODE=1);全局 env 与「facade 创建后打补丁」两条路均已实测否决(坑 61);入口保持 CJS 是前提 · D-30 Windows 控制台适配(2026-09-14 · 坑 63):主进程与子进程 runner 各自备好隐藏控制台(AttachConsole优先 →AllocConsole+SW_HIDE兜底)以补齐上游「子进程共享宿主控制台」的设计前提——零上游耦合(只用 Windows OS API +koffi),故升级不受影响;但同一适配器文件里的spec.argv/spec.env注入点属上游内部事实,失效时无报错(退回闪窗/0xC0000142/工具卡死),已登记docs/upstream-contracts.md§7.2 两行 + §7.4 常设核查项 · D-31 打包态 asar 路径改写(2026-09-15 · 坑 68):同一注入点的第三项职责——spec.argv里指向app.asar内且存在 unpacked 孪生的路径就地改写(Electron 的 asar 透明层只覆盖 fs /require、不覆盖进程创建;dev 无 asar 层故无法内验,需用安装版 asar 复刻或装机实机) · D-32 发版权威产物 = 本地产物(2026-09-15 · 坑 70 决策 B2):release-{win,mac}.yml移除on: push: tags、只留workflow_dispatch—— 因gh release create必在远端隐式建 tag(单个 tag 创建即发 push 事件 → CI 立刻重建并--clobber覆盖--publish-local的本地产物);mac 产物改为每版手动 dispatch 一次 · D-33 Node/undici 出口接入网络设置(2026-09-15 · 坑 72 · dogfood #28):上游dsh-http-proxy是 library(策略「每进程一个答案」),不安装 =proxyRouteFor恒直连,官方由 launcher 安装、Electron 宿主缺位 → forge 在forge-node-proxy.ts补安装(system镜像 Chromium 已解析的系统代理,Electron 侧不自行读 WinINET;PAC 按 host 变化为采样近似;运行期改代理不自动感知);作用域 = 进程级全局 dispatcher(模型 API / MCP / 子进程一并受影响,回环自动旁路) - 基座决策:D-1 主进程内嵌 Cordis Host · D-2 IPC fetch 载波零端口 · D-5 roster/manifest 覆盖不改 dist · D-6
ctx.webServer等价面 · D-8 第三方经buildThirdPartyBundleDecl装载(详见docs/adr/) - 铁律:绝不改官方代码;官方未自有化处只走适配器;官方
#root保留原生自适应,只用 padding/圆角垫层(坑 20);自绘样式一律 important 化(坑 19);宿主 roster 抄官方必须连官方 profile 的disabled关停表一起抄——模型可见能力(工具/指令/计划段)归 agent 预设所有,宿主平面残留会渗进所有预设(坑 53);客户端资源图谱 ≠ Cordis 真实插件树——凡「已装载插件」语义的清单必须读ctx.loader.entries(),图谱只含界面半(坑 57) - 风险 open:R6
!!js不求值 · R9 多窗口内存(M5 验);R10 协议安全已收口(M4-a2 白名单+降级,2026-09-08)· 原「R7.runtime硬编码」已由 ADR-008 收口 · R23 已收口(2026-09-14 · 坑 63:控制台适配让受限子进程改走共享控制台,workspace-write下0xC0000142根治、短期口径解除);全录见docs/11-risks.md - 技术债:无新增待记项(原「
dsh-cordis-host-runner未装载 → 动态插件运行不支持」已随 dogfood #23 / 坑 55 收口)
04. 下一步即时行动 (Next Immediate Actions)
- 近期余项(2026-09-15 收口后):①
subagent_fork是否真继承父会话上下文——唯一未定位项,探针已备(父会话埋随机串 → fork 后让孩子复述);②web_search三项可选调优(searchMaxResults默认 8 /searchProvider选择 / 搜索 Endpoint);③ forge 工作区尚有 D-32 的 3 个 release workflow 文件未提交 - 当前焦点:M6-P6 首件「插件列表」数据面 + 界面面已全自研并实机验证通过(2026-09-11)→ 回到 M6-P2 外壳小件
@lansi-ai/dsh-forge-brand(sidebar.brand.mark + sidebar.brand.name 洞)→ 会话 header 重排评估;同期梳理 P4 对话主区(ui-conversation 族)摸底 - rc.5 已发布(2026-09-15 · 终态 15 资产 = win 4 + mac 8 + 3 描述符)→ 待收尾:① 装
DSH-Forge-0.1.1-rc.5-setup.exe点验 glob/grep(坑 68) + dogfood #24 工作区选择两条路径 + 命名空间改名后 15 个自研 client 插件按新 ID 装载;② 更新说明已写入 Release(gh release edit);③ 已决(坑 70 · B2 · D-32):两个 release workflow 去掉on: push: tags(仅workflow_dispatch)→ 本地产物为权威;mac 产物流程变为每版手动gh workflow run release-mac.yml(本次已改入.github/workflows/) - 待实机点验(2026-09-10 批次):品牌资产 v2 黑底(dogfood #22)—— 任务栏/托盘已确认(用户点验);启动日志有
[dsh-theme] 品牌资产已同步到全局图标目录(修订号 legacy → 2…);仍待:外观页「品牌标记」独立上传项、桌面快捷方式/安装包图标(已随 v0.1.1-rc.2 打包,待点验) - 待实机点验(2026-09-14 · 坑 62 / dogfood #24):工作区选择修复——对话区 hero「选已有工作区」与「添加工作区…→ 选目录」两条路径应正常建/切会话并回到会话面板,不再弹「无法打开文件夹 /
openWorkspace is not a function」;同批顺带覆盖侧栏「分叉会话 / 打开会话」(改走uiWorkspace.openSession/forkSession) - 更新链待决策(2026-09-10 · 坑 50 / dogfood #18):诊断面已补(审计落盘 + 关于页显示失败原文),用户侧排障不再靠猜;open 三项——① 渠道描述符(2026-09-14 查清并更正 · 坑 66:客户端并非要
latest-rc.yml——rc 渠道先请求rc.yml、404 后自动回退latest.yml;rc.3 当时是 Windows CI 步失败致latest.yml未上传,修复 + 补传后 rc 渠道对 rc 版本已可用;原方案 B(electron-builder配channel: rc+ 上传该描述符)基于错误前提,作废。剩余缺口:稳定版用户切 rc 渠道时allowPrerelease=false无回退 →Cannot find rc.yml,修法 =syncChannelFeed()内加allowPrerelease = channel==='rc',待定)② 更新源去github.com依赖(Gitee 已实测:无releases.atom→ 必须 generic provider、raw 可作 yml 固定宿主、releases/download/{tag}匿名可读;待验 132MB 单文件上传上限;或国内对象存储 + 自有域名,或就在可用代理下使用)③ 手动检查在阻断环境下挂起约 24 秒且无进度反馈(实测 12:49:33→12:49:57),待定是否加显式超时;新增可用路径:通用设置→网络设置→手动设置(如 127.0.0.1:7890)可让更新与页面请求走本地代理;链路本身已端到端验证通过(alpha.7→alpha.8→alpha.9 连续自更新跑通),①② 属面向陌生环境的加固、③ 仅在无代理的阻断环境下出现 - 数据面(2026-09-09 已收口):ADR-008 数据根分层落地——用户数据跟随
$DSH_HOME、设备目录只剩指针+Chromium 缓存+审计;实机验证通过(首启选目录、会话落 home、重启历史可读、旧dsh-desktop目录自动更名) - dogfood 问题按
docs/dogfood-issues.md#N 直取;上游升级npm run upstream:auto(每日 02:00 自动,判据源=GitHub releases;升级成功后按脚本打印的[TODO] 台账待人工同步清单收口)。当前上游基线 0.1.5-rc.2 待实机冒烟(重点:交付文件卡片排版/对话间距、代码文件图标换全彩 artwork、会话统计 cacheWrite=0 隐藏该行、反馈弹窗;工作区侧栏内联图标槽位 match 特征需一并点验);新版出现时按预评→人工对照流程,破坏性变更禁 auto 硬升 - 按需查阅台账:
docs/pitfalls.md(坑 1~N 排障档案)·docs/dogfood-issues.md(dogfood 现场)·docs/upstream-contracts.md(拴合面速查 + 升级 SOP)·docs/upstream-migrations.md(升级台账 C 区)·docs/11-risks.md(风险全录)·docs/adr/(架构决策全文) - ⚠️ 环境红线(省 token 用):
npm start/npm run dev/npm run dist在沙箱内必失败——运行时数据目录E:\Projects\DSHPath(凭据.lock/ 搜索索引-shm)与AppData缓存在工作区外;表现可能是业务错误壳(如loader entries failed to apply),先看输出尾部TRAE Sandbox Error再动手,直接授权沙箱外运行即可;git push报unable to write credential store属伪失败(推送已完成,坑 44);沙箱拒绝写.git/objects/**(工作区内外的仓库都一样)→git add/commit/tag/push在 Agent 沙箱内一律失败(Permission denied,申请授权也不解除)→ 这类写.git的操作必须由用户在终端执行(Agent 只能把命令/脚本准备好;2026-09-14 实测,本会话三次踩中)。见坑 0 / 38 / 42 / 44 / 65
05. 看板维护协议(防膨胀硬约束 · 原 workflow.md 场景 F,现见 PROJECT-RULES.md §3)
- 本文件是滚动窗口 ≤100 行正文:任务完成 = 一行收口(标题 + 日期 + 坑号/台账链接),过程细节不进看板——归
docs/pitfalls.md(坑档)/dogfood-issues.md(现场)/upstream-migrations.md(升级)/ commit message - 里程碑收尾:整节压缩并入「里程碑索引」;删除线、被覆盖项、已 closed 风险一律清除
- 触发即执行:看板正文超 100 行 → 立即瘦身,无需用户提醒
- 看板形态:仅 MD(本文)。"MD+HTML 双落盘"已废弃(2026-09 弃用 TRAE 后撤销)——不再维护
docs/active-context.html