xiaozhiaixue/dsh-session-id ↗★ 0
dsh-session-id-footer
Session ID footer for DeepSeek Harness: shows the current session id in small text under the composer, click to copy. 核心用途是方便用户快速获取和复制当前会话 ID。适合经常需要排查问题、归档或进行跨会话协作的 DSH 用户,属于零权限的纯 UI 辅助工具。
View the directory representative for this identical content
Other repositories with this package name
Install
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:xiaozhiaixue/dsh-session-idREADME
Read the full README ↗dsh-session-id
Session ID footer for DeepSeek Harness (DSH): shows the current session id under the composer, click to copy.
DeepSeek Harness 会话 ID 显示插件:在输入框(composer)下方的 footer 位置以小字显示当前会话 ID,点击一键复制。
仓库 / 目录名是
dsh-session-id;内部 bundle 包名沿用既有安装名dsh-session-id-footer(与~/.dsh/profiles/web/cordis.patch.yml中的注册名一致,dsh plugin从本仓库安装后即与现网安装完全同名)。这与官方惯例一致——教程示例仓库hello-plugin的包名即为dsh-hello-plugin(仓库名 ≠ 包名,包名带dsh-前缀)。
Why
DSH 的会话 ID 是排查、归档、跨会话协作时的关键标识,但 GUI 默认不展示当前会话 ID——只能靠开发者工具或归档面板间接获取。本插件补上最后一步:在 composer 下方的 dock 内以小字常驻显示当前会话 ID,点击即复制,并给出「✓ 已复制」反馈。
- 纯 UI 插件:不碰 host 状态、不注册 HTTP 端点,零风险、零权限。
- 即时复制:优先
navigator.clipboard,降级execCommand('copy')兼容旧浏览器。 - 贴近官方插件机制:走
window.__ModuleLoader__.load标准 bundle 格式 +slots.inject("conversation.composer.dock")官方插槽。
Features
- 🆔 当前会话 ID 以 11px 小字常驻 composer 底部 dock
- 📋 点击复制会话 ID(1.6s「✓ 已复制」反馈 + 绿色高亮)
- 🖱️ hover 提亮、
user-select: text可手动框选 - 🎯 无会话时自动隐藏(
sessionId为空不渲染)
Install
标准 DSH profile bundle(官方外部插件分发路径,见 docs/user/develop/basic/publish.md):仓库根目录即 bundle 包(
package.json声明dsh.bundle.patch),dsh plugin安装后由 bundle 的cordis.patch.yml自动插入插件行。无需构建步骤——纯 JS,git 安装不需要prepare脚本或allowBuilds。
Option A — official dsh plugin (recommended)
# From a directory that contains this checkout (the repo root IS the package):
dsh plugin --profile web add ./dsh-session-id
# or straight from GitHub (plain JS, no build permission needed):
dsh plugin --profile web add github:realpkuasule/dsh-session-id
# Verify the composed layer without booting:
dsh --profile web --dump-config | grep -A2 dsh-session-id-footer
dsh plugin links the package, records it in the profile's dependencies, and the bundle layer inserts the session-id-footer plugin row.
Discoverability
Add the dsh-plugin topic to your plugin repository for discoverability — the official DeepSeek Harness README recommends it, and dsh-plugin is the shared topic under which the community finds DSH plugins (both mirrors of this repo, realpkuasule/dsh-session-id and xiaozhiaixue/dsh-session-id, carry it).
Option B — manual (no CLI)
# 1. Copy the package (repo root) into your profile's node_modules
DSH_HOME="${DSH_HOME:-$HOME/.dsh}"
mkdir -p "$DSH_HOME/profiles/node_modules/dsh-session-id-footer"
cp -R . "$DSH_HOME/profiles/node_modules/dsh-session-id-footer/"
# 2. Add the bundle layer to $DSH_HOME/profiles/web/cordis.patch.yml
# (an `- insert:` list entry — same shape as the bundle's own patch file)
- id: session-id-footer
name: dsh-session-id-footer
# 3. Restart `dsh web`
Open the GUI: the composer dock now shows the current session ID in small text. Click it to copy.
Architecture
Browser (client.js, __ModuleLoader__ bundle)
└─ slots.inject("conversation.composer.dock", order 10) ──▶ session id
• props.sessionId / props.session.id → display string
• click → navigator.clipboard → fallback execCommand('copy')
• 1.6s "✓ 已复制" feedback via ctx.timeout
Node (index.js, profile Cordis plugin)
└─ empty apply(): pure UI plugin, exists only so the package
registers in the host cordis.yml / Loader; the browser half
ships via exports["./client"] + the package.json dsh.client declaration
- 数据来源:composer dock 插槽注入的
props.sessionId(官方dsh-client-ui-*渲染链自带),无需额外数据层。 - 渲染位置:
conversation.composer.dock插槽order: 10,位于 composer 卡片下方的 dock 条内。 - 隐藏逻辑:无会话(
sessionId为空)时不渲染任何元素,不占位。
Repository layout
The repository root is the bundle package, following the official bundle layout from publish.md:
dsh-session-id/
├── package.json # bundle manifest: dsh.bundle.patch + dsh.client.platform: web
├── cordis.patch.yml # the bundle's patch layer (inserts the plugin row)
├── lib/
│ ├── index.js # host half (empty apply)
│ └── client.js # browser half (__ModuleLoader__ bundle)
├── README.md
├── DESIGN.md # full design doc: decisions, risks, verification
└── LICENSE # MIT
License
MIT