deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:lwklbb/DSH-SessionGraph
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
SessionGraph 是一个给 DSH 用的小插件,用来把当前会话整理成导图。长会话里经常有很多调试、报错、反复修改的过程,最后真正有用的其实是结论、做了什么、还剩什么。所以这个插件会尽量过滤过程噪声,把会话压成一个可编辑、可复制的结构化大纲与导图。

SessionGraph ▾ 按钮。| 模式 | 内容 | 适合场景 |
|---|---|---|
| 默认导图 | 会话目标、最终结论、关键要点、决策与取舍、待办、文件/产出 | 平时整理一段会话 |
| 精简导图 | 只保留最终结论和待办 | 快速复盘、交接、写 commit 前看一眼 |
| 详细导图 | 默认导图 + 压缩后的时间线 | 会话比较长,想回头看过程时使用 |
目前支持这些格式:
mindmap下面用一个常见的开发场景举例:一次会话里完成了“订单列表批量导出 CSV”功能,中间可能经历了接口参数调整、字段映射修正、空状态处理和测试失败重跑。SessionGraph 会尽量把这些过程整理成最终可读的大纲。
# SessionGraph:订单列表批量导出 CSV
- 会话目标
- 在后台订单列表增加批量导出 CSV 功能
- 支持按当前筛选条件导出,而不是只导出当前页
- 导出字段需要包含订单号、用户、金额、状态、下单时间
- 最终结论
- 前端已增加“导出 CSV”按钮,并复用订单列表当前筛选条件
- 后端新增 `GET /api/orders/export` 接口,返回 `text/csv` 文件流
- CSV 字段顺序已固定,金额统一按元展示,时间统一格式化为本地时间
- 空结果会导出只有表头的 CSV,不再直接报错
- 关键要点
- 导出请求不走分页参数,只传筛选条件和排序字段
- 前端使用 Blob 下载,文件名格式为 `orders-yyyyMMdd-HHmm.csv`
- 后端复用订单查询 service,避免复制一套筛选逻辑
- 大批量导出先限制为 5000 条,超过时返回明确提示
- 决策与取舍
- 暂时不做异步导出任务,当前版本先使用同步 CSV 下载
- 不在前端拼 CSV,避免字段权限和金额格式与后端不一致
- 状态字段导出中文文案,方便运营直接查看
- 待办 / 下一步
- 补一条超过 5000 条时的接口测试
- 和产品确认是否需要导出收货地址、优惠券字段
- 后续如果数据量继续变大,再改成异步导出中心
- 文件 / 产出
- `src/pages/orders/OrderList.tsx`
- `src/api/orders.ts`
- `server/routes/orders.ts`
- `server/services/orderExport.ts`
mindmap
root((SessionGraph:订单列表批量导出 CSV))
会话目标
后台订单列表增加批量导出 CSV
按当前筛选条件导出全部结果
字段包含订单号、用户、金额、状态、下单时间
最终结论
前端增加导出 CSV 按钮
后端新增 /api/orders/export 文件流接口
金额和时间格式已统一
空结果导出表头不报错
关键要点
导出请求不带分页参数
使用 Blob 下载 CSV
后端复用订单查询 service
单次导出上限 5000 条
决策与取舍
当前版本使用同步下载
CSV 在后端生成
状态字段导出中文文案
待办 / 下一步
补充超过 5000 条的接口测试
确认是否增加收货地址和优惠券字段
数据量变大后再做异步导出中心
文件 / 产出
src/pages/orders/OrderList.tsx
src/api/orders.ts
server/routes/orders.ts
server/services/orderExport.ts
@startmindmap
* SessionGraph:订单列表批量导出 CSV
** 会话目标
*** 后台订单列表增加批量导出 CSV
*** 按当前筛选条件导出全部结果
*** 字段包含订单号、用户、金额、状态、下单时间
** 最终结论
*** 前端增加导出 CSV 按钮
*** 后端新增 /api/orders/export 文件流接口
*** 空结果导出表头不报错
** 关键要点
*** 导出请求不带分页参数
*** 使用 Blob 下载 CSV
*** 后端复用订单查询 service
** 待办 / 下一步
*** 补充超过 5000 条的接口测试
*** 确认是否增加收货地址和优惠券字段
@endmindmap
XMind 文本是 tab 缩进的大纲,复制后可以粘到支持缩进导入的工具里:
SessionGraph:订单列表批量导出 CSV
会话目标
后台订单列表增加批量导出 CSV
按当前筛选条件导出全部结果
字段包含订单号、用户、金额、状态、下单时间
最终结论
前端增加导出 CSV 按钮
后端新增 /api/orders/export 文件流接口
空结果导出表头不报错
关键要点
导出请求不带分页参数
使用 Blob 下载 CSV
后端复用订单查询 service
决策与取舍
当前版本使用同步下载
CSV 在后端生成
待办 / 下一步
补充超过 5000 条的接口测试
确认是否增加收货地址和优惠券字段
# 待办清单简介
## 结论摘要
- 前端已增加“导出 CSV”按钮,并复用订单列表当前筛选条件。
- 后端已新增 `GET /api/orders/export` 接口,返回 CSV 文件流。
- 空结果会导出只有表头的 CSV,不再直接报错。
## 待办
- [ ] 补一条超过 5000 条时的接口测试。
- [ ] 和产品确认是否需要导出收货地址、优惠券字段。
- [ ] 后续如果数据量继续变大,再改成异步导出中心。
lib/extractor.js 里是主要的解析逻辑。现在是本地规则,不依赖额外模型。大致会做这些事:
ConversationSnapshot 里读取用户消息和助手消息。stdout、stderr、exit code;npm err、pnpm err、warning/debug/verbose 日志;结论、总结、完成、结果、决定、待办、下一步、TODO、Decision、Summary 这些关键词。这个规则不是为了完整记录所有过程,而是为了快速得到一份“现在还能用的信息”。
在插件目录里执行:
dsh plugin --profile web add .
如果是在本地 DSH 源码树里安装:
dsh -- plugin --profile web add D:\desktop\plugins-test\DSH-SessionGraph
安装后重启或刷新 DSH,打开一个已有内容的会话,就能看到 SessionGraph ▾ 按钮。
项目结构:
DSH-SessionGraph/
├─ cordis.patch.yml
├─ lib/
│ ├─ index.js # host 侧入口,目前保持 no-op
│ ├─ client.js # 浏览器 UI 和 slot 注册
│ └─ extractor.js # 会话解析、导图生成、格式导出
├─ test/
│ └─ extractor.test.mjs
├─ docs/
│ └─ sessiongraph-showcase.png
├─ package.json
├─ LICENSE
└─ README.md
插件通过 conversation.input.dock slot 加入一个按钮,不接管原来的输入框,也不修改会话持久化文件。
lib/index.js 是 host 侧入口,目前只是空实现;真正的功能都在浏览器侧完成。这样做的好处是安装风险比较低,SessionGraph 只读当前页面已经有的会话快照。
核心函数在 lib/extractor.js:
extractMessages(snapshot):从会话快照提取可用消息。summarizeSession(snapshot, mode):按模式生成导图树。exportGraph(tree, format):把导图树导出为 Markdown / Mermaid / PlantUML / XMind / TODO brief。MIT © 2026 lwklbb
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。