DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

big-li99 /

big-li99/dsh-zentao-panel

Verified

DeepSeekRuntime 禅道工作台插件:右侧栏查看指派给我的任务/Bug/需求,一键转成 DSH 对话上下文(禅道截图自动转真实图片附件)

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@e38d9b86

dsh-zentao-panel

DeepSeekRuntime 的禅道(ZenTao)工作台插件:在 DSH 右侧栏「开始」页里以一张 禅道卡片作为入口(与内置的「上下文」「工作区文件」同款形式),点开后在右侧栏 作为 tab 查看指派给我的任务 / Bug / 需求,一键把卡片转成 DSH 对话上下文。

功能

  • 右侧栏 tab:任务 / Bug / 需求三个分段标签,卡片列表 + 详情;
  • 卡片拖拽/点击插入对话输入框(精简 Markdown:标题 + 描述/重现步骤,不带元信息/原地址/页脚);
  • 描述里的截图变成真实图片:插入时把禅道 <img>(含列表接口的 {35861.png} 占位符) 下载下来,作为 DSH 图片附件挂到输入框,发送后模型真的能看到图;
  • 「处理」按钮:新建会话并自动下发任务背景提示词(含图片附件);
  • 登录态持久化(30 天免登),会话失效自动重登;
  • 全部颜色走 DSH 语义 token(--dsw-alias-*),日间 / 夜间自动跟随;
  • 只读,不回写禅道。

开发进度

  • M0 ✅ 禅道 API 探测(见《计划书.md》附录 A)
  • M1 ✅ host 插件:登录(30 天免登 cookie)/ my-work 三接口 / v1 详情 / loopback RPC
  • M2 ✅ client 入口:右侧栏 tab 类型 + 「开始」页引导卡片(参照 dsh-context 的「上下文」); 旧版 DSH 没有 sidebarRightTabs 时自动退回悬浮按钮 + 侧滑面板
  • M3 ✅ 插入输入框(服务级 setDraft + 真实图片附件 → composer DOM → 剪贴板兜底)+ 新会话下发
  • M4 ⏳ 自动刷新、错误提示打磨

测试

node test/client.mjs                          # client 半边:bundle 装载 + 右侧栏注册契约(无需 DSH)
DSH_HOME=/tmp/zt-smoke node test/smoke.mjs    # 直连真实禅道验证 client/service(需内网可达)
DSH_HOME=/tmp/zt-host  node test/host.mjs     # apply() + RPC wire 协议端到端(mock ctx)

(smoke/host 的禅道地址与账号来自 ZENTAO_BASE/ZENTAO_ACCOUNT/ZENTAO_PASSWORD 环境变量或 ~/.dsh/zentao-panel/config.json,不落 git。)

安装

git clone https://github.com/big-li99/dsh-zentao-panel.git
DSH="/Applications/DeepSeekRuntime.app/Contents/Resources/runtime/cli/bin/dsh"
"$DSH" plugin --profile desktop add "$(pwd)/dsh-zentao-panel"

重启 DSH Desktop 生效(client 侧改动一般 ⌘R 重载渲染进程即可;host 侧改动需重装插件后重启)。

卸载

"$DSH" plugin --profile desktop remove dsh-zentao-panel
# 可选:清除本地凭据
rm -rf ~/.dsh/zentao-panel

配置

登录信息保存在 ~/.dsh/zentao-panel/config.json(权限 0600,仅本机): 禅道地址、账号、密码(base64 混淆)、登录 cookie。卸载插件后不会自动删除, 需要时手动清理。

技术说明

数据链路(ZenTao 18.13 开源版实测,RESTful API v2 在该实例不可用):

  • 网页登录协议:md5(md5(password) + verifyRand) 加密 + jQuery 风格请求头;
  • 数据主通道:/my-work-{task,bug,story}.json(登录态 cookie,一次拿全量);
  • 详情:/api.php/v1/{tasks,bugs,stories}/{id}。

界面挂载(DSH 0.2.1-rc.2 源码确认):

  • sidebarRightTabs.register({id, kind, title, guide:[{title, description, icon}]}) 注册右侧栏 tab 类型与「开始」页引导卡片;
  • sidebar.right.pane.tab / .title 两个 keyed slot 提供 tab 正文与标题, key 用 tab 类型的 id(TabSlot 的 entryKey = definition.id ?? tab.kind);
  • 颜色只用 --dsw-alias-* 语义 token,暗色由 body[data-ds-dark-theme] 自动切换。

真实图片附件(DSH 0.2.1-rc.2 源码确认):

  • 宿主用登录态 cookie 下载禅道图片,RPC zentao.image 返回 {name, mediaType, base64};
  • 渲染端 new File([bytes], name, {type}) → conversation.createDrafts(sessionId, files) 拿到 draft id → conversation.input.for(scope).addAttachments(ids); addAttachments 只接受已注册的 draft id,不直接收 File;
  • 用户消息不渲染 markdown,所以图片只能走附件通道;发送后是模型可见的 image block;
  • 仅支持 png/jpeg/webp/gif,单图 ≤20MB、单边 ≤8192、单消息 ≤20 张;超大截图会先在 浏览器里缩到 2048 长边再附加(DSH 宿主本来也会归一化到 ≤2048)。
  • 模型不支持图片输入时宿主会拒绝整条 prompt(DSH 自身会提示「当前模型不支持图片」), 此时可在输入框里移除图片附件后发送。

详见《计划书.md》附录 A。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit e38d9b8654e5

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout