0.1.2-comp 分支修改计划

August 30, 2026 · View on GitHub

状态:✅ 已实施于 0.1.2-comp 分支,typecheck / test / build 已通过。 目标:让 dsh-commandcode-usage-monitor 完整兼容本地 DSH 新源码 0.1.2-alpha.1,并推送到 GitHub 的 0.1.2-comp 分支。 依据:txtai 新源码语料 + codegraph(当前项目 & DSH 框架源码双索引)+ 实际 API 签名核对。

1. 结论:可行,但要注意依赖来源

  • 本地 DSH 源码是 0.1.2-alpha.1尚未发布到 npm
  • 因此 0.1.2-comp 分支不能直接 npm ci / npm install 从公共 registry 安装全部依赖。
  • 该分支应面向 DSH monorepo checkout / workspace 环境,或等 DSH 发布 0.1.2-alpha.1 后再作为普通 npm 包使用。
  • 建议同时保留 main 分支继续面向 npm 发布版 0.1.1-rc.2,避免破坏现有用户。

2. 分支与版本

分支名:0.1.2-comp
package.json version:0.1.2-comp.0

0.1.2-comp.0 是合法 semver prerelease,不会与 0.1.2-alpha.10.1.1-rc.2 冲突。

3. 依赖策略

3.1 本地开发 / 验证

在 DSH checkout 旁使用 workspace 或 file: 依赖:

# 示例:在 DSH monorepo 内把本插件作为 workspace 包加入
# 或在本插件 package.json 中临时使用 file: 指向 DSH packages
npm install ../deepseek-harness/packages/client/runtime
npm install ../deepseek-harness/packages/client/ui-renderer
npm install ../deepseek-harness/packages/client/store

3.2 package.json 版本范围

将 DSH 相关依赖统一改为:

"@deepseek-ai/dsh-commands": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-credentials": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-host-webserver": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-launch-environment": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-settings": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-api-remotes": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-client-ui-sidebar": "^0.1.2-alpha.1",
"@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.1"

若在 DSH monorepo 内使用,建议直接写 workspace:^;若独立仓库使用,则用 file: 或等待 npm 发布。

4. 代码修改清单

4.1 src/client/index.ts

// 删除
import type {
  ClientContext,
  SettingsScope,
  SettingsScopeSpec,
} from '@deepseek-ai/dsh-client-runtime/client'

// 改为
import type { Context as ClientContext } from '@deepseek-ai/cordis'
import type { SettingsScope, SettingsScopeSpec } from '@deepseek-ai/dsh-client-ui-settings/client'

保留其余 type-only import(locale / settings / sidebar / slots)。

4.2 package.json

  • version0.1.2-comp.0
  • dsh.client.inject 改为:
"inject": [
  "@deepseek-ai/dsh-client-connection",
  "@deepseek-ai/dsh-client-locale",
  "@deepseek-ai/dsh-client-ui-renderer",
  "@deepseek-ai/dsh-client-ui-settings",
  "@deepseek-ai/dsh-client-ui-sidebar",
  "@deepseek-ai/dsh-api-remotes"
]
  • devDependencies:
    • 移除 @deepseek-ai/dsh-client-runtime
    • 新增 @deepseek-ai/dsh-client-ui-renderer
    • 其余 DSH 包版本升到 ^0.1.2-alpha.1

4.3 build/web-platform.ts

同步本地 DSH packages/client/web/src/platform.ts

export const PLATFORM_MODULES = [
  'react', 'react/jsx-runtime', 'react-dom', 'react-dom/client', '@deepseek-ai/cordis',
  '@deepseek-ai/dsh-client-store',
  '@deepseek-ai/dsh-client-ui-slots',
  '@deepseek-ai/dsh-client-ui-primitives',
] as const

4.4 build/tsdown.client.ts

  • 删除 RUNTIME_STORE_EXEMPTION = '@deepseek-ai/dsh-client-runtime/client'
  • CLIENT_EXTERNALS = [...PLATFORM_MODULES]
  • 可选:进一步同步当前 DSH packages/client/tsdown.client.ts 的新能力(?inline CSS、staticLinkedclientBuildEnvironmentDefines),但当前插件只用 .module.css,非必须。

4.5 tsdown.config.ts

  • 若不同步完整 DSH 构建预设,则无需修改。
  • 若同步完整预设,需移除 libExternal 参数并适配新 clientBundle 签名。

5. 文档更新

  • docs/project-facilities.md:Browser 技术栈改为 dsh-client-store / dsh-client-ui-renderer,并注明该分支面向 0.1.2-alpha.1
  • docs/dsh-breaking-change-audit.md:标记“路线 B 已实施于 0.1.2-comp 分支”。
  • docs/README.md:加入本计划文档。

6. CI 策略

当前 .github/workflows/ci.yml 使用 npm ci,在 0.1.2-comp 分支上会失败(因为 0.1.2-alpha.1 未发布)。

建议:

  1. 0.1.2-comp 分支上新增/调整 workflow:
    • 先 checkout deepseek-harness 到对应 0.1.2-alpha.1 源码
    • 将本插件作为 workspace 包加入 DSH monorepo,或使用 file: 依赖安装
    • 再执行 typecheck / test / build
  2. 或者暂时让 0.1.2-comp 分支跳过 CI,等 DSH 发布后再恢复标准 npm ci

7. 验证清单

# 在 DSH monorepo workspace 环境中
npm install
npm run typecheck
npm test
npm run build

预期:

  • typecheck 通过
  • 现有 7 个测试全部通过
  • lib/index.jslib/client.js 正常生成
  • 浏览器端能正常注册 settings.sectionsidebar.footer.action

8. 风险与注意

  • @deepseek-ai/dsh-client-store 未发布到 npm,普通用户无法直接安装该分支。
  • 若 DSH 后续发布正式版,0.1.2-comp 分支应尽快合并回 main 并更新版本范围。
  • 构建预设若不同步,可能无法使用 DSH 新 CSS 能力,但不影响当前功能。