docs(i18n): standardize contract terminology

This commit is contained in:
xjt
2026-08-09 11:33:14 +08:00
parent 5d46c11784
commit a7af54a8d3
848 changed files with 1506 additions and 1506 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 .agents/notes/rejected/feature/2026-07-26-evaluate-landstrip-for-windows-sandbox-rung.md
2026-07-26-evaluate-landstrip-for-windows-sandbox-rung.md: 236139f9198f178d44cdf0867cbad2377a127359
2026-07-26-evaluate-landstrip-for-windows-sandbox-rung.zh.md: e636bba5b7d69774b2eb5eccea1f3272211dedf2
2026-07-26-evaluate-landstrip-for-windows-sandbox-rung.zh.md: 650217e936aa65884e8fb4fed0358406c78e9931

View File

@@ -14,7 +14,7 @@ Status: rejected — landstrip 未经实战检验(驳回时问世仅数天,
当 Windows 沙箱阶段启动时,在动手编写自研 AppContainer 启动器仓库之前,先评估将 landstrip 的 Windows 后端包装为 `win32` 链运行器。评估必须回答:
- **探测合成。** landstrip 没有 `--probe`;链所要求的功能探测约必须从一次 trap 运行中合成出来。
- **探测合成。** landstrip 没有 `--probe`;链所要求的功能探测约必须从一次 trap 运行中合成出来。
- **方言映射。** 拒绝与运行器失败两类 stderr 方言,以及失败关闭的退出码分类,都需要显式映射到链的词汇中。
- **许可证。** 其二进制文件采用 LGPL-2.1-or-later 许可;在进入随产品发布的依赖闭包之前需要先做分发审查。
- **溯源。** 自研启动器的价值在于一个约 300 行、可完整评审,并由原生 CI 逐字节锁定来源的 C 文件;而 landstrip 是单一维护者手中的一组 Rust 二进制文件。对*既有的 Linux 层级*而言,这笔权衡早有定论——不要替换它(见[沙箱 Agent Note](../../implemented/feature/2026-07-06-sandbox.md)以及该启动器自身移除 Rust 依赖的迁移记录)。而对一个我们尚未构建的层级,在第三方维护与第二个自研原生仓库之间如何取舍,是一个真正悬而未决的问题。

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-06-20-assembled-assistant-messages-only.md
2026-06-20-assembled-assistant-messages-only.md: edc756f71271065ec579a2becb8597190b34cdc8
2026-06-20-assembled-assistant-messages-only.zh.md: e5f4f8a63a35f5f40c482a4a4855937cc8e6d544
2026-06-20-assembled-assistant-messages-only.zh.md: 6f0611a57550c53a9881e551f24098869c807c3e

View File

@@ -27,7 +27,7 @@ ACP `session/load` 可以将先前的 assistant 消息作为完整内容块回
## 放弃了什么
规范的用户会话不再能重建旧轮次的精确 token 流。它也会丢失失败或中止流的部分 assistant 输出,除非另有事件或 fixture 记录。对于当前的恢复、加载和快照约而言,这是过大的信息损失。需要精确确定性流的测试应当直接拥有该 fixture前提是生产会话日志为用户可见的恢复保留了足够的保真度。
规范的用户会话不再能重建旧轮次的精确 token 流。它也会丢失失败或中止流的部分 assistant 输出,除非另有事件或 fixture 记录。对于当前的恢复、加载和快照约而言,这是过大的信息损失。需要精确确定性流的测试应当直接拥有该 fixture前提是生产会话日志为用户可见的恢复保留了足够的保真度。
## 相关

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-06-20-drop-durable-step-boundaries.md
2026-06-20-drop-durable-step-boundaries.md: c5c4f269a378e334c4dc509d1288146d77d9a520
2026-06-20-drop-durable-step-boundaries.zh.md: 66e6d02225eb51bd395e84114d54a0dac8389fe0
2026-06-20-drop-durable-step-boundaries.zh.md: 32d8255638b9d8b16b24e861eb092bbc906892f8

View File

@@ -20,7 +20,7 @@ Status: rejected — `step/end` 是模型步骤已完成的持久信号;保留
- `SessionEventMap` 不再包含 `step/start``step/end`
- agent loop 中不再有 `closeStep()` 终结路径。
- ACP 快照和持久化约 fixture测试前置数据不再期望步骤边界行。
- ACP 快照和持久化约 fixture测试前置数据不再期望步骤边界行。
- `deriveMessages()` 和回放从步骤级事件推导出相同的消息历史。
- [事件分类体系文档](../../../../docs/architecture.md)将轮次描述为持久化边界,将步骤描述为步骤级记录上的一个字段。
- 会话格式版本和已记录的 fixture 被刷新;按预发布格式策略,非当前版本的已存储日志被拒绝。

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-06-20-fold-session-persistence-interface.md
2026-06-20-fold-session-persistence-interface.md: c0da160e766cf0bed532f0d11bd52e3a027dbe8b
2026-06-20-fold-session-persistence-interface.zh.md: 93ab244429600bd15e2d8dadfa7dc218e37c2eff
2026-06-20-fold-session-persistence-interface.zh.md: 8abdf77d2717cfed7209df72182187f75e32e241

View File

@@ -6,20 +6,20 @@ Status: rejected — 独立的持久化接口包是为持久化后端设计的
## 问题
`dsh-session-persistence` 是一个接口包,其核心概念已经由 `dsh-session` 拥有:`SessionHeader``SessionEvent``SessionId``session/event``session/flush`。该包额外添加了抽象的 `SessionPersistence` 服务、共享写入协调器和约辅助工具。后端包依赖它,为实现恢复,`agent-loop`(智能体循环)还需要按需查找这个同级服务。
`dsh-session-persistence` 是一个接口包,其核心概念已经由 `dsh-session` 拥有:`SessionHeader``SessionEvent``SessionId``session/event``session/flush`。该包额外添加了抽象的 `SessionPersistence` 服务、共享写入协调器和约辅助工具。后端包依赖它,为实现恢复,`agent-loop`(智能体循环)还需要按需查找这个同级服务。
当持久化还是一个全新的可替换后端设计时,能力 seam 的拆分是合理的。但在可变摘要被移除之后,这个接口包基本上只是包装了会话日志自身的存储职责。继续保持独立可能带来的仪式感多于清晰度。
## 提案
将抽象的 `SessionPersistence` 服务、协调器和持久化约辅助工具移入 `dsh-session`。JSONL 和 SQLite 仍作为独立的后端包,注册由会话包拥有的服务。这样既保留了后端可替换性,又删除了一个支撑包和一条跨包 seam。
将抽象的 `SessionPersistence` 服务、协调器和持久化约辅助工具移入 `dsh-session`。JSONL 和 SQLite 仍作为独立的后端包,注册由会话包拥有的服务。这样既保留了后端可替换性,又删除了一个支撑包和一条跨包 seam。
实施 PRPull Request应更新[能力 seam](../../implemented/architecture/2026-06-13-capability-seams.md) 指南,补充此例外:持久化不同于 bash 或 LLM大语言模型因为它的词汇和生命周期事件本就属于会话包的核心领域。
## 验收标准
- `@deepseek-ai/dsh-session-persistence` 作为包被移除。
- `dsh-session` 导出持久化服务类型、协调器和约辅助工具。
- `dsh-session` 导出持久化服务类型、协调器和约辅助工具。
- JSONL 和 SQLite 后端包直接依赖 `dsh-session`
- `agent-loop` 的恢复功能使用会话包拥有的服务键。
- [会话持久化](../../implemented/architecture/2026-06-14-session-persistence.md)、[共享持久化写入协调器](../../implemented/architecture/2026-06-18-shared-persistence-write-coordinator.md)与[包文档](../../../../packages/session/session-persistence/README.md)说明后端实现为何仍保持独立。

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-06-20-truncate-interrupted-turns.md
2026-06-20-truncate-interrupted-turns.md: c4b0084de537927a27829eb78990c6559bd1df7d
2026-06-20-truncate-interrupted-turns.zh.md: 2d3eca74416eff360029e3ac77f04662878a0084
2026-06-20-truncate-interrupted-turns.zh.md: 16277f45a238c4e6cb0b36a6c8651f68cf0494a1

View File

@@ -6,7 +6,7 @@ Status: rejected — 单个轮次可以包含大量真实工作,包括多个
## 问题
当前的持久化约会保留已持久写入但从未关闭的最终轮次。加载时,`interruptedTurnClosers()` 扫描尾部,为未应答的工具调用合成 error `tool/result` 事件,在步骤处于打开状态时追加 `step/end`,追加 `turn/end { kind: 'interrupted' }`并要求后端持久提交这次修复。协调器、JSONL 后端、SQLite 后端、会话事件词汇、不变式、文档和测试都对这条合成关闭路径进行了建模。
当前的持久化约会保留已持久写入但从未关闭的最终轮次。加载时,`interruptedTurnClosers()` 扫描尾部,为未应答的工具调用合成 error `tool/result` 事件,在步骤处于打开状态时追加 `step/end`,追加 `turn/end { kind: 'interrupted' }`并要求后端持久提交这次修复。协调器、JSONL 后端、SQLite 后端、会话事件词汇、不变式、文档和测试都对这条合成关闭路径进行了建模。
这是一套庞大的机制,只为保留上次崩溃轮次中的部分工作。它还会凭空创造从未发生过的事件。合成的工具结果虽然有用(因为它使提供方历史保持合法),但也意味着恢复后的日志中包含了模型可见、却并非任何工具产出的文本。当前设计在尚无已发布产品、也没有真实恢复 UX 来证明部分轮次恢复确有价值的情况下,就以最大限度保留尾部为优化目标。
@@ -22,7 +22,7 @@ Status: rejected — 单个轮次可以包含大量真实工作,包括多个
- `interruptedTurnClosers()` 及其测试删除。
- 持久化协调器的修复钩子截断后端特有的撕裂或未关闭的尾部状态,不追加关闭事件。
- [会话持久化文档](../../../../packages/session/session-persistence/README.md)说明加载返回最后一个已完成的轮次,不包含部分最终轮次。
- 快照与约测试随其所固定的行为一同更新。
- 快照与约测试随其所固定的行为一同更新。
- 会话格式版本与记录的 fixture测试前置数据刷新按预发布格式策略非当前版本的存储日志被拒绝不提供迁移路径。
## 放弃的内容

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-07-12-collapse-workflow-to-foreground-core.md
2026-07-12-collapse-workflow-to-foreground-core.md: 629e2140523c3ae7caf533de99821206d05f1b8e
2026-07-12-collapse-workflow-to-foreground-core.zh.md: 1af80e7ca28eb0e5acf3f642244260034c57d0ab
2026-07-12-collapse-workflow-to-foreground-core.zh.md: 9683d5a15bc7d201eaff905c440bbdf88bbc9388

View File

@@ -20,7 +20,7 @@ Status: rejected — 工作流进度是有意设计的观测接口面;应通
保留已使用的核心:`agent(prompt, { schema, model })``parallel``pipeline``args`、并发/agent 上限、取消、有界 dispose资源释放、结构化结果、worker 隔离与前台工具收集。移除所有 `workflow/*` 事件及其仅供事件使用的 info/outcome 类型;移除 `phase()``log()`、agent 的 `label`/`phase`、phase 声明、`whenToUse` 及其 worker 消息/host 观测者;将工作流元数据收缩为工具实际使用的 name移除仅供事件使用的 run id/meta 快照与合成的 agent-end 账本。将 `WorkflowRun` 收缩为 `result``cancel()``dispose()`;工具渲染请求方持有的 name。移除 `WorkflowStartRequest.signal` 及 worker host 的 input-signal listener/disarm 状态,保留调用方从其 abort signal 到 `run.cancel()` 的桥接。将 `WorkflowError` 变为单一的 fatal 错误类,不再有布尔模式或 `isFatalWorkflowError()` 辅助函数。
修订已实施的动态工作流 Agent Note并更新 seam/工具/worker README、工具 schema、生成的 catalog 与包依赖图、worker type-equiv 记录、单元测试以及工作流快照/header fixture测试前置数据。如果进度 UI 工作被立项,应从一份命名了父 agent/会话/工具调用的关联约出发,而非原样复活这套协议。
修订已实施的动态工作流 Agent Note并更新 seam/工具/worker README、工具 schema、生成的 catalog 与包依赖图、worker type-equiv 记录、单元测试以及工作流快照/header fixture测试前置数据。如果进度 UI 工作被立项,应从一份命名了父 agent/会话/工具调用的关联约出发,而非原样复活这套协议。
## 曾考虑的替代方案
@@ -28,7 +28,7 @@ Status: rejected — 工作流进度是有意设计的观测接口面;应通
## 验收标准
- 工作流公开 seam 仅包含有生产消费方的执行、取消、结果与 dispose 约。
- 工作流公开 seam 仅包含有生产消费方的执行、取消、结果与 dispose 约
- 不再保留任何工作流事件、phase/log 协议消息、run-id 生成器、仅供进度使用的元数据、host 配对账本或 fatal 模式分支。
- run handle 不再有 id/meta 回显,取消在同步 `start()` 返回后只有一条持有者拥有的通道。
- parallel/pipeline 行为、上限、取消后的完全停稳、worker 隔离、结构化输出与面向模型的工作流场景保持测试覆盖。

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-07-12-prune-unused-skill-registry-surface.md
2026-07-12-prune-unused-skill-registry-surface.md: 5a13effa04a6cd9954741a0a33ebc6fc3512fab8
2026-07-12-prune-unused-skill-registry-surface.zh.md: f6010cba4efd3c80cab867dfdf2470ccf1495d6a
2026-07-12-prune-unused-skill-registry-surface.zh.md: f0cca25cb642eba851b63ce784d8fb9343d1f692

View File

@@ -10,9 +10,9 @@ skill技能服务的嵌入式运行时子系统中`ctx.skills.register(
## 提案
移除 `SkillService.register()``SkillRegistration`、运行时伪提供方及保留名称规则、运行时 revision/缓存分支,以及仅用于运行时的 source/rank 规范化逻辑。需要嵌入式 skill 的测试改为注册一个小型真实提供方。保留 `providerRevision` 作为进行中发现操作的 epoch但已完成的目录缓存仅以 cwd 为键每次提供方变更同步清除缓存await 之后的 revision 比较已能阻止插入陈旧结果。从 skill 约和本地提供方副本中移除 `whenToUse``SkillCandidate.path``SkillDefinition.path`,同时保留提供方的 locator/root 路径;保留 `metadata``disableModelInvocation``source``provider``locator``resourceBase`,因为它们要么是有意开放的扩展词汇,要么是生产消费的字段。
移除 `SkillService.register()``SkillRegistration`、运行时伪提供方及保留名称规则、运行时 revision/缓存分支,以及仅用于运行时的 source/rank 规范化逻辑。需要嵌入式 skill 的测试改为注册一个小型真实提供方。保留 `providerRevision` 作为进行中发现操作的 epoch但已完成的目录缓存仅以 cwd 为键每次提供方变更同步清除缓存await 之后的 revision 比较已能阻止插入陈旧结果。从 skill 约和本地提供方副本中移除 `whenToUse``SkillCandidate.path``SkillDefinition.path`,同时保留提供方的 locator/root 路径;保留 `metadata``disableModelInvocation``source``provider``locator``resourceBase`,因为它们要么是有意开放的扩展词汇,要么是生产消费的字段。
同步修订 skill 系统 Agent Note、README、JSDoc、目录文件与测试。agent智能体作用域的系统提示词段、工具提供方和变量明确不在本提案范围内[agent 作用域贡献者](../../implemented/architecture/2026-07-08-agent-scope-contexts.md)有意允许在 `setup(agentCtx)` 期间通过 agent 拥有的上下文注册这三者,因此仓库内没有固定的作用域注册并不能证明它们未被使用。
同步修订 skill 系统 Agent Note、README、JSDoc、目录文件与测试。agent智能体作用域的系统提示词段、工具提供方和变量明确不在本提案范围内[agent 作用域贡献者约](../../implemented/architecture/2026-07-08-agent-scope-contexts.md)有意允许在 `setup(agentCtx)` 期间通过 agent 拥有的上下文注册这三者,因此仓库内没有固定的作用域注册并不能证明它们未被使用。
## 曾考虑的替代方案
@@ -20,7 +20,7 @@ skill技能服务的嵌入式运行时子系统中`ctx.skills.register(
## 验收标准
- skill 收集只有一条提供方驱动的路径,已完成缓存仅以 cwd 为键revision epoch 仅用于使进行中的发现操作失效;保留的 skill 字段要么有生产读取方,要么有记录在案的有意扩展约。
- skill 收集只有一条提供方驱动的路径,已完成缓存仅以 cwd 为键revision epoch 仅用于使进行中的发现操作失效;保留的 skill 字段要么有生产读取方,要么有记录在案的有意扩展约
- agent 作用域的提示词段、变量、工具提供方、工具守卫,以及原生模式和 Code Mode 下的 structured-output 提交行为保持不变。
- 类型检查、覆盖率、快照、doc-sync文档同步门禁、module-graph 校验、构建与 hygiene 全部通过。

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write .agents/notes/rejected/simplification/2026-07-26-dependency-swaps-rejected-by-nih-audit.md
2026-07-26-dependency-swaps-rejected-by-nih-audit.md: 538f6a41b4d2db72f867e98810e8e9382cbdac98
2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md: b3f7a1d9717397ee9ed50890bc024fba7d79fa9a
2026-07-26-dependency-swaps-rejected-by-nih-audit.zh.md: cc56dd44938cfe6d4c4b0aff1c714d80b8d8f5b6

View File

@@ -35,7 +35,7 @@ Status: rejected — 下列每一项替换在证据上都未达到净简化门
- **以 `fast-deep-equal` 替换会话接口面的 `isDeepEqualJson`**、**以 `safe-stable-stringify` 承担 repeat-tool-guard 的规范化**:两项替换在机械层面都可行,但每一项都是拿约 1720 行带注释、有测试的代码,去换一个核心包的第一个外部运行时依赖——在这个体量上是净亏损。
- **以 zod/valibot 承担持久事件的严格解码器**goal fold、tool-ralph、session它们是位于持久化边界、键集精确匹配、失败即大声报错、带事件专属报错信息的解码器在仓库标准 schemastery 之外再放一个 schema 库是政策变更,不是删除。
- **以 `gpt-tokenizer`/tiktoken 替换 token-meter**[回放 token 计量决策](../../implemented/architecture/2026-07-15-replay-token-meter-service.md)已明确否决分词器后端GPT 的 BPE 对 DeepSeek 模型来说也是错误的分词器,而且这个包约 350 行是回放折叠簿记,任何分词器都覆盖不了。
- **以 `partial-json` 处理流式工具调用参数**:无可替换——按已记录的约,参数端到端保持为原始 JSON 字符串;`JSON.parse` 只在完整载荷上运行。
- **以 `partial-json` 处理流式工具调用参数**:无可替换——按已记录的约,参数端到端保持为原始 JSON 字符串;`JSON.parse` 只在完整载荷上运行。
**文件系统、子进程与终端:**
@@ -46,14 +46,14 @@ Status: rejected — 下列每一项替换在证据上都未达到净简化门
- **以 `shell-quote` 承担 POSIX 单引号包裹**:两个各 1 行、测试详尽的引号辅助函数,对上一个处于维护模式、有 CVE 历史、转义输出还不一样的包——安全边界不是省一行代码的地方。
- **以 `strip-ansi` 承担 pty 净化**pty 净化器是一台流式状态机,带跨分片的断裂序列续接和 OSC `133;D` 提示符标记提取shell 就绪信号);无状态的剥离器只能替掉约 20 行内层代码,全部状态机构件原样保留。`stripVTControlCharacters` 还被实证会泄漏未终止的 OSC 载荷,会话标题归一化器必须剥除它们(反欺骗)。
- **以 `pidtree`/`ps-tree` 承担 pty 进程巡检器**:它们只给裸 PID 树;这段代码需要对抗 PID 复用的启动时间身份校验,加上 `/proc` stdin 等待检测,没有包做这些。
- **以 `execa` 承担 subagent-subprocess 的 dispose资源释放阶梯**`forceKillAfterDelay` 覆盖 SIGTERM→SIGKILL但覆盖不了先发 stdin EOF 的协作层级,也覆盖不了「无退出沿即 reject」约;在这里采用它意味着重写各 spawn 调用点、同时阶梯照旧保留。(测试基础设施的 spawn 管线是另一回事——见[已归档的 execa 测试基础设施决策](../../archived/testing/2026-07-26-execa-for-test-subprocess-plumbing.md)。)
- **以 `execa` 承担 subagent-subprocess 的 dispose资源释放阶梯**`forceKillAfterDelay` 覆盖 SIGTERM→SIGKILL但覆盖不了先发 stdin EOF 的协作层级,也覆盖不了「无退出沿即 reject」约;在这里采用它意味着重写各 spawn 调用点、同时阶梯照旧保留。(测试基础设施的 spawn 管线是另一回事——见[已归档的 execa 测试基础设施决策](../../archived/testing/2026-07-26-execa-for-test-subprocess-plumbing.md)。)
- **以 `tree-kill` 承担 acp-snapshot 拆除与 lsp 进程终止**那些代码行做的是排空顺序与错误传播不是进程树遍历lsp/bash 已经使用分离的进程组加 taskkill。
- **在 TUI 测试驱动器上到处使用 node-pty**:已归档的 [Windows TUI 决策](../../archived/feature/2026-07-20-windows-tui-support.md)明确否决了在每个宿主上都使用 node-pty它当时已经是 Windows 那一条腿。
**服务器与 HTTP**
- **以 `msw` 替换 llm-mock-server**这个服务器的存在意义就是在线路上制造故障——socket 销毁、SSEServer-Sent Events中途断连、停滞、监听前拒绝——服务对象是真实的 HTTP 适配器和子进程;进程内拦截一样都表达不了。设计归[线路故障服务器决策](../../implemented/testing/2026-07-25-scriptable-llm-wire-fault-server.md)所有。
- **以 `hono`/`sirv` 承担 host/webserver**:核心是基于 disposer 的动态路由注册表(「注册即效果」约、HMR 反注册)加 index HTML 变换挂点hono 的路由器只增不减,静态中间件也无法伺服变换后的 index。总共约 244 行,确实很小。
- **以 `hono`/`sirv` 承担 host/webserver**:核心是基于 disposer 的动态路由注册表(「注册即效果」约、HMR 反注册)加 index HTML 变换挂点hono 的路由器只增不减,静态中间件也无法伺服变换后的 index。总共约 244 行,确实很小。
- **以 `@mozilla/readability`/`iconv-lite` 承担 web-fetch-local**:该提供方返回原始 HTML字符集处理已经是内置的 `TextDecoder`MIME 解析约 11 行;重定向跟随是同源安全策略。
**SQLite 与存储:**