Harness 核心 · 模型周围的 Harness

动态时间戳:最贵的 System Prompt

错误设计 vs 正确设计,三种时间处理方案对比切换

本页解决的问题

先给结论

「动态时间戳:最贵的 System Prompt」要解决的关键问题是什么?

错误设计 vs 正确设计,三种时间处理方案对比切换

判断标准

让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。

下一步

写下一个问题:试完这个方法后,你能用什么证据回答它?

常见误区

结论听起来很完整,却没有检查最关键的假设。

错误 vs 正确设计
❌ 错误设计
System: 你是助手。 当前时间: 2026-04-10 14:35:22 ...
0%
缓存命中率
+100%
额外成本
✅ 正确设计
System: 你是助手。 (不含时间) User: [2026-04-10] 请帮我...
~95%
缓存命中率
-70%
成本节省
实时对比模拟
实时对比 --:--:-- 每秒发一次请求
❌ 动态时间戳(精确到秒)
System: 你是助手。
当前时间: --:--:--
...
⏳ 等待请求...
缓存命中率0%
✅ 静态 System Prompt
System: 你是助手。
(不含时间)
User: [--] ...
⏳ 等待请求...
缓存命中率0%
0
总请求数
0
左侧 Cache Miss
0
右侧 Cache Hit
右侧节省成本
启动后每秒自动发一次请求,观察两侧 KV Cache 命中差异
其他常见杀手
其他常见的 KV Cache 杀手:
精确到秒的时间戳 随机 Session ID 用户 ID 前缀 A/B 测试变量 随机 emoji 前缀 动态广告文案
任何让 System Prompt 每次不同的内容,都会导致缓存完全失效。
🔒 原则:System Prompt = 固定前缀。 把动态内容(时间、用户信息、随机性内容)放到 User 消息里,不要放进 System Prompt。

「错误 vs 正确设计」为什么要看操作

「错误设计 vs 正确设计,三种时间处理方案对比切换」把结构落到了一个具体动作。这里真正要比较的不是名词谁更高级,而是数据如何被放置,以及最常发生的操作需要走多远。

读懂结构,要同时看访问方式和变化方式

「错误设计 vs 正确设计,三种时间处理方案对比切换」揭示了一个容易被忽略的取舍:按位置读取、按键查找、从两端进出、插入新元素和遍历关系,适合的组织方式并不相同。一个结构在某个操作上很快,不代表它在所有操作上都快。

把规模和更新频率一起算进去

实践时可以把「错误设计 vs 正确设计,三种时间处理方案对比切换」当作边界提醒:先写下数据量、最常用的操作和允许的延迟,再看 AI 给出的结构是否真的匹配。

从「错误 vs 正确设计」走到「实时对比模拟」

「错误 vs 正确设计」先把问题落在「❌ 错误设计 System: 你是助手。 当前时间: 2026-04-10 14:35:22 ... 0% 缓存命中率 +100% 额外成本 ✅ 正确设计 System: 你是助手。 (不含时间) User: [ 2026-04-10 ] 请帮我... ~95% 缓存命中率 -70% 成本节省」上;到了「实时对比模拟」,讨论继续推进到「实时对比 --:--:-- 每秒发一次请求 ❌ 动态时间戳(精确到秒) System: 你是助手。 当前时间: --:--:-- ... ⏳ 等待请求... 缓存命中率 0% ✅ 静态 System Prompt System: 你是助手。 (不含时间) User: [ -- ] ... ⏳ 等待请求... 缓存命中率 0% 0 总请求数 0 左侧 Cache Miss 0 右侧 Cache Hit — 右侧节省成本…」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。

把这条判断带到下一个场景

遇到一个新的数据结构时,不要从定义开始背。先写出最频繁的操作,再估计数据量和更新方式,最后检查结构是否让这三个条件同时成立。

  • 「错误 vs 正确设计」:❌ 错误设计 System: 你是助手。 当前时间: 2026-04-10 14:35:22 ... 0% 缓存命中率 +100% 额外成本 ✅ 正确设计 System: 你是助手。 (不含时间) User: [ 2026-04-10 ] 请帮我... ~95% 缓存命中率 -70% 成本节省
  • 「实时对比模拟」:实时对比 --:--:-- 每秒发一次请求 ❌ 动态时间戳(精确到秒) System: 你是助手。 当前时间: --:--:-- ... ⏳ 等待请求... 缓存命中率 0% ✅ 静态 System Prompt System: 你是助手。 (不含时间) User: [ -- ] ... ⏳ 等待请求... 缓存命中率 0% 0 总请求数 0 左侧 Cache Miss 0 右侧 Cache Hit — 右侧节省成本…
  • 「其他常见杀手」:其他常见的 KV Cache 杀手: 精确到秒的时间戳 随机 Session ID 用户 ID 前缀 A/B 测试变量 随机 emoji 前缀 动态广告文案 任何让 System Prompt 每次不同的内容,都会导致缓存完全失效。 🔒 原则:System Prompt = 固定前缀。 把动态内容(时间、用户信息、随机性内容)放到 User 消息里,不要放进 System Prompt

最后的「其他常见杀手」把讨论落到「其他常见的 KV Cache 杀手: 精确到秒的时间戳 随机 Session ID 用户 ID 前缀 A/B 测试变量 随机 emoji 前缀 动态广告文案 任何让 System Prompt 每次不同的内容,都会导致缓存完全失效。 🔒 原则:System Prompt = 固定前缀。 把动态内容(时间、用户信息、随机性内容)放到 User 消息里,不要放进 System Prompt」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。

标记为已学完 阅读进度会自动记录
← 上一篇下一篇 →

继续阅读

同一条线上的下一篇。

文章讨论

读到这里,留下一个判断。

把刚想明白的地方、还没想通的问题,留给下一位一起学习的人。

正在讨论 动态时间戳:最贵的 System Prompt 模型周围的 Harness
3条讨论文章讨论 · 与共学社区同步
在共学社区查看
AM
Asha Morgan内容编辑
观点实践记录

我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。

文章讨论7 有帮助
LH
Lin Harper独立开发者
观点观点

读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。

文章讨论5 有帮助
KM
Kiki Moore产品运营
问题问题

如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。

文章讨论4 有帮助