dsh-ptc-plus 0.4.10 → 0.5.0
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 +60 -130
- package/README.md +60 -130
- package/assets/dsh-ptc-plus-banner-en.webp +0 -0
- package/assets/dsh-ptc-plus-banner-zh.webp +0 -0
- package/assets/ptc-plus-repl-workspace-en.png +0 -0
- package/assets/ptc-plus-repl-workspace-zh.png +0 -0
- package/assets/ptc-plus-settings-en.png +0 -0
- package/assets/ptc-plus-settings-zh.png +0 -0
- package/client.cjs +42336 -0
- package/cordis.patch.yml +1 -0
- package/docs/README.md +6 -2
- package/docs/adr/0005-temporary-rejected-cell-edit-transport.md +31 -198
- package/docs/adr/0008-define-agent-operating-contract.md +5 -1
- package/docs/adr/0009-bound-expensive-acceptance-default.md +2 -2
- package/docs/adr/0016-archive-resolved-review-findings.md +1 -1
- package/docs/adr/0017-track-the-latest-dsh-public-surface.md +2 -2
- package/docs/adr/0019-plugin-settings-and-kill-switch.md +1 -1
- package/docs/adr/0020-optional-cordis-tools-in-ptc-mode.md +1 -1
- package/docs/adr/0022-stage-npm-releases-with-oidc.md +4 -2
- package/docs/adr/0023-global-user-bindings.md +2 -0
- package/docs/adr/0026-persist-the-delivery-verdict-against-the-verified-candidate.md +2 -0
- package/docs/adr/0028-attach-to-the-host-ptc-execution-seam.md +25 -23
- package/docs/adr/0031-close-semantic-obligations-by-owner.md +1 -1
- package/docs/adr/0034-keep-program-values-separate-from-output-projections.md +29 -0
- package/docs/adr/0035-run-coverage-only-before-a-new-release.md +27 -0
- package/docs/adr/0036-separate-focused-development-from-delivery-verification.md +29 -0
- package/docs/adr/0037-keep-tool-hover-previews-passive.md +52 -0
- package/docs/adr/0038-freeze-session-capability-plans.md +71 -0
- package/docs/adr/0039-verify-documentation-without-runtime-suites.md +29 -0
- package/docs/adr/0040-separate-capability-configurations-from-session-observations.md +39 -0
- package/docs/adr/0041-record-cell-execution-directories.md +65 -0
- package/docs/adr/0042-persist-provider-availability-and-handback.md +41 -0
- package/docs/adr/0043-compose-capability-and-context-policies.md +37 -0
- package/docs/adr/README.md +6 -0
- package/docs/architecture.md +23 -25
- package/docs/capability-planning-components.md +93 -0
- package/docs/capability-projection.md +7 -0
- package/docs/client-ui.md +70 -23
- package/docs/client-visual-contract.md +26 -9
- package/docs/context-management.md +22 -0
- package/docs/context-optimization-plan.md +353 -0
- package/docs/context-public-interface-coverage.md +25 -0
- package/docs/durability-design.md +20 -15
- package/docs/evaluation.md +41 -6
- package/docs/evaluations/command-goat-deepseek-v4.1-flash-20261006.md +126 -0
- package/docs/evaluations/command-goat-deepseek-v4.1-flash.md +281 -0
- package/docs/installation.md +31 -10
- package/docs/program-data-plane.md +5 -3
- package/docs/publishing.md +5 -5
- package/docs/release-coverage.md +73 -0
- package/docs/release-notes.md +1 -1
- package/docs/review-procedure.md +56 -0
- package/docs/runtime-reference.md +48 -16
- package/docs/semantic-validation.md +14 -2
- package/docs/stateful-binding-updates-proposal.md +2 -2
- package/docs/user-bindings.md +1 -1
- package/docs/value-wire.md +11 -1
- package/docs/verification-optimization-work.md +26 -15
- package/docs/verification.md +30 -88
- package/index.js +123 -20
- package/internal/binding-toggle-receipt.js +24 -0
- package/internal/capability-command-receipt.js +29 -0
- package/internal/capability-environment.js +1247 -0
- package/internal/capability-plan.js +285 -0
- package/internal/capability-policy.js +96 -0
- package/internal/capability-statistics-store.js +180 -0
- package/internal/capability-statistics.js +210 -0
- package/internal/config-spec.js +79 -9
- package/internal/direct-surface-owner.js +27 -29
- package/internal/dynamic-environment-runtime.js +9 -9
- package/internal/edit-transport-owner.js +180 -139
- package/internal/execution-provider-owner.js +15 -12
- package/internal/execution-seam-compat.js +8 -8
- package/internal/kernel-worker.js +104 -32
- package/internal/native-root-dynamic.js +12 -13
- package/internal/program-bindings.js +190 -0
- package/internal/recovery-tips.js +3 -2
- package/internal/rejected-cell-editor.js +8 -8
- package/internal/repl-observation-interest.js +11 -3
- package/internal/rpc-contract.js +1 -0
- package/internal/runtime-bridge-owner.js +272 -34
- package/internal/runtime-config.js +58 -0
- package/internal/runtime-contexts.js +74 -5
- package/internal/runtime-intrinsics.js +1 -0
- package/internal/runtime-messages.js +41 -0
- package/internal/sdk-projection.js +10 -82
- package/internal/session-cell-executor.js +42 -19
- package/internal/session-events.js +34 -0
- package/internal/session-journal-recovery.js +234 -11
- package/internal/session-journal-schema.js +6 -3
- package/internal/session-journal.js +31 -2
- package/internal/session-log-view.js +1 -1
- package/internal/session-runtime.js +119 -15
- package/internal/settings-compat.js +12 -5
- package/internal/stateful-module-compiler.js +3 -2
- package/internal/stateful-module-runtime.js +7 -3
- package/internal/stateful-root-runtime.js +9 -4
- package/internal/user-binding-authoring.js +2 -7
- package/internal/user-bindings-owner.js +41 -2
- package/internal/validated-parse-repair.js +1 -1
- package/internal/value-wire.js +68 -21
- package/internal/worker-cwd-virtualization.js +20 -18
- package/internal/worker-realm-surfaces.js +3 -3
- package/package.json +47 -29
- package/src/client-authoring-view.js +67 -30
- package/src/client-binding-review.js +2 -1
- package/src/client-binding-toggle.js +18 -0
- package/src/client-capabilities-view.js +1341 -0
- package/src/client-capability-sort.js +29 -0
- package/src/client-copy.js +871 -8
- package/src/client-feature-gates.js +3 -0
- package/src/client-indicator-view.js +4 -6
- package/src/client-primitives.js +33 -2
- package/src/client-repl-view.js +20 -13
- package/src/client-settings-view.js +411 -41
- package/src/client-styles.js +108 -15
- package/src/client-tool-hover.js +185 -0
- package/src/client-tool-view.js +37 -8
- package/src/client-transport.js +44 -9
- package/src/client-workbench.js +6 -7
- package/src/client.js +76 -22
- package/client.js +0 -32479
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/dsh-ptc-plus-banner-zh.webp" width="100%" alt="PTC Plus:不用从头来,改一改,接着算!">
|
|
2
|
+
<img src="assets/dsh-ptc-plus-banner-v2-zh.webp" width="100%" alt="PTC Plus:不用从头来,改一改,接着算!">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
@@ -25,29 +25,23 @@ PTC Plus 为 DSH 的 **PTC 模式**提供有状态的 TypeScript 计算环境。
|
|
|
25
25
|
- **少些调用错误**:适配常用模块语法,处理可准确识别的调用遗漏,并为可验证的语法错误提供修正建议。
|
|
26
26
|
- **复用常用能力**:把常用函数保存为全局绑定,向模型提供接口与使用提示,在多个会话中使用。
|
|
27
27
|
|
|
28
|
-
[快速开始](#快速开始) · [功能概览](#功能概览) · [连续计算](#连续计算与语言扩展) · [代码编辑与容错](#代码编辑与调用容错) · [全局绑定](#全局绑定跨会话复用常用函数) · [界面与设置](#界面与设置) · [状态与恢复](#值传递与状态恢复)
|
|
28
|
+
[快速开始](#快速开始) · [功能概览](#功能概览) · [连续计算](#连续计算与语言扩展) · [代码编辑与容错](#代码编辑与调用容错) · [全局绑定](#全局绑定跨会话复用常用函数) · [界面与设置](#界面与设置) · [状态与恢复](#值传递与状态恢复) · [开发](#开发)
|
|
29
29
|
|
|
30
30
|
## 快速开始
|
|
31
31
|
|
|
32
|
-
需要 Node.js `^22.19.0 || >=24.0.0` 和最新可用的官方 DSH
|
|
32
|
+
需要 Node.js `^22.19.0 || >=24.0.0` 和最新可用的官方 DSH:
|
|
33
33
|
|
|
34
34
|
```sh
|
|
35
35
|
dsh plugin --profile <profile> add dsh-ptc-plus
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
把 `<profile>` 换成实际 profile 名称,重启 DSH,在会话中选择 **PTC 模式**。连续计算、调用容错和全局绑定默认开启;升级用 `dsh plugin --profile <profile> add dsh-ptc-plus@latest` 再重启宿主,其他安装方式、Desktop、本地开发启动器和故障排查见[安装指南](docs/installation.md)。
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
在默认界面设置下,会话中会出现 **REPL** 页签;宽屏顶部还会显示绿色 **PTC Plus** 标志。输入框旁的星光按钮可打开全局绑定菜单和 **PTC Plus 设置**。也可从侧边栏 **插件 → 已安装 → dsh-ptc-plus → 配置** 检查插件总开关和全部设置。
|
|
43
|
-
|
|
44
|
-
安装完成后正常向模型描述任务即可,下面的 `run_code` 和 `edit_run_code` 示例说明模型如何使用这些能力。其他安装方式、Desktop、本地开发启动器、升级和故障排查见[安装指南](docs/installation.md)。
|
|
45
|
-
|
|
46
|
-
Windows 源码测试:双击 `scripts\run-upstream-dsh.cmd`,拉取官方 DSH 默认分支并复用隔离的构建缓存,加载当前插件工作区。首次运行需要安装依赖和构建;详见[上游源码测试](docs/installation.md#upstream-source-development-launcher-windows)。
|
|
40
|
+
界面默认显示会话里的 **REPL** 页签,宽屏顶部还有 **PTC Plus** 标志。输入框旁的星光按钮打开全局绑定菜单、会话能力工作台和 **PTC Plus 设置**,侧边栏的 **插件 → 已安装 → dsh-ptc-plus → 配置** 是同一套设置。
|
|
47
41
|
|
|
48
42
|
## 功能概览
|
|
49
43
|
|
|
50
|
-
默认 PTC
|
|
44
|
+
默认 PTC 模式的每次调用都从新环境开始:上次的变量已经不在了,想改动依赖前面的结果就只能重发准备代码。PTC Plus 把 `run_code` 变成会话级的 TypeScript REPL,补上这些差距。
|
|
51
45
|
|
|
52
46
|
| 场景 | 默认 PTC 模式 | 使用 PTC Plus |
|
|
53
47
|
| --- | --- | --- |
|
|
@@ -56,24 +50,20 @@ Windows 源码测试:双击 `scripts\run-upstream-dsh.cmd`,拉取官方 DSH
|
|
|
56
50
|
| 只改一小段代码 | 改动一行也要重新发送整段源码 | `edit_run_code` 只提交差异,再执行修改后的完整代码 |
|
|
57
51
|
| 使用模块语法 | 函数体里不能直接写静态 `import` / `export` | 在 cell 中直接写,插件自动适配模块语法 |
|
|
58
52
|
| 调用漏填摘要 | 缺少 `run_code.description` 时校验失败 | 自动补充显示摘要,其余参数合法的代码继续执行 |
|
|
59
|
-
| 提供方拒绝畸形工具 JSON | 整个 turn 以 provider 错误终止 |
|
|
53
|
+
| 提供方拒绝畸形工具 JSON | 整个 turn 以 provider 错误终止 | 可修复的调用尾部继续执行,其余转为 schema 拒绝结果,模型继续下一步 |
|
|
60
54
|
| 误发顶层工具调用 | PTC 模式下未声明的顶层调用被拒绝 | 当前工具定义能唯一确认目标且参数合法时,转为对应的 `run_code` |
|
|
61
55
|
| 定位代码错误 | 只返回原生错误与堆栈 | 对应到 cell 源码位置;末尾缺少闭合符且修正可唯一验证时给出编辑建议 |
|
|
62
|
-
|
|
|
63
|
-
| 查找工具和参数 | 只能翻已经提供给模型的工具说明 |
|
|
56
|
+
| 访问当前目录 | 按宿主为当前调用解析的目录执行 | 相对文件操作和默认子进程按执行时的会话当前目录解析,格内 `tools.working_directory({ cd })` 立即作用于本格剩余语句;模块导入保持进入目录,旧模块和导入闭包保留原来源 |
|
|
57
|
+
| 查找工具和参数 | 只能翻已经提供给模型的工具说明 | 用 `capabilities.search` 一次取得匹配接口,按字节限制响应;也可列目录或单项检查 |
|
|
64
58
|
| 传递 JSON 不易表达的数据 | JSON 无法完整表达 `undefined`、BigInt、循环引用等 | 在支持的值范围内保留特殊值和引用关系,供后续计算与恢复 |
|
|
65
|
-
| 查看当前计算状态 | 执行结束后没有可继续使用的会话变量可查 | REPL
|
|
59
|
+
| 查看当前计算状态 | 执行结束后没有可继续使用的会话变量可查 | REPL 页签展示保留的名称、定义来源、复用次数和值预览 |
|
|
66
60
|
| 跨会话使用常用函数 | 自己保存代码,并在后续调用中重新加载 | 全局绑定保存 TypeScript 源码,并向模型提供接口与使用提示 |
|
|
67
61
|
| 编写和测试全局绑定 | 没有全局绑定的专用工作台 | 让模型生成待审阅草稿,或在工作台试运行未保存的源码 |
|
|
68
62
|
| 重启后继续工作 | 没有跨调用的计算状态可供恢复 | 从会话记录恢复可验证的状态,无法恢复的部分明确提示 |
|
|
69
63
|
|
|
70
|
-
以下各节介绍具体用法和边界;完整语言规则、配置字段与诊断见[运行时参考](docs/runtime-reference.md)。
|
|
71
|
-
|
|
72
64
|
## 连续计算与语言扩展
|
|
73
65
|
|
|
74
|
-
以下代码由模型通过 `run_code`
|
|
75
|
-
|
|
76
|
-
第一次,建立数据和计算函数:
|
|
66
|
+
以下代码由模型通过 `run_code` 执行,每次调用的代码称为一个 **cell**。
|
|
77
67
|
|
|
78
68
|
```ts
|
|
79
69
|
const amounts: number[] = [12, 8, 5]
|
|
@@ -83,56 +73,35 @@ function total() {
|
|
|
83
73
|
return total() // 25
|
|
84
74
|
```
|
|
85
75
|
|
|
86
|
-
|
|
76
|
+
下一次直接修订数据,`total` 不用重新定义:
|
|
87
77
|
|
|
88
78
|
```ts
|
|
89
79
|
const amounts = amounts.filter(value => value >= 8)
|
|
90
80
|
return total() // 20
|
|
91
81
|
```
|
|
92
82
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
默认的 **有状态语义**(`bindingUpdates: 'stateful'`)为连续修订扩展了 JavaScript/TypeScript 的绑定规则:
|
|
83
|
+
默认的 **有状态语义**(`bindingUpdates: 'stateful'`)为此扩展了 JavaScript/TypeScript 的绑定规则:
|
|
96
84
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
- 声明初始化失败时,尚未成功建立的名称不会永久阻止后续声明;失败前已经发生的其他修改不会因此回滚。
|
|
101
|
-
|
|
102
|
-
cell 支持 TypeScript、顶层 `await` / `return` 和静态 `import` / `export`。需要检测名称覆盖时,可在设置中关闭“允许重声明和覆盖”,使用 `protected` 策略。`tools` 等受保护的运行时名称仍不能覆盖。
|
|
103
|
-
|
|
104
|
-
<details>
|
|
105
|
-
<summary>静态导入与局部覆盖的时机</summary>
|
|
106
|
-
|
|
107
|
-
静态导入在 **整个 cell 的正文执行前** 生效,正文中的赋值或普通声明随后可以覆盖它。要恢复跟随模块导出,可在后续 cell 中再次静态导入。同一 cell 中,即使把 import 写在普通声明后面,也不会在那个文本位置重新覆盖局部值;若要在某一步取回当前导出值,可以显式赋值:
|
|
108
|
-
|
|
109
|
-
```ts
|
|
110
|
-
join = (await import('node:path')).join
|
|
111
|
-
```
|
|
85
|
+
- 同一作用域里的变量、函数、类和导入绑定都能更新,包括 `const` 声明的;同一个 cell 内也允许同名修订。
|
|
86
|
+
- 已有闭包读到更新后的绑定,提前保存的函数值仍是原来的函数;不同块、函数和循环迭代的作用域照常区分。
|
|
87
|
+
- 声明初始化失败不会永久占住这个名称,失败前已经生效的修改也不会回滚。
|
|
112
88
|
|
|
113
|
-
|
|
89
|
+
cell 支持 TypeScript(含运行时 `enum` 和 `namespace`)、顶层 `await` / `return` 和静态 `import` / `export`;静态导入在整个 cell 正文执行前生效,正文里的赋值随后可以覆盖它。想检测名称覆盖,可以在设置里关掉“允许重声明和覆盖”改用 `protected` 策略;`tools` 这类受保护的运行时名称任何时候都不能覆盖。
|
|
114
90
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
`run_code`、编辑后的代码和全局绑定工作台采用相同的语言策略;工作台的临时状态与模型会话分开。显式使用 `eval`、`Function`、`node:vm` 或独立运行时仍受对应原生边界约束。详细的作用域、模块互操作与历史会话规则见[语言参考](docs/runtime-reference.md#cell-semantics)。
|
|
91
|
+
`run_code`、编辑后的代码和全局绑定工作台采用同一套语言策略;显式 `eval`、`Function`、`node:vm` 或独立运行时仍受各自的原生边界约束。作用域、模块互操作和历史会话规则见[语言参考](docs/runtime-reference.md#cell-semantics),完整的语言规则、配置字段与诊断见[运行时参考](docs/runtime-reference.md)。
|
|
118
92
|
|
|
119
93
|
## 代码编辑与调用容错
|
|
120
94
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
模型可以调用 `edit_run_code` 修改当前轮模型运行中最近的可编辑 cell,无需重新发送整段源码。假设前面的第二个 cell 刚执行完,且仍在同一轮运行中,可以把筛选条件改为 `value >= 10`:
|
|
95
|
+
模型可以在新的 `run_code` cell 内调用 `tools.edit_run_code`,修改当前轮最近的可编辑 cell,不必重发整段源码:
|
|
124
96
|
|
|
125
97
|
```js
|
|
126
|
-
edit_run_code({
|
|
98
|
+
const receipt = await tools.edit_run_code({
|
|
127
99
|
edits: [{ old_string: 'value >= 8', new_string: 'value >= 10' }]
|
|
128
100
|
})
|
|
101
|
+
return receipt
|
|
129
102
|
```
|
|
130
103
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
历史结果被压缩为新的显示条目,不算再次执行,也不会把旧 cell 变成新的编辑目标;较新的失败 cell 仍可继续修正。
|
|
134
|
-
|
|
135
|
-
### 处理可以确定的调用问题
|
|
104
|
+
收据里 `accepted: true, scheduled: true` 表示编辑已经安排:外层 cell 结束后才重新执行整个目标 cell,下一次 cell 读到的是修订后的值(上例是 `12`)。同一次调用里再读仍是旧状态,已经发生的状态修改不会回滚,写过文件或调用过外部服务的代码重跑时要考虑重复效果。正则编辑的每项必须给出 `pattern`、`flags`、`replacement`、`expected_matches`,不需要标志时显式传 `""`。
|
|
136
105
|
|
|
137
106
|
| 情况 | PTC Plus 的处理 |
|
|
138
107
|
| --- | --- |
|
|
@@ -141,122 +110,83 @@ edit_run_code({
|
|
|
141
110
|
| 参数校验报告缺少 `description` | 区分外层与嵌套工具参数并给出修正提示;提示以完整消息保存,保持会话历史可加载 |
|
|
142
111
|
| 代码解析失败 | 标出源码位置;若错误在末尾,且追加一到两个闭合符只有一种通过验证的修正,给出绑定原调用的编辑建议 |
|
|
143
112
|
|
|
144
|
-
|
|
113
|
+
前两项默认开启,可以在设置里关掉。语法建议不会自动执行,也不代表代码符合任务意图。volatile 状态存不成 durable 检查点,但保存被拒绝后当前变量还能接着用;恢复不撤销外部效果,也不改全局绑定配置。
|
|
145
114
|
|
|
146
115
|
## 项目文件与工具能力
|
|
147
116
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
模型可以直接使用 Node.js 读取文件、处理数据和运行程序。相对文件路径与会话内的模块导入按会话记录的项目目录解析;子进程未指定 `cwd` 时,也使用这个目录。显式指定的目录仍然生效。
|
|
117
|
+
模型可以直接用 Node.js 读文件、处理数据、跑程序。相对路径和没指定 `cwd` 的子进程按执行时的会话当前目录解析:格内调用 `tools.working_directory({ cd })` 后,本格剩余操作就用新目录,与宿主工具同一基准。模块导入和 `import.meta` 仍按进入目录,已加载模块、旧导入闭包和已捕获的 `require` 保留原来源;`process.chdir` 在 cell 内不可用。文件、网络等外部输入在当前环境里可以继续用,但不保证跨重启还能恢复。
|
|
151
118
|
|
|
152
|
-
|
|
119
|
+
`capabilities.search()` 一次查找并返回完整接口,预算按字节计算,过长条目保持完整并给出单项读取指针;原有的 `tree()`、`find()`、`inspect()` 仍可用。
|
|
153
120
|
|
|
154
121
|
```ts
|
|
155
|
-
|
|
156
|
-
const manifest = JSON.parse(await readFile('package.json', 'utf8'))
|
|
157
|
-
const deps = Object.keys(manifest.dependencies ?? {})
|
|
158
|
-
return deps.length
|
|
122
|
+
return capabilities.search({ query: 'read file content', budgetBytes: 8192 })
|
|
159
123
|
```
|
|
160
124
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
```ts
|
|
164
|
-
return deps.map(dep => dep + '@' + manifest.dependencies[dep])
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
这里没有重新读文件,结果来自会话中已有的 `manifest`。直接文件、网络等外部输入可以在当前环境继续使用,但不保证能跨重启恢复。
|
|
168
|
-
|
|
169
|
-
### 按需发现工具
|
|
170
|
-
|
|
171
|
-
模型仍可通过 `tools.*` 使用 DSH 当前提供的原生工具。需要了解可用能力时,`capabilities.tree()` 列出目录,`find()` 搜索名称和描述,`inspect()` 查看选中接口的参数说明:
|
|
172
|
-
|
|
173
|
-
```ts
|
|
174
|
-
const matches = await capabilities.find('read')
|
|
175
|
-
return capabilities.inspect({
|
|
176
|
-
symbols: matches.slice(0, 4).map(item => item.symbol),
|
|
177
|
-
budget: 4,
|
|
178
|
-
})
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
搜索使用词法匹配,适合 `read`、`session` 这样的短关键词;没有匹配不代表工具一定不存在。发现工具不会增加权限,实际调用仍由 DSH 校验和调度。更多用法见[能力发现](docs/runtime-reference.md#capability-discovery)。
|
|
125
|
+
搜索按中英文词法匹配,没匹配到不代表工具不存在。发现工具不会增加权限,实际调用仍由 DSH 校验和调度,更多用法见[能力发现](docs/runtime-reference.md#capability-discovery)。
|
|
182
126
|
|
|
183
127
|
## 全局绑定:跨会话复用常用函数
|
|
184
128
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
全局绑定和星光入口默认开启。你可以手动创建、导入 `.ts` 文件,也可以让模型帮忙编写和修改:
|
|
129
|
+
会话变量服务于当前任务,**全局绑定**把常用 TypeScript 函数保存下来供多个会话加载:保存 `textTools` 之后,模型就能调用 `textTools.clean(text)`。你可以手动创建、导入 `.ts` 文件,也可以让模型帮忙:
|
|
188
130
|
|
|
189
131
|
```text
|
|
190
132
|
/binding new 创建 textTools,去掉文本首尾空白并保留内部空格
|
|
191
133
|
/binding edit <id> 增加逐行清理功能
|
|
192
134
|
```
|
|
193
135
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
### 编写、审阅与启用
|
|
197
|
-
|
|
198
|
-
模型可先用内存样例测试,再提交草稿。草稿悬浮在输入框上方,展开或折叠不挤动对话;从星光菜单或原请求打开草稿时,直接进入大窗口。点击 **放大查看绑定草稿** 可在大窗口内审阅完整源码,正文独立滚动,底部保留保存与丢弃按钮;标题栏的放大、缩小与关闭操作分开显示,点击 **缩小显示绑定草稿** 返回预览;由你检查源码、接口和给模型的提示词,并选择 **保存并启用**、**保存为停用** 或 **丢弃草稿**。提交草稿本身不会保存或启用绑定;关闭面板后,可从星光按钮的草稿角标重新打开。
|
|
199
|
-
|
|
200
|
-
星光菜单可在首条消息发出前查看、启停条目,选择对所有会话生效。已启用条目优先展示,停用组显示数量并默认折叠;只有绑定列表滚动,底部编写、修改、管理和设置按钮始终可见。已启用条目的接口和使用提示会提供给新会话中的模型;中途修改后,在现有会话的下一次允许请求中更新。
|
|
201
|
-
|
|
202
|
-
### 接口提示与独立试运行
|
|
203
|
-
|
|
204
|
-
每个条目可以从源码生成公开接口,并附加用途、输入约束或使用示例。仅修改提示词不会重置已加载函数的运行状态。会话中的同名赋值或重声明只覆盖对应名称,不会改写保存的全局条目。
|
|
136
|
+
模型提交的草稿浮在输入框上方,你在大窗口里看完整源码、接口和给模型的提示词,再选 **保存并启用**、**保存为停用** 或 **丢弃草稿**;提交草稿本身不会保存或启用绑定。已启用条目的接口和使用提示会提供给新会话中的模型,中途修改在现有会话的下一次允许请求中生效。
|
|
205
137
|
|
|
206
|
-
|
|
138
|
+
工作台可以运行尚未保存的源码,并在连续执行之间保留临时变量;它的计算状态和模型会话分开,文件和网络操作仍会产生真实效果,没有 PTC 会话时也能管理条目。源码格式、接口生成、保存位置和完整流程见[全局绑定指南](docs/user-bindings.md)。
|
|
207
139
|
|
|
208
140
|
## 界面与设置
|
|
209
141
|
|
|
210
|
-
**REPL
|
|
211
|
-
|
|
212
|
-
工作台控件提供可见的键盘焦点和禁用反馈,REPL 名称在明暗主题下保持可读;关键控件的浏览器回归检查及覆盖边界见[视觉契约](docs/client-visual-contract.md)。
|
|
142
|
+
**REPL 页签**列出会话里保留的名称、定义来源、复用次数和值预览,也能打开全局绑定工作台。执行卡片收起后,鼠标停留 400ms 或键盘聚焦会弹出一份源码、结果和功能标记的摘录,点击或按 Enter/空格展开完整内容并复制代码;不需要时可以在设置的“界面显示”里关掉“悬停预览执行内容”。
|
|
213
143
|
|
|
214
144
|

|
|
215
145
|
|
|
216
|
-
|
|
146
|
+
设置窗口和侧边栏的插件配置页是同一套配置,分组如下:
|
|
217
147
|
|
|
218
|
-
| 分组 | 可以调整的内容 |
|
|
219
|
-
| --- | --- |
|
|
220
|
-
| 插件开关 | 启用或停用 PTC Plus |
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
| 界面显示 | 增强工具卡片、REPL
|
|
226
|
-
| 资源限制 |
|
|
148
|
+
| 功能模块 | 分组 | 可以调整的内容 |
|
|
149
|
+
| --- | --- | --- |
|
|
150
|
+
| 插件开关 | PTC Plus 标题总开关 | 启用或停用 PTC Plus |
|
|
151
|
+
| 核心工作区 | REPL 语法 | 允许同名修订或选择名称保护 |
|
|
152
|
+
| 核心工作区 | 状态与恢复 | 重启恢复、上下文提示及其频率 |
|
|
153
|
+
| 扩展与容错 | 工具扩展 | 全局绑定及其管理入口、官方 Cordis 工具集成 |
|
|
154
|
+
| 扩展与容错 | 调用容错 | 缺失调用摘要、可识别的错位原生工具调用 |
|
|
155
|
+
| 界面与资源 | 界面显示 | 增强工具卡片、REPL 页签和星光快捷入口 |
|
|
156
|
+
| 界面与资源 | 资源限制 | 执行时间、内存和输出预算 |
|
|
157
|
+
| 实验性 | 能力与上下文 | 实验性能力管理(默认关闭)、独立统计、常用集、单项选择和展示预算 |
|
|
227
158
|
|
|
228
|
-
|
|
159
|
+
面向日常计算的功能默认开启,**Cordis 开发工具默认关闭**,要检查或开发 DSH 插件时再打开,详见[集成说明](docs/adr/0020-optional-cordis-tools-in-ptc-mode.md)。
|
|
229
160
|
|
|
230
|
-
|
|
161
|
+
“能力与上下文”是实验性设置,默认关闭。打开后可以按类别、来源和单项选择 Skills、Tools 和 MCP 能力的启停与说明方式,初始提示、提示恢复、输出节选和使用统计也在这里;标题旁的总开关一次暂停整组并保留原有选择,改动对新会话或明确刷新后的会话生效。星光菜单里还有一个会话能力工作台,用来按类别、来源和状态查看、调整当前会话的能力,改动先放进草稿,可以只写进本会话,也可以保存成全局默认。字段、默认值和完整限制见[配置参考](docs/runtime-reference.md#configuration)。
|
|
231
162
|
|
|
232
|
-
宿主执行 provider 必须使用 TypeScript
|
|
163
|
+
宿主执行 provider 必须使用 TypeScript;热重载换成别的语言时插件会撤出并报出诊断,换回来就重新启用。
|
|
233
164
|
|
|
234
|
-

|
|
235
166
|
|
|
236
167
|
## 值传递与状态恢复
|
|
237
168
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
在支持的值范围内,工具参数、结果和恢复记录可以保留 `undefined`、BigInt、`NaN`、无穷大、稀疏数组、循环引用和共享引用关系。普通 JSON 结果仍以结构化值返回;特殊值会以可读文本展示给模型,其程序内值与展示文本分别处理。
|
|
241
|
-
|
|
242
|
-
这不等于任意 JavaScript 对象都可传递或持久化:函数、Promise、类实例、Date、Map、Set 等不属于值传递的支持域。在 REPL 中保留函数供后续调用,与把函数作为工具结果返回,是不同的能力。需要继续计算时应复用会话变量;完整支持域见[值传递说明](docs/value-wire.md)。
|
|
243
|
-
|
|
244
|
-
### 恢复有依据的计算状态
|
|
169
|
+
在插件 graph IPC 支持的值范围内,程序参数、结果和恢复记录能保留 `undefined`、BigInt、`NaN`、无穷大、稀疏数组、循环引用和共享引用关系,支持的值直接返回即可,不必自己写 `JSON.stringify`(它会丢掉对象里的 `undefined`,把 `NaN` 和无穷大变成 `null`、把 `-0` 变成 `0`,还会拒绝 BigInt)。函数、Promise、类实例、Date、Map、Set 不在这个范围内,原生 `tools.*` 的 JSON 参数与结果契约也不受影响,详见[值契约](docs/value-wire.md)。
|
|
245
170
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
无法证明的状态会被丢弃并给出提示,必要时从空环境继续当前计算。恢复不会重新派发已记录的原生工具调用,也不会撤销历史外部效果。恢复依据和限制见[运行时参考](docs/runtime-reference.md)。
|
|
171
|
+
会话状态不是永久内存:重启、执行环境重置或上下文压缩后,只保留能从会话记录验证、且来源仍在模型上下文中的状态,其余会被丢弃并给出提示,必要时从空环境继续当前计算。会话记录本身缺失或损坏时会明确报错,不会被当作成功恢复的空会话。恢复不会重新派发已记录的原生工具调用,也不会撤销历史外部效果,依据和限制见[运行时参考](docs/runtime-reference.md)。
|
|
249
172
|
|
|
250
173
|
## 使用边界
|
|
251
174
|
|
|
252
|
-
- **执行权限**:主要面向 `danger-full-access
|
|
253
|
-
-
|
|
254
|
-
-
|
|
175
|
+
- **执行权限**:主要面向 `danger-full-access`。代码可以直接访问 Node.js 和操作系统,插件不额外提供安全沙箱;原生工具权限、审批、取消和沙箱策略仍归 DSH。
|
|
176
|
+
- **失败与重跑**:代码执行失败不代表之前的语句没生效。进程隔离、编辑和恢复都不保证外部操作可以安全重复,超时或输出超限也可能释放计算环境。
|
|
177
|
+
- **错误与开销**:语言适配和调用容错不保证所有代码都能跑通,实际调用次数和 token 用量取决于任务和模型,已有对照观察及限制见[评测说明](docs/evaluation.md#recorded-paired-observation)。
|
|
255
178
|
|
|
256
179
|
PTC Plus 是社区插件,与 DeepSeek 或 DSH 无隶属或背书关系。
|
|
257
180
|
|
|
258
|
-
##
|
|
181
|
+
## 开发
|
|
182
|
+
|
|
183
|
+
开发在仓库根目录进行:`npm ci` 安装依赖,`npm run build` 重新生成 `client.cjs` 和 compiler 产物。聚焦测试必须指定用例:
|
|
184
|
+
|
|
185
|
+
```sh
|
|
186
|
+
npm run test:backend:focus -- --file test/<owner>.test.js --test-name-pattern="<case>"
|
|
187
|
+
npm run test:client:focus -- "<test name pattern>"
|
|
188
|
+
```
|
|
259
189
|
|
|
260
|
-
[
|
|
190
|
+
交付前按[变更分类](docs/verification.md#change-classification)选检查:只改文档跑 `npm run verify:docs`,其他改动跑 `npm run check`,然后走[评审流程](docs/review-procedure.md)。架构和数据面见[架构与开发](docs/architecture.md),全部文档见[文档索引](docs/README.md),安装与发布见[安装指南](docs/installation.md)和[发布流程](docs/publishing.md)。
|
|
261
191
|
|
|
262
192
|
[MIT License](LICENSE)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|