dsh-ptc-plus 0.4.2 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +170 -76
- package/README.md +171 -77
- package/assets/dsh-ptc-plus-banner-en.webp +0 -0
- package/assets/dsh-ptc-plus-banner-zh.webp +0 -0
- package/assets/ptc-plus-icon.svg +5 -0
- package/client.js +599 -310
- package/compiler-core.cjs +162 -160
- package/compiler-core.cjs.map +3 -3
- package/docs/README.md +4 -1
- package/docs/adr/0005-temporary-rejected-cell-edit-transport.md +49 -11
- package/docs/adr/0008-define-agent-operating-contract.md +2 -2
- package/docs/adr/0010-session-log-derived-recovery-tips.md +7 -0
- package/docs/adr/0016-archive-resolved-review-findings.md +3 -3
- package/docs/adr/0017-track-the-latest-dsh-public-surface.md +5 -1
- package/docs/adr/0019-plugin-settings-and-kill-switch.md +3 -3
- package/docs/adr/0020-optional-cordis-tools-in-ptc-mode.md +3 -1
- package/docs/adr/0021-separate-host-bootstrap-from-session-runtime.md +14 -3
- package/docs/adr/0023-global-user-bindings.md +1 -1
- package/docs/adr/0026-persist-the-delivery-verdict-against-the-verified-candidate.md +23 -7
- package/docs/adr/0027-run-the-session-kernel-in-a-killable-helper-process.md +4 -0
- package/docs/adr/0028-attach-to-the-host-ptc-execution-seam.md +26 -6
- package/docs/adr/0030-serve-both-typert-codec-generations-from-one-codec.md +2 -2
- package/docs/adr/0031-close-semantic-obligations-by-owner.md +29 -0
- package/docs/adr/README.md +4 -4
- package/docs/architecture.md +8 -5
- package/docs/binding-review-placement-design.md +1 -1
- package/docs/client-ui.md +8 -4
- package/docs/durability-design.md +7 -7
- package/docs/installation.md +48 -12
- package/docs/publishing.md +4 -4
- package/docs/release-notes.md +109 -0
- package/docs/runtime-reference.md +25 -12
- package/docs/semantic-validation.md +7 -3
- package/docs/user-bindings.en.md +7 -6
- package/docs/user-bindings.md +6 -5
- package/docs/value-wire.md +1 -1
- package/docs/verification.md +43 -2
- package/index.js +39 -34
- package/internal/async-local-storage-intrinsics.js +12 -7
- package/internal/callable-source-facts.js +37 -1
- package/internal/cell-analysis.js +64 -9
- package/internal/config-spec.js +1 -1
- package/internal/cordis-tools-owner.js +81 -15
- package/internal/direct-surface-owner.js +331 -7
- package/internal/edit-transport-owner.js +80 -20
- package/internal/execution-seam-compat.js +192 -30
- package/internal/kernel-worker.js +162 -72
- package/internal/message-sources.js +14 -0
- package/internal/module-compilation.js +2 -1
- package/internal/rejected-cell-editor.js +11 -21
- package/internal/repl-memory-projection.js +10 -0
- package/internal/repl-scope-normalizer.js +72 -35
- package/internal/repl-value-observer.js +141 -45
- package/internal/runtime-config.js +62 -2
- package/internal/runtime-intrinsics.js +3 -0
- package/internal/runtime-messages.js +6 -4
- package/internal/session-cell-executor.js +24 -1
- package/internal/session-journal-recovery.js +267 -67
- package/internal/session-journal.js +466 -40
- package/internal/session-log-view.js +5 -4
- package/internal/session-runtime.js +45 -21
- package/internal/session-state.js +7 -29
- package/internal/settings-compat.js +66 -1
- package/internal/source-position-map.js +19 -0
- package/internal/user-binding-console-worker.js +23 -9
- package/internal/user-binding-draft-projection.js +3 -2
- package/internal/user-bindings-owner.js +2 -1
- package/internal/user-bindings.js +6 -1
- package/internal/validated-parse-repair.js +6 -2
- package/internal/value-wire.js +95 -30
- package/internal/worker-client.js +99 -8
- package/internal/worker-cwd-virtualization.js +10 -9
- package/internal/worker-output-capture.js +187 -0
- package/internal/worker-output-fence.js +26 -0
- package/internal/worker-realm-surfaces.js +197 -0
- package/internal/worker-repl-realm.js +10 -4
- package/package.json +42 -4
- package/src/client-activity.js +4 -1
- package/src/client-authoring-view.js +121 -62
- package/src/client-console.js +4 -2
- package/src/client-copy.js +4 -2
- package/src/client-feature-gates.js +7 -9
- package/src/client-host-compat.js +104 -27
- package/src/client-repl-view.js +3 -1
- package/src/client-styles.js +12 -1
- package/src/client-tool-view.js +3 -1
- package/src/client-transport.js +2 -2
- package/src/client-workbench.js +10 -7
- package/src/client.js +56 -17
package/README.md
CHANGED
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/dsh-ptc-plus-banner-zh.webp" width="100%" alt="
|
|
2
|
+
<img src="assets/dsh-ptc-plus-banner-zh.webp" width="100%" alt="PTC Plus:不用从头来,改一改,接着算!">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<strong>简体中文</strong> ·
|
|
7
|
-
<a href="README.en.md">English</a>
|
|
8
|
-
</p>
|
|
9
|
-
|
|
10
|
-
<p align="center">
|
|
11
|
-
<a href="#%E9%BB%98%E8%AE%A4-ptc-%E6%A8%A1%E5%BC%8F%E7%9A%84%E9%97%AE%E9%A2%98">问题</a> ·
|
|
12
|
-
<a href="#%E4%B8%89%E4%B8%AA%E6%9C%80%E7%9B%B4%E6%8E%A5%E7%9A%84%E5%9C%BA%E6%99%AF">场景</a> ·
|
|
13
|
-
<a href="#%E8%AE%BE%E7%BD%AE">设置</a> ·
|
|
14
|
-
<a href="#%E8%8C%83%E5%9B%B4">范围</a> ·
|
|
15
|
-
<a href="#%E5%AE%89%E8%A3%85">安装</a> ·
|
|
16
|
-
<a href="#%E6%96%87%E6%A1%A3">文档</a>
|
|
6
|
+
<strong>简体中文</strong> · <a href="README.en.md">English</a>
|
|
17
7
|
</p>
|
|
18
8
|
|
|
19
9
|
<p align="center">
|
|
20
10
|
<a href="https://github.com/deepseek-ai/deepseek-harness"><img alt="DeepSeek Harness PTC mode" src="https://img.shields.io/badge/DeepSeek%20Harness-PTC%20mode-4b6bfb"></a>
|
|
21
|
-
<a href="package.json"><img alt="Node.js ^22.19.0 || >=24.0.0" src="https://img.shields.io/badge/Node.js-%5E22.19.0%20%7C%7C%20%3E%3D24.0.0-5fa04e?logo=nodedotjs&logoColor=white"></a>
|
|
22
11
|
<a href="https://www.npmjs.com/package/dsh-ptc-plus"><img alt="npm version" src="https://img.shields.io/npm/v/dsh-ptc-plus?logo=npm"></a>
|
|
23
12
|
<a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
|
|
24
13
|
</p>
|
|
@@ -27,53 +16,136 @@
|
|
|
27
16
|
<a href="https://awesome-dsh-plugin.com/zh/"><img alt="Awesome DSH Plugin" src="https://awesome-dsh-plugin.com/badge.svg"></a>
|
|
28
17
|
</p>
|
|
29
18
|
|
|
30
|
-
|
|
19
|
+
**让模型在同一会话中持续计算、直接修订,减少重复工作和可避免的工具调用错误。**
|
|
31
20
|
|
|
32
|
-
|
|
21
|
+
PTC Plus 为 DSH 的 **PTC 模式**提供有状态的 TypeScript 计算环境。它基于 REPL,让变量、函数、导入和中间结果跨工具调用复用;针对模型连续编写和修改代码的需要,扩展声明更新规则,并提供模块语法适配、调用容错和代码编辑能力。
|
|
33
22
|
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
- **接着算**:读取和整理过的数据留在会话里,下一次调用直接继续。
|
|
24
|
+
- **直接改**:同名修订变量或函数,已有闭包读取更新后的绑定;小改动可以只发送代码差异。
|
|
25
|
+
- **少些调用错误**:适配常用模块语法,处理可准确识别的调用遗漏,并为可验证的语法错误提供修正建议。
|
|
26
|
+
- **复用常用能力**:把常用函数保存为全局绑定,向模型提供接口与使用提示,在多个会话中使用。
|
|
36
27
|
|
|
37
|
-
|
|
38
|
-
> 面向 `danger-full-access` 设计:代码可直接访问 Node.js 与操作系统,插件不另加沙箱。仅在可接受此权限的环境使用。
|
|
28
|
+
[快速开始](#快速开始) · [功能概览](#功能概览) · [连续计算](#连续计算与语言扩展) · [代码编辑与容错](#代码编辑与调用容错) · [全局绑定](#全局绑定跨会话复用常用函数) · [界面与设置](#界面与设置) · [状态与恢复](#值传递与状态恢复)
|
|
39
29
|
|
|
40
|
-
##
|
|
30
|
+
## 快速开始
|
|
41
31
|
|
|
42
|
-
需要 Node.js `^22.19.0 || >=24.0.0`
|
|
32
|
+
需要 Node.js `^22.19.0 || >=24.0.0` 和最新可用的官方 DSH。将插件安装到实际使用的 profile:
|
|
43
33
|
|
|
44
34
|
```sh
|
|
45
35
|
dsh plugin --profile <profile> add dsh-ptc-plus
|
|
46
36
|
```
|
|
47
37
|
|
|
48
|
-
|
|
38
|
+
将 `<profile>` 替换为实际 profile 名称。安装后重启 DSH,在会话中选择 **PTC 模式**。连续计算、调用容错和全局绑定默认开启;已有配置中显式关闭的选项会保持关闭。
|
|
39
|
+
|
|
40
|
+
在默认界面设置下,会话中会出现 **REPL** 页签;宽屏顶部还会显示绿色 **PTC Plus** 标志。输入框旁的星光按钮可打开全局绑定菜单和 **PTC Plus 设置**。也可从侧边栏 **插件 → 已安装 → dsh-ptc-plus → 配置** 检查插件总开关和全部设置。
|
|
41
|
+
|
|
42
|
+
安装完成后正常向模型描述任务即可,下面的 `run_code` 和 `edit_run_code` 示例说明模型如何使用这些能力。其他安装方式、Desktop、本地开发启动器、升级和故障排查见[安装指南](docs/installation.md)。
|
|
43
|
+
|
|
44
|
+
Windows 源码测试:双击 `scripts\run-upstream-dsh.cmd`,拉取官方 DSH 默认分支并复用隔离的构建缓存,加载当前插件工作区。首次运行需要安装依赖和构建;详见[上游源码测试](docs/installation.md#upstream-source-development-launcher-windows)。
|
|
49
45
|
|
|
50
|
-
##
|
|
46
|
+
## 功能概览
|
|
51
47
|
|
|
52
|
-
默认 PTC
|
|
48
|
+
默认 PTC 模式的每次调用都从新环境开始:上次的变量不再存在,改动依赖前面的结果时只能重发准备代码。PTC Plus 把 `run_code` 变成会话级的 TypeScript REPL,补上下面的落差。
|
|
53
49
|
|
|
54
50
|
| 场景 | 默认 PTC 模式 | 使用 PTC Plus |
|
|
55
51
|
| --- | --- | --- |
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
| 误发顶层工具调用 | PTC 模式下未声明的顶层调用被拒绝 |
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
|
|
|
68
|
-
|
|
|
52
|
+
| 接着上一次处理数据 | 每次从新环境开始,准备代码要重新发送 | 变量、函数、导入和中间结果留在会话里,下一次调用直接继续 |
|
|
53
|
+
| 修订已有的名称 | 没有已建立的绑定可更新,只能重发整段代码 | 同名修订变量、函数、类和导入绑定,已有闭包读取更新后的值 |
|
|
54
|
+
| 只改一小段代码 | 改动一行也要重新发送整段源码 | `edit_run_code` 只提交差异,再执行修改后的完整代码 |
|
|
55
|
+
| 使用模块语法 | 函数体里不能直接写静态 `import` / `export` | 在 cell 中直接写,插件自动适配模块语法 |
|
|
56
|
+
| 调用漏填摘要 | 缺少 `run_code.description` 时校验失败 | 自动补充显示摘要,其余参数合法的代码继续执行 |
|
|
57
|
+
| 提供方拒绝畸形工具 JSON | 整个 turn 以 provider 错误终止 | 缓冲的工具调用尾部仅含工具块和至多一个用量事件时可修复或保留参数;其他缓冲尾部转为 schema 拒绝结果,模型继续下一步 |
|
|
58
|
+
| 误发顶层工具调用 | PTC 模式下未声明的顶层调用被拒绝 | 当前工具定义能唯一确认目标且参数合法时,转为对应的 `run_code` |
|
|
59
|
+
| 定位代码错误 | 只返回原生错误与堆栈 | 对应到 cell 源码位置;末尾缺少闭合符且修正可唯一验证时给出编辑建议 |
|
|
60
|
+
| 访问当前项目 | 相对路径按宿主进程目录解析 | 按会话项目目录解析文件路径、会话模块导入和默认子进程目录 |
|
|
61
|
+
| 查找工具和参数 | 只能翻已经提供给模型的工具说明 | 在代码中列出、搜索当前可用能力,按需查看接口说明 |
|
|
62
|
+
| 传递 JSON 不易表达的数据 | JSON 无法完整表达 `undefined`、BigInt、循环引用等 | 在支持的值范围内保留特殊值和引用关系,供后续计算与恢复 |
|
|
63
|
+
| 查看当前计算状态 | 执行结束后没有可继续使用的会话变量可查 | REPL 页签展示保留的名称、定义来源、复用次数和有界值预览 |
|
|
64
|
+
| 跨会话使用常用函数 | 自己保存代码,并在后续调用中重新加载 | 全局绑定保存 TypeScript 源码,并向模型提供接口与使用提示 |
|
|
65
|
+
| 编写和测试全局绑定 | 没有全局绑定的专用工作台 | 让模型生成待审阅草稿,或在工作台试运行未保存的源码 |
|
|
66
|
+
| 重启后继续工作 | 没有跨调用的计算状态可供恢复 | 从会话记录恢复可验证的状态,无法恢复的部分明确提示 |
|
|
67
|
+
|
|
68
|
+
以下各节介绍具体用法和边界;完整语言规则、配置字段与诊断见[运行时参考](docs/runtime-reference.md)。
|
|
69
|
+
|
|
70
|
+
## 连续计算与语言扩展
|
|
71
|
+
|
|
72
|
+
以下代码由模型通过 `run_code` 执行。每次调用的代码称为一个 **cell**。
|
|
73
|
+
|
|
74
|
+
第一次,建立数据和计算函数:
|
|
69
75
|
|
|
70
|
-
|
|
76
|
+
```ts
|
|
77
|
+
const amounts: number[] = [12, 8, 5]
|
|
78
|
+
function total() {
|
|
79
|
+
return amounts.reduce((sum, value) => sum + value, 0)
|
|
80
|
+
}
|
|
81
|
+
return total() // 25
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
下一次,直接修订数据并复用函数:
|
|
71
85
|
|
|
72
|
-
|
|
86
|
+
```ts
|
|
87
|
+
const amounts = amounts.filter(value => value >= 8)
|
|
88
|
+
return total() // 20
|
|
89
|
+
```
|
|
73
90
|
|
|
74
|
-
|
|
91
|
+
无需重新定义 `total`,也无需为了避开重复声明而另起变量名。`total()` 读取的是更新后的 `amounts`。
|
|
75
92
|
|
|
76
|
-
|
|
93
|
+
默认的 **有状态语义**(`bindingUpdates: 'stateful'`)为连续修订扩展了 JavaScript/TypeScript 的绑定规则:
|
|
94
|
+
|
|
95
|
+
- 同一作用域内的变量、函数、类和导入绑定可以更新,包括用 `const` 声明的绑定;同一 cell 内也允许同名修订。
|
|
96
|
+
- 已有闭包读取更新后的绑定;提前保存的函数值仍是原来的函数。
|
|
97
|
+
- 不同块、函数和循环迭代的作用域仍然区分。
|
|
98
|
+
- 声明初始化失败时,尚未成功建立的名称不会永久阻止后续声明;失败前已经发生的其他修改不会因此回滚。
|
|
99
|
+
|
|
100
|
+
cell 支持 TypeScript、顶层 `await` / `return` 和静态 `import` / `export`。需要检测名称覆盖时,可在设置中关闭“允许重声明和覆盖”,使用 `protected` 策略。`tools` 等受保护的运行时名称仍不能覆盖。
|
|
101
|
+
|
|
102
|
+
<details>
|
|
103
|
+
<summary>静态导入与局部覆盖的时机</summary>
|
|
104
|
+
|
|
105
|
+
静态导入在 **整个 cell 的正文执行前** 生效,正文中的赋值或普通声明随后可以覆盖它。要恢复跟随模块导出,可在后续 cell 中再次静态导入。同一 cell 中,即使把 import 写在普通声明后面,也不会在那个文本位置重新覆盖局部值;若要在某一步取回当前导出值,可以显式赋值:
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
join = (await import('node:path')).join
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
这会取得当时的函数值;静态导入则持续跟随模块来源。更多规则见[运行时参考](docs/runtime-reference.md#cell-semantics)。
|
|
112
|
+
|
|
113
|
+
</details>
|
|
114
|
+
|
|
115
|
+
`run_code`、编辑后的代码和全局绑定工作台采用相同的语言策略;工作台的临时状态与模型会话分开。显式使用 `eval`、`Function`、`node:vm` 或独立运行时仍受对应原生边界约束。详细的作用域、模块互操作与历史会话规则见[语言参考](docs/runtime-reference.md#cell-semantics)。
|
|
116
|
+
|
|
117
|
+
## 代码编辑与调用容错
|
|
118
|
+
|
|
119
|
+
### 小改动只发送差异
|
|
120
|
+
|
|
121
|
+
模型可以调用 `edit_run_code` 修改当前轮模型运行中最近的可编辑 cell,无需重新发送整段源码。假设前面的第二个 cell 刚执行完,且仍在同一轮运行中,可以把筛选条件改为 `value >= 10`:
|
|
122
|
+
|
|
123
|
+
```js
|
|
124
|
+
edit_run_code({
|
|
125
|
+
edits: [{ old_string: 'value >= 8', new_string: 'value >= 10' }]
|
|
126
|
+
})
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
修改后会**重新执行整个 cell**,以上例子返回 `12`。已发生的状态修改不会回滚;如果代码涉及写文件或外部服务,重跑仍需考虑重复效果。编辑既可用于修复失败的代码,也可用于微调已成功的计算。
|
|
130
|
+
|
|
131
|
+
### 处理可以确定的调用问题
|
|
132
|
+
|
|
133
|
+
| 情况 | PTC Plus 的处理 |
|
|
134
|
+
| --- | --- |
|
|
135
|
+
| `run_code` 漏填外层 `description` | 补充显示摘要,让其余参数合法的代码继续执行 |
|
|
136
|
+
| 模型误发 PTC 直接工具列表之外的原生工具调用 | 当前工具定义能唯一确认目标且参数合法时,转为对应的 `run_code` |
|
|
137
|
+
| 参数校验报告缺少 `description` | 区分外层与嵌套工具参数并给出修正提示;提示以完整消息保存,保持会话历史可加载 |
|
|
138
|
+
| 代码解析失败 | 标出源码位置;若错误在末尾,且追加一到两个闭合符只有一种通过验证的修正,给出绑定原调用的编辑建议 |
|
|
139
|
+
|
|
140
|
+
前两项默认开启,可在设置中关闭。语法建议不会自动执行,也不代表插件能判断代码是否符合任务意图。
|
|
141
|
+
|
|
142
|
+
## 项目文件与工具能力
|
|
143
|
+
|
|
144
|
+
### 从会话项目目录开始
|
|
145
|
+
|
|
146
|
+
模型可以直接使用 Node.js 读取文件、处理数据和运行程序。相对文件路径与会话内的模块导入按会话记录的项目目录解析;子进程未指定 `cwd` 时,也使用这个目录。显式指定的目录仍然生效。
|
|
147
|
+
|
|
148
|
+
例如,在包含 `package.json` 的项目中,第一次调用读取依赖:
|
|
77
149
|
|
|
78
150
|
```ts
|
|
79
151
|
import { readFile } from 'node:fs/promises'
|
|
@@ -82,79 +154,101 @@ const deps = Object.keys(manifest.dependencies ?? {})
|
|
|
82
154
|
return deps.length
|
|
83
155
|
```
|
|
84
156
|
|
|
85
|
-
|
|
157
|
+
下一次直接整理已读取的数据:
|
|
86
158
|
|
|
87
159
|
```ts
|
|
88
160
|
return deps.map(dep => dep + '@' + manifest.dependencies[dep])
|
|
89
161
|
```
|
|
90
162
|
|
|
91
|
-
|
|
163
|
+
这里没有重新读文件,结果来自会话中已有的 `manifest`。直接文件、网络等外部输入可以在当前环境继续使用,但不保证能跨重启恢复。
|
|
92
164
|
|
|
93
|
-
###
|
|
165
|
+
### 按需发现工具
|
|
94
166
|
|
|
95
|
-
|
|
167
|
+
模型仍可通过 `tools.*` 使用 DSH 当前提供的原生工具。需要了解可用能力时,`capabilities.tree()` 列出目录,`find()` 搜索名称和描述,`inspect()` 查看选中接口的参数说明:
|
|
96
168
|
|
|
97
169
|
```ts
|
|
98
|
-
|
|
170
|
+
const matches = await capabilities.find('read')
|
|
171
|
+
return capabilities.inspect({
|
|
172
|
+
symbols: matches.slice(0, 4).map(item => item.symbol),
|
|
173
|
+
budget: 4,
|
|
174
|
+
})
|
|
99
175
|
```
|
|
100
176
|
|
|
101
|
-
|
|
177
|
+
搜索使用词法匹配,适合 `read`、`session` 这样的短关键词;没有匹配不代表工具一定不存在。发现工具不会增加权限,实际调用仍由 DSH 校验和调度。更多用法见[能力发现](docs/runtime-reference.md#capability-discovery)。
|
|
102
178
|
|
|
103
|
-
|
|
179
|
+
## 全局绑定:跨会话复用常用函数
|
|
104
180
|
|
|
105
|
-
|
|
181
|
+
会话变量服务于当前任务;**全局绑定**把常用 TypeScript 函数保存下来,供多个会话加载。例如,保存名为 `textTools` 的绑定后,模型可以使用 `textTools.clean(text)`。
|
|
106
182
|
|
|
107
|
-
|
|
183
|
+
全局绑定和星光入口默认开启。你可以手动创建、导入 `.ts` 文件,也可以让模型帮忙编写和修改:
|
|
108
184
|
|
|
109
185
|
```text
|
|
110
|
-
/binding new 创建 textTools
|
|
186
|
+
/binding new 创建 textTools,去掉文本首尾空白并保留内部空格
|
|
111
187
|
/binding edit <id> 增加逐行清理功能
|
|
112
188
|
```
|
|
113
189
|
|
|
114
|
-
|
|
190
|
+
`<id>` 是工作台中的条目标识,也可以从星光菜单选择要修改的绑定。
|
|
191
|
+
|
|
192
|
+
### 编写、审阅与启用
|
|
193
|
+
|
|
194
|
+
模型可先用内存样例测试,再提交草稿。草稿显示在输入框上方,由你检查源码、接口和给模型的提示词,并选择 **保存并启用**、**保存为停用** 或 **丢弃草稿**。提交草稿本身不会保存或启用绑定;关闭面板后,可从星光按钮的草稿角标重新打开。
|
|
115
195
|
|
|
116
|
-
|
|
196
|
+
星光菜单可在首条消息发出前查看、启停条目,选择对所有会话生效。已启用条目的接口和使用提示会提供给新会话中的模型;中途修改后,在现有会话的下一次允许请求中更新。
|
|
117
197
|
|
|
118
|
-
|
|
198
|
+
### 接口提示与独立试运行
|
|
119
199
|
|
|
120
|
-
|
|
200
|
+
每个条目可以从源码生成公开接口,并附加用途、输入约束或使用示例。仅修改提示词不会重置已加载函数的运行状态。会话中的同名赋值或重声明只覆盖对应名称,不会改写保存的全局条目。
|
|
121
201
|
|
|
122
|
-
|
|
202
|
+
工作台支持运行尚未保存的源码,并在连续执行间保留临时变量。它与模型会话的计算状态分开,适合手动检查函数;文件和网络操作仍会产生真实效果。没有当前 PTC 会话也可管理条目。源码格式、接口生成、保存位置和完整流程见[全局绑定指南](docs/user-bindings.md)。
|
|
123
203
|
|
|
124
|
-
|
|
204
|
+
## 界面与设置
|
|
125
205
|
|
|
126
|
-
|
|
127
|
-
- **REPL 语法**:`bindingUpdates` 默认是 `stateful`,允许跨 cell 更新变量、函数、类和 import alias,也允许同一 cell 内同一逻辑 scope 的重复声明更新同一身份;`protected` 可选择名称保护。`tools` 与注入的错误类不能重声明或写入:声明冲突报 `PTC-N001`,赋值失败时会指出对应名称。已有配置若仍含五个细分开关,设置页会显示待迁移状态,可直接选择任一种统一策略。模块语法默认可用。
|
|
128
|
-
- **模块互操作**:PTC 管理的 namespace 支持实时读取和局部覆盖,传给外部函数后仍保留这些语义。外部代码自行原生导入编译模块不承诺同一 namespace 或可写导出语义,详见[运行时说明](docs/runtime-reference.md#cell-semantics)。
|
|
129
|
-
- **状态与恢复**:控制重启恢复和按需错误提示。
|
|
130
|
-
- **工具扩展**:开启全局绑定,或供高级用户使用的官方 Cordis 工具。
|
|
131
|
-
- **界面显示**:控制增强工具卡片、REPL 页签和绑定编写快捷入口。
|
|
132
|
-
- **资源限制**:调整执行时间、内存和输出上限。
|
|
206
|
+
**REPL 页签**可搜索当前保留的名称,查看定义来源、复用次数和有界值预览,也可打开全局绑定工作台。预览有类型和大小限制,未采集、不完整或不可读取时会明确标注,不会为展示调用用户 getter。宽屏顶部的绿色 **PTC Plus** 标志提供快捷绑定清单,窄屏可使用 REPL 页签。
|
|
133
207
|
|
|
134
|
-
|
|
208
|
+

|
|
135
209
|
|
|
136
|
-
|
|
210
|
+
输入框旁的星光菜单将绑定编写、条目管理和 **PTC Plus 设置** 分组提供。设置弹窗与侧边栏插件配置页使用同一套配置:
|
|
211
|
+
|
|
212
|
+
| 分组 | 可以调整的内容 |
|
|
213
|
+
| --- | --- |
|
|
214
|
+
| 插件开关 | 启用或停用 PTC Plus |
|
|
215
|
+
| 调用容错 | 缺少摘要的调用、可准确识别的顶层工具误调用 |
|
|
216
|
+
| REPL 语法 | 允许同名修订,或选择名称保护策略 |
|
|
217
|
+
| 状态与恢复 | 重启恢复、按需提示与提示频率 |
|
|
218
|
+
| 工具扩展 | 全局绑定及其管理入口、官方 Cordis 工具集成 |
|
|
219
|
+
| 界面显示 | 增强工具卡片、REPL 页签与星光快捷入口 |
|
|
220
|
+
| 资源限制 | 执行时间、内存和输出上限 |
|
|
221
|
+
|
|
222
|
+
面向日常计算的功能默认开启。**Cordis 开发工具默认关闭**,适用于检查或开发 DSH 插件,按需开启即可;详见[集成说明](docs/adr/0020-optional-cordis-tools-in-ptc-mode.md)。已有配置中显式关闭的选项会保持关闭,条目是否启用也由各自的保存状态决定。
|
|
223
|
+
|
|
224
|
+
设置通常即时生效;活动 worker 存在时不能修改其内存上限。字段、默认值和完整限制见[配置参考](docs/runtime-reference.md#configuration)。
|
|
137
225
|
|
|
138
226
|

|
|
139
227
|
|
|
140
|
-
|
|
228
|
+
## 值传递与状态恢复
|
|
229
|
+
|
|
230
|
+
### 保留超出普通 JSON 的值
|
|
231
|
+
|
|
232
|
+
在支持的值范围内,工具参数、结果和恢复记录可以保留 `undefined`、BigInt、`NaN`、无穷大、稀疏数组、循环引用和共享引用关系。普通 JSON 结果仍以结构化值返回;特殊值会以可读文本展示给模型,其程序内值与展示文本分别处理。
|
|
141
233
|
|
|
142
|
-
|
|
234
|
+
这不等于任意 JavaScript 对象都可传递或持久化:函数、Promise、类实例、Date、Map、Set 等不属于值传递的支持域。在 REPL 中保留函数供后续调用,与把函数作为工具结果返回,是不同的能力。需要继续计算时应复用会话变量;完整支持域见[值传递说明](docs/value-wire.md)。
|
|
143
235
|
|
|
144
|
-
|
|
236
|
+
### 恢复有依据的计算状态
|
|
145
237
|
|
|
146
|
-
|
|
238
|
+
会话级状态不等于永久内存。重启、执行环境重置或上下文压缩后,只保留能从会话记录验证、且其来源仍在模型上下文中的计算状态。直接读取外部文件或网络、历史记录损坏、来源被压缩等情况,都可能缩小可保留的范围。
|
|
147
239
|
|
|
148
|
-
|
|
240
|
+
无法证明的状态会被丢弃并给出提示,必要时从空环境继续当前计算。恢复不会重新派发已记录的原生工具调用,也不会撤销历史外部效果。恢复依据和限制见[运行时参考](docs/runtime-reference.md)。
|
|
149
241
|
|
|
150
|
-
|
|
242
|
+
## 使用边界
|
|
151
243
|
|
|
152
|
-
|
|
244
|
+
- **执行权限**:主要面向 `danger-full-access`。代码可直接访问 Node.js 与操作系统;插件不额外提供安全沙箱。DSH 继续负责原生工具权限、审批、取消和沙箱策略。
|
|
245
|
+
- **失败与重跑**:代码执行失败不代表此前语句没有生效。进程隔离、编辑和恢复都不保证外部操作可以安全重复;超时或输出超限等情况也可能释放计算环境。
|
|
246
|
+
- **错误与开销**:语言适配和调用容错不保证所有代码成功。实际调用次数与 token 用量取决于任务和模型;已有对照观察及限制见[评测说明](docs/evaluation.md#recorded-paired-observation)。
|
|
153
247
|
|
|
154
|
-
|
|
248
|
+
PTC Plus 是社区插件,与 DeepSeek 或 DSH 无隶属或背书关系。
|
|
155
249
|
|
|
156
|
-
##
|
|
250
|
+
## 进一步阅读
|
|
157
251
|
|
|
158
|
-
[
|
|
252
|
+
[安装与升级](docs/installation.md) · [全局绑定](docs/user-bindings.md) · [运行时参考](docs/runtime-reference.md) · [架构与开发](docs/architecture.md) · [验证指南](docs/verification.md) · [全部文档](docs/README.md)
|
|
159
253
|
|
|
160
|
-
|
|
254
|
+
[MIT License](LICENSE)
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
|
2
|
+
<rect width="64" height="64" rx="16" fill="#087f5b"/>
|
|
3
|
+
<path d="m23 20-12 12 12 12m18-24 12 12-12 12" fill="none" stroke="#fff" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M32 25v14m-7-7h14" fill="none" stroke="#b7f7d7" stroke-width="4" stroke-linecap="round"/>
|
|
5
|
+
</svg>
|