ddggkkcc/dsh-stash

随手抽屉 · Handy Drawer — DSH plugin: stash 'later' snippets during AI chats, then pick & ask in place. 低打扰、不打断心流。

Project Overview项目介绍

dsh-stash (workspace name dsh-stash) is a hybrid plugin built specifically for DSH, named after and packaged around the DeepSeek Harness host. It packages a host-side StashService that exposes a stash remote namespace, a storage-domain persistence layer, and a one-shot follow-up channel via ctx.llm.stream, while the client side ships a shell.overlay floating UI together with text-selection capture and a selection-scope resolver which locks the menu to the conversation container via a sentinel probe plus lowest-common-ancestor walk so out-of-scope text never triggers it. The bundle manifest declares it as a bundle-manifest plugin and the project follows an SDD workflow (vision → requirements → spec → plan → implementation → tests) with docs/spec/ treated as the binding contract.

Typical usage has two scenarios. Scenario one — "stash on the fly" — lets the user highlight an unfamiliar keyword, an inspiring snippet, or anything they want to revisit from a chat reply or file read, and silently saves it into the drawer without popups, page jumps, or interruption; the focus stays on the current conversation. Scenario two — "drawer follow-up" — opens an overlay floating window on the same page where the user can pick the current selection, a single drawer entry, or multiple drawer entries, optionally merge them with the input box, and ask a follow-up question with an explicit toggle for whether the current chat context should be joined. This is targeted at heavy AI-chat users who accumulate many side questions during one session and want them parked, not lost or scattered across new tabs.

Dependencies and limits: host code is TypeScript under src/host/, built to lib/host/ by scripts/build.sh; client code is TSX under src/client/, bundled to lib/client.js by npm run build:client using tsdown, both reported zero errors. Installation is performed through the DSH super-injector HTTP API; the team verified inject → self-check (host ✓ / client ✓ / boot manifest registered) → uninstall → reinject end-to-end, with a known injector-side macOS junction-removal quirk documented in scripts/README.md. Status as of the README is M1 core follow-up chain connected on 2026-08-20 and selection-scope plus UI redesign landed 2026-08-22 using a warm-graphite × sage token set; the next step is on-device regression covering AC-1 through AC-5, real LLM follow-ups, and the context-toggle behavior, while the README leaves the license field unspecified so downstream users should confirm licensing before redistribution.

ddggkkcc/dsh-stash(工作包名 dsh-stash)是一款面向 DSH 的混合架构插件,提供"随手抽屉(Stash)"功能:在当前对话页选中片段即可收入抽屉存储,不弹窗、不跳页,需要时再通过页面浮窗就地追问,全程保持低打扰心流。其形态为 DSH hybrid 插件——宿主端 StashService 暴露 stash remote 命名空间、storage-domain 持久化层与 ctx.llm.stream 一次性追问通道;客户端提供 shell.overlay 浮窗 UI、文本选区捕获以及选区归属判定能力。

典型工作流分两步:一是"随手收"——在聊天页面或文件预览中遇到陌生关键词或灵感片段,选中后立即存入抽屉,不打断当前对话;二是"随手抽屉"——从当前选区或抽屉条目中抽取一/多条内容,叠加在浮窗中就地追问,可选"是否加入上下文"以决定是否携带当前对话背景。适合重度使用 AI 问答、需要并行积累待查片段,又不愿频繁切换页面的用户。

依赖与构建:宿主端 TypeScript(src/host/,打包到 lib/host/)通过 scripts/build.sh 构建;客户端 TSX(src/client/,tsdown 输出 lib/client.js)由 npm run build:client 构建,实测零报错。注入通过 DSH super-injector HTTP API 完成,已实测注入、自检、卸载、重注全链路成功。当前状态为 M1 核心追问链路已接通,2026-08-22 完成选区归属判定与浮窗 UI 重做;下一步为真机复测 LLM 追问与 AC-1~AC-5 回归,license 字段在 README 中未声明。

Pre-install check安装前体检Compatibility · Security兼容性 · 安全性 2 warnings2 项注意
  • No license declared - all rights reserved by default; ask the author before commercial use or redistribution未声明开源许可证 —— 默认「保留所有权利」,商用或再分发前先问作者
  • Only 2 stars - very few users, little community feedback星标只有 2,几乎没人在用,遇到问题缺少社区反馈
DSH walks through these 9 checksDSH 会逐条核对这 9 项

Compatibility兼容性

  • DSH, Node, OS and profile requirementsDSH 版本 / Node 版本 / 操作系统 / profile 是否满足要求
  • External dependencies and runtimes (Electron / Python / Docker, ...)外部依赖与运行时(Electron / Python / Docker 等)是否齐备
  • Conflicts with installed plugins: command names, skill / tool names, ports, duplicate MCP registration与已装插件是否冲突:命令名、skill / tool 重名、端口占用、重复 MCP 注册

Security安全性

  • Repo matches the facts registered here; archived or abandoned?仓库是否与页面登记一致,是否归档或长期停更
  • Safety of preinstall / install / postinstall and install.sh / setup.ps1preinstall / install / postinstall 与 install.sh、setup.ps1 是否安全
  • curl|bash, download-then-execute, obfuscation, unrelated domains → stop immediatelycurl|bash、下载即执行、混淆代码、无关域名 → 立刻停止
  • Typosquatting or unmaintained packages among the new dependencies新增依赖里有没有 typosquatting 或无人维护的包
  • Requested permissions vs. what the feature actually needs申请了哪些权限、是否超出功能所需(filesystem / network / shell / clipboard)
  • Any sudo / admin requirement, plus uninstall and rollback是否要求 sudo / 管理员权限,以及卸载与回滚方式

Anything uncertain must be marked unknown with a note on how to confirm it. This site's signal screen is a static snapshot, not a security audit.拿不准的必须标「未知」并说明要我怎么确认。本站的信号筛查是静态快照,不能替代安全审计。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:ddggkkcc/dsh-stash

把 ddggkkcc/dsh-stash 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

随手抽屉 · Stash

中文 | English

使用 AI 时随手把「稍后再查 / 再问」的片段收起来放到「抽屉」,需要时直接从「抽屉」里拿出来就地追问 —— 全程低打扰、不打断心流。

工作包名 dsh-stash。


设计原则(最重要)

低打扰、不打断心流。

  • 随手收:选中即存,无弹窗、不跳页、不打断当前对话。
  • 就地问:追问在当前页面小窗口内完成,不开新页。
  • 你只管专注眼前,念头先交给抽屉,稍后再抽出来处理。

这个名字「随手抽屉」就是这套心法的写照——「随手」= 低打扰、顺手;「抽屉」= 收纳,稍后抽出一条/几条就地追问,存与问两个动作都被覆盖。


两个核心使用场景

场景一 · 随手收藏(专注当下)

在当前的聊天页面下,可以通过选取一段文字或词组,添加到一个地方(抽屉)存储起来,专注于当前对话内容。后续再去做额外的对话或问答。

  • 触发:查阅信息、调用文件、读回复时,遇到不认识的关键词、有灵感的内容、或任何想稍后再查的片段。
  • 动作:选中一段文字或词组 → 收进「抽屉」。
  • 效果:低打扰、不打断心流,专注眼前;念头先放一边,之后再统一处理。

场景二 · 随手抽屉(就地追问)

在当前的聊天页面下,可以通过选取一段文字或词组,或者从抽屉中,或者选取一个或多个内容,叠加在当前页面小窗口进行临时追问,追问时可以选择,是否加入上下文。

  • 追问来源(可单选 / 多选):
    1. 当前聊天页面选中的一段文字或词组;
    2. 抽屉中的一条内容;
    3. 抽屉中的一条或多条内容。
  • 呈现:叠加在当前页面上的小窗口内就地追问,不开新页、不打断心流。
  • 关键选项:追问时可选择「是否加入上下文」——加入则带当前对话背景,不加入则只围绕选中内容独立问答。

这是什么

  • 一句话:把「此刻不想做 / 需要搜索但想稍后再做」的临时念头收起来,专注当前对话;需要时在页面浮窗里「抽一题」就地追问。
  • 解决的问题:用 AI 时经常遇到某个关键词、某段内容触发新灵感,或不理解需要搜索,但此刻不想分心,也不想重新开新页面。
  • 形态:DSH 插件(hybrid:宿主 remote + 存储 + LLM;客户端浮窗 UI + 文本选区捕获)。

目录地图(SDD 分区)

路径 用途 存放内容
docs/vision/ 项目愿景与原始想法 你的原始想法(不压缩)、使用场景
docs/requirements/ 需求规范 功能需求 FR / 非功能需求 NFR / 验收标准
docs/spec/ 技术规范(SDD 核心,spec 即契约) 可行性评估、架构、API 契约、数据模型
docs/plan/ 规划与执行 里程碑、代办 backlog、决策记录 ADR
docs/issues/ 问题与风险 当前待处理问题、风险与对策
docs/design/ 设计稿 高保真交互原型、设计令牌参考
src/host/ 代码:宿主端 remote + storage + LLM 追问(TypeScript)
src/client/ 代码:客户端 shell.overlay 浮窗 + 选区捕获 + 选区归属判定(TSX)
tests/ 测试 契约测试 / 回归
scripts/ 构建与工具 build / pack / release 脚本

快速导航

Showing the opening section of the README — the full document lives in the repository以上为 README 开头摘要,完整文档在仓库内 · View the full README on GitHub →在 GitHub 查看完整 README →

← 上一个 Prev dsh-x-connect 下一个 Next dsh-git-hygiene →