From 5daba92d0f686bfdfc08d924458ddb6aa921e208 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Tue, 13 Oct 2026 20:38:02 +0800 Subject: [PATCH] =?UTF-8?q?docs(memory):=20=E5=8D=81=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E6=8E=AA=E8=BE=9E=E6=94=B6=E5=8F=A3=EF=BC=88seed*=20+=20snapsh?= =?UTF-8?q?ot*=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tempTtlSec 落地后,`memory-tidy.json` 的播种契约就是**十一键**,而三处文件的注释仍 写「十键」。这些是**过时的陈述**(不是风格问题):下一位读者会从「快照契约:十键非 nil」里读出一个错误的口径,而 `memoryTidySeedComplete` 实际校验的正是十一键。 改的只是措辞,一行逻辑没动: - internal/config/runtimeconfig/memorytidy_seed.go:25,160 - internal/config/runtimeconfig/memorytidy_seed_test.go:19,27,62,82,97,214 - internal/runtime/memory/tidy_snapshot_test.go:14,27,159 (`cmd/cyrene/wire_memory_tidy.go:65` 还有同类的一处「这十键」,该文件属 M3 的 scope,未动 —— 塔已转 M3。) 验收:go build ./... + go vet ./... + go test -count=1 ./... 全绿。 --- internal/config/runtimeconfig/memorytidy_seed.go | 4 ++-- internal/config/runtimeconfig/memorytidy_seed_test.go | 10 +++++----- internal/runtime/memory/tidy_snapshot_test.go | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/config/runtimeconfig/memorytidy_seed.go b/internal/config/runtimeconfig/memorytidy_seed.go index 22b3f0b..1a60c0b 100644 --- a/internal/config/runtimeconfig/memorytidy_seed.go +++ b/internal/config/runtimeconfig/memorytidy_seed.go @@ -22,7 +22,7 @@ // 残缺);调用方记一条 WARN 即可 —— 播种失败时运行期仍按 `.env` + 代码默认跑, // 行为与播种前逐字相同。 // -// 日志**只打路径、原因与键名,不打值**:这十键今天都不是凭据,但「配置日志不打值」 +// 日志**只打路径、原因与键名,不打值**:这十一键今天都不是凭据,但「配置日志不打值」 // 是本仓既有口径(materialize.go 的「绝不打 apiKey」),这里从一开始就照做,免得 // 日后加一个敏感键时要回头改日志。 package runtimeconfig @@ -157,7 +157,7 @@ func writeMemoryTidySeed(log *slog.Logger, path string, seed MemoryTidyTuning, r return MemoryTidySeed{Written: true}, nil } -// memoryTidySeedComplete 报告种子是否「十键齐全且值可用」。 +// memoryTidySeedComplete 报告种子是否「十一键齐全且值可用」。 // // 为什么要「齐全」而不是「非 nil 就放行」:MemoryTidyTuning 的指针语义是「nil = 没配」, // 一份缺键的种子写下去虽然与「不写」在读取端等价,但它会让文件里出现 null —— 这份文件 diff --git a/internal/config/runtimeconfig/memorytidy_seed_test.go b/internal/config/runtimeconfig/memorytidy_seed_test.go index c2a90b1..71bace0 100644 --- a/internal/config/runtimeconfig/memorytidy_seed_test.go +++ b/internal/config/runtimeconfig/memorytidy_seed_test.go @@ -16,7 +16,7 @@ import ( // 本文件锁定**启动播种**(memorytidy_seed.go;主人 2026-10-07:「**`.env` 只做兜底 // 用** …… 后端**自动创建**独立的面板配置文件」)的四条纪律: // -// ① 文件不存在 ⇒ 按调用方给的「当前生效值」播种(**十键齐全**,不是只播老六键); +// ① 文件不存在 ⇒ 按调用方给的「当前生效值」播种(**十一键齐全**,不是只播老六键); // ② 文件已存在 ⇒ **一个字节都不动**(也不留 `.tmp`); // ③ 文件损坏 ⇒ **不写盘**(WARN + 按 `.env` 跑),绝不「修好它」; // ④ 幂等:连跑两次只在第一次写盘。 @@ -59,7 +59,7 @@ func seedPath(t *testing.T) string { return filepath.Join(t.TempDir(), "config", memoryTidyFileName) } -// decodeSeed 把盘上的文件解成键集合,供「十键齐全」的断言(比结构体更贴近主人看到 +// decodeSeed 把盘上的文件解成键集合,供「十一键齐全」的断言(比结构体更贴近主人看到 // 的那份文件)。 func decodeSeed(t *testing.T, path string) map[string]json.RawMessage { t.Helper() @@ -79,7 +79,7 @@ func assertNoTempLeft(t *testing.T, path string) { } // TestSeedMemoryTidy_SeedsMissingFile 是本任务的主用例:文件不存在 ⇒ 播种,且**内容 -// 就是调用方给的快照**(十键齐全、含四项频率键),目录也一并建出来。 +// 就是调用方给的快照**(十一键齐全、含四项频率键),目录也一并建出来。 func TestSeedMemoryTidy_SeedsMissingFile(t *testing.T) { t.Parallel() path := seedPath(t) // 连 config/ 目录都不存在 @@ -94,7 +94,7 @@ func TestSeedMemoryTidy_SeedsMissingFile(t *testing.T) { } assertNoTempLeft(t, path) - // 十键齐全(含新增的四项频率键)——「别只播老六键」的断言就在这里。 + // 十一键齐全(含新增的四项频率键)——「别只播老六键」的断言就在这里。 keys := decodeSeed(t, path) for _, key := range memoryTidySeedKeys { if _, ok := keys[key]; !ok { @@ -211,7 +211,7 @@ func TestSeedMemoryTidy_SeedsBlankFile(t *testing.T) { t.Fatalf("结果 = %+v, want 按「还没配过」播种", res) } if len(decodeSeed(t, path)) != len(memoryTidySeedKeys) { - t.Fatalf("空白文件被播种后应当十键齐全:%s", readRaw(t, path)) + t.Fatalf("空白文件被播种后应当十一键齐全:%s", readRaw(t, path)) } } diff --git a/internal/runtime/memory/tidy_snapshot_test.go b/internal/runtime/memory/tidy_snapshot_test.go index 5dd2849..593fc2d 100644 --- a/internal/runtime/memory/tidy_snapshot_test.go +++ b/internal/runtime/memory/tidy_snapshot_test.go @@ -11,7 +11,7 @@ import ( // 本文件锁定**启动播种的值来源**(tidy_snapshot.go;主人 2026-10-07:「`.env` 只做 // 兜底用 —— 后端**自动创建**独立的面板配置文件**要做**」): // -// ① 快照十键齐全、值可用(否则 runtimeconfig.SeedMemoryTidy 会拒绝落盘); +// ① 快照十一键齐全、值可用(否则 runtimeconfig.SeedMemoryTidy 会拒绝落盘); // ② 值取「**当时解析出来的生效值**」—— `.env` 给了就用 `.env`,没给就用代码默认 // (默认值来自 normalizeTidyConfig / normalizeReviewConfig,不另写一份); // ③ 最关键的一条:把快照当成面板值叠回去,**归一化结果与「没有面板文件」逐字相同** @@ -24,7 +24,7 @@ func snapBoolPtr(v bool) *bool { return &v } func snapIntPtr(v int) *int { return &v } -// TestTidyTuningSnapshot_CodeDefaults 钉住「什么都没配」时的十键 = 归一化的代码默认值。 +// TestTidyTuningSnapshot_CodeDefaults 钉住「什么都没配」时的十一键 = 归一化的代码默认值。 // 期望值直接取自默认值常量(本包唯一那处定义),因此这条用例证明的是**接线**: // 快照确实走了 normalizeTidyConfig / normalizeReviewConfig,而不是另写一份默认值。 func TestTidyTuningSnapshot_CodeDefaults(t *testing.T) { @@ -156,7 +156,7 @@ func TestTidyTuningSnapshot_PanelRoundTripKeepsEffectiveConfig(t *testing.T) { } } -// TestTidyTuningSnapshot_IsCompleteAndPositive 钉住快照契约:十键非 nil、数值键为正、 +// TestTidyTuningSnapshot_IsCompleteAndPositive 钉住快照契约:十一键非 nil、数值键为正、 // 钟点在 0..23。runtimeconfig.SeedMemoryTidy 会按这条契约拒收残缺种子,因此这里先 // 在**产生方**把它钉住,免得「播种写不出去」要到启动日志里才发现。 func TestTidyTuningSnapshot_IsCompleteAndPositive(t *testing.T) {