执行前拦截不该跑的命令,执行后截断超长输出
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/ztc1522021381/dsh-context-mode.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
- 读取本地文件lib/index.js:266
const stat = statSync(filePath)
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 的上下文模式适配器:两级路由,执行前拒绝,执行后截断。MCP 与原生宿主接缝。
README
由 DeepSeek 最新模型翻译生成dsh-context-mode
context-mode 的 DeepSeek Harness 适配层。
context-mode 官方支持 17 个平台,DSH 不在其中。这个插件把它的能力搬到 DSH 的宿主 seam 上,但不是照搬 Claude Code 的 hook 协议 —— 那条路在这个 harness 上只能做到「拦下来告诉模型换工具」。DSH 有一条更强的缝。
两级策略
| 层级 | 时机 | 手段 | 判据 |
| Tier 1 — deny | 执行前 | tools/pre-execute 返回 { kind: 'deny', reason } | 这件事根本不该由宿主工具做 |
| Tier 2 — truncate | 执行后 | tools/post-execute 返回 { kind: 'accept', content } | 这件事必须跑,但输出不该进上下文 |
为什么是两级,不是一级
tools/pre-execute 只支持 deny / allow / ask,且传入的 exec.arguments 是 deepFreeze 过的(dsh-tools 的 createExecution),改不了写入参。deny 的代价是工具根本没跑。
展开完整文档(README 剩余 1 节)
dsh-context-mode
context-mode 的 DeepSeek Harness 适配层。
context-mode 官方支持 17 个平台,DSH 不在其中。这个插件把它的能力搬到 DSH 的宿主 seam 上,但不是照搬 Claude Code 的 hook 协议 —— 那条路在这个 harness 上只能做到「拦下来告诉模型换工具」。DSH 有一条更强的缝。
两级策略
| 层级 | 时机 | 手段 | 判据 |
| Tier 1 — deny | 执行前 | tools/pre-execute 返回 { kind: 'deny', reason } | 这件事根本不该由宿主工具做 |
| Tier 2 — truncate | 执行后 | tools/post-execute 返回 { kind: 'accept', content } | 这件事必须跑,但输出不该进上下文 |
为什么是两级,不是一级
tools/pre-execute 只支持 deny / allow / ask,且传入的 exec.arguments 是 deepFreeze 过的(dsh-tools 的 createExecution),改不了写入参。deny 的代价是工具根本没跑。
对 curl https://x 这类命令,这是对的 —— 替代品 ctx_fetch_and_index 是完整超集(还顺带索引,可事后检索),拦掉零损失。
但对 npm test / git log / cat big.log,这是错的。这些命令必须跑,输出有真实价值;拦下来模型就什么都得不到了。而它们的输出恰恰是最容易灌满上下文的东西。
Tier 2 怎么做
tools/post-execute 的 accept 分支支持 { kind: 'accept', content } —— 调用成功,但模型看到的内容被整段替换。工具照常执行,跑完量一下渲染后 content 有多大,超限就把模型看到的内容换成摘要:
context-mode: pwsh produced 29.3 KB of output, which was truncated before it
reached your context window. The full output still exists — re-derive what you need without pulling it in:
You ran a shell command. Call mcp__context_mode__ctx_batch_execute(commands:
[{label, command}], queries: [...]) to run it and get a searchable index back, or
mcp__context_mode__ctx_execute(language: "shell", code) to pipe/filter it yourself.
General pattern: call mcp__context_mode__ctx_execute(language: "javascript", code)
to read and process the source in the sandbox, and console.log() only the answer.
这是 context-mode「98% 节省」的本质:不是不让跑,是跑了但不进上下文。 而且不需要猜输出多大 —— 跑完量一下就知道。失败的调用(isError)不动,错误信息本来就该让模型看见,而且通常很短。
默认分工
Tier 1 (deny) : web_fetch
+ pwsh 里的 curl/wget、内联 HTTP、构建工具 Tier 2 (truncate) : pwsh, read, grep, glob (阈值 20 KB)
pwsh 同时出现在两层,但拦的东西不同:Tier 1 拦 curl/inline-HTTP/build,其余全部放行给 Tier 2。
路由块
除了拦截,插件还在系统提示里注入一段 context-mode — MANDATORY routing rules,内容对齐 context-mode 的 configs/claude-code/CLAUDE.md:Think in Code 范式、工具选择顺序、并发批处理、会话连续性。工具名前缀从 ctx.tools 的真实注册表探测,不硬编码 —— 你的 serverName 叫 ctx 还是 context-mode 都能对上。
安装
1. context-mode 本体(MCP server)
npm install -g context-mode
把这个包放进 profile:
cp -r dsh-context-mode ~/.dsh/profiles/desktop/_local-pkgs/
编辑 ~/.dsh/profiles/desktop/package.json,加依赖和 bundle:
{
"dependencies": { "dsh-context-mode": "file:./_local-pkgs/dsh-context-mode" },
"dsh": { "profile": { "bundles": ["...", "dsh-context-mode"] } }
}
cordis.patch.yml 随 bundle 一起应用,里面已经有两行:挂 MCP server、挂适配层。
重启 DSH。
路径要对
cordis.patch.yml 里的 command / args 必须是绝对路径,且指向真正的入口脚本,不是 npm 的 .cmd shim:
command: 'C:\Program Files\nodejs\node.exe'
args:
- 'C:\Users\<user>\AppData\Roaming\npm\node_modules\context-mode\cli.bundle.mjs'
仓库里默认写的是 REPLACE_ME\... 哨兵值 —— 拿到手第一件事就是跑 npm root -g,把结果填进去。两个原因:DSH 的 ACP 层硬校验 command 是绝对路径;StdioClientTransport spawn 时不带 shell: true,Windows 上跑不了 .cmd(ENOENT)。failOnStartupError: false 保证填错也不挡 DSH 启动,只是没有 ctx_* 工具 —— 届时看日志里的 context-mode MCP tools not found yet 警告。
配置
- id: context-mode
name: dsh-context-mode
config:
enabled: true
denyTools: [web_fetch]
truncateTools: [pwsh, read, grep, glob]
maxResultBytes: 20000 # Tier 2 阈值 minCommandBytes: 0 # 短命令跳过 Tier 1 判定 readThresholdBytes: 50000 # read 的 Tier 1 提醒线(Tier 2 仍截留) interceptSubagent: false sectionOrder: 3090 # MCP_SERVERS 是 3100 serverName: '' # 留空 = 自动探测
enabled: false 一行回到原生行为,MCP server 仍挂着。
测试
node selftest.mjs # 86 个用例:纯路由规则,无依赖
node selftest.mjs -v
插件形状探针(需要 DSH runtime,schemastery 在那里解析)
node probe-plugin.mjs # 53 个用例:两级行为、阈值边界、装配与卸载
已知限制
- Tier 1 不能改写入参 —— exec.arguments 是深冻结的。这是 DSH 的类型设计,不是疏漏。绕开它的办法就是 Tier 2:让工具跑完,再换掉模型看到的内容。
- 权限体系不互通 —— context-mode 在 Claude Code 上读 .claude/settings.json 的 permissions.deny。DSH 用自己的权限预设,不读那个格式。
- Tier 2 只按字节数判,不判断内容是否有用。20 KB 的 git diff 和 20 KB 的编译日志一视同仁。要更精细就给单个工具调低 maxResultBytes。
许可
MIT。context-mode 本体是 Elastic License 2.0,与本适配层无关。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ztc1522021381/dsh-context-mode
执行前拦截不该跑的命令,执行后截断超长输出
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目