LLM 时代,可扩展软件的一种新写法

你有没有想过,未来的应用可能不需要写死在代码里,而是由 LLM 在运行时"长出来"的?
最近看到一篇博客,作者 Jeremy Morrell 提出了一个挺有意思的架构思路:Solid Core + Capability-Based Sandboxes + LLMs = Users with Superpowers。三个词串在一起,背后是一套关于"可扩展软件"的重新思考。
核心思想:把"内核"做硬,把"扩展"做软
传统的可扩展软件,比如 Vim、Emacs、VS Code,靠的是插件系统。开发者写插件,应用在运行时加载。但这种方式有几个老毛病:
- 插件能拿到应用的完整权限,出了 bug 或者被恶意利用,影响面很大
- 插件 API 设计一旦定型,就很难再大改,否则会破坏生态
- 应用本身越来越臃肿,因为要照顾各种扩展场景
Jeremy 的方案是把这三件事分开处理:
- Solid Core(硬核):核心只保留必须的业务逻辑和数据模型,写得又小又稳。这部分由开发者严格控制,几乎不会变。
- Capability-Based Sandboxes(能力沙箱):每个扩展运行在隔离环境里,只能拿到明确授予的能力,比如"读这个文件"、"调这个 API",而不是一上来就能
eval任何代码。 - LLMs(语言模型):扩展本身由 LLM 生成或增强。用户可以用自然语言描述想要的功能,模型在沙箱里拼出实现,需要什么能力就申请什么能力。
为什么这个组合有意思
把 LLM 放进去是关键。以前做插件,得有人会写代码;现在用户说一句"帮我把这个报表导出成 CSV 并发到 Slack",系统就能动态组装一个扩展跑起来。
沙箱和能力的限制,让 LLM 生成的代码不至于失控。它没法偷偷改你本地文件,也没法连任意网站,只能用被授权的接口。这相当于给 AI 的"创造力"套上了一副手铐,但手铐的钥匙在用户手里。
换句话说:软件的内核保持稳定和可信,边界交给 LLM 去探索,用户获得了"超能力"而不是"超风险"。
一点延伸思考
这个思路其实和最近几年浏览器的发展方向挺像——Chrome 的 Manifest V3 也在收紧扩展权限,把能力显式化。只是 Jeremy 把这件事推得更远:扩展本身都可以是 AI 生成的。
但也有几个现实问题:
- LLM 生成代码的可靠性还不够强,跑在沙箱里出错时,用户体验会很迷惑
- "能力"的颗粒度怎么设计,是个开放问题,太粗不安全,太细没人用得起
- 调试一个由 LLM 临时拼出来的扩展,工具链还不成熟
不过方向本身是值得关注的:当 LLM 成为软件的一部分,软件的设计重心就从"我能加什么功能"转向了"我能给用户多大的可编程表面"。 内核越克制,可能性反而越大。
也许未来最值得写的代码,是那些故意不写太多的代码。
来源:Hacker News