复制会话日志路径,让另一个会话接着干
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/10 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 439436269-ctrl/dsh-session-path该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 25 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 9 处,展示前 9 条)
- 写入剪贴板lib/client.js:69
async function writeClipboard(text) { - 写入剪贴板lib/client.js:72
await navigator.clipboard.writeText(text); - 发起网络请求lib/client.js:100
const response = await fetch(ROUTE + "?" + params.toString(), { headers: { accept: "application/json" } }); - 写入剪贴板lib/client.js:106
if (!(await writeClipboard(text))) throw new Error("clipboard write was refused"); - 写入本地文件lib/handoff.js:193
await mkdir(directory, { recursive: true }); - 写入本地文件lib/handoff.js:217
await writeFile(file, text, "utf8"); - 读取本地文件lib/paths.js:79
names = readdirSync(directory); - 读取本地文件lib/paths.js:130
candidates = readdirSync(root); - 读取本地文件lib/paths.js:143
stats = statSync(dir);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 复制会话日志路径
- 生成交接说明
- 供其他会话续接
DeepSeek Harness 插件:复制会话的日志路径(外加一份智能体可读的交接说明),让另一个会话读取并接着干。
README
由 DeepSeek 最新模型翻译生成dsh-session-path
给 DSH 的会话加一条「路径」:复制当前会话的日志路径(或一段可直接粘贴的接续指令),让另一个会话能读到这段对话并接着往下干。
会话 header 里的 ⧉ 按钮 ──► 剪贴板里的接续块(标题 / 会话 ID / 工作目录 / 日志路径) │ 另一个会话 ──► session_handoff({ sessionId }) ──► 解压后的可读文件 ──► read 它,继续
长什么样
当前会话:会话标题栏右侧多一个 ⧉ 按钮。
会话标题栏上的复制按钮
任意会话:侧栏会话行的 ⋯ / 右键菜单最后一项(不用先打开那个会话)。
侧栏会话行菜单里的「复制会话路径」
它解决什么问题
DSH 每个会话的原始记录在 $DSH_HOME/sessions/<工作区>/<会话目录>/session[.vN].jsonl[.zstd]。
这个文件有两个麻烦:
1. 路径不好拿 —— GUI 里没有「复制会话路径」的入口;
2. 拿到了也不好读 —— .zstd 是多帧 Zstandard 容器(每次追加一个独立 frame), zcat 之类只解第一帧,直接 read 会失败。
这个插件把两件事都补上:一个按钮复制路径/接续块,一个工具把日志转成可读文件。
展开完整文档(README 剩余 1 节)
dsh-session-path
给 DSH 的会话加一条「路径」:复制当前会话的日志路径(或一段可直接粘贴的接续指令),让另一个会话能读到这段对话并接着往下干。
会话 header 里的 ⧉ 按钮 ──► 剪贴板里的接续块(标题 / 会话 ID / 工作目录 / 日志路径) │ 另一个会话 ──► session_handoff({ sessionId }) ──► 解压后的可读文件 ──► read 它,继续
长什么样
当前会话:会话标题栏右侧多一个 ⧉ 按钮。
会话标题栏上的复制按钮
任意会话:侧栏会话行的 ⋯ / 右键菜单最后一项(不用先打开那个会话)。
侧栏会话行菜单里的「复制会话路径」
它解决什么问题
DSH 每个会话的原始记录在 $DSH_HOME/sessions/<工作区>/<会话目录>/session[.vN].jsonl[.zstd]。
这个文件有两个麻烦:
1. 路径不好拿 —— GUI 里没有「复制会话路径」的入口;
2. 拿到了也不好读 —— .zstd 是多帧 Zstandard 容器(每次追加一个独立 frame), zcat 之类只解第一帧,直接 read 会失败。
这个插件把两件事都补上:一个按钮复制路径/接续块,一个工具把日志转成可读文件。
装法
从 npm 装进某个 profile:
dsh plugin --profile desktop add dsh-session-path
本地开发时也可以直接装插件目录(见下面的「开发循环」,注意 link: 装法对本插件不可用):
dsh plugin --profile desktop add ./dsh-session-path
或者手工两步(可热载入、不必重启 DSH):
1. 在 profile 的 package.json 里加依赖 "dsh-session-path": "file:<tgz 或目录>",然后在 profile 目录跑一次 pnpm install;
2. 在 ~/.dsh/profiles/<profile>/cordis.patch.yml 里加一行挂载:
- insert:
- id: dsh-session-path
name: dsh-session-path
注意:insert 不去重。走用户补丁层就别再往 dsh.profile.bundles 里加同一个包,否则同一 id 插两行、槽位重复注册。
用法
1. GUI:会话 header 上的 ⧉ 按钮(当前会话)
会话标题栏右侧多一个 ⧉ 按钮,点一下把下面这段放进剪贴板(复制成功变 ✓,失败变 ⚠):
【接续会话】<标题> 会话 ID:session-xxxxxxxx-…
工作目录:/Users/you/project 会话日志:/Users/you/.dsh/sessions/…/session.v4.jsonl.zstd
提示:日志是 zstd 多帧压缩的 JSONL。在任意 DSH 会话里调用工具
session_handoff({ sessionId: "session-xxxxxxxx-…" }) 可直接得到解压后的可读记录路径,再 read 它即可接续。
配置 copyFormat: path 时只复制裸路径一行。
2. GUI:侧栏会话行右键菜单里的「复制会话路径」(任意会话)
侧栏任何一条会话的 ⋯ 菜单 / 右键菜单里,最后一项是「复制会话路径」(在「归档会话」下面,带一条分隔线)——不用先打开那个会话。点击后菜单关闭,顶部弹一条「会话路径已复制」提示。
注册用的是宿主自己的 list 槽位 sidebar.workspaces.session.menu.item(和「置顶/重命名/分叉/归档」同一套机制),order: 500 排在归档(400)之后,separatorBefore 让本项自成一组。
3. 工具:session_path
拿路径和会话信息,只读、不落盘。
| 参数 | 说明 |
| sessionId | 目标会话;省略=当前会话 |
| format | path(裸路径)或 block(接续块,默认取插件配置) |
4. 工具:session_handoff
把会话渲染成解压后的可读文件,返回绝对路径 —— 这是「其他会话读取并接续」的正路。
| 参数 | 说明 |
| sessionId | 目标会话;省略=当前会话 |
| format | md(默认,转录:用户/助手文本 + 工具调用一行摘要)或 jsonl(解压后的原始事件流) |
| maxChars | 字符预算;超出时保留最近的部分(接续只需要最近上下文),默认取插件配置 |
输出示例:
会话记录已写出:/Users/you/.dsh/session-handoff/session-xxxxxxxx-….md 格式 md · 18432 字符 · 46 条(仅最近部分,前文已截断)工作目录:/Users/you/project 原始日志:/Users/you/.dsh/sessions/…/session.v4.jsonl.zstd 下一步:用 read 读取 … 即可接续该会话。
配置
| 键 | 默认 | 说明 |
| enabled | true | 关掉则不注册任何工具与路由 |
| copyFormat | block | 按钮复制的内容:block 接续块 / path 裸路径 |
| handoffFormat | md | session_handoff 的默认格式 |
| handoffDir | "" | 交接文件目录;空=$DSH_HOME/session-handoff |
| maxHandoffChars | 200000 | 单个交接文件的字符预算 |
| titleScanBytes | 2097152 | 从日志里读标题时的压缩字节预算 |
| promptEnabled | true | 是否往 system prompt 里加那段引导 |
| promptOrder | 64 | 该段的排序 |
注意:profile 的 cordis.patch.yml 对 config 是整块替换,只想改一个键也要把想保留的键写全。
结构
lib/index.js 入口:装配 settings / systemPrompt / 路由 / 工具 lib/config.js schemastery Config + 代码侧默认值 lib/paths.js $DSH_HOME、sessions 根、会话目录与日志代际 lib/zstd.js 多帧 Zstandard 边界扫描 + 逐帧读取 lib/session-info.js 会话 id → 路径 / cwd / 标题 lib/handoff.js 转录渲染与交接文件写出 lib/copy-text.js 剪贴板载荷 lib/route.js /api/dsh-session-path/resolve(只读,带信任围栏) lib/trust.js Host / Origin / sec-fetch-site 判定 lib/tools.js session_path、session_handoff lib/client.js 浏览器半:header ⧉ 按钮 + 侧栏会话行菜单项 test/selftest.mjs 23 项自检(含真实多帧日志)
开发循环(本机实测的坑)
插件的服务端半边要 import 宿主包(@deepseek-ai/dsh-tools、@deepseek-ai/schemastery),这决定了它不能用 link: 目录依赖 —— link: 之后包的真实路径在 profile 之外, Node 从真实路径往上找 node_modules 找不到宿主包,插件会 ERR_MODULE_NOT_FOUND:
$ node -e "import('@deepseek-ai/dsh-tools')" # 在插件目录里
dsh-tools FAIL ERR_MODULE_NOT_FOUND
本机其它 link: 插件(dsh-piano / dsh-scroll-piano)之所以没事,是因为它们服务端不 import 任何宿主包。
所以改代码后要打包 + 重装:
NODE=~/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/node/bin/node
PNPM="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/pnpm/bin/pnpm.mjs"
cd <本目录> && "$NODE" "$PNPM" pack --pack-destination dist
cd ~/.dsh/profiles/desktop && "$NODE" "$PNPM" install
再 touch 一下 cordis.patch.yml 触发热载入;客户端半需要刷新页面
pnpm 对同路径同版本的 file: 包会跳过重装:改了版本号或 remove + add 才能确保装进去的是新代码。
边界
- 只读:session_path 与 HTTP 路由都不写盘;只有 session_handoff 写文件,且只写进 handoffDir(默认 $DSH_HOME/session-handoff)。
- 不解压全文到内存:按 frame 扫描,一次只持有单帧 + 尾部残帧。
- 路由带信任围栏(仅 loopback / 显式 trusted host,拒绝 cross-site 与跨源 Origin)。
- 交接文件按字符预算保留最近部分:接续场景里尾部上下文才有用。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
439436269-ctrl/dsh-session-path
复制会话日志路径,让另一个会话接着干
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目