DeepSHPlugins
dsh-shelf 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-shelf

會話與訊息JavaScriptMIT

會話生命週期 CLI:匯出(md/json/jsonl)、歸檔/恢復、回收站、搜尋與統計。預設只讀;引擎從不刪除任何東西。

2 Starszoahdev 更新時間 2026-08-22
訪問 GitHub 倉庫
dsh-shelf 專案預覽

專案介紹

中文

會話生命週期 CLI:匯出(md/json/jsonl)、歸檔/恢復、回收站、搜尋與統計。預設只讀;引擎從不刪除任何東西。

English

Session lifecycle CLI: export (md/json/jsonl), archive/restore, trash, search, and stats. Read-only by default; nothing is ever deleted by the engine.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
zoahdev
倉庫
zoahdev/dsh-shelf
GitHub Stars
2
Forks
1
開發語言
JavaScript
許可證
MIT
最近推送
2026-08-22
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

62/ 100
維護活躍
87
文件與實用資訊
85
生態關注度
23
安裝便捷訊號
100
專案宣告訊號
100

近 20 天仍在更新;README 含完整安裝與使用說明;關注度尚低(2)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add github:zoahdev/dsh-shelf

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

dsh-shelf

Session lifecycle for DeepSeek Harness: export, archive, restore, trash, search, and stats for your dsh session library. Zero dependencies, read-only by default.

Every dsh user accumulates hundreds of sessions and has no way to manage them (#1990, #1991). dsh-shelf is the missing shelf.

Quick start

npx dsh-shelf list                          # every session with id + path
npx dsh-shelf stats                         # counts, compressed/plain, bytes
npx dsh-shelf search "parser bug"           # header + body search (plain sessions)
npx dsh-shelf export <id> --format md       # Markdown transcript to stdout
npx dsh-shelf export --all --format jsonl --out all-sessions.jsonl
npx dsh-shelf archive <id>                  # move to sessions-archive (never deletes)
npx dsh-shelf restore <id>                  # move it back
npx dsh-shelf trash <id>                    # move to sessions-trash (recoverable)
npx dsh-shelf restore-trash <id>
npx dsh-shelf report                        # weekly session digest (Markdown)
npx dsh-shelf report 30 --format json       # 30-day digest as JSON
npx dsh-shelf report 14 --format html --out shelf-report.html   # offline dashboard
npx dsh-shelf verify                        # session health check (orphan tool calls, unfinished, empty)
npx dsh-shelf rescue <id>                   # export an un-resumable session's content
npx dsh-shelf archive-old 30                # dry run: sessions older than 30 days
npx dsh-shelf archive-old 30 --yes          # move them to sessions-archive
npx dsh-shelf tree                          # session fork lineage
npx dsh-shelf tree <id>                     # message tree (pi /tree)
npx dsh-shelf web                           # local web panel at http://127.0.0.1:4174

DSH plugin mode (panel bound to the active profile):

dsh plugin --profile web add github:zoahdev/dsh-shelf
# panel at http://127.0.0.1:4174 (committed lib/, no build at install)

Roots: --root overrides; default is $DSH_SESSIONS or ~/.dsh/sessions. Archive/trash roots default to sessions-archive / sessions-trash next to the root.

Message navigation (/tree)

Slim clone of pi /tree (double-Esc). DSH stores branches *between* sessions (parentSession + seedLength), so the tree is reconstructed from fork lineage rather than an in-file entry graph. Labels, fold, and branch summarization are not copied.

Filter (default no-tool; cycle o in the panel, or --filter / /nav user): no-tool (user + assistant text), user, all (includes tool calls).

SurfaceHow
CLIdsh-shelf tree (session lineage) / dsh-shelf tree <id> (messages)
Web panelDouble-Esc or the Tree button. ↑/↓ move, Enter preview / open, Esc close
Host plugin/nav on dsh --profile pi-tui only. dsh web / --profile web is not supported (its question form is not a tree UI).

Selecting a user message forks *before* that turn (resubmit). Selecting an assistant message forks through its completed turn (continue from there). The handler prints a /resume hint; it does not switch the TUI.

Safety model

  • Listing, stats, export, and search are strictly read-only.
  • Archive/trash move a session directory; nothing is ever deleted by the engine.
  • Export never touches the source file.
  • Zstandard-compressed sessions are detected and reported (plain-JSONL export in v0.1; raw jsonl path preserved).

Development

node --test tests/*.test.mjs
node scripts/shelf.mjs list --root <fixtures>

Why this is the gap

  • Official discussions #1990 (no way to delete a conversation) and #1991 (archived sessions cannot be viewed or restored) are unanswered feature requests.
  • The session category has 229 plugins - memory, recall, evolution - but almost nothing for lifecycle.
  • dsh-shelf is the safe, scriptable first step: build export/archive/trash/search, then a web UI on top.

Roadmap

  • [x] list / stats / export (md/json/jsonl) / archive / restore / trash / search
  • [x] weekly digest (report) + auto-archive (archive-old, dry-run by default)
  • [x] local web panel (dsh-shelf web) - list/search/export/archive/trash + daily chart from the browser
  • [x] offline HTML dashboard (report --format html) - shareable per-day bars + largest sessions
  • [x] Chinese search via CJK bigram tokenizer (zero-dependency; aligns with #1999)
  • [x] DSH plugin wrapper (dsh plugin add github:zoahdev/dsh-shelf opens the panel)
  • [x] session health check (verify) + rescue export for un-resumable sessions (#1959/#2034 family)
  • [ ] FTS5-backed search when the host provides SQLite FTS5
  • [x] Zstandard export (node:zlib decode on Node >= 22.19)
  • [x] Message navigation (tree, double-Esc in the web panel, /nav on the host) — slim clone of pi /tree

License

MIT

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案