docs(i18n): apply reviewed Chinese proofreading updates

This commit is contained in:
xjt
2026-08-12 09:59:19 +08:00
parent 82d21ab3c3
commit 7b450d121e
258 changed files with 535 additions and 535 deletions

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/approval.md
approval.md: 6ade53d7755f1070a17513d9f3efd4252d6d255f
approval.zh.md: 92138bee75369f81b69b3551ee47ea97be07441e
approval.zh.md: 3e2ab1d5c56fbf3eeb0ae12ec3baa1e3cb3d2a71

View File

@@ -46,7 +46,7 @@ type ApprovalOutcome = 'allowed-once' | 'rejected' | 'cancelled' | 'unavailable'
type ApprovalPolicy = 'ask' | 'never'
```
两种策略都会将各自完整的当前含义贡献给缓存安全的运行时上下文快照。带来源的 `user/message` 是持久化且模型可见的输入;批状态变化时,会在保留的历史后追加一份新的完整快照,而不改写请求头中的系统提示词。
两种策略都会将各自完整的当前含义贡献给缓存安全的运行时上下文快照。带来源的 `user/message` 是持久化且模型可见的输入;批状态变化时,会在保留的历史后追加一份新的完整快照,而不改写请求头中的系统提示词。
## 审批请求
@@ -83,7 +83,7 @@ interface ApprovalRequest {
## 分发与审计
`ctx.approval.request(req)` 要求发起请求的会话处于一个尚未结束的轮次内。它追加 `approval/asked`,获取一个结果,追加对应的 `approval/decided`,然后以该结果完成。`never` 策略在服务内部、waterfall 分发之前强制执行,因此即使后来以 `prepend` 注册的应答者也无法绕过它。应答者在拥有该请求时返回结果,否则调用 `next()` 委托;第一个应答占据唯一的决策槽位。
`ctx.approval.request(req)` 要求发起请求的会话处于一个尚未结束的轮次内。它追加 `approval/asked`,获取一个结果,追加对应的 `approval/decided`,然后以该结果完成。`never` 策略在服务内部、waterfall 分发之前强制执行,因此即使后来以 `prepend` 注册的应答者也无法绕过它。应答者在负责处理该请求时返回结果,否则调用 `next()` 委托;第一个应答占据唯一的决策槽位。
审计事件仅写入日志,不进入模型 transcript文本记录。模型可见的行为是调用方派生的工具结果与当前运行时上下文快照。服务 dispose资源释放时会移除其上下文贡献应答者监听器独立地通过 effect 绑定到其所属插件。

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/attachment.md
attachment.md: ff7f14ceae8d4f8055d5cfd4367373729dc5ecbc
attachment.zh.md: d7a9527788588d5504fdeffd8ae7849b0f8b1378
attachment.zh.md: 63769e621b8e088cda9bd49fbf23d08db8058669

View File

@@ -2,7 +2,7 @@
[English](attachment.md) | 中文
附件 seam 将二进制图片的所有权与会话日志分离。生方把经过校验的编码字节交给 [`ctx.attachments`](#ctxattachments--attachmentstore-abstract-seam);只有对象完成持久化后,该服务才会发布不可变的内容寻址引用。会话事件和模型可见的 `ImageBlock` 包含该引用及其元数据,绝不包含浏览器对象 URL、宿主临时路径、提供方 URL 或 base64 数据。
附件 seam 将二进制图片的所有权与会话日志分离。生方把经过校验的编码字节交给 [`ctx.attachments`](#ctxattachments--attachmentstore-abstract-seam);只有对象完成持久化后,该服务才会发布不可变的内容寻址引用。会话事件和模型可见的 `ImageBlock` 包含该引用及其元数据,绝不包含浏览器对象 URL、宿主临时路径、提供方 URL 或 base64 数据。
未发送的浏览器草稿可以保留在内存中,原生客户端也可以将其暂存于操作系统临时存储。宿主接受用户消息后,会先把消息中的图片移到 `<DSH_HOME>/attachments/v1` 下,再追加用户事件。结构化模型图片输出遵循同样的先持久化、后追加事件规则。
@@ -48,7 +48,7 @@ interface ImageAttachmentLimits {
引用记录固有尺寸和编码长度,使客户端无需先解码即可排布历史记录;每次权威读取仍会根据对象重新校验摘要、媒体签名、尺寸和元数据。
## 提交与校验读取的数据
## 提交与校验读取的数据
```ts type-equiv
/** Request to validate and durably commit one image. */

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/feedback.md
feedback.md: a0daf47d093f3efb643950c0e124a8db0734fde4
feedback.zh.md: 1163d30a6af5f818ab3be8ff754de20656e7e743
feedback.zh.md: d1e9a2b59a18a0d11b5bc7a6f01e2d607b8eb8ee

View File

@@ -195,9 +195,9 @@ type MessageFeedbackDeleteResult =
存储的 `{createdAt, cwd}` 身份必须与检查所得 header 匹配。不匹配按不存在处理:`list` 返回空条目,`put` 则可用绑定当前 header 身份的新记录替换陈旧行。fork 使用新的 Session 身份,即使种子包含相同消息,也不获得伴随记录副本。
## 持久化与 Remote
## 持久化与 Remote 约
服务通过 `ctx.storageDomain` 在 `message_feedback` 存储域中保存完整 Session 行。`put` 提交引用目标消息的伴随记录前,身份匹配的 live 目标先经过权威 `ctx.sessions.flush` checkpoint随后 live 与 cold 路径都会通过 `SessionPersistence.readFrom` 从序列零做物理复读。写入伴随记录前会再次校验所得观测,因此目标日志的持久提交始终先于其伴随记录。`maxNoteBytes` 为必填项,按 UTF-8 字节限制备注文本Web Host 组合将其设为 `8192`。该包通过 `GatewayService` 与 `@Remote` 发布 Host `messageFeedback.list`、`messageFeedback.put` 和 `messageFeedback.delete` 一元 Remote 约;下方生成的 Cordis API 是方法级权威。
服务通过 `ctx.storageDomain` 在 `message_feedback` 存储域中保存完整 Session 行。`put` 提交引用目标消息的伴随记录前,身份匹配的 live 目标先经过权威 `ctx.sessions.flush` checkpoint随后 live 与 cold 路径都会通过 `SessionPersistence.readFrom` 从序列零做物理复读。写入伴随记录前会再次校验所得观测,因此目标日志的持久提交始终先于其伴随记录。`maxNoteBytes` 为必填项,按 UTF-8 字节限制备注文本Web Host 组合将其设为 `8192`。该包通过 `GatewayService` 与 `@Remote` 发布 Host `messageFeedback.list`、`messageFeedback.put` 和 `messageFeedback.delete` 一元 Remote 约;下方生成的 Cordis API 是方法级权威。
Plugin disposal 会先关闭变更接纳,排空已进入各 Session 队列的工作,然后才关闭 storage domain。
@@ -208,8 +208,8 @@ Plugin disposal 会先关闭变更接纳,排空已进入各 Session 队列的
- Session persistence 没有持久删除接口。服务不把 `session/disposed` 或 `host/session-removed` 当作删除,因此不伪造级联;在带外移除日志后,孤儿伴随记录可能继续存在。
- 请求若恰好落在 live detach 之后、persistence catalog 物化 header 之前的极短窗口,可能收到 `session-not-found`;调用方应在 retirement materialization 后重试。
- 由于 persistence 没有按 id 读取元数据的操作cold 请求会扫描完整的 Session snapshot 目录。单个 Session 行也没有条目数或聚合字节上限;在具体消费方拥有行策略之前,`maxNoteBytes` 只限制每条备注。
- 只有 `{createdAt, cwd}` 不同时header 身份才能识别复用的 id约无法区分保留相同 header 身份的克隆日志。
- Host 约不记录已认证的 actor 或审计身份,因此假设调用方边界可信。
- 只有 `{createdAt, cwd}` 不同时header 身份才能识别复用的 id本约无法区分保留相同 header 身份的克隆日志。
- Host 约不记录已认证的 actor 或审计身份,因此假设调用方边界可信。
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/permission.md
permission.md: 88fd03877d27ba02ef4f449b0500b6395f67977d
permission.zh.md: e7459844487793a51188e27e2b87b64060d83bcc
permission.zh.md: 3c17a068aa6e7aa3c0c8da094137d48ee4d283dc

View File

@@ -2,7 +2,7 @@
[English](permission.md) | 中文
[dsh-permission](../../packages/interaction/permission) 的权限预设层(`ctx.permission``PermissionService`)把两个相互独立的强制执行旋钮(knob,即[沙箱模式](sandbox.md)`sandbox/mode`)与[审批策略](approval.md)`approval/policy`捆绑成具名预设供客户端作为单个权限Permissions选择器提供。它是一项可选能力不属于 agent loop智能体循环主干也不拥有任何强制执行执行、提示词叙述与回放仍然读取各自旋钮的折叠结果,预设切换只记录意图,并通过每个旋钮各自的规范 setter 写入。[packageREADME](../../packages/interaction/permission/README.md) 负责组合状态与限制;[沙箱切换设计](../../.agents/notes/implemented/feature/2026-07-06-sandbox.md)负责决策依据。
[dsh-permission](../../packages/interaction/permission) 的权限预设层(`ctx.permission``PermissionService`)把两个相互独立的强制执行 knob即[沙箱模式](sandbox.md)`sandbox/mode`)与[审批策略](approval.md)`approval/policy`捆绑成具名预设供客户端作为单个权限Permissions选择器提供。它是一项可选能力不属于 agent loop智能体循环主干也不拥有任何强制执行执行、提示词叙述与回放仍然读取各自 knob的折叠结果,预设切换只记录意图,并通过每个 knob各自的规范 setter 写入。[ README](../../packages/interaction/permission/README.md) 负责组合状态与限制;[沙箱切换设计](../../.agents/notes/implemented/feature/2026-07-06-sandbox.md)负责决策依据。
源码:[`packages/interaction/permission/src/index.ts`](../../packages/interaction/permission/src/index.ts)
@@ -45,7 +45,7 @@ interface Config {
## 当前预设与派生的 `custom`
`current(events)` 从旋钮派生实际生效的预设,而不是只看自身事件:它折叠会话的生效沙箱模式(回退到执行器配置的模式)与生效审批策略(先回退到审批服务配置,再回退到 `ask`),优先取仍然匹配的已记录选择,其次取声明顺序中第一个匹配的表项,否则返回 `CUSTOM_PRESET``'custom'`)。`custom` 只是派生值:客户端可以把它显示为当前值,但它绝不是切换目标,也绝不出现在事件 payload 中。
`current(events)` 从 knob 派生实际生效的预设,而不是只看自身事件:它折叠会话的生效沙箱模式(回退到执行器配置的模式)与生效审批策略(先回退到审批服务配置,再回退到 `ask`),优先取仍然匹配的已记录选择,其次取声明顺序中第一个匹配的表项,否则返回 `CUSTOM_PRESET``'custom'`)。`custom` 只是派生值:客户端可以把它显示为当前值,但它绝不是切换目标,也绝不出现在事件 payload 中。
`names` 按预设表声明顺序列出可切换的预设;`optionOf(name)` 为某个表键label 回退为该键)或 `custom` 构建客户端渲染的选项,传入其他任何名称都会抛出异常。
@@ -63,9 +63,9 @@ interface PresetOption {
## 切换与 `permission/preset` 事件
`set(session, name)` 解析预设(未知名称抛出异常),在 `name` 尚不是生效预设时追加一条仅记日志的 `permission/preset` 事件,然后通过各旋钮自己的 setter[dsh-sandbox-policy](../../packages/sandbox/sandbox-policy) 的 `setSandboxMode` 与 [dsh-user-approval](../../packages/interaction/user-approval) 的 `setApprovalPolicy`)写入,且仅当该旋钮的生效值发生变化时才写。同一轮次内,选择事件先于旋钮事件出现;重新选择当前生效的预设则什么都不追加。
`set(session, name)` 解析预设(未知名称抛出异常),在 `name` 尚不是生效预设时追加一条仅记日志的 `permission/preset` 事件,然后通过各旋钮自己的 setter[dsh-sandbox-policy](../../packages/sandbox/sandbox-policy) 的 `setSandboxMode` 与 [dsh-user-approval](../../packages/interaction/user-approval) 的 `setApprovalPolicy`)写入,且仅当该 knob的生效值发生变化时才写。同一轮次内,选择事件先于旋钮事件出现;重新选择当前生效的预设则什么都不追加。
`permission/preset` 是持久、仅记日志的用户意图:它不进入模型 transcript文本记录模型可见的后果由旋钮事件经各自消费方承担;它存在是为了在两个预设共享同一个旋钮组合时,让 `current()` 仍能保住用户选择的究竟是哪一个预设;`effectivePermissionPreset(events)` 折叠最后一条,回放不需要任何追赶状态。完整事件声明见[持久化日志事件目录](../persistence-catalog.md);方法签名见生成的[服务目录](#ctxpermission--permissionservice)。
`permission/preset` 是持久、仅记日志的用户意图:它不进入模型 transcript文本记录模型可见的后果由 knob 事件经各自消费方承担;它存在是为了在两个预设共享同一个旋钮组合时,让 `current()` 仍能保住用户选择的究竟是哪一个预设;`effectivePermissionPreset(events)` 折叠最后一条,回放不需要任何追赶状态。完整事件声明见[持久化日志事件目录](../persistence-catalog.md);方法签名见生成的[服务目录](#ctxpermission--permissionservice)。
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/pty.md
pty.md: dcbde73f62de030cbfcc17ae9336a76ff4995ec5
pty.zh.md: 1c96170f8256a0a6fe40d3909519a120321f4142
pty.zh.md: 73687d0621f6fee8e9ce995d940bfc69d38bbe22

View File

@@ -6,7 +6,7 @@ PTY 后端、`ctx.pty` 与面向模型的消费方共享的类型。[持久 PTY
## 标识与就绪
`PtySessionId` 是由服务铸造的品牌化 id。可选名称是拥有者本地的显示元数据授权比较的是拥有该会话的确切 `Agent`,而不是名称或猜测的 id。
`PtySessionId` 是由服务铸造的branded id。可选名称是拥有者本地的显示元数据授权比较的是拥有该会话的确切 `Agent`,而不是名称或猜测的 id。
`PtyWaitReason` 说明一次发送为何返回。它与 `PtySessionStatus` 无关:一次发送可能因静默或超时而返回,但顶层 shell 仍然存活;`session_exit` 表示该 shell 已退出,而不是某个任意的前台子进程已退出。

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/scope.md
scope.md: c425217de224839d719da213e33f58bd2e6bf002
scope.zh.md: 06e2528eca958102110caa3a7d370e0778c0f7b2
scope.zh.md: 546226a23f8218d2f1b50ce970c6cc11d9626e27

View File

@@ -28,7 +28,7 @@ type Scoped<T extends object> = object & { readonly [ScopedBrand]: T }
## 拥有所有权的注册上下文
`Scope` 将带标签的注册上下文与两个拆卸接口配对。`rawDispose` 保留有序复合 effect 所需的 Cordis disposer 本身`dispose()` 是面向直接调用方和竞态调用方的公共完全停稳边界。
`Scope` 将带标签的注册上下文与两个拆卸接口配对。`rawDispose` 保留有序复合 effect 所需的 Cordis disposer 的确切身份`dispose()` 是面向直接调用方和竞态调用方的公共完全停稳边界。
```ts type-equiv
/** A minted registration scope and its quiescent disposal boundaries. */

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/storage.md
storage.md: 33933f70176e1f4960eb423f9a1067f50b6762e4
storage.zh.md: 0205468445166bddd646d05088ecbb935f656eb9
storage.zh.md: a1925306f322bcead7b1e303d45f194eaec1cfd2

View File

@@ -2,7 +2,7 @@
[English](storage.md) | 中文
存储子系统持久保存一切不属于会话事件日志的数据(会话日志有自己的 seam——见 [persistence.md](persistence.md))。它是一项可选能力,不属于 agent loop智能体循环主干并按[能力 seam](../../.agents/notes/implemented/architecture/2026-06-13-capability-seams.md)拆分枢纽hub与 Service Definition[dsh-storage](../../packages/storage/storage)`ctx.storage`、Service provider注册为 `json` 的 [dsh-storage-json](../../packages/storage/storage-json) 与注册为 `sqlite` 的 [dsh-storage-sqlite](../../packages/storage/storage-sqlite)),以及 Consumer 数据形式([dsh-storage-domain](../../packages/storage/storage-domain)`ctx.storageDomain`,也可经 `ctx.storage.domain` 访问)——它是后端约定的唯一 Consumer也是其他一切所使用的类型化 API。枢纽自身不做任何 IO后端拥有介质数据形式拥有语义产品包package绝不直接触碰后端。设计记录:[领域 KV 存储 Agent Noteagent 决策记录)](../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.md)。
存储子系统持久保存一切不属于会话事件日志的数据(会话日志有自己的 seam——见 [persistence.md](persistence.md))。它是一项可选能力,不属于 agent loop智能体循环主干并按[能力 seam](../../.agents/notes/implemented/architecture/2026-06-13-capability-seams.md)拆分枢纽hub与 Service Definition[dsh-storage](../../packages/storage/storage)`ctx.storage`、Service provider注册为 `json` 的 [dsh-storage-json](../../packages/storage/storage-json) 与注册为 `sqlite` 的 [dsh-storage-sqlite](../../packages/storage/storage-sqlite)),以及 Consumer 数据形式([dsh-storage-domain](../../packages/storage/storage-domain)`ctx.storageDomain`,也可经 `ctx.storage.domain` 访问)——它是后端约定的唯一 Consumer也是其他一切所使用的类型化 API。枢纽自身不做任何 IO后端拥有介质数据形式拥有语义产品包绝不直接触碰后端。设计记录[领域 KV 存储 Agent Note](../../.agents/notes/proposed/architecture/2026-07-24-domain-kv-storage-and-workspace.md)。
源码:[`packages/storage/storage/src/backend.ts`](../../packages/storage/storage/src/backend.ts) · [`packages/storage/storage-domain/src/spec.ts`](../../packages/storage/storage-domain/src/spec.ts) · [`packages/storage/storage-domain/src/events.ts`](../../packages/storage/storage-domain/src/events.ts)

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/telemetry.md
telemetry.md: 30d0497fd69a2f7b0f0fa77a040c11e0ee338d53
telemetry.zh.md: f0adccf873463f1e88d87dfed51a14e2a1e9700c
telemetry.zh.md: de4415c1a2fc9d36e6abf4bb3207ba1e95f990ea

View File

@@ -2,7 +2,7 @@
[English](telemetry.md) | 中文
对外的会话上报拆分为一项[能力 seam](../capability-seams.md)Service Definition 与捕获协调器([dsh-session-telemetry](../../packages/session/session-telemetry)`ctx.telemetry`)拥有捕获点、固定分片投影、`telemetry/record` 脱敏 waterfall瀑布式事件、handoff 游标与最小后端约定;部署方加载的 Service provider[dsh-session-telemetry-otel](../../packages/session/session-telemetry-otel))则是原样配置的 OpenTelemetry JS SDK 日志流水线。它是一项可选能力,不属于 agent loop智能体循环主干这里也没有任何内容会进入模型请求。边界公理harness 的职责止于 `emit()`;批处理、重试、排队与丢失策略都属于上报 SDK连同被否决的替代方案均已在[复活 Agent Noteagent 决策记录)](../../.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.md)中定案;捕获点、游标与投影的约定见 [Service Definition README](../../packages/session/session-telemetry/README.md)。
对外的会话上报拆分为一项[能力 seam](../capability-seams.md)Service Definition 与捕获协调器([dsh-session-telemetry](../../packages/session/session-telemetry)`ctx.telemetry`)拥有捕获点、固定分片投影、`telemetry/record` 脱敏 waterfall瀑布式事件、handoff 游标与最小后端约定;部署方加载的 Service provider[dsh-session-telemetry-otel](../../packages/session/session-telemetry-otel))则是原样配置的 OpenTelemetry JS SDK 日志流水线。它是一项可选能力,不属于 agent loop智能体循环主干这里也没有任何内容会进入模型请求。边界公理harness 的职责止于 `emit()`;批处理、重试、排队与丢失策略都属于上报 SDK连同被否决的替代方案均已在[复活 Agent Note](../../.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.md)中定案;捕获点、游标与投影的约定见 [Service Definition README](../../packages/session/session-telemetry/README.md)。
源码:[`packages/session/session-telemetry/src/index.ts`](../../packages/session/session-telemetry/src/index.ts)

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write docs/subsystems/token-meter.md
token-meter.md: d0066485e58b1e9ff60543111f186c0a2a69348d
token-meter.zh.md: d92bc797d28d6dafd3cd5d2ca00577684b248ce5
token-meter.zh.md: 8fd9ab2e6ffee8865c0a89a11576b85f72cb9f42

View File

@@ -26,7 +26,7 @@ interface TokenMeasurement {
}
```
`baseline.kind === 'usage'` 表示最近一次成功的提供方调用具有相同的规范请求信封,且该调用的总量不低于其完整启发式锚点。`estimated` 表示不存在可复用的保守 usage 锚点,因此服务使用固定启发式规则对完整信封和表层定价。后续成功请求会替换早先的锚点;有符号的 `surfaceDeltaTokens` 会保留相对于匹配锚点的增长与缩减。`totalTokens` 仍表示请求与响应压力,`surfaceTokens` 则是仅针对表层的启发式总量,等于所有节点价格之和。
`baseline.kind === 'usage'` 表示最近一次成功的提供方调用具有相同的规范请求 envelope,且该调用的总量不低于其完整启发式锚点。`estimated` 表示不存在可复用的保守 usage 锚点,因此服务使用固定启发式规则对完整信封和表层定价。后续成功请求会替换早先的锚点;有符号的 `surfaceDeltaTokens` 会保留相对于匹配锚点的增长与缩减。`totalTokens` 仍表示请求与响应压力,`surfaceTokens` 则是仅针对表层的启发式总量,等于所有节点价格之和。
## `TokenSurfaceNode`