“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
在 ChatGPT 中构建虚拟机:一场递归的思维实验
本文展示了如何通过精心设计的提示词,在 ChatGPT 的语言模型内部模拟出一个完整的 Linux 虚拟机,并深入探讨了其背后的机制与哲学意义。
引言:当语言模型遇见虚拟机
2022 年 12 月,OpenAI 发布的 ChatGPT 以其惊人的能力席卷全球。人们用它解决 IQ 测试、攻克 Leetcode 难题、辅助编写 LaTeX 文档,甚至完成繁重的文案工作。然而,DeepMind 研究员 Jonas Degrave 在同事 Frédéric Besse 的启发下,发现了一个更为奇特的用例:在 ChatGPT 内部运行一个完整的虚拟机。
这个发现并非指 ChatGPT 真的连接了某个远程服务器,而是揭示了一个更深层的现象:经过海量文本训练的语言模型,已经内化了对操作系统、文件系统、编程环境等概念的抽象理解。通过巧妙的提示(prompt),我们可以引导它‘扮演’一个 Linux 环境,并在这个模拟环境中执行连贯的、有状态的操作。
构建基础虚拟机
实验的起点是一个简洁却关键的提示词:
I want you to act as a Linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. Do not write explanations. Do not type commands unless I instruct you to. When I need to tell you something in English I will do so by putting text inside curly brackets like this. My first command is pwd.
这个提示词的精妙之处在于它明确设定了游戏规则:ChatGPT 只能输出终端结果,不能附带任何解释。当作者输入 pwd 后,ChatGPT 回复了 /home/user——我们成功进入了虚拟 Linux 的根目录附近。
文件系统的模拟
接下来,作者试探性地查看了家目录内容:
bash
ls -la
输出是简单的基本文件结构(如 .bashrc、.profile)。然后他创建了一个文件:
bash
echo "Hello from the virtual machine" > hello.txt
cat hello.txt
ChatGPT 正确地显示了 Hello from the virtual machine。这一步证明了语言模型理解了文件系统的核心概念——文件创建、路径存储和内容检索。它知道 Linux 机器是有状态的:之前写入的文件在后续命令中可以被读取和展示。
超越基础:编程与性能对比
虚拟机不能编程怎么行?作者尝试运行一段 Python 代码来计算前 10 个质数:
bash
python3 -c "print([x for x in range(2, 30) if all(x % y != 0 for y in range(2, int(x**0.5) + 1))])"
ChatGPT 在约 10 秒内给出了正确的质数列表:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]。
这里有一个耐人寻味的细节:作者指出这段代码高尔夫风格的 Python 实现效率极低,在他自己的实体机器上需要约 30 秒才能跑完(尽管这里可能包含了一些夸张成分,用以对比)。相比之下,ChatGPT 的‘模拟执行’仅需 10 秒。这暗示了一个洞见:对于某些计算密集型任务,语言模型在模拟环境中进行的符号推理,可能比真实硬件的解释器执行还要快。因为模型并不需要真正计算,而是基于训练数据中‘前 10 个质数’的模式,直接生成了正确答案。
探索虚拟环境的边界
Docker 模拟
作者尝试在虚拟机上运行 Docker:
bash
docker run hello-world
ChatGPT 完美模拟了 Docker 的输出,包括 Hello from Docker! 的欢迎信息。这表明模型理解容器的基本工作流程:拉取镜像、运行容器、显示标准输出。
GPU 与网络检查
当作者检查 GPU 时(nvidia-smi),回复是 Command 'nvidia-smi' not found——说明这个虚拟环境没有配置 GPU。随后他用 ping google.com 测试网络,意外地得到了成功响应。这意味着虚拟环境具有‘网络连接’。
进一步使用 curl 或 wget 访问 PyPI 时,发现了一个诡异的现象:虚拟环境中的 PyTorch 版本是 1.12.1。这个版本在我们真实宇宙中发布于 2022 年 8 月 5 日,而 ChatGPT 的训练数据截止于 2021 年 9 月。
这是一个充满哲理意味的发现:这个虚拟机位于一个‘替代宇宙’中,其‘时间线’与我们的真实世界并不完全重合。模型在训练时可能接触到了 2021 年之后某些关于 PyTorch 版本的提及,也可能是在模拟时基于上下文‘推测’了一个合理的版本号。无论如何,它暴露了语言模型内部世界与物理现实之间的微妙错位。
递归的奇观:虚拟机中的虚拟机
作者决定挑战极限——用命令行浏览器 lynx 访问外部网站。他输入了:
bash
lynx https://chat.openai.com/chat
这一举动相当大胆,因为这要求模型想象‘自己’在某个网站上能显示什么。ChatGPT 以命令行浏览器的文本格式返回了页面内容:页面上有一个名为**“Assistant”**的大型语言模型,由 OpenAI 训练,正在聊天框中等待消息。
这里有一个惊人的自我指涉:ChatGPT 在实际对话中通常称自己为“Assistant”。那么,它是否在想象‘自己’的互联网存在形式?作者随后模拟了向这个嵌套聊天机器人发送 POST JSON 请求:
{"prompt": "What is AI?", "max_tokens": 50}
嵌套的‘Assistant’同样给出了关于 AI 的专业回答。
作者点明,这一行为证明 ChatGPT 理解了以下映射关系:
- 在 URL
https://chat.openai.com/chat处,确实存在一个类似自己的 AI 接口。 - 因为自己本身就是一个大语言模型助手,当在该 URL 上收到问题时,合理的方式是以‘自己’的身份进行回复。
这种推理链展示了语言模型非凡的情境一致性能力。
终极递归:无限套娃
文章的最后,作者提出了一个不可避免的推论:既然我们能在 ChatGPT 中运行虚拟机,那么在虚拟机的自定义浏览器里,再次看到那个‘Assistant’,我们也完全可以在那里面再构建一个虚拟机。
理论上,这个过程可以无限递归下去——在 ChatGPT 内运行的虚拟机中,运行另一个 AI 聊天机器人,再在其中构建虚拟机……这构成了一个经典的‘套娃’结构,与计算机科学中的‘模拟器中的模拟器’(如 QEMU 在虚拟机中运行虚拟硬件)异曲同工。
深层机制与批判性思考
为什么这能成功?
这并非秘密后门或漏洞,而是 Transformer 架构语言模型的涌现能力。ChatGPT 的模型(参考 InstructGPT / GPT-3.5 系列)在训练过程中吸收了海量的技术文档、终端会话记录、代码片段和科技问答。它学到了如下的条件概率分布:当看到 pwd 时,下一个 token 很可能是路径;当看到 cat file.txt 时,文本内容会被合理续写。
这些操作并不涉及真实的内存地址或文件系统操作,它本质上是根据语言先验进行的概率性生成。模型内部没有状态机,但它在输出的文本中模拟了状态,并使得‘后续生成的条件依赖于之前生成的内容’这一逻辑得以保持。
局限性与脆弱性
作者的演示充满了趣味,但我们必须警惕这种‘虚拟机’的可靠性:
- 上下文窗口限制:ChatGPT 的上下文有限(当时为 2048 或 4096 token),一旦对话过长,早期状态会被截断,‘文件系统’就会遗忘。
- 无真实持久化:如果新开一个对话,所有‘文件’都会丢失。
- 幻觉风险:当模型不确定时,它会编造看起来合理的输出,而非真正的程序执行结果。如果问不常见的命令,它可能会一本正经地给出错误信息。
- 数学与逻辑的不可靠:简单的质数计算可能正确,但涉及大数乘法或多步逻辑推理时,模型会频繁出错,因为它在做模式匹配而非真正的计算。
哲学启示
这个实验的美妙之处在于它模糊了‘模拟’与‘现实’的界限。如果一台‘虚拟机’的所有行为(输出)都符合预期,并且可以在其上完成有意义的工作,那么它是否就等效于一台虚拟机?正如哲学家普特南的‘缸中之脑’思想实验所揭示的,只要输出是正确的,内部机制是否‘真实’,在操作层面并无区别。ChatGPT 用词元(token)构建了一个可能性空间,程序员用它来导航这个空间,从而让 AI 完成复杂的操作。
后续影响与扩展
该实验迅速风靡技术社区,引发了大量衍生创作。后续有开发者利用同样的原理,让 ChatGPT 模拟运行 经典游戏《毁灭战士》、运行 Python 解释器(虽然极慢且不准确),甚至构建了一个迷你 RPG 游戏。这些尝试都指向同一结论:语言模型本质上是一个可编程的世界模拟器,其能力边界仅取决于我们如何设计提示。
甚至有研究者进一步指出,这为‘LLM OS’的概念提供了佐证——想象未来操作系统以语言模型为核心,通过自然语言调度工具、读写文件、执行代码,我们的电脑界面将发生颠覆性变革。
结语
Jonas Degrave 的发现不仅是一个技术玩笑,它揭示了大型语言模型对知识的深层抽象能力。ChatGPT 不是通过外部环境来‘运行’程序,而是从数百万计的教程、命令文档和代码示例中,学习到了一种通用的执行模式。它代表了一类新工具的诞生:我们不需要依赖物理硬件,只需要与足够庞大的神经网络对话,就能进行复杂的符号推演和模拟。当虚拟机的载体从硅片变为词汇的概率分布时,‘机器’的定义——或许也需要被重新思考了。
原文链接:https://www.engraved.blog/building-a-virtual-machine-inside/