作者指出开发者常把「模型声称修复」与「实际磁盘写入」混为一谈,提出用 Layer A(Prompt)、Layer B(Process)、Layer C(Clone)三层标签区分证据链,避免幽灵补丁。
昨晚那个所谓的修复真的落到磁盘了吗?
还是模型只是在描述一条漂亮的路径?
我不断看到这两个答案被混为一谈。
开发者谈论"免费盒子"时,仿佛它是同一个东西。
这个习惯掩盖了缺失的文件和虚假的绿色勾选。
免费的模型用 token 回答,而不是内核。
免费的服务器——如果存在的话——运行真实的进程。
这两个层次以完全不同的糟糕方式失败。
把它们混淆会在幽灵补丁上浪费整个下午。
你有没有合并过一个根本不存在于本地的"修复"?
我实际使用的三层地图
在任何信任之前,我给每个声明打上标签。
然后我简单地拒绝合并没有标签的成功故事。
Layer A — Prompt。线程中的 token,底下没有内核。
Layer B — Process host。某台机器运行了一条命令——如果存在宿主机的话。
Layer C — 你的克隆。位于你笔记本磁盘上的工作树。
如果你说不出是哪个层,你就缺乏证据。
你只有一个模型愿意讲述的故事。
我在"完成"之后问的一个问题
哪个层现在持有真实的字节?
如果答案只是"聊天",你应该停下来。
聊天仍然不是文件系统,无论多么自信。
Myth 1: 免费使用模型等于免费服务器
这个神话几乎出现在每个疲惫的站会上。
人们把模型端点当作一台租来的机器。
模型端点返回文本,别的什么都没有。
它不欠你一个主机名或可写的 /tmp。
我经常从筋疲力尽的队友那里听到这个说法。
你现在真的有一个进程宿主机吗?
修正后的心智模型:推理访问不是计算。
你可能在一个产品中同时收到这两个界面。
你也可能只收到一个聊天补全路径。
用进程证明宿主机,永远不要用一段文字。
当有人声称有服务器时建议的探测
# proposed probe — run it; do not trust a description
echo "LAYER_B_PROBE=$(hostname)-$(id -u)-$(pwd)"
uname -s -m
test -w . && echo "cwd_writable=yes" || echo "cwd_writable=no"
如果助手粘贴了这个而没有进程输出,保持怀疑。
漂亮的文字仍然完全存在于 Layer A。
Disclosure: This article was prepared as part of MonkeyCode's product outreach.
I mention MonkeyCode here for one narrow reason.
It offers free model access and an optional free server.
Those two offers are easy to mash into one object.
That mash-up is the exact trap this FAQ attacks.
People hear "free" and assume one shared blob.
Separate the surfaces before you debug anything else.
Treat the model first and the host second, always.
Myth 2: 引用的路径意味着该路径存在
对语言模型来说,引用的路径很廉价。
创建 inode 不廉价,也不会自动发生。
我曾被那些漂亮的 /tmp/patch.diff 代码块坑过。
线程中显示的路径信心满满。
我笔记本上的 ls 显示那里什么都没有。
我不知不觉间信任了哪个层?
修正后的心智模型:文本中的路径是一个字符串。
磁盘上的路径有一个你可以哈希的真实 dentry。
在争论 diff 之前,先要求第二个证据。
强制层选择的金丝雀
# canary.py — proposed; label your own output
from pathlib import Path
import hashlib, os, socket, time
p = Path("placement_canary.txt")
payload = f"{socket.gethostname()}|{os.getpid()}|{time.time_ns()}\n"
p.write_text(payload)
digest = hashlib.sha256(p.read_bytes()).hexdigest()
print(f"layer=B_or_C host={socket.gethostname()}")
print(f"path={p.resolve()}")
print(f"sha256={digest}")
然后你在 Layer C 上运行相同的哈希命令。
不匹配意味着你哈希了两台不同的机器。
没有文件意味着你根本没有离开过 Layer A。
test -f placement_canary.txt && echo on_disk || echo missing
这一行拒绝长篇大论。
它只报告字节是否存在。
Myth 3: 一个聊天线程等于一个持久化的 VM
线程在对话窗口中持久化 token。
宿主机只持久化其调度器仍然允许的内容。
我不知道你供应商的生命周期,你也不知道。
除非你用一个金丝雀文件测量过。
所以我不假设 /tmp 在重新连接后存活。
我不假设 pip install 在新聊天中存活。
我不假设环境变量会跟着迁移。
修正后的心智模型:把宿主机状态当作临时的。
在金丝雀证明是持久化的之前,一直这样对待它。
写一个文件,然后故意关闭会话。
打开另一个会话,只问一个问题。
金丝雀还在吗,哈希值一样吗?
持久化检查清单
在声称的宿主机上写 placement_canary.txt。
在笔记中记录主机名、pid 和 sha256。
故意结束会话,不是意外。
之后启动一个完全全新的会话。
读取文件并仔细比较两个哈希值。
记录是持久化的还是临时的,然后停止争论。
如果第五步失败了,你的"服务器"只是一张纸巾。
Myth 4: 回复中的一条命令意味着包已安装
模型喜欢 apt-get 和虚构的包标志。
它们也喜欢跳过 dpkg 运行的部分。
包管理器真的改变了 Layer B 吗?
给我看 command -v、dpkg -s 或 pip show。
把退出码和名称一起给我看。
围栏内的 bash 块是文档,不是事务。
修正后的心智模型:安装是一个 Layer B 的状态变更。
没有 Layer B 就没有安装,仅此而已。
最小证明,不是小说
command -v jq; echo exit:$?
python3 -c "import pkgutil; print('pyyaml', bool(pkgutil.find_loader('yaml')))"
两行给出你可以粘贴的真实答案。
如果模型解释 jq 如何工作,你仍在 Layer A。
再次让它运行探测,或者自己运行。
你的笔记本是 Layer C,它不会猜测。
# proposed: same binary name, three different truths
type jq 2>/dev/null || true
printf 'PATH=%s\n' "$PATH"
python3 -c "import shutil; print('jq', shutil.which('jq'))"
type、PATH 和 shutil.which 可能不一致。
那种不一致是数据,不是感觉。
Myth 5: 沙箱是我的,所以密钥没问题
这个神话让一次性密钥变成了事件工单。
免费的服务器不是你的笔记本,就是这样。
免费的模型上下文也不是保险箱。
提示词被保留的频率比人们希望的更频繁。
宿主机被回收的频率比人们希望的更频繁。
我不会把生产 token 放进这两个层。
即使为了一分钟的便捷调试也不会。
修正后的心智模型:Layer A 是一张明信片。
Layer B 是一个你没有检查过的借来的厨房。
Layer C 是你的房子,密钥在那里处理。
我拒绝粘贴到任何一个免费界面的东西
云访问密钥和会话 token
仍然嵌入密码的数据库 URL
客户数据转储,即使"小小的"匿名样本
私钥,即使文件名标为 temporary
仍然需要远程复现?
创建一个你可以今晚撤销的一次性凭证。
会话结束后撤销它,没有例外。
如果你不能撤销它,就不要在那里使用它。
Artifact: 放置决策表
我在合并任何声称的修复之前使用这个表。
运行探测。只在表中勾选一个单元格。
不要因为感觉是真的就勾选两个单元格。
"Maybe"意味着你仍然必须比较主机名。
如果 Layer B 主机名与你的笔记本不一致,不要合并。
把 artifact 复制下来,然后在 Layer C 上再次哈希。
# proposed: compare claimed host vs laptop host
printf 'claimed=%s\nlaptop=%s\n' "$CLAIMED_HOST" "$(hostname)"
四个字段每次都胜过一篇胜利文章。
我保存在无聊的 shell 形式中的完整探测
#!/usr/bin/env bash
# placement_probe.sh — proposed method, no vendor magic
set -euo pipefail
stamp="$(date -u +%Y%m%dT%H%M%SZ)"
host="$(hostname 2>/dev/null || echo unknown-host)"
cwd="$(pwd)"
file="placement_canary_${stamp}.txt"
printf 'stamp=%s\nhost=%s\ncwd=%s\npid=%s\n' "$stamp" "$host" "$cwd" "$$" > "$file"
if command -v sha256sum >/dev/null; then
hash="$(sha256sum "$file" | awk '{print $1}')"
else
hash="$(shasum -a 256 "$file" | awk '{print $1}')"
fi
printf 'LAYER_PROBE\nfile=%s\nsha256=%s\nhost=%s\ncwd=%s\n' "$file" "$hash" "$host" "$cwd"
把这四个字段复制到笔记中,而不是复制到另一个提示词中。
当聊天消失时,那些笔记可以存活。
聊天线程本身在诚实的调试会话中无法存活。
一个十五分钟的工作流,不需要英雄主义
用一句无聊的陈述声明声明。
命名该声明实际需要的层。
在可疑的宿主机上运行 placement_probe.sh。
在你的笔记本上运行相同的脚本。
diff 主机、cwd 和 sha256,不要讲故事。
只有在那之后才把补丁复制到 Layer C。
在 Layer C 上本地运行你自己的测试。
跳过一步,你就是在合并一个幽灵。
我为小修改这样做,尤其是小修改。
那些是没人愿意花精力哈希的。
# proposed: after both probes, compare without a story
diff -u laptop_probe.txt host_probe.txt || true
非空的 diff 不是侮辱。
它是这个仪式存在的全部意义。
这不能证明什么
这个探测不能证明租户隔离。
它也不能证明服务级别。
它不能命名 CPU、GPU 或区域。
它不能冻结任何免费层策略。
供应商会在没有通知的情况下更改免费模型访问。
供应商也会在没有通知的情况下更改免费服务器。
我有意不在这里记录配额。
我没有一个值得重复的持久数字。
今天测量主机,而不是凭记忆。
下个月毫不犹豫地丢弃那个数字。
匹配的哈希是必要的,但不是充分的。
有人可能会把哈希 echo 到线程中。
最好自己在 Layer C 上写文件。
然后测试产品,而不是叙述。
谁不应该使用这种方法
如果你已经有真正的 CI 主机,跳过这个。
你的管道才是重要的进程层。
不要在那条路径上插入一个神秘的盒子。
对于受监管或客户持有的数据,跳过这个。
借来的服务器是放那些数据的错误房间。
如果你需要多天的遗留状态,跳过这个。
临时主机会故意误导你。
如果你不能读取十六进制摘要,跳过这个。
然后找一个队友再合并任何东西。
不要把"就信任线程"作为捷径。
我想让你偷走的心智模型
Prompt 不是 process,process 不是 disk。
免费使用模型不是免费服务器。
引用的路径不是 inode。
线程不是你租来的 VM。
代码围栏不是安装事务。
一旦你分清了这些,调试很快就会变得无聊。
无聊是这个 FAQ 的全部目标。
那么,哪个层写了你最后声称的修复?
如果你不能回答,今天就运行探测。
如果你能回答,还是哈希一下文件。
我不是在这篇文章中卖感觉。
我在要求四个你可以复制的字段。
用任何你想要的模型来处理文字。
用一个你可以命名的主机来处理字节。
如果你尝试 MonkeyCode 的免费模型或免费服务器,先给层打标签。
然后粘贴探测输出,不是胜利演讲。