DeepSeek Harness (DSH) 的核心设计理念是「一切皆插件」。在处理复杂任务时,模型调用工具的稳定性往往比内容生成的质量更难把控。dsh-behavior-enhancer 是一个行为管理插件,它不干预模型生成的内容,而是通过约束模型调用工具的方式(如调用纪律、失败收敛、并行度控制),提升复杂任务的执行稳定性。它与 dsh-token-optimizer 职责互补:前者管行为,后者管内容。
核心功能¶
该插件通过四个模块管理工具调用行为:
- 行为提示:注册静态行为约束段(先读后写、批量前先验证、失败即收敛、同类修改串行)。通过
systemPrompt.section()注入,这是软约束,强制收敛由后续模块负责。 - 并行收敛:监控工具执行状态。任何工具失败(含命令级失败)时,将并行池上限压到 1;连续成功后恢复用户原值。上下文压力超过阈值也会降档,回落 <54% 滞后恢复。串行状态跨进程持久化。
- 失败保护:同工具连续失败达到阈值,通过
agent.followup()注入提示,引导模型向用户确认失败原因而非盲目重试。 - 写后检查:针对
write/edit工具,写入后做轻量语法解析(JSON 用JSON.parse,YAML/代码做括号配对与缩进检查)。失败时从.bak快照回滚,并报告模型。快照存于~/.dsh-memory/files/。
安装与配置¶
安装:
dsh plugin --profile web add @zoria-lind/dsh-behavior-enhancer
配置:
在 dsh.profile.bundles 中启用插件,并在配置文件中定义上述四个模块的参数。配置节 postWriteCheck 默认开启。
- id: behavior-enhancer
name: '@zoria-lind/dsh-behavior-enhancer'
config:
behaviorPrompt:
enabled: true
order: -98
text: |
## 工具调用行为纪律(本会话)
- 先读后写
- 批量操作前先验证
- 失败立即收敛
- 同类修改串行
parallelConvergence:
enabled: true
recoveryThreshold: 3
complexRatio: 0.6
minParallel: 1
defaultParallel: 10
failureGuard:
enabled: true
maxFailures: 2
followupMessage: '工具 {tool} 已连续失败 {count} 次。请停止重试,向用户说明失败原因并询问下一步。'
postWriteCheck:
enabled: true
writeTools: ['write', 'edit']
checkExtensions: ['json', 'yaml', 'yml', 'js', 'mjs', 'cjs', 'ts', 'tsx', 'jsx', 'py', 'ps1', 'sh', 'toml', 'xml']
keepBackups: 5
askThreshold: 3
snapshotDir: '~/.dsh-memory/files'
autoRollback: true
开发与兼容性¶
- 依赖与运行环境:零 npm 依赖,无外部服务。需要 Node >= 18。
- DSH 版本:支持基线 DSH
0.1.5-rc.x及更高版本。旧版(≤0.1.4)不再支持。 - 自检:运行
node test/smoke.mjs进行单进程全量自检。
权限与边界¶
- 文件权限:读写固定目录
~/.dsh-memory/files/存储快照。不修改 Profile 配置、不改 DSH 核心。 - 网络与命令:无网络请求,不执行子进程。
- 失败边界:所有模块 fail-open(状态文件损坏即丢弃重来)。约束段是软约束,强制收敛由并行池与 followup 两条独立路径保证。
postWriteCheck的解析为启发式,回滚的是写入前版本。
该插件通过精细控制工具调用的纪律与容错机制,为 DSH 插件生态提供了基础的行为稳定性保障。