dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
开箱即用的 上下文压缩 / 上下文总结 插件。它把 DSH 官方 dsh-compaction-basic
压缩引擎 + 工具结果裁剪器一次性装配进 profile,解决「对话满了不会自动压缩、模型
直接报 maximum context length 导致本轮失败」的问题。
ctx.tokenMeter 估算当前会话 token 用量;thresholdRatio 默认 0.8)时,下一步前自动先做详细总结:
把全部较早历史用 LLM 压缩成一份详尽中文 checkpoint,替换旧消息,只保留最近
retainRatio(默认 16%)的原样尾巴;compaction/start、compaction/summary、compaction/end)。totalTokens 必须严格小于压缩前;/compact(包括按钮):同样做 before/after 校验;若总结反而变大,
自动降低总结预算重试,最多 4 次;仍不能下降就明确报错,绝不“假压缩”;before → after tokens(xx% reduced),方便确认真的压缩了。modlens-qwen)会向 DSH 上报一个很大的 contextWindow
(例如 1,000,000),但真实可用窗口只有 256k。这会导致阈值算错、永远“不到 80%”。modelPolicies[].contextWindow(显式覆盖,最优先);maxTokens(视为真实窗口兜底,如 256000);contextWindow(最后回退)。modelPolicies:
- provider: modlens-qwen
model: DeepSeek-V4-Flash-0731
contextWindow: 262144 # 按真实窗口填
thresholdRatio: 0.8
~/.dsh/storages/dsh-context-compactor/summaries/<session-id>.md(默认开启,
可关 saveSummaryFile: false);maxTokens: 12288(详细预算,可调大)。maxOverflowRetries 次。pruneThresholdChars(默认 8192 字符)的工具输出,保留头 + 标记 + 尾;dsh.client 清单自动发现,注册到 conversation.input.dock
(输入框正上方,与 goal/todo 工具条同一排);contextPressure 投影),到 80% 自动
高亮提醒;remote.commands.execute(sessionId, '/compact')
立即触发全局详细总结压缩,按钮会显示「压缩总结中…」并在条上回显结果;| 命令 | 作用 |
|---|---|
/compact |
立即【全局详细总结】并把全部较早历史压缩成一个 checkpoint |
/enhance-prompt |
用当前模型增强提示词(支持直接跟文本或 JSON {"text":"..."}) |
/context-status |
查看 token 用量、窗口、80% 阈值、风险与总结保存路径 |
enabled: true
auto: true # 开启 80% 压力压缩 + overflow 自动恢复
thresholdRatio: 0.8 # 用量达到窗口 80% 触发【详细总结】压缩
retainRatio: 0.16 # 保留最近 16% 的原样对话
maxTokens: 12288 # 总结调用生成上限(详细预算)
compactionRetries: 1 # 一次压力压缩后仍超阈值时的追加尝试
maxOverflowRetries: 2 # context-overflow 恢复重试上限
saveSummaryFile: true # 总结额外落盘到 ~/.dsh/storages/dsh-context-compactor/summaries/
pruneToolResults: true # 只裁剪超大工具结果;对话历史一律走总结
pruneThresholdChars: 8192
pruneHeadChars: 4096
pruneTailChars: 1024
registerCommands: true
也可以给指定模型写精确覆盖策略:
modelPolicies:
- provider: deepseek
model: deepseek-chat
thresholdRatio: 0.7
retainRatio: 0.2
maxOverflowRetries: 3
DSH 的 dsh-web-app 会禁用宿主层的压缩后端,压缩由每个 agent preset 决定。
本插件不跟宿主层抢位置:它监听 agent/created(并补扫已存活 agent),对没有压缩
引擎的 agent 在其 agent scope 内用独立 isolate 挂载 compaction-basic 和
tool-result-pruner——等价于官方 standard preset 里的
- id: compaction
name: cordis:group
group: true
isolate: { compaction: true, toolResultPruner: true }
config:
- id: compaction-basic
name: '@deepseek-ai/dsh-compaction-basic'
- id: command-compact
name: '@deepseek-ai/dsh-command-compact'
- id: tool-result-pruner
name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
因此:
# 1. 构建(host: src → lib/index.js;client: src/client → lib/client.js)
bash scripts/build.sh
# 2. 加入 profile(写入 dependencies + bundles,重启后自动装配)
# profile 包名:@dsh-external/dsh-context-compactor
# 根入口 index.js 同时兼容「按包根 index.js 导入」的 loader 约定。
# 浏览器按钮无需额外配置:clientModules 会通过 dsh.client 清单 +
# exports["./client"] 自动发现并伺服 lib/client.js。
# 3. 热装配(当前进程立即生效)
# dev_install_package / dev_inject_plugin 指向本目录
# 若遇到 loader 模块缓存中毒,重启 DSH 即可(bundle 路径不依赖热装配)。
装配后刷新页面,输入框上方会出现「压缩总结」工具条;输入
/context-status 可查看用量与阈值。
summarizationProvider + summarizationModel 指定专门的总结模型。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。