Skip to content
dsh.fish
Bundle

dsh-gpt56-ptc

A native DSH Bundle that installs a user-owned, plain-language pure PTC preset for GPT-5.6 Sol, Terra, and Luna.

Source
Exception-H
stars
1 stars
License
MIT
Updated
Updated yesterday

Readme

# dsh-gpt56-ptc

[![CI](https://github.com/Exception-H/dsh-gpt56-ptc/actions/workflows/ci.yml/badge.svg)](https://github.com/Exception-H/dsh-gpt56-ptc/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![DSH](https://img.shields.io/badge/DSH-0.1.0--rc.8-orange.svg)](https://github.com/deepseek-ai/deepseek-harness)
[![DSH Plugin](https://img.shields.io/badge/GitHub%20Topic-dsh--plugin-24292f.svg)](https://github.com/topics/dsh-plugin)
[![PTC](https://img.shields.io/badge/tool%20mode-Code%20Mode-6f42c1.svg)](docs/DESIGN.md)

[English](README.en.md) | 简体中文

一个可由 DeepSeek Harness 原生安装的 Profile Bundle。它会在 DSH 的用户预设根中创建真正的自定义预设 **GPT-5.6 PTC**,面向 `gpt-5.6-sol`、`gpt-5.6-terra` 与 `gpt-5.6-luna`,提供缓存稳定的纯 PTC / Code Mode 会话。

它保留官方 Code preset 的完整组成和会话内固定 SDK,只加入一份精简的轨迹控制契约,用于减少范围膨胀、验证循环、代理完成和串行工具浪费。模型仍由用户在创建会话时手动选择;本项目不做自动路由、会话内模型切换、Native/PTC 切换或每轮工具裁剪。

> 当前状态:实验版 `0.1.2`。组成和安装器面向 `@deepseek-ai/dsh` `0.1.0-rc.8`;升级 DSH 后必须重新运行安装、冲突、回滚和 standing-mount 验证。
>
> 非官方社区项目:由社区独立开发和维护,不代表 DeepSeek 或 OpenAI 官方立场、审核或认可。

## 一条命令安装

在仓库根目录执行:

```powershell
dsh plugin --profile web add .
```

推荐公开安装固定的 `v0.1.2` Release 产物:

```powershell
dsh plugin --profile web add https://github.com/Exception-H/dsh-gpt56-ptc/releases/download/v0.1.2/dsh-gpt56-ptc-0.1.2.tgz
```

也可以安装固定 Git tag:

```powershell
dsh plugin --profile web add github:Exception-H/dsh-gpt56-ptc#v0.1.2
```

当前 rc.8 的插件管理子命令是 `dsh plugin`,不是 `dsh --profile web add ...`。插件命令通过 `pnpm` 管理 Profile,因此 `pnpm` 需要在 `PATH` 中。本包已经提交可直接加载的 Host JavaScript,不需要安装时构建。

安装命令先把 Bundle 加入 `web` Profile。重启 Web Profile 后,Host 安装器执行一次安全发布流程:

1. 如果任何 root 已有最终 ID `gpt56-ptc`,立即停止且零写入;
2. 生成一个不可预测的临时 ID,通过官方 `copy('code', stagingId, ...)` 在第一个 `user` 根创建 staging preset;
3. 验证 staging 的 trust、精确路径、真实目录和 composition 文件,再原子替换模板并调用 `standingKeyFor(stagingId)`;
4. staging 挂载通过后,再由官方 `copy(stagingId, 'gpt56-ptc', 'GPT-5.6 PTC')` 冲突安全地发布完整最终副本;
5. 校验最终文件哈希并调用 `standingKeyFor('gpt56-ptc')`,成功后标记为 `installed`;
6. 只清理由随机 token 证明归本次安装所有的 staging ID。最终 ID 一旦发布,安装器绝不自动删除。

默认结果位于:

```text
$DSH_HOME/.agent-presets/gpt56-ptc
```

实际路径以 `agentPresets.resolve('gpt56-ptc')` 返回值为准,因为部署可以配置其他用户根。

如果任何 root 已经提供 `gpt56-ptc`,安装器会保留它并停止,不采用、不覆盖、也不删除。请先在预设管理页检查和处理冲突,不要删除整个 `.agent-presets` 目录。

## 使用

1. 重启 DSH Web Profile。
2. 新建会话并选择 **GPT-5.6 PTC**;它应显示为“自定义”。
3. 手动选择 `gpt-5.6-sol`、`gpt-5.6-terra` 或 `gpt-5.6-luna`。
4. 在该会话中保持模型不变;需要更换模型时新建或 Fork 会话。

已运行会话继续使用它启动时挂载的 composition generation。安装、编辑、更新或删除磁盘副本不会在中途替换现有会话的 Prompt 和工具契约。

## 它解决什么

GPT-5.6 的强项通常不是问题。更常见的是强能力在长时间 Agentic Coding 中失去边界:小改动扩展成治理系统、Reviewer 建议变成新需求、测试已经通过仍继续验证,或者计划和报告取代真正交付物。

本预设只加入能改变这些行为的最小规则:

- 以用户可见结果、明确范围和验收证据为任务契约;
- 相关发现不自动扩大当前工作;
- 计划、测试、报告和 Review 只能作为证据,不能替代交付物;
- 只验证受影响路径,没有新证据时不重复测试和重试;
- 验收通过立即停止,需要新权限或显著扩展范围时停止并报告;
- PTC 中并行独立只读调用,保持写入和审批敏感操作有序;
- 对 Sol、Terra、Luna 使用很小的静态校准,不切换模型;
- 默认先用大白话讲结果和因果,只在准确性或操作需要时使用技术名词,首次出现时顺手解释;文件名、命令、API 和报错原文仍保持精确。

研究背景和证据边界见 [研究说明](docs/RESEARCH.md)。

## 设计保证

| 项目 | 本预设的行为 |
|---|---|
| 模型选择 | 用户创建会话时手动选择 |
| 会话内模型 | 固定,不自动切换 |
| 工具呈现 | 固定纯 PTC / Code Mode |
| SDK | 由官方 rc.8 Code preset 工具行和当前 Host 可用能力生成,整场会话稳定 |
| Prompt | 一个静态 persona,整场会话稳定 |
| Host 路由 | 不修改 |
| Native/PTC 切换 | 不提供 |
| 每轮工具裁剪 | 不提供 |
| Sandbox/审批 | 继续由 DSH Host 管理 |
| 用户目录 | 首次成功激活创建一个用户副本;之后归用户所有 |
| 同名冲突 | 不采用、不覆盖、不删除 |
| 插件更新 | 不自动改写已安装副本 |
| 插件卸载 | 保留已安装的自定义预设 |

```mermaid
flowchart LR
  B[dsh plugin add Bundle] --> C[官方 copy 创建 user preset]
  C --> V[原子替换模板 + standing mount 验证]
  V --> P[用户拥有 GPT-5.6 PTC 自定义预设]
  U[用户手动选择 Sol / Terra / Luna] --> P
  P --> T[固定 persona + 官方 Code Mode 工具行]
  T --> H[DSH Host: route / schema / sandbox / approval]
```

Bundle 的 Host 层只负责一次性 staging→发布安装流程和挂载验证,不参与 Agent 行为,也不拥有路由、凭据、安全策略或跨会话注册表。详细边界见 [设计说明](docs/DESIGN.md)。

## 要求

- DeepSeek Harness `0.1.0-rc.8`;
- Node.js 20 或更高版本;
- `pnpm` 可被 `dsh plugin` 从 `PATH` 调用;
- 已配置且可选择至少一个目标模型:`gpt-5.6-sol`、`gpt-5.6-terra` 或 `gpt-5.6-luna`。

本项目不配置 Provider、API Key、默认模型、Sandbox 或审批策略。

## 更新、刷新副本与卸载

更新 Bundle:

```powershell
git pull
dsh plugin --profile web add .
```

重启后,安装器发现现有自定义预设就会原样保留。Bundle 更新不会静默刷新用户副本,这是官方本地创作副本的快照语义。

若要显式采用新版模板:

1. 备份自己的预设修改;
2. 在 DSH 预设管理页删除明确的 `gpt56-ptc` 自定义预设;
3. 保持 Bundle 已安装并重启 Web Profile;
4. 安装器会重新创建当前版本模板;
5. 手工合并需要保留的修改。

仅卸载 Bundle:

```powershell
dsh plugin --profile web remove dsh-gpt56-ptc
```

重启后 Bundle 行会消失,但自定义预设仍然存在并可用于新会话。若要完整移除,请先在预设管理页删除 `gpt56-ptc`,再卸载 Bundle;不要递归删除整个用户预设根。

### 从 v0.1.1 升级

`v0.1.2` 加强了大白话沟通规则。由于 `v0.1.1` 起用户副本归用户所有,单独升级 Bundle 不会覆盖现有 `gpt56-ptc`。要采用新模板,请先备份本地修改,再按上面的显式更新步骤删除并重建该预设;也可以只把新版 `Communication contract` 手工合并进现有副本。已运行会话仍使用启动时的旧 Prompt,新建会话才会读取更新后的副本。

### 从 v0.1.0 迁移

`v0.1.0` 通过非公开 mutable-roots 兼容缝把包内内容显示为 `system`。升级到 `v0.1.1` 或更新版本并重启后,该 root 注入被移除,安装器会创建真正的 `user` 副本。如果已有同名用户预设,安装器不会覆盖;请检查现有内容后自行决定保留、改名或删除并重新创建。

## 验证

```powershell
node --test
pnpm pack --dry-run
```

自动测试覆盖:

- Bundle manifest、Host 安装器行和发布包内容;
- 两次官方 `copy()` 的 staging→最终发布参数以及 `resolve()` 的精确用户根 containment;
- 同名用户/系统冲突零写入;
- 重复激活和用户修改逐字节保留;
- staging 与最终 ID 复制竞态、外部路径、文件替换和两阶段 standing mount;
- 发布前失败只回滚 token 所有的随机 staging,发布后失败保留最终副本供诊断;
- staging cleanup 自身失败的双重诊断;
- composition/persona 同步、固定 Code Mode、无动态路由或工具裁剪;
- rc.8 官方组成后缀哈希和文档完整性。

DSH 的真实 standing mount 才是最终组合验证。完整的安装、冲突、卸载持久性和行为 A/B 矩阵见 [测试说明](docs/TESTING.md)。

## 项目结构

```text
cordis.patch.yml              DSH Profile Bundle installer patch
lib/index.js                  一次性 user preset 安装器
presets/gpt56-ptc/            自包含安装模板
src/persona.md                canonical GPT-5.6 persona
tests/                        安装器、组成和文档测试
docs/                         设计、研究、测试与发布说明
.github/workflows/            GitHub Actions CI
```

## 已知限制

- rc.8 没有“从外部包导入 preset”专用 API;安装器使用官方 `copy()` 创建用户目录,再编辑该新副本自己的文件。它不修改 readonly roots。
- 文件替换逐文件原子化,但 staging 的 composition、metadata 和 marker 不是一个跨文件事务;发布前可捕获失败只清理 token 匹配的随机 staging。进程被强制终止或 ownership 验证失败时可能留下 `installing`/`validated` staging,安装器不会冒险自动删除。
- 最终 ID 由官方整目录 `copy()` 从已挂载验证的 staging 发布;最终目录一旦创建,后续异常也不会触发自动删除。
- marker 只记录首次安装来源、随机 staging token、状态和基线哈希,不是完整性证明,也不授权未来覆盖或删除。
- Bundle 入口依赖 rc.8 创建的 pnpm hoisted Profile 和正常包名 `dsh-gpt56-ptc`;包别名、其他 linker/package manager 和未来 Profile 布局不在当前支持范围内。
- Prompt 只能降低范围膨胀和循环概率,不能保证模型永不偏离,也不能修复 Provider、缓存、上下文、Compaction 或子智能体后端问题。
- 纯 PTC 对单一简单调用仍有包装开销,这是稳定 Code Mode 的结构性取舍。
- 本项目不会尝试绕过平台安全策略或用户审批。

## 当前验证状态

| 检查 | 当前证据 |
|---|---|
| 自动测试 | Windows / Node.js 24:33/33 通过;包含大白话契约、persona 同步、staging/final 竞态、containment、状态、cleanup 与 Windows retry |
| 包内容 | 真实 `0.1.2` tarball 仅包含 Host 入口、Bundle patch、两份模板和公开发布文档 |
| 原生隔离安装 | 含空格和中文路径下,真实 tarball 通过 `dsh plugin --profile web add` 安装,无本包 peer warning |
| Runtime roster | 真实 rc.8 返回唯一 `id=gpt56-ptc`、`trust=user`、无 broken;正常成功无 staging row |
| Cordis composition | staging 与最终 standing 调用均成功,最终 marker 仅在两次验证后成为 `installed` |
| 冲突与幂等 | 真实同名用户预设哈希不变、无 marker/staging;重复 Host 启动保留用户 edit |
| 卸载持久性 | Bundle dependency/row 移除后 roster 仍为 `user`,新建会话以 `gpt56-ptc` 成功挂载 |
| Node 20/22、Ubuntu/Windows | GitHub Actions 矩阵已配置;发布提交的远端结果以 Actions 记录为准 |
| Sol/Terra/Luna 行为 A/B | 尚未作为 `0.1.2` 的已验证效果声明 |

不要把已配置但尚未运行的 CI 描述成已经通过,也不要在发布行为 A/B traces 之前声称模型质量得到验证。

## 参与贡献

请先阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。行为改动应附带失败样例、目标指标和 Sol/Terra/Luna 至少一个代表任务的前后对照;不要仅凭单次主观体验扩大 Prompt。

安全问题请按 [SECURITY.md](SECURITY.md) 报告。

## 许可证与归属

本项目采用 [MIT License](LICENSE)。Composition 源自 DeepSeek Harness 官方 `code` preset,归属说明见 [NOTICE.md](NOTICE.md)。本项目不是 OpenAI 或 DeepSeek AI 的官方产品。

Install

dsh plugin --profile web add github:Exception-H/dsh-gpt56-ptc

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source