实用笔记:撤销操作很简单。而重做功能则是不同编程工具之间的差异所在。
实用笔记的操作指南:撤销操作很简单。而重做功能则是不同编程工具之间的差异所在——包括适用于采用该模式的团队的合同、检查项以及代码插入槽位。
以下笔记围绕“撤销操作很简单,而重做功能则是不同编程工具的差异所在”这一主题,提出了一条实用路径。重点在于契约、校验机制以及可插入的代码占位符,而非激励性表述。 在完成概览阶段时,首先写下契约内容:所需输入、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持透明。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于一个位置,以便操作人员无需查看整个系统结构即可进行审计。
版本锚点
将“版本锚点阶段”视为可度量的对象来处理时,其效果最佳。在扩大范围之前,需记录一份理想状态下的日志、一个故障案例以及回滚说明。 同时记录正常流程与恢复流程。重试机制、人工审核环节以及错误处理都是产品本身的组成部分,而非后续需要补充的内容。 保持图结构的状态扁平且具有类型约束。嵌套的数据块会掩盖具体是哪个节点修改了哪个字段,还会导致在中断后无法继续执行。
简而言之
将“简而言之阶段”视为可度量的对象来处理时,其效果最佳。在扩大范围之前,需记录一份理想状态下的日志、一个故障案例以及回滚说明。 应优先选择小型且可测试的单元,而非庞大的脚本。当某个步骤出现故障时,故障应指向单一的责任主体,而非复杂的流程链。 保持图结构的状态扁平且具有类型约束。嵌套的数据块会掩盖具体是哪个节点修改了哪个字段,还会导致在中断后无法继续执行。
1. Claude Code——仅暴露一半导航结构的有向无环图
Claude Code的每个阶段若被视为可度量的界面,效果最佳。在扩大范围之前,需记录一份最优处理方案、一个失败案例以及回滚说明。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,杜绝默许的半完成状态。 保持图结构简洁且类型明确。嵌套的数据块会掩盖哪个节点修改了哪个字段,还会在中断后导致无法继续处理。
存储在磁盘上[文档+度量数据]
将磁盘上的文档视为可测量的表面时,用于衡量阶段进展的效果最佳。在扩大范围之前,先记录一份理想的测试用例、一个故障案例以及回滚说明。 在功能结果旁同时记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。 保持图表状态简洁且具有类型定义。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,且在中断后会导致无法继续处理。
~/.claude/projects/<encoded-cwd>/<session-id>.jsonl
~/.claude/projects/-home-claude/
├── e2252c61-0ac1-5c73-b84f-b452a0553da2.jsonl main transcript
├── e2252c61-….ccr-tip.json {"eventId":…,"updatedAt":…}
└── e2252c61-…/
├── subagents/agent-<id>.jsonl + agent-<id>.meta.json subagent transcripts
└── tool-results/toolu_<id>.txt large tool results, externalized
真正重要的结构 [可测量的 + 推断出的]
将“重要结构阶段”视为可测量的对象来处理时,其效果最佳。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。 将配置置于应用程序代码之外。环境文件、密钥存储和功能标志应集中存放于一个位置,这样操作人员无需查看整个结构就能进行审计。 保持结构状态的扁平化与类型化。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,且在中断后会导致恢复失败。
{"type":"last-prompt",
"lastPrompt":"…",
"leafUuid":"219c7d72-e88f-4111-a3fe-b431cabcbdaf",
"sessionId":"e2252c61-…"}
/branch [文档]
将分支文档阶段视为可度量的对象使用效果最佳。在扩大范围之前,先记录一份理想的操作流程、一个失败案例以及回滚说明。同时记录正常流程和恢复流程。重试机制、人工审核环节以及死信处理都是产品本身的一部分,而非后续需要补充的内容。保持图结构的状态简洁且具有类型定义。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,还会在中断后导致流程无法继续。
检查点 [文档 + 度量数据]
在将阶段工作视为可度量的对象时,Checkpoints文档的衡量方式最为有效。在扩大范围之前,先记录一份理想的测试用例、一个故障案例以及回滚说明。 相较于庞大的脚本,应优先使用小型且可测试的单元。当某个步骤出现故障时,故障应指向单一的责任模块,而非复杂的流程链。 保持图结构的状态简洁且具有类型定义。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,还会在流程中断后导致无法继续执行。
2. Codex CLI — Esc:Esc已不再用于回滚
将2个Codex CLI Esc阶段视为可度量的界面使用效果最佳。在扩大范围之前,先记录一份成功的示例、一个失败案例以及回滚说明。 把这一阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,绝不允许出现无声的半完成状态。 保持图结构的状态简洁且类型明确。嵌套的数据块会掩盖哪个节点修改了哪个字段,还会在中断后导致无法继续处理。
修正措施
若将校正阶段视为可测量的界面,其效果会最佳。在扩大范围之前,先记录一份理想的转录结果、一个故障案例以及回滚说明。在功能结果旁同时记录处理时间以及令牌或查询成本。提前了解这些成本,就能避免在从演示环境过渡到共享环境时出现意外费用。需保持图表状态简洁且具有明确类型;嵌套的数据块会掩盖是哪个节点修改了哪个字段,且在中断后还会导致恢复失败。
{"timestamp":"…","type":"event_msg","payload":{"type":"thread_rolled_back","num_turns":N}}
RolloutItem::EventMsg(EventMsg::ThreadRolledBack(rollback)) => {
history.drop_last_n_user_turns(rollback.num_turns);
}
磁盘上的内容 [src] rollout/src/recorder.rs:1549
将磁盘上的 src 发布阶段视为可度量的对象来处理,效果最佳。在扩大范围之前,先记录一份完美的测试用例、一个故障案例以及回滚说明。 将配置与应用程序代码分开。环境文件、密钥存储和功能标志应集中存放于一处,这样操作人员无需查看整个结构就能进行审计。 保持数据结构的层次简单且类型明确。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,还会在中断后导致无法继续处理。
$CODEX_HOME/sessions/YYYY/MM/DD/rollout-YYYY-MM-DDThh-mm-ss-<uuid>.jsonl
两种具有完全不同运行机制的分支模式 [src]
将具有阶段划分的两种分支模式视为可测量的界面来使用效果最佳。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。同时记录正常流程和恢复流程。重试机制、人工审核环节以及死信处理都是产品本身的一部分,而非后续需要补充的内容。保持图表状态简洁且具有类型定义。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,还会在中断后导致无法继续处理。
3. Pi——唯一的免费双向导航工具
3 Pi这一阶段只有在被视作可测量的表面时才能发挥最佳作用。在扩大范围之前,先记录一个成功的案例、一个失败案例以及回滚说明。 相较于庞大的脚本,应优先选择小型且可测试的单元。当某个步骤失败时,故障应指向单一的责任主体,而非错综复杂的流程。 保持图表状态简洁且具有类型定义。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,还会在中断后导致无法继续处理。
两种会话实现方式,一种已连接 [src]
将“两阶段实现法”的某一阶段视为可度量的对象来处理时效果最佳。在扩大范围之前,需记录一份理想状态下的完整日志、一个故障案例以及回滚说明。 应将这一阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,绝不允许出现无声的、不完整的处理过程。 保持图结构简洁且类型明确。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,还会在中断后导致无法继续处理。 将“两阶段实现法”的某一阶段视为可度量的对象来处理时效果最佳。在扩大范围之前,需记录一份理想状态下的完整日志、一个故障案例以及回滚说明。 将配置信息置于应用程序代码之外。环境文件、密钥存储和功能开关应集中存放于一个位置,这样操作人员无需查看整个图结构即可进行审计。
磁盘存储 [源数据 + 度量信息]
对于基于磁盘存储的 src 测量阶段,在修改代码之前需明确输入参数、该步骤的负责人以及终止条件。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程与异常恢复流程。重试机制、人工审核环节以及错误处理都是产品功能的一部分,而非后续需要补充的内容。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的逻辑连接并不等同于业务功能的完整性。
~/.pi/agent/sessions/--<cwd, leading slash stripped, / : \ → - >--/<ISO-timestamp>_<sessionId>.jsonl
const safePath = `--${resolvedCwd.replace(/^[/\\]/, "").replace(/[/\\:]/g, "-")}--`;
id 019fe5b5-8da6-707e-b29e-7940aca8ca25
file /tmp/fakehome/.pi/agent/sessions/--tmp-proj--/2026-08-09T08-48-28-582Z_019fe5b5-….jsonl
树结构 [src + measured]
在修改代码之前,对于“树源码检测阶段”,需先明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 相较于庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能指向单一责任模块,而非复杂的流程链。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的逻辑连接并不等同于业务功能的完整性。
{"type":"session","version":3,"id":"019fe5b5-…","timestamp":"…","cwd":"/tmp/proj"}
{"type":"message","id":"14700d42","parentId":null,…}
{"type":"message","id":"bc58a399","parentId":"14700d42",…}
{"type":"session_info","id":"a263a229","parentId":"bc58a399","name":"demo"}
/tree —— 最有趣的部分
在“树的有趣部分”阶段,修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,定义成功检测标准,并拒绝默许的半完成状态。 对于涉及资金支出或更改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务上的完整性。 在“树的有趣部分”阶段,修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于操作人员可审计的位置,无需阅读全部内容。
aph。/fork 和 /clone [源码 + 测量数据]
在处理 fork 和 clone 源码阶段时,首先明确契约内容:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及死信处理都是产品功能的一部分,而非后续的优化工作。 在耗时较高的步骤之后设置检查点。当操作员重新尝试某个后续节点时,恢复流程不应再次调用相同的 LLM 接口。
{"type":"session","version":3,"id":"019fe5b5-b4cf-…","cwd":"/tmp/proj",
"parentSession":"/tmp/fakehome/.pi/agent/sessions/--tmp-proj--/2026-08-09T08-48-28-582Z_019fe5b5-8da6-….jsonl"}
原生文件检查点功能:确认不存在 [源码]
在处理 Native 文件检查点确认阶段时,首先列出相关规范:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 建议使用小型、可测试的单元,而非庞大的脚本。当某个步骤失败时,故障应指向单一责任模块,而非复杂的流程链。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的 LLM 接口。
填补空缺的扩展模块及其存在的问题
在处理“填充阶段”的扩展功能时,首先需明确相关契约:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将这一阶段视为输入与验证后输出之间的契约。为相关产物命名,定义成功判定标准,并杜绝无声的半完成状态。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型接口。 在处理“填充阶段”的扩展功能时,首先需明确相关契约:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于一个位置,以便操作员无需查看整个架构即可进行审计。
await performRestore(state, ctx, undoRef, "files"); // internally pushes a NEW before-restore
state.redoStack.pop(); // pops the one just pushed; undoRef stays on top
matchesKey('\x1b','escape') → true
matchesKey('\x1b','escape escape') → false
4. opencode——线性历史记录,也是唯一的真正重做机制
将4个opencode线性历史记录阶段视为可度量的对象来处理效果最佳。在扩大范围之前,先记录一份完美的操作日志、一个故障案例以及回滚说明。 同时记录正常流程与恢复流程。重试机制、人工审核环节以及死信处理都是产品本身的一部分,而非后续添加的完善措施。 保持图表状态简洁且类型明确。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,还会在中断后导致无法继续处理。
现在它是SQLite了 [src]
将“It’s SQLite now”阶段视为可度量的对象来处理效果最佳。在扩大范围之前,先记录一份完美的测试用例、一个故障案例以及回滚说明。 优先选择小型且可测试的单元,而非庞大的脚本。当某个步骤出错时,故障应指向单一责任模块,而非复杂的流程链。 保持图结构的状态简洁且具有类型约束。嵌套的二进制数据会掩盖哪个节点修改了哪个字段的信息,还会在中断后导致无法继续执行。
~/.local/share/opencode/opencode.db (+ -wal / -shm)
这些ID并非ULIDs [src] packages/schema/src/identifier.ts
将这些标识视为可测量的界面来处理效果最佳。在扩大范围之前,需记录一份理想状态下的完整日志、一个故障案例以及回滚说明。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,绝不允许默许部分完成的情况。 保持图结构扁平且类型化。嵌套的数据块会掩盖哪个节点修改了哪个字段,还会在中断后导致无法继续处理。
length 26 = 12 hex time prefix + 14 base62 random
current = BigInt(Date.now()) * 0x1000n + counter // ms << 12 | monotonic counter
value = descending ? ~current : current // descending = bitwise NOT
将这些标识视为可测量的界面来处理效果最佳。在扩大范围之前,需记录一份理想状态下的完整日志、一个故障案例以及回滚说明。 将配置信息置于应用程序代码之外。环境文件、密钥存储和功能开关应集中存放于一处,以便操作人员无需查看整个图结构即可进行审计。
历史是线性的 [src] packages/core/src/session/sql.ts
对于线性流程的源代码阶段,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程与异常恢复流程。重试机制、人工审核环节以及错误处理都是产品本身的组成部分,而非后续需要补充的功能。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的配置并不等同于业务功能的完整性。
revert() = 撤销操作 [源码] packages/opencode/src/session/revert.ts
在回退“撤销 src 包”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。相比冗长的脚本,更应采用小型且可测试的单元。当某个步骤失败时,故障原因应能指向单一责任点,而非复杂的流程链。对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的配置并不等同于业务功能的完整性。
unrevert() = 重做 [src]
对于不可回退的重新执行源代码阶段,在修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,定义成功判定标准,并拒绝默许的半完成状态。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务上的完整性。
if (session.revert.snapshot) yield* snap.restore(session.revert.snapshot)
yield* sessions.clearRevert(sessionID)
对于无法回退的重新执行源代码阶段,在修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个位置,以便操作人员无需查看整个流程即可进行审计。
当重新执行功能失效时 [src]
在处理“When redo dies src”阶段时,首先写下相关契约:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及死信处理都是产品功能的一部分,而非后续需要补充的内容。 在成本较高的步骤之后设置检查点。当操作员重新尝试某个节点时,恢复流程不应再次调用相同的LLM接口。
const remove = msgs.slice(index + (session.revert.partID ? 1 : 0))
for (const msg of remove) yield* sessions.removeMessage({sessionID, messageID: msg.info.id})
yield* sessions.clearRevert(sessionID)
快照:带有树结构且无提交记录的影子Git [src]
在使用带阶段的快照阴影 Git 时,首先需明确相关约定:所需的输入参数、成功信号,以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 建议采用小型、可测试的单元,而非冗长的脚本。当某个步骤失败时,故障应指向单一责任模块,而非复杂的流程链。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。
yield* add()
const result = yield* git(args(["write-tree"]))
return result.text.trim()
Fork [src + docs]
在处理 Fork src docs 阶段时,首先需明确合同条款:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 将此阶段视为输入与验证后输出之间的契约。为相关产物命名,定义成功检查标准,并拒绝默许的部分完成。 在耗时步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的 LLM 接口。 在处理 Fork src docs 阶段时,首先需明确合同条款:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 将配置信息置于应用程序代码之外。环境文件、密钥存储及功能开关应集中存放于一个位置,以便操作员无需查看整个架构即可进行审计。
5. qwen-code — 无隐藏仓库,回退操作具有破坏性
将5个qwen代码的无阴影阶段视为可测量的界面时,其效果最佳。在扩大范围之前,需记录一个成功案例、一个失败案例以及回滚说明。 同时记录正常流程与恢复流程。重试机制、人工审核环节以及死信处理都是产品本身的组成部分,而非后续的优化内容。 保持图结构的状态简洁且类型明确。嵌套的数据块会掩盖哪个节点修改了哪个字段的信息,还会在中断后导致流程无法继续。
修正内容 [src]
将修正流程视为可度量的对象时,src阶段的效果最佳。在扩大范围之前,先记录一份完美的测试用例、一个故障案例以及回滚说明。相比庞大的脚本,应优先使用小型且可测试的单元。当某个步骤出现故障时,故障点应指向单一责任模块,而非复杂的流程链。需保持图结构的状态简洁且具有类型定义;嵌套的数据块会掩盖具体是哪个节点修改了哪个字段,还会在流程中断后导致无法继续执行。
三种互不相关的存储方案 [src] packages/core/src/config/storage.ts
将“三种互不相关的存储方案阶段”视为可度量的对象来处理时,其效果最佳。在扩大范围之前,需记录一份理想案例、一个故障实例以及回滚说明。 应将此阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功标准,杜绝默许的半完成状态。 应将分块策略与检索策略分开。当质量指标发生变化时,修改其中一项不应强制重新编写另一项。 将“三种互不相关的存储方案阶段”视为可度量的对象来处理时,其效果最佳。在扩大范围之前,需记录一份理想案例、一个故障实例以及回滚说明。 应将配置置于应用程序代码之外。环境文件、密钥存储及功能标志应集中存放于一处,以便操作人员无需查看整个系统结构即可进行审计。
getProjectHash(root) = sha256(win32 ? root.toLowerCase() : root) // full 64 hex, for tmp/
sanitizeCwd(cwd) = cwd.replace(/[^a-zA-Z0-9]/g, '-') // for projects/
FileHistoryService [src]
对于FileHistoryService的src阶段,在修改代码之前需明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 需同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及错误处理都是产品功能的一部分,而非后续需要补充的内容。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的配置并不等同于业务功能的完整性。
this.fileCheckpointingEnabled =
params.fileCheckpointingEnabled ?? (!params.sdkMode && (params.interactive ?? false));
/rewind会删除你未来的[src]数据
在回退操作会删除后续阶段的内容,因此在修改代码之前必须明确输入参数、该步骤的负责人以及退出条件。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 相较于庞大的脚本,应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能明确指向单一责任主体,而非复杂的流程链。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的逻辑连接并不等同于业务功能的完整性。
const removed = this.state.snapshots.slice(targetIdx + 1);
this.state.snapshots = this.state.snapshots.slice(0, targetIdx + 1);
await this.cleanupOrphanedBackups(removed); // ← physically deletes the backup files
分支版本会保留其备份 [src]
在 Forks 的备份阶段,修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与已验证输出之间的契约。为相关产物命名,定义成功检测标准,并拒绝默许的半完成状态。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的配置并不等同于业务上的完整性。 在 Forks 的备份阶段,修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于操作人员可审计的位置,无需阅读全部内容。
aph。6. 并行处理
在处理“6并行处理”阶段时,首先写下相关契约:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 同时记录正常流程和恢复流程。重试机制、人工审核环节以及死信处理都是产品的一部分,而非后续的优化工作。 在成本较高的步骤之后设置检查点。当操作员重新尝试某个后续节点时,恢复流程不应再次调用相同的LLM接口。
存储
在处理存储阶段时,首先写下相关契约:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 优先选择小型、可测试的单元,而非冗长的脚本。当某个步骤失败时,故障应指向单一责任模块,而非复杂的流程链。 在调整提示词之前,先使用固定的问题集来测试召回率。仅仅更换提示词很难解决检索效果不佳的问题。
对话结构与分支处理
在处理对话结构与分支阶段时,首先写下契约:所需的输入、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,明确成功判定标准,并拒绝默许部分完成的情况。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。
回退与重做
在处理回退和重做阶段时,首先写下相关契约:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次收取相同的LLM调用费用。
7. 三种设计路径
在处理7个Three设计谱系阶段时,首先写下相关约定:所需的输入参数、成功标志,以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中于一个位置,这样操作人员无需查看整个系统结构即可进行审计。 在耗时较高的步骤之后设置检查点。当操作人员重新执行后续节点时,恢复流程不应再次调用相同的LLM接口。
8. 实际操作步骤
在制定“实际需要阶段化的8项内容”时,首先写下合同规范:所需的输入参数、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 同时记录正常流程和异常恢复流程。重试机制、人工审核环节以及死信处理都是产品本身的组成部分,而非后续的优化工作。 在成本较高的步骤之后设置检查点。当操作员重新尝试某个后续节点时,恢复流程不应再次调用相同的LLM接口。
9. 未经过验证的内容
在完成“9个你做了什么”这一阶段时,首先写下相关契约:所需的输入、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持透明可追溯。 优先选择小型、可测试的单元,而非冗长的脚本。当某个步骤失败时,故障应指向单一责任点,而非复杂的流程链。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的LLM接口。
参考资料
在处理“参考阶段”时,首先需写明合同条款:所需输入、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持透明。 将此阶段视为输入与验证后输出之间的契约。为相关成果命名,明确成功检测标准,并杜绝无声的半完成状态。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。 在处理“参考阶段”时,首先需写明合同条款:所需输入、成功信号以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持透明。 将配置信息置于应用程序代码之外。环境文件、密钥存储和功能标志应集中存放于一个位置,以便操作员无需查看整个流程即可进行审计。
操作检查清单
在操作检查清单阶段,应在修改代码之前明确输入参数、各步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新执行相应步骤,而无需猜测隐藏状态。
在功能测试结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在系统从演示环境切换到共享环境时出现意外费用。
对于涉及资金支出或修改生产数据的操作,必须经过人工审批。仅靠编译时的配置并不足以确保业务的完整性。
编写简短的操作手册:说明如何轮换密钥、如何清空队列、以及如何回滚上一次的数据导入操作。
将配置信息与应用程序代码分开存放。环境文件、密钥存储和功能开关应集中于一个位置,以便操作人员无需查看整个系统结构即可进行审核。
对于那些会消耗资金或更改生产数据的操作,必须经过人工审批。编译时的配置并不等同于业务功能的完整性。
在推广该技术栈之前,应先冻结版本,为关键流程记录完整的操作日志,并明确回滚步骤。共享环境需要设置速率限制、租户验证机制,以及负责密钥轮换的明确责任人。与其追求花哨的一次性演示,不如注重扎实的可靠性。
关于 413b940c57b7 的批注:请将提供商密钥存放在仓库之外,为每个会话设置令牌使用上限,并将操作日志与评估用配置文件放在一起,以便后续更换模型时仍能保持数据可比性。