前言¶
DeepSeek Harness(DSH)的默认 PTC 模式每次执行都会从新环境开始,模型需要重新发送准备代码,这导致在连续对话中效率较低。dsh-ptc-plus 插件为 PTC 模式提供了会话绑定的原生平替 REPL,它保留会话中的变量、函数、导入和结果,使后续调用可以直接复用状态。
安装与启用¶
该插件依赖 Node.js ^22.19.0 || >=24.0.0 和支持 TypeScript PTC 模式的官方 DSH。
安装到指定的 profile 后,重启 DSH 并选择 PTC 模式即可使用:
dsh plugin --profile <profile> add dsh-ptc-plus
核心功能¶
该插件主要解决 PTC 模式下状态隔离带来的重复劳动问题,并提供代码编辑与工具扩展能力。
- 状态跨调用:保留会话中的变量、函数、导入和结果,让模型在后续调用中直接复用上一次的计算状态。
- 代码修订:通过
edit_run_code接口仅提交修改内容,插件会重新执行完整的 cell,无需重新发送整段代码。 - 模块语法支持:支持静态
import、export语法,允许在 cell 中直接编写模块代码。 - 特殊值保留:能够保留
undefined、BigInt以及循环引用等 JSON 无法完整表达的值。 - 工具查找与说明:允许在代码中查找可用工具,并查看参数说明。
- 自动摘要补充:自动补充
run_code.description摘要,避免因缺少摘要导致的校验失败。 - 自动转换工具调用:当模型发出合法的顶层工具调用时,插件会自动将其转换为
run_code执行。 - 路径解析:按会话记录的项目目录解析文件路径、模块和默认子进程目录。
- 源码定位:将执行错误对应到 cell 源码位置,并在末尾缺少闭合符等特定情况下给出编辑建议。
- 界面展示:在 REPL 页签展示保留的变量、定义来源和有界值预览。
- 绑定草稿:使用
/binding编写草稿,在输入框上方审阅后保存,启用后可跨会话使用。 - 工作台:在工作台运行未保存源码,拥有独立的临时状态,与 Agent 会话状态分开。
- 状态恢复:从会话记录恢复可验证的状态,用于跨重启的连续开发。
典型用法¶
复用计算状态
在第一次调用中读取文件并解析依赖:
import { readFile } from 'node:fs/promises';
const manifest = JSON.parse(await readFile('package.json', 'utf8'));
return manifest.dependencies;
在后续调用中直接复用 manifest 变量,无需重新发送读取代码:
return Object.keys(manifest.dependencies);
修订代码
当需要修改一处错误时,只需提交修改内容:
edit_run_code({ edits: [{ old_string: 'deps.length', new_string: 'deps' }] })
编写绑定草稿
使用 /binding 命令编写草稿,在输入框上方预览并保存:
/binding new 创建 textTools,清理文本首尾空白,保留内部空格
适用场景与注意¶
适用场景
适合需要连续编写和调试代码的开发者,特别是使用模块化语法、需要处理特殊 JavaScript 值或频繁修正代码的场景。
注意事项
1. 权限要求:该插件面向 danger-full-access 设计,代码可直接访问 Node.js 与操作系统,插件不另加沙箱。仅在可接受此权限的环境中使用。
2. 社区性质:这是社区插件,与 DeepSeek 或 DSH 无隶属、无背书。
3. 恢复限制:无法保证所有状态都能跨重启恢复,恢复不会重做或撤销历史外部操作。
4. 预览限制:值预览有大小和类型限制,无法可靠读取的对象会显示“不可读取”。
5. 初始化状态:绑定的启用配置不等于初始化一定成功,具体失败会在执行结果中说明。
总结¶
dsh-ptc-plus 通过提供会话绑定的原生平替 REPL,显著提升了 DSH PTC 模式下的开发连续性和代码调试效率。开发者可以在同一会话中保持状态,利用编辑接口快速修正错误,并利用绑定草稿功能管理可复用的代码片段。