Skip to content

M3.5: 本地安装验证门(DSH 实机 + 插件 UI 冒烟) #24

Closed

Description

@DoodleBears

What to build

M3与M4之间的实机安装验证门:功能在dev环境跑通 ≠ Plugin能被真正装进DSH。按官方路径从干净profile安装BotHarness,并验证当前V1纵向路径:Bot mode → create PersonaBot → default Git Memory Repository → Orchestrator cwd → Workspace Grant → one-cwd Assignment → report/state → Activity/Presence/composer/output-event。

  1. 在本地跑起DeepSeek Harness(记录版本并pin)。
  2. 实际安装BotHarness Plugin Bundle(不是测试mock)。
  3. 确认Plugin/Fibers、Host Services、Typert/API Gateway与Client Slots加载。
  4. 由Human在真实UI操作最小tracer bullet并验证restart。

Installation facts

  • 安装只走官方CLI:dsh plugin --profile

    add <npm包 | 本地路径 | tarball>;没有dsh.bundle声明的包只是依赖,不激活层。

  • Bundle成员变化必须restart Profile;dsh --profile

    --dump-config可先验证layer。

  • 使用独立DSH_HOME与专用profile,不污染日常环境。
  • pnpm build先产出可安装artifact;Host不替Plugin构建。
  • deepseekbot是组合Bundle;core/client是其成员,不重复声明并激活同一layer。
  • 具体DSH版本、manifest键与CLI行为在执行时按当前官方docs/source/running Host复核;历史0.1.5-rc.2记录不是永久API保证。

Acceptance criteria

  • 干净环境可按reproducible checklist启动目标DSH版本、独立DSH_HOME与专用Profile,并保存Bundle/Layer快照。
  • 从零安装deepseekbot Bundle;dump-config结构正确,无bundle-less或重复layer警告。
  • restart后无FAILED Fiber;startup logs无新增fatal error;Client entry与Typert remotes可达。
  • UI显示正确:Bot mode入口、Roster/main、Settings Plugin信息与PersonaBot navigation。
  • 创建PersonaBot后自动出现真实Git Memory Repository;Orchestrator Session cwd精确等于该repo。
  • UI/模型面不存在memory_* model tools;Orchestrator通过普通file/Shell/grep/git能力工作。
  • Human授权一个Workspace Grant并创建默认workspace-write Assignment;Assignment只有一个primary cwd,report/state在UI可见。
  • PersonaBot设置中danger-full-access需要风险确认并持续警示;仅新建Assignment采用它,Orchestrator与existing Session不改变;撤销后下一Session恢复workspace-write。
  • UI Foundation: BotHarness motion preference(System / Reduce / Full) #128 设置在 Follow system / Reduce motion / Full motion 间即时切换,sidebar、composer与Group activity presentation同步改变且状态语义不丢失。
  • UI Tracer: Channel composer island 与 PersonaBot activity region #129 composer island 可在真实DM/Group发送消息,不遮挡最后消息;Bot activity: shared snapshot and live DM presence #120/Bot activity: safe tool summaries and effects #122/Bot activity: Orchestrator and Assignment aggregation #123 的共享activity、安全摘要与collapsible使用同一revision。
  • Group activity: live facepile, safe summaries and details #124 Group facepile能识别多个active PersonaBots;Reduce motion 下保持静态、可读、可键盘操作。
  • PersonaBot output: committed-output extension event #125 Output Committed Event在真实消息commit后触发,listener缺失或失败不影响消息。
  • restart后PersonaBot、Memory accepted head、Workspace Grant、Session ownership、Assignment Directory与Activity snapshot仍一致。
  • reinstall/upgrade后关键断言复现。
  • 安装与Human验证步骤沉淀为可复现checklist,M4 #11直接复用。

Blocked by

References

Activity

  1. DoodleBears commented on Sep 18, 2026

    @DoodleBears
    ContributorAuthor

    本地开发环路(M3 UI 迭代提前使用)

    M3 的名册 UI 需要真机可视验证,因此把本 issue 的开发环路提前使用(正式验收仍按本 issue 的定义走)。

    环路

    1. 一次准备:pin @deepseek-ai/dsh@0.1.5-rc.2,隔离 DSH_HOME,专用 web-dev profile;把本地 bundle 装进去(dsh plugin --profile web-dev add <path>);bundle 成员变化需要重启。
    2. 日常:dsh web --profile web-dev。
    3. 改客户端:根 pnpm build 重新产出 lib/client.js → dsh-client-hmr 检测 revision 变化并推新入口图,浏览器自动换新(仅 sourcemap 变化不触发)。
    4. 改 Host:Cordis 注册都是 ctx.effect,vendored HMR 直接生效。

    先决条件:deepseekbot 最小 bundle(挂 core + client 两个 Loader entry)尚未建立;在此之前 dsh plugin add 本地包不会被挂载。这也是本 issue 的一部分。

    环路细节已写入 docs/client-bridge.md §7。

  2. added this to the v1.0 milestone on Sep 18, 2026
  3. DoodleBears commented on Sep 18, 2026

    @DoodleBears
    ContributorAuthor

    Dev 环路实测记录(M3 提前)2026-09-18

    环境:WSL2 · fnm node v24.21.0 · @deepseek-ai/dsh@0.1.5-rc.2(npm -g)· DSH_HOME=/home/doodlebear/.dsh-m35(隔离)· profile web-dev(--from-default-profile web 从 web 模板派生)。

    安装:

    dsh plugin --profile web-dev add ./packages/core
    dsh plugin --profile web-dev add ./packages/client   # 无 dsh.bundle,普通依赖,由 deepseekbot 层挂载
    dsh plugin --profile web-dev add ./packages/deepseekbot

    坑(已绕过):@botharness/core 自带 dsh.bundle.patch,与 deepseekbot 的层重复插入 botharness-core 行。已在 profile package.json 的 dsh.profile.bundles 中移除 @botharness/core(保留依赖),让 deepseekbot 成为唯一组合层。

    启动(脱离会话,避免随 shell 退出):

    setsid nohup dsh --profile web-dev >/tmp/dsh-web.log 2>&1 < /dev/null &

    已验证:

    • dsh --profile web-dev --dump-config → # == deepseekbot 层含 botharness-core + botharness-client 两行
    • 启动无 FAILED fiber;index 的 __DSH_BOOT__ 含 @botharness/client(application batch,inject 边正确)
    • /plugins/??@botharness/client/client.js&rev=… → 200(300 kB,lazy-CJS wrapper)
    • Windows 侧 http://localhost:3080/ 可达(401 鉴权,token URL 授权后 200)
    • 真实浏览器确认 PersonaBots 入口 / 模式切换 / dashboard 渲染(下一步)
    • HMR:pnpm build 后 revision 变化自动换 bundle(下一步)
  4. added
    V1.0Milestone v1.0; mirrors the GitHub milestone
    area:fullstackEnd-to-end Host and Client implementation
    feature:runtimeInstalled runtime and profile validation
    scope:validationInstalled or end-to-end verification gate
    on Sep 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    V1.0Milestone v1.0; mirrors the GitHub milestonearea:fullstackEnd-to-end Host and Client implementationfeature:runtimeInstalled runtime and profile validationready-for-humanRequires human implementationscope:validationInstalled or end-to-end verification gate

    Type

    No type

    Projects

    • Status
      Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions