dsh-session-artifacts

DSH PLUGIN工具与能力

仓库 ShirohaChan/dsh-session-artifacts

工具与能力 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

dsh-session-artifacts 是 ShirohaChan 维护的 工具与能力 类 DSH 可安装插件, 仓库为 ShirohaChan/dsh-session-artifacts,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

dsh-session-artifacts 是工具与能力类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类工具与能力 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 1 复刻 0 · 未关闭 issue 0
最近更新 2026-10-16 创建于 2026-10-15
README 12.6 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:ShirohaChan/dsh-session-artifacts
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

工具与能力
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

文件读写存储

上游标签

dsh-plugin

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在工具与能力场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-session-artifacts当前 L5 · 运行验证通过 低风险 1 未标注 有
huashu-design 未做沙盒验证 未标注 3.0 万 未标注 有
loopx 未做沙盒验证 未标注 6,233 未标注 无
agy-staff 未做沙盒验证 未标注 870 未标注 有
dsh-startup-screen 未做沙盒验证 未标注 633 未标注 有
minara-skills L4 · 沙盒安装通过 中风险 360 未标注 有

仓库档案

工具与能力
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方ShirohaChan仓库 dsh-session-artifacts · 默认分支 main
分类工具与能力tools
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue1 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-15 · 2026-10-16最后推送 2026-10-15
本站收录2026-10-30首次进入本站目录的时间

README 全文

12.6 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-session-artifacts

This package is built by DeepSeek-v4.1 flash!


English · 中文

Clean up what a session left in your workspace — and, when you want it,
delete the session record too. Opt-in, previewed, and verified before anything
is removed.

A session's scripts, reports and generated files stay behind after the
conversation is gone. Nothing in DSH records which files those were, so this
plugin reconstructs that from the session log and shows you the exact list —
with the total size — before anything is deleted.

Three things it can do, chosen by two checkboxes in one dialog:

  • Delete the artifacts, keep the conversation — tidy up a session's mess
    without losing the session.
  • Delete the session record — with or without its artifacts.
  • Neither is assumed: the artifact step is off by default.

It is self-contained: it removes the session record itself and does not call
dsh-chat-manager's /plugins/dsh-session-delete route, so it keeps working
when that plugin is disabled or absent.

What it does

  1. Open the session's ⋯ menu and pick Delete session and artifacts…
  2. The dialog shows the exact file list and total size before you commit.
  3. Tick what you want removed. At least one box must be ticked.
  4. Confirm. When the record is being removed it goes first, then the previewed
    files.
  5. If a file could not be removed, the dialog offers Retry the files left
    behind
    — it retries exactly those paths, not the whole preview.

The artifacts-only mode needs no session deletion at all: the Host holds the
previewed list behind a nonce, so the files are removable while the session and
its log stay exactly where they are.

Deleting the session record

The persistence seam deliberately has no deletion API — its own contract
states that logs accumulate under the session root until removed externally. So
this plugin performs the removal itself, against the fixed layout:

///session[.vN].jsonl[.zstd]

The location is resolved through the persistence backend
(resolveCurrentLog), then every component is re-checked before anything is
touched:

  • exactly three segments under the root, with a session-log leaf name;
  • each directory is a real directory and the log a real file — no symlinks;
  • nothing resolves outside the root;
  • removal is a two-step quarantine: the directory is renamed into a sibling
    temp directory, its identity is re-verified there, and only then deleted. A
    failure part-way restores the original rather than leaving it half-deleted.

Stopping a session that is open

An open session is live in the host registries even when nothing is running
in it, so its log writer is still attached and its row would reappear in the
sidebar. It has to be torn down before its storage can go — and the registry
exposes no dispose.

The only supported teardown is the AgentHandle returned to whoever created
the Agent, so this plugin keeps its own handle tracker: it observes Agent
creation on the shared agents service and retains each handle. Deletion then:

  1. cancels a running turn (the same path the Stop button uses);
  2. disposes the Agent through its handle — this is what unregisters it and
    detaches its Session;
  3. waits for both registries to drain, then removes the storage.

The tracker is this plugin's own rather than another plugin's, so the capability
does not go away when that plugin does.

One case cannot be handled: an Agent that was already live before the
plugin loaded has no captured handle (the handle was only ever given to its
creator). That deletion is refused with a message telling you to restart DSH —
after a restart the plugin sees every Agent from the start. It is refused rather
than deleted underneath its writer, because reporting a deletion that did not
happen is worse than not deleting.

How a file is attributed to a session

The durable session log is the only authoritative record of what a session
touched, so attribution is read from it:

Evidence Meaning Deletable
write result with meta.operation: "create" the session materialized the file yes
shell command window + file creation time the file was created while a command ran yes, if unique
present call the session delivered the file no (reported only)
write result with meta.operation: "update" the session rewrote a file that already existed no
edit call the session only rewrote an existing file no

Rewriting a file you already owned never makes it disposable, so update and
edit results are reported but never offered. A failed tool call
(FS_SANDBOX_DENIED, FS_NOT_OBSERVED, FS_STALE_VERSION, …) contributes
nothing, because the tool never materialized anything.

present is delivery, not authorship: a session asked to hand you a paper
you already had would otherwise make that paper deletable. Delivered-only files
are counted in the dialog and left alone. Set includeDelivered: true to opt
into the older, more aggressive behavior.

Shell-created files

File-tool writes are recorded explicitly. Shell commands are not: a pwsh call
records only its command text, and its tool/result carries no meta at all,
so nothing durable names the files a python foo.py run produced. In practice
this is the dominant source of leftovers — a session that writes twenty
scripts through the shell produces twenty artifacts that a file-tool-only
reader never sees.

The remaining evidence is creation time. On NTFS birthtime is a real
creation timestamp, distinct from mtime, and it survives later edits — so it
answers "was this file created while this command was running?". Pairing each
shell tool/call with its tool/result gives a tight window per command.

Three rules keep this safe:

  • Tight windows. Only the interval a command actually ran counts. A
    whole-session window is unusable: a session that ran two commands and then
    spent twenty minutes browsing would otherwise claim every file created during
    its lifetime. (Measured on a real log: such a session had 90 files inside its
    session-wide span and 0 inside its actual command windows.)
  • Uniqueness. A file created inside two sessions' windows is attributed to
    neither, because a wrong attribution deletes something this session never
    made. Concurrent sessions therefore reduce the result instead of corrupting
    it.
  • Fail closed. If the sibling sessions cannot be enumerated, the pass
    claims nothing and says so in the dialog. "Only my window covers it" cannot
    be established without knowing the others.

Only creation is claimed. A file that merely changed during a window was not
produced by the session and is left alone. Inferred files are labelled
命令行 / shell in the list, since they rest on weaker evidence than a
recorded write.

Safety

  • Workspace fence. A session may only ever propose files inside its own
    recorded working directory.
  • DSH home fence. Nothing under ~/.dsh is ever an artifact, whatever the
    session's working directory is
    . The workspace fence alone is relative to
    cwd, so a session opened at ~ or C:\ could otherwise reach the
    installed plugins, the built skills, the profiles, and the credential store.
    A genuine workspace nested inside the home (e.g. ~/.dsh/scratch) still owns
    its own files, but cannot reach its neighbours.
  • Package fence. A file inside a directory that is a DSH package — it holds
    SKILL.md, cordis.patch.yml, cordis.yml, or a package.json with a
    dsh/cordis block — is not offered, so a plugin or skill the session built
    inside its own workspace survives. Set protectPackages: false to disable.
  • Symlinks. A candidate whose real path escapes the workspace through a
    symlink is skipped, both at preview and at removal time.
  • No stale deletions. Every file is re-checked immediately before it is
    unlinked; a file whose size or identity changed since the preview is skipped
    rather than removed.
  • Relative paths resolve against the session's cwd, never the Host process
    working directory, so report.md means the file the session actually wrote.
  • The client never names paths. The Host holds the previewed set behind a
    single-use, 10-minute nonce. A path the user was never shown cannot be
    deleted, and a nonce cannot be replayed.
  • Retry is pinned. A retry entry re-baselines the file's size (the preview
    size is stale by definition) but pins its device + file index, so a path
    swapped for a different file between the two passes is refused.
  • Directories are never deleted as artifacts. Only regular files are
    offered; directories the deletion empties are pruned, stopping at the
    workspace root.
  • No secure erasure. Removal is an ordinary unlink. Backups, cloud copies,
    snapshots, and filesystem-level recovery are outside its scope.

Configuration

All fields are optional; the defaults are the safe ones.

Field Default Meaning
dshHome derived Overrides the DSH home used by the home fence. Otherwise DSH_HOME, otherwise the parent of a /sessions store.
extraExcludes [] Extra absolute paths that must never be offered.
protectPackages true Refuse files inside a DSH plugin/skill package.
includeDelivered false Also offer files the session merely delivered.
includeShell true Run the shell creation-window pass.
shellSlackMs 5000 Slack around a command window, absorbing the gap between the event clock and the filesystem clock.
deleteSession true Whether the Host offers session-record deletion. false makes the plugin artifacts-only: the record checkbox is hidden and the flow never touches the log.
lifecycleTimeoutMs 20000 How long to wait for a stopped session to leave the live registries.

Requirements

  • The per-session JSONL session-persistence backend (sessionPersistence),
    which every shipped composition mounts.
  • The live Agent registry (agents), provided by @deepseek-ai/dsh-agent. It
    is a declared dependency, because the handle tracker must be installed
    before any Agent is created — a tracker installed later captures nothing.
  • DSH core 0.2.x for the session-menu and overlay slots it extends.

No other plugin is required.
sessions is used when present, to stop a running turn before teardown.

Limitations

  • Shell attribution relies on birthtime. On a filesystem that does not record
    a true creation time, the shell pass finds nothing rather than guessing.
  • Only the creating session is detected. A file one session created and
    another later edited stays attributed to the creator.
  • A session that creates a file through a long-running background job started
    near the end of its window may fall outside the window. Prefer the file tools
    for anything you expect to delete later.
  • Directories are never offered, so a session that only created directories
    (and nothing inside them) leaves them behind.
  • The preview is a snapshot. Files created after it are not included.
  • Subagent sessions record their own writes; deleting a parent does not
    automatically delete a child's artifacts.
  • A session that was already open before this plugin loaded cannot be torn
    down (no handle was captured), so its record cannot be deleted until DSH is
    restarted. Deleting its artifacts still works.
  • The handle tracker observes the shared agents service, so it only sees
    Agents created through it. A composition that creates Agents some other way
    behaves like the pre-existing case above.

Install

dsh plugin --profile  add dsh-session-artifacts

Or from a checkout:

dsh plugin --profile  add

Then restart DSH for the Host and client halves to compose.

Uninstall

dsh plugin --profile  remove dsh-session-artifacts

Uninstalling removes only this plugin. It never deletes sessions or artifacts
on its own.

Tests

npm test

The suites cover attribution rules, the shell creation-window pass (including
the fail-closed path and the two-session ambiguity rule), the workspace / DSH
home / package fences, cross-drive paths, symlink escapes, identity
re-verification, relative-path resolution, empty-directory pruning, nonce
single-use, the retry nonce, the request fence, and the real apply() wiring
end to end.

License

MIT

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-session-artifacts 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:ShirohaChan/dsh-session-artifacts` 即可。

dsh-session-artifacts 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-session-artifacts 安全吗?

低风险。

dsh-session-artifacts 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-session-artifacts 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

2 条
不同作者的仓库分开列,请确认你要装的是哪一个
工具与能力
按星标排序,可作替代方案

huashu-design

huashu-design

在 DeepSeek Harness 里说一句话,就能拿回可交付的设计:网页、App 原型、可编辑 PPTX、动画与信息图,自带 84 种风

未标注验证等级 3.0 万 星

loopx

loopx

LoopX 是面向长周期 Agent 的本地优先控制平面,作为 DSH plugin 为 DeepSeek Harness 提供持久目标、证

未标注验证等级 6,233 星

agy-staff

agy-staff

把 Google Antigravity CLI 作为快速 Gemini 员工接入 DSH,提供子代理侧边栏、编排模式与多种角色技能。

未标注验证等级 870 星

dsh-startup-screen

dsh-startup-screen

DeepSeek Harness 的启动界面与启动动画插件。

未标注验证等级 633 星

dsh-blender-plugin

dsh-blender-plugin

让 AI 模型通过直连 TCP 通道实时驱动 Blender 的 DSH plugin:15 个工具覆盖视口取帧、任意角度渲染、内循环搜索、

未标注验证等级 211 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。