Skills Plugins MCP Prompt Model 导航 博客 资讯 我的中心

dsh-share-session

Share dsh sessions as readable Markdown

nay-1 @nay-1 ⬇ 1 ★ 0 main

安装

dsh plugin --profile web add github:nay-1/dsh-share-session
下载安装清单

需要可复现安装时,可在仓库后追加 #commit 固定提交。

Share dsh sessions as readable Markdown

该插件未提供要点说明,请参考仓库 README。

  1. 安装并启动 DeepSeek Harness:npx @deepseek-ai/dsh web
  2. 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
  3. 用 dsh plugins list 确认已安装,必要时重启 Harness 生效

插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。

代码仓库github.com/nay-1/dsh-share-session
许可证MIT
主要语言main
下载量1
GitHub 星标0
最近推送2026-08-27
收录日期2026-09-19
分类会话与消息

事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。

以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。

# dsh-share-session

[![npm version](https://img.shields.io/npm/v/dsh-share-session.svg)](https://www.npmjs.com/package/dsh-share-session)
[![npm downloads](https://img.shields.io/npm/dm/dsh-share-session.svg)](https://www.npmjs.com/package/dsh-share-session)
[![license](https://img.shields.io/npm/l/dsh-share-session.svg)](./LICENSE)
[![node](https://img.shields.io/node/v/dsh-share-session.svg)](package.json)
[![dsh-plugin](https://img.shields.io/badge/deepseek--harness-plugin-blue)](https://github.com/deepseek-ai/deepseek-harness)

把 [DeepSeek Harness(dsh)](https://github.com/deepseek-ai/deepseek-harness)的会话日志导出为**可读的 Markdown**,方便分享、存档与二次创作。

官方自带的 `Session log` 导出的是原始事件流 ZIP(JSONL/zstd),适合机器;本插件补上人的那一半——排版好的对话记录。

---

## ✨ 特性

- 📋 **两种入口**
  - 设置页「分享会话」:按工作区分组的会话浏览器,支持折叠、预览、复制、下载
  - 聊天界面头部按钮:`⧉ 复制` / `⤓ Markdown`,当前会话一键带走
- 🎛️ **三个导出内容开关**(跨重启持久化)
  - 工具调用(默认开)— 参数与结果按 callId 精确配对
  - 推理过程(默认开)— 输出为 `
` 折叠块
  - 注入上下文(默认关)— AGENTS.md、skill-catalog 等自动注入内容
- 🔧 **正确的底层语义**
  - 多帧 zstd 日志逐帧解压(Node 原生 API 只解第一帧,这里做了帧切分)
  - compaction 折叠(`surfaceOp.replace`)正确投影存活消息
  - 活动中的会话先 flush 再导出,尾部不丢事件
- 🪶 **零运行时依赖**:宿主半侧仅用 Node 内置模块(含原生 zstd),客户端为基座 React

## 📦 安装

```sh
dsh plugin --profile web add dsh-share-session
```

安装后重启 dsh 即生效。本地开发可 link 安装:

```sh
git clone https://github.com/Nay-1/dsh-share-session.git && cd dsh-share-session
pnpm install && node build.mjs
dsh plugin --profile web add "$(pwd)"
```

> 要求 Node.js ≥ 22(原生 `zlib.zstdDecompressSync`)、dsh 0.1.x、JSONL+zstd 会话持久化后端(dsh 默认配置)。

## 🚀 使用

### 设置页

打开 Web UI → **设置 → 分享会话**:

```
┌─────────────┬──────────────────────────┐
│ ▾ dsh-test 2│ [复制 Markdown] [下载 .md] │
│   你好       │                          │
│   nihao1 ●  │   # DSH 会话:你好         │
│ ▸ dsh-plugin│                          │
│   1         │   ## 👤 用户              │
│             │   …                       │
└─────────────┴──────────────────────────┘
```

- 左侧会话按工作区分组,点击组头折叠/展开,组内按最近活动排序
- 顶部三个勾选框控制导出包含的内容,改动即时保存并作用于所有导出入口
- 右侧 `
` 预览 Markdown 源码文本

### 聊天头部

会话头部 `Session log` 左侧有两个按钮,按设置页当前选项导出:

| 按钮 | 行为 |
|---|---|
| `⧉ 复制` | 拉取 Markdown 写入剪贴板,成功显示「✓ 已复制」 |
| `⤓ Markdown` | 浏览器下载 `.md` |

### 输出示例

```md
---
title: "帮我看看目录"
session: session-f03d6827-…
---

# DSH 会话:帮我看看目录

- **会话**:`session-f03d6827-…`
- **工作区**:`/home/weoo/dsh-test`
- **创建时间**:2026-08-27 10:10:27
- **轮数**:2
- **Tokens**:↑输入 1.2k · ↓输出 0.3k

---

## 👤 用户

2026-08-27 10:10:27

帮我看看目录

## 🤖 助手

好的,我来查看。

### 🔧 bash

​```json
{"command": "ls -la"}
​```

**↩️ 结果**

​```
file-a.txt
src/
​```
```

## ⚙️ 配置

导出内容选项保存在 `~/.dsh/plugin-config/dsh-share-session.json`,缺失或损坏时自动回落默认值:

```json
{
  "includeTools": true,
  "includeReasoning": true,
  "includeInjected": false
}
```

写入为临时文件 + 原子 rename。也可通过 HTTP 读写:

```sh
curl http://127.0.0.1:3080/share-session/api/config
curl -X POST -H 'content-type: application/json' \
  -d '{"includeInjected":true}' \
  http://127.0.0.1:3080/share-session/api/config
```

## 🔌 HTTP API

插件在宿主注册 prefix `/share-session`:

| 方法 | 路径 | 说明 |
|---|---|---|
| GET | `/api/workspaces` | 列出全部持久化会话(含 live 标记与首条用户消息标题) |
| GET | `/api/session/:id/markdown` | 生成会话 Markdown;query:`tools` `reasoning` `injected` `download` |
| GET/POST | `/api/config` | 读/写导出内容选项(POST 体限 1KB,布尔校验) |
| GET | `/api` | 存活探针 |

## 🗂️ 项目结构

```
dsh-share-session/
├── package.json            # dsh.bundle.patch + client 声明
├── build.mjs               # esbuild 双入口构建
├── cordis.patch.yml        # bundle patch(行名为包名)
└── src/
    ├── index.ts            # 宿主半侧:扫描 ~/.dsh/sessions + JSON 路由
    ├── markdown.ts         # 纯函数:事件日志 → Markdown(可单测)
    └── client/index.tsx    # 浏览器半侧:设置页 + 头部按钮槽位
```

双半侧包:宿主半侧 ESM(`lib/index.js`),客户端半侧 lazy-CJS factory bundle(`lib/client.js`,由 dsh 的 ModuleLoader 在浏览器加载)。

## 🛠️ 开发

```sh
pnpm install          # 安装依赖(esbuild/typescript 仅 devDependencies)
pnpm run typecheck    # tsc --noEmit
pnpm run build        # 双入口构建到 lib/
```

调试循环:

```sh
dsh plugin --profile web add "$(pwd)"      # 首次装入 profile(link 方式)
dsh --profile web --port 3101 --no-open    # 启动
# 改代码后:
node build.mjs && 重启 dsh
```

冒烟检查:

```sh
curl -o /dev/null -w '%{http_code}' http://127.0.0.1:3101/plugins/dsh-share-session/client.js   # 200
curl http://127.0.0.1:3101/share-session/api
```

## ❓ FAQ

**Q: 为什么导出里没有系统注入的 AGENTS.md 内容?**
默认隐藏(保持分享清爽)。设置页勾选「注入上下文」即可包含,每条注入带来源标注。

**Q: 正在进行的对话能导出吗?**
可以。列表中带 `● live` 标记的会话会在导出前自动 flush,已发生的事件都会包含。

**Q: 导出是原始日志吗?**
不是。原始事件流请用官方 `Session log` 按钮(ZIP);本插件产出的是面向阅读的投影。

**Q: 支持 SQLite 持久化后端吗?**
暂不支持,仅扫描 JSONL+zstd 后端的会话目录。

## 📄 License

[MIT](./LICENSE)

数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。