dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
中文 | English
这是一个面向 DeepSeek Harness 的禅道(ZenTao)悬浮工作台插件。它在网页右缘提供一个悬浮「禅道」按钮,点击后从右侧滑出面板,展示当前账户名下「指派给我」的任务、Bug 与需求,支持拖拽到对话输入框、查看原始链接、自动刷新,并把登录态持久化到本地。
~/.zentao-sidebar-config.json,更新或重启后自动恢复;zentao 工具,模型可直接读取「指派给我」的数据或单条详情;overlay/ 覆盖上层界面样式)。插件通过 禅道 RESTful API v2 直接访问数据(不再依赖 zentao-cli 命令行):
POST /api.php/v2/users/login 换取 Token,后续请求通过 Token 头鉴权;/my/* 接口,改为遍历产品与执行,用作用域接口 + browseType 过滤:/products/{id}/stories?browseType=assignedtome/products/{id}/bugs?browseType=assigntome(禅道 Bug 的拼写变体)/executions/{id}/tasks?browseType=unclosed + 按 assignedTo 过滤curl 子进程发起请求,并把 stdout 上限提高到 2MB,避免任务列表响应被 64KB 默认上限截断;zentao 工具(action=mine 默认列出「指派给我」的任务 / Bug / 需求,action=detail + kind + id 读取单条详情),复用侧边栏的登录态。仓库不包含任何禅道密码、Token 或 API 密钥。密码只用于换取 Token;Token 仅保存在本机 ~/.zentao-sidebar-config.json,不会上传。
当前 npm 包基于 DeepSeek Harness 0.2.0-rc.2 构建(peerDependencies 为 ^0.2.0-rc.2)。DSH 在安装与启动时会把插件的 @deepseek-ai/dsh* peer 范围与运行时版本逐一比对(semver.satisfies(runtime, range, { includePrerelease: true })),任何不满足的范围都会让安装被整体拒绝,或让该 bundle 在启动时被拒绝加载 —— 因此不要把范围改回 ^0.1.x。
@deepseek-ai/dsh-client-runtime 在 DSH 0.2.0-rc.2 中已不存在(该版本既未发布 0.2.x,也不在应用 bundle 的依赖里),客户端插件改为直接使用 cordis 服务名注入(slots / connection / sessions / workspaces / uiWorkspace)。
overlay/ 界面覆盖不适用于 0.2.0-rc.2,且它是对 DSH 源码检出做整文件覆盖(不是补丁)。在 0.2.0-rc.2 上至少 4 个被替换的文件已失效:AppFrame.tsx 引用了已删除的 SIDEBAR_DEFAULT 并驱动已改名的 slot、base.css 引用了不存在的 @deepseek-ai/dsh-client-ui-theme/styles/* 导出子路径、InputBar.tsx 引用了已删除的 Icon*Outline16 图标、slot-catalog.ts 是把生成产物回退成旧版。除非另行适配,请勿应用 overlay。
前置条件:已安装 Node.js、pnpm(dsh plugin 会转发给 pnpm)以及 DeepSeek Harness 的 dsh 命令。dsh 不是独立的 npm 包,而是包 @deepseek-ai/dsh 提供的命令;可全局安装后直接使用 dsh:
npm install -g pnpm @deepseek-ai/dsh
dsh plugin --profile web add @haoyu-qi/dsh-zentao
dsh web如果不想全局安装,直接用 npx @deepseek-ai/dsh 代替上面的 dsh(不要用 npx dsh,那不是一个可执行的包):
npx @deepseek-ai/dsh plugin --profile web add @haoyu-qi/dsh-zentao
npx @deepseek-ai/dsh web组合包会安装 @haoyu-qi/dsh-host-zentao-cli-gateway 与 @haoyu-qi/dsh-client-ui-zentao-notifications 两个运行时依赖;web profile 首次使用时会自动初始化,其模板已包含官方的 @deepseek-ai/dsh-web-app。
克隆本仓库,并将插件应用到已有的 DeepSeek Harness 检出目录:
git clone https://github.com/haoyu-qi/dsh-zentao.git
cd dsh-zentao
node scripts/install.mjs /你的/deepseek-harness/绝对路径进入 Harness 目录完成依赖安装、构建和 bundle 激活:
cd /你的/deepseek-harness/绝对路径
pnpm install
pnpm run build
node apps/cli/lib/bin.js plugin --profile web add \
./packages/bundle/zentao \
./packages/host/zentao-cli-gateway \
./packages/client/ui-zentao-notifications
node apps/cli/lib/bin.js web源码安装时需要在一条命令中列出三个本地路径,因为包管理器的 link 不会把被链接 workspace 包的依赖安装到目标 profile。只有 @haoyu-qi/dsh-zentao 声明了 dsh.bundle,所以 profile 实际只会启用一个 bundle。
node apps/cli/lib/bin.js plugin --profile web remove @haoyu-qi/dsh-zentao移除 bundle 后,禅道运行时记录会一起消失。本地 ~/.zentao-sidebar-config.json 中可能仍保留服务地址、账号和 Token,可手动删除。
packages/bundle/zentao:可安装的 profile bundle 与 Cordis patch;packages/host/zentao-cli-gateway:仅限回环访问的 Host 网关,通过 REST API v2 拉取任务 / Bug / 需求并持久化登录态;packages/client/ui-zentao-notifications:浏览器端悬浮工作台侧边栏;overlay/:DSH 深色 / 红色主题与响应式布局覆盖;scripts/install.mjs:把三个 package 与 overlay 拷贝进 Harness 检出目录并更新 tsconfig。在 DeepSeek Harness dsh-v0.1.1-rc.2 检出目录中只安装插件包并构建,然后把发布白名单中的 lib/ 文件同步回来:
node scripts/install.mjs /你的/deepseek-harness/绝对路径 --packages-only
cd /你的/deepseek-harness/绝对路径
pnpm install --no-frozen-lockfile
pnpm run build:lib
cd /本仓库/绝对路径
npm run sync:built -- /你的/deepseek-harness/绝对路径
npm run check:release发布顺序必须是 Host gateway、Client UI、最后是 bundle,确保公开 bundle 出现时两个依赖已经可下载。
MIT,见 LICENSE。