前言¶
在 DSH(deepseek-harness)里开一个新会话时,宿主会把当前环境里注册的工具定义、system 消息里的各段提示词,以及运行时上下文一并注入模型。工具一多,单次请求里工具 schema 和引导文本的 token 占用会很显眼;不同任务又往往需要不同的能力边界和提示词组合。靠部署级 persona 或临时关 MCP 可以凑合,但很难「存一套配置、新会话一键复用」,也不方便在会话过程中按任务切换。
下面介绍的插件 @jia-tools/dsh-session-context-config(社区仓库 majia007/dsh-session-context-config)用「档位」把工具可见性、system 段开关、人设槽位和运行时上下文收成可命名的 profile;新会话按档位应用,已有会话可在会话头部切换。产品界面里称「上下文档位」,插件列表里显示「会话上下文配置」。
这是什么¶
维护者 majia007(npm 包作者 Jia),分类为工作流。插件版本 1.1.0,许可证 MIT。它不改变 DSH 核心,而是在每个 profile 下提供配置面板:左侧栏顶部「上下文档位」入口,或桌面端 / Web「插件」页搜索包名安装。
一句话:为 deepseek-harness 的新对话选择「注入哪些工具(含延迟加载)」以及「system 提示词与运行时上下文里包含哪些段」。
档位模型¶
一个档位对应一份状态表,主要包括:
- groups / servers / tools:工具按组、MCP 服务器、单工具三级配置,组与 server 为四态(强制开启 / 开启 / 延迟 / 隐藏),单工具为三态(开启 / 延迟 / 隐藏)。
- prompt:两个部署人设槽位(prefix 在身份声明之后,suffix 在提示词最末),各自可开关、是否覆盖部署文本。
- contexts:运行时上下文逐项开关(缺省注入,只记录关掉的项),例如当前工作目录、沙箱策略、环境事实等。
- sections:system 消息里各段(除工具引导段
tool:*跟随工具状态外)的开关。 - channels(可选):请求层对某些注入通道的拦截。
解析规则自上而下:组或 server 设为「强制开启」或「隐藏」会压过子项;工具为「隐藏」则不发 schema 也调不到;「延迟」则在 agent 作用域注册瘦身占位定义,完整定义由档位内的 tool_search 以工具结果追加进历史,从而缩短前缀里的 tools 数组长度而不打乱前缀缓存。README 中给出实测:25 个 MCP 工具定义字符数从 12,889 降到 5,842(约 -54.7%)。tool_search 仅在档位存在延迟工具时注册,只返回定义、不执行工具。
内置档位¶
插件内置三档,状态版本 v4,名称与默认策略如下(摘自 README 表格):
| 档位 | 大致策略 |
|---|---|
| 完整 | 常用能力全开;编排与计划、调度、目标、MCP、第三方、插件开发等以「延迟」折叠,需要时用 tool_search 取回。 |
| 精简 | 在完整基础上隐藏编排、调度、目标、插件开发;MCP 与第三方仍延迟。 |
| 极简 | 在精简基础上再隐藏交互、技能与网络、协作、MCP、第三方;保留读写、搜索、终端与平台基础。 |
工具引导段随工具可用性自动出现或消失,面板不提供 tool:* 段的独立开关。
配置面板能做什么¶
- 工具目录:按组 / MCP server / 工具树展示;每行有状态标签(开启 / 延迟 / 隐藏)和估算 token 标签。组或 server 的选择会改写子工具的最终状态,悬停可看「生效 / 本行选择」对照。工具描述默认显示中文(已知工具内置译文;未知工具可走
POST /session-context-config/api/translate,译文缓存在$DSH_HOME/session-context-config-translations.json),仅影响面板显示,不改模型侧 schema。 - system 消息卡:按最终请求里的消息分卡(系统提示词、运行时上下文快照等);可逐段开关 identity、checkout、Web 说明、MCP 指令等;两个人设槽位可独立开关与覆盖文本。
- 附加规则(全局):与档位无关,对所有新会话与子代理生效的四项——行为契约、卡片回执、不可信下载、自定义文本——排在 system 段 order 20000+,在面板最下方配置,从下一场新会话起生效。
安装与启用¶
要求 DSH >=0.2.2-rc.1 <0.3.0(prerelease 参与匹配)。
CLI 安装(将 <profile> 换成你的 profile 名):
dsh plugin --profile <profile> add @jia-tools/dsh-session-context-config
桌面端或 Web 可在「插件」页搜索 @jia-tools/dsh-session-context-config 安装。bundle 集变化后需重启对应 profile;档位默认只作用于新会话,已有会话不会自动回改配置,需在会话头部确认切换档位时才重算。
本地开发可从源码目录安装:dsh plugin --profile <profile> add <本目录>,改代码后执行 pnpm build 并重启宿主。安装前建议在 GitHub 阅读源码与 MIT 许可证;插件以当前 dsh 进程权限运行,与宿主共享工具与网络能力。
典型用法¶
- 安装并重启 profile 后,打开左侧栏「上下文档位」配置面板。
- 在「档位」列表选择内置 完整 / 精简 / 极简,或复制一份做自定义档位,按需把 MCP、编排类工具设为「延迟」或「隐藏」,并关掉不需要的 system 段或运行时上下文(例如关闭「当前工作目录」后,模型需自行
pwd确认)。 - 新建会话:按会话记录或「上次用过的档位」应用;若工具表变化(新连上 MCP、插件热重载),插件监听
tools/change并按当前档位增量刷新延迟占位与隐藏面。 - 进行中的会话:在会话头部切换档位并确认后,按新档位重算工具与提示词装配。子代理不套用档位(附加规则段除外)。
环境事实从附加规则拆出,归入 contexts 里的 session-context-config:environment,在「运行时上下文快照」卡按档位开关;每会话探测一次并缓存,不阻塞会话。
适用场景与注意¶
适合谁:长期用 DSH 做不同类型任务(写代码、查资料、重 MCP 工具栈)的开发者,希望用固定档位控制 token 与能力边界,而不是每次新会话手动关工具或改部署。
注意:
- 档位只作用于根会话;子代理无档位,环境事实等上下文对子代理默认保留。
- 改档位或附加规则后,已开始的会话不会自动跟随,需头部切换或开新会话。
- 社区目录页 skillhub.cn 上的条目 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库为准(当前 package 1.1.0)。
结尾¶
dsh-session-context-config 把「这一会话要带多少工具、多长 system 提示词」变成可命名、可切换的档位,并用延迟加载兼顾长前缀下的 token 压力。若要安装或读完整配置字段与迁移说明,见 GitHub README 与 SkillHub 目录页。