🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

回退重问 dygin/dsh-recover-context

DeepSeek Harnessv1.1.2
dygin9 天前有提交已提供中文文档扫描:含敏感能力

dsh 智能体上下文可恢复或重新编辑

33.6/100
综合分
5
GitHub 星标
1,617
npm 周下载
—/5
用户评分

数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-recover-context
npm 源 · dsh-recover-context 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-recover-context @ 1.1.2
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 15:43:20

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 45 处,展示前 19 条)
  • 读取本地文件
    lib/index.js:126
    const stream = createReadStream(path);
  • 写入本地文件
    lib/index.js:132
    await mkdir(dirname(targetPath), { recursive: true });
  • 写入本地文件
    lib/index.js:133
    await writeFile(tmpPath, data);
  • 写入本地文件
    lib/index.js:134
    await rename(tmpPath, targetPath);
  • 读取本地文件
    lib/index.js:147
    const gitignoreContent = await readFile(join(rootAbs, ".gitignore"), "utf8");
  • 读取本地文件
    lib/index.js:165
    entries = await readdir(dir, { withFileTypes: true });
  • 读取本地文件
    lib/index.js:184
    info = await stat(absolute);
  • 读取本地文件
    lib/index.js:235
    const content = await readFile(join(rootAbs, ".gitignore"), "utf8");
  • 读取本地文件
    lib/index.js:246
    listing = await readdir(dir, { withFileTypes: true });
  • 写入本地文件
    lib/index.js:445
    await mkdir(this.dir, { recursive: true });
  • 写入本地文件
    lib/index.js:459
    if (shas.size > 0) await mkdir(this.blobsDir(), { recursive: true });
  • 写入本地文件
    lib/index.js:466
    createWriteStream(tmp)
  • 删除本地文件
    lib/index.js:470
    await rm(tmp, { force: true }).catch(() => void 0);
  • 删除本地文件
    lib/index.js:524
    await rm(tmpPath, { force: true }).catch(() => void 0);
  • 删除本地文件
    lib/index.js:872
    await rmdir(dir);
  • 删除本地文件
    lib/index.js:886
    await rm(absolute(rel), { force: true });
  • 删除本地文件
    lib/index.js:902
    await rm(absolute(rel), { force: true });
  • 删除本地文件
    lib/index.js:916
    await rm(absolute(rel), { force: true });
  • 发起网络请求
    lib/client.js:40
    const response = await fetch(`${API_BASE}/${method}`, {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 回退问题及后续改动
  • 重新编辑提问方向
  • 恢复智能体上下文

README

由 DeepSeek 最新模型翻译生成
dsh-recover-context v1.1.2 · 适配 DeepSeek Harness 0.2.1+ 恢复上下文插件。 - ↶:点击后,这个问题及其之后的所有内容(对话上下文 + 工作区里产生的文件变更)都会被回退掉——旧会话归档保留日志,新会话从提问之前继续。之后你可以换个方向重新提问,模型不会再被错误的上下文干扰。 - ✎:点击把原问题文本载入输入框,此时不改变任何上下文;编辑后提交的那一瞬间执行回退并重新提问。 安装 dsh plugin --profile web add dsh-recover-context@latest 安装后插件会自动挂载到 web 组合,无需手工编辑 cordis.patch.yml。 本版本要求 DSH >= 0.2.1-rc.2:使用了该版本的 Connection Fetch 路由、SessionPersistence 与 uiConversation / useChat 客户端契约,与更早的版本不兼容。
展开完整文档(README 剩余 1 节)
dsh-recover-context

v1.1.2 · 适配 DeepSeek Harness 0.2.1+

恢复上下文插件。

- ↶:点击后,这个问题及其之后的所有内容(对话上下文 + 工作区里产生的文件变更)都会被回退掉——旧会话归档保留日志,新会话从提问之前继续。之后你可以换个方向重新提问,模型不会再被错误的上下文干扰。
- ✎:点击把原问题文本载入输入框,此时不改变任何上下文;编辑后提交的那一瞬间执行回退并重新提问。

安装

dsh plugin --profile web add dsh-recover-context@latest

安装后插件会自动挂载到 web 组合,无需手工编辑 cordis.patch.yml。

本版本要求 DSH >= 0.2.1-rc.2:使用了该版本的 Connection Fetch 路由、SessionPersistence 与 uiConversation / useChat 客户端契约,与更早的版本不兼容。

工作区追踪

插件把工作区快照存放在 ~/.dsh/storages/recover-context/<sessionId>/ 下(绝不写入工作区):

baseline.json 基线元数据索引(仅 {路径: {sha,size,mtime}},不含文件内容) turn-<n>.json 每轮结束时的元数据索引 blobs/<sha> 按内容寻址(CAS)存储的文件内容

- 基线/逐轮索引:只记录文件清单与哈希,单个 JSON 通常在几十 KB 量级。
- 内容按哈希去重:文件内容按 SHA-256 存成独立 blob,跨轮次、跨同名文件自动复用;恢复时按索引取回。
- 流式哈希与原子落盘:SHA-256 用流式计算;所有 JSON 与 blob 先写临时文件再 rename,进程中断不会留下半成品。
- 自动读取 .gitignore:遍历时解析工作区根目录的 .gitignore(支持通配符、目录规则、! 取反),大型数据目录不会被扫描。
- 被忽略路径也会被回退:被忽略路径不备份内容,但会记录其存在性索引。回退时只删除「本会话新增」的产物(如 dist/、build/、.log),会话开始前就存在的同类文件保持不动。
- 基线在会话创建时采集:早于任何提问与工具调用,因此稳定代表"工作开始前"的状态。
这正是编辑/回退能可靠撤销本轮产物的前提。
- 子会话继承父会话历史:回退后打开的新会话会继承父会话的基线与已完成的逐轮快照,因此在其中继续编辑/回退同样能撤销此前轮次的产物,而不是逐层失效。
- 跨会话识别遗留产物:插件维护一份工作区级产物台账,记录每个会话产出过哪些文件。
上一个对话留在工作区里的产物,会在下一个会话回退/编辑到基线时被一并清除——前提是内容与台账记录完全一致(被改动过的文件视为用户资产,绝不删除)。
- 还原失败不会静默通过:目标快照不可用时接口报错、客户端中止流程,绝不出现 "对话回退了但文件没动"的不一致状态;还原后还会自检文件是否真的已删除。
- 安全上限:maxFiles(默认 100,000)与 maxTotalBlobBytes(默认 512 MiB)防止超大仓库失控。
单文件默认不限体积(流式复制,内存恒定),可用 blobSizeCap 显式收紧。

配置

可选配置文件:~/.dsh/storages/recover-context/config.json

{
"enabled": true,
"enableGitignore": true,
"ignoreNames": [".git", "node_modules", ".pnpm-store", "dist", "build", ".venv", "__pycache__", ".DS_Store"],
"ignorePatterns": [".pyc", ".log", ".tmp"],
"trackSizeCap": 104857600,
"maxFiles": 100000,
"maxTotalBlobBytes": 536870912,
"ioConcurrency": 8,
"cleanupPreviousArtifacts": true
}

| 字段 | 说明 |
| enabled | 总开关,false 时完全停止采集 |
| enableGitignore | 是否解析工作区 .gitignore |
| ignoreNames | 按名字忽略的目录/文件 |
| ignorePatterns | 按文件名通配符忽略 |
| trackSizeCap | 超过该大小的文件只记录 size+mtime,不计算哈希、不备份内容(默认 100 MiB) |
| blobSizeCap | 可选:单文件内容备份上限,默认不限制(受 maxTotalBlobBytes 兜底) |
| maxFiles | 扫描文件数上限,超出即停止并告警 |
| maxTotalBlobBytes | 单个会话可备份的 blob 总字节上限 |
| ioConcurrency | 哈希计算与 blob 写入的并发度 |
| cleanupPreviousArtifacts | 回退/编辑到基线时,是否清除上一个对话遗留的产物(默认 true;只删内容未被改动过的) |

License

Apache-2.0
预览分享卡片长什么样 ↓dygin/dsh-recover-context
分享 · DeepSeek Harness Hub
dygin/dsh-recover-context

dsh 智能体上下文可恢复或重新编辑

这是你的仓库?认领条目

回到顶部