dsh-plugin-lingxi
DSH 插件(dsh-plugin):本仓库是 DeepSeek Harness 生态的插件,通过 GitHub 话题标记
dsh-plugin可被搜索。在 GitHub 检索:topic:dsh-plugin。
把 DeepSeek Harness(DSH) 的会话记录与工作区产物,导入为**灵犀(金山办公)**可接手的新任务。
DSH 是 DeepSeek 开源的 Agent 运行时(@deepseek-ai/dsh,一切皆插件)。本插件在 DSH 内注册一个 import_to_lingxi 工具,把会话日志(事件溯源的 JSONL)解析、重构为一个自包含的导入包,同时保留原始日志与产物文件,作为灵犀接手任务时的完整上下文。
功能特性
- 解析 DSH
SessionEventMap事件日志,重构成人类可读的 Markdown 对话记录(按轮次/步骤分组,区分用户、助手、工具调用与结果); - 原样保留
conversation.jsonl原始日志,做到「模型可见即已记录」的完整可追溯; - 可选收集工作区产物文件,自动排除
node_modules、.git等无关目录; - 生成
manifest.json任务入口元数据(来源、会话摘要、文件清单),灵犀据此接手; - 双触发方式:会话内自然语言(agent 调工具)+ 独立命令行(
lingxi-import)。
目录结构
dsh-plugin-lingxi/
├── package.json # type: module,Node >= 22
├── lib/
│ ├── index.js # 插件入口:name/inject/Config/apply 四导出
│ ├── importer.js # 核心导入逻辑(纯 Node,可独立运行)
│ └── render.js # 日志解析 + Markdown 渲染 + 产物扫描
├── bin/
│ └── lingxi-import.mjs # 独立命令行入口
├── example/
│ └── preset.cordis.yml # preset 配置示例
└── README.md
安装
环境要求:Node 22+,已安装 @deepseek-ai/dsh(npm i -g @deepseek-ai/dsh)。
# 1. 安装插件自身依赖(本插件核心逻辑零第三方依赖,此步可选)
# 2. 把包加入 profile,使 preset 能用裸包名引用
dsh plugin --profile web add ./dsh-plugin-lingxi
dsh plugin add不会把包变成 profile 层(那需 bundle 声明);它只让裸包名可解析。用本地目录迭代时也可直接换用绝对路径。
配置(preset)
在 profile 的组合文件末尾追加一行(只消费 host 的 tools 注册表、不发布 service,必须平铺在顶层,勿放进 isolate group):
# agent.cordis.yml 末尾追加
- id: lingxi
name: dsh-plugin-lingxi
config:
targetDir: C:/Users/你/lingxi-imports # 导入包输出目录(灵犀可读的位置)
includeArtifacts: true # 是否包含工作区产物
dshHome: '' # 留空则默认 ~/.dsh
改配置后若无效,先用 dsh --profile web --dump-config 看最终配置树,而不是猜。
注意:preset 在会话创建时锁定。想看到新插件,必须开新会话。
使用方式一:会话内自然语言触发
在 DSH 会话里直接说,例如:
- 「把当前会话导入到灵犀」
- 「帮我把最近这次会话和生成的文件交给灵犀」
agent 会调用 import_to_lingxi 工具,产出导入包并返回目录路径。工具参数(均可省略):
| 参数 | 说明 |
|---|---|
sessionLogPath |
日志文件绝对路径,优先级最高 |
sessionId |
会话 ID,缺省导入最近一次会话 |
workspaceDir |
产物目录,缺省当前工作目录 |
targetDir |
输出目录,缺省按 config,再缺省 ~/lingxi-imports |
includeArtifacts |
是否含产物,缺省按 config |
使用方式二:独立命令行
不依赖 DSH 运行时,直接对日志文件打包:
node bin/lingxi-import.mjs \
--session-log ~/.dsh/sessions/app/session-42/log.jsonl \
--workspace ~/projects/app \
--target-dir ~/lingxi-imports
或按会话 ID 自动定位:
lingxi-import --session-id session-42 --dsh-home ~/.dsh --target-dir ~/lingxi-imports
--no-artifacts 可跳过产物收集;--help 查看全部选项。
导入包结构
<targetDir>/lingxi-import-<sessionId>-<时间戳>/
├── manifest.json # 任务入口:来源、摘要、文件清单(灵犀先读这个)
├── conversation.md # 人类可读的对话记录
├── conversation.jsonl # 原始日志(完整可追溯,兜底)
└── artifacts/ # 工作区产物文件(可选)
在灵犀中接手
在灵犀里发起新任务时,把导入包目录(或直接给 manifest.json 路径)交给灵犀即可。灵犀读取 manifest.json 和 conversation.md,就能把 DSH 会话当作一个新任务“接过来”继续处理,产物文件一并可用。
兼容性说明
- 日志字段基于
packages/core/session/src/types.ts的SessionEventMap;解析器对content的字符串/数组/对象形态均做了稳健提取,个别无法识别的行会原样保留到conversation.jsonl,不丢信息。 - agent 的输出仅用于人类阅读,模型表面(含 compaction 替换区间)不纳入 transcript,符合官方「append 来源事件才是人类记录的持久源材料」的建议。
No comments yet. Be the first to write one.