dsh 智能体上下文可恢复或重新编辑
33.6/100
综合分
5
GitHub 星标
1,617
npm 周下载
—/5
用户评分
数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-recover-contextnpm 源 · dsh-recover-context 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 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🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
dygin/dsh-recover-context
dsh 智能体上下文可恢复或重新编辑
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目