一个业务应用到底有多少 token?一个完整 CRM 只有 16k
用 AI 真正工作的单位来度量,一个完整 CRM 只是约 16k token 的类型化元数据——占一个上下文窗口的 8%。能整体装进智能体上下文的软件,维护方式完全不同。我们称之为「上下文体量的软件」。
一句话版本: 用 AI 真正工作的单位——token——来度量,一个完整的 CRM 只有约 16,000 token:31 个文件、1792 行类型化元数据,覆盖数据模型、视图、仪表盘、线索转化流程、权限、动作和多语言翻译。这不到一个标准 200k token 上下文窗口的 8%。能过这条线的软件值得一个名字:上下文体量的软件(context-sized software)——小到 AI 智能体能整体装入、整体推理、整体重构的系统。一旦系统达到上下文体量,智能体就不再是自动补全,而是维护者。
自己算一遍
这个数字不是我们设计出来的基准,它就来自一个普通的应用——开源 ObjectStack 框架自带的 CRM 示例:
git clone https://github.com/objectstack-ai/objectstack
find objectstack/examples/app-crm/src -name '*.ts' -not -name '*.test.ts' \
| xargs cat | wc -l
# → 31 个文件共 1792 行 ≈ 16k token(按约 4 字符/token 估算)
| 系统 | 文件数 | 行数 | ≈ Token | 能装进 200k 上下文? |
|---|---|---|---|---|
CRM 示例(app-crm)——对象、视图、仪表盘、流程、权限、翻译 | 31 | 1792 | ~16k | 能——还有 12 倍余量 |
| HotCRM——完整的市场级 CRM:15 个对象、10 个流程、4 个仪表盘、2 个 AI copilot、4 种语言 | 128 | ~17,000 | ~150k | 能——刚好 |
| 传统手写 CRM 代码库 | 数千 | 30 万–100 万+ | 数百万 | 差得远 |
同一个产品品类,相差三个数量级。
为什么 token 成了正确的度量单位
五十年来我们用代码行数度量软件,因为约束条件是人类读者。现在读者换了。AI 智能体要安全地修改一个系统,得先把系统装进上下文——这把所有代码库分成两种状态:
- 系统大于上下文。 智能体只能 grep、抽样、猜测。它的修改是局部的,错误却是全局的。每次变更都是隔着钥匙孔做考古。
- 系统小于上下文。 智能体一次读完所有东西——每个对象、每条权限规则、每个依赖。*「改这里会弄坏什么?」*从一个愿望变成一个可回答的问题。跨领域的变更——把一个概念在数据模型、权限、API 和界面里统一重命名——是一个连贯的 diff。
这不是渐进式改善,是状态切换。而分界线就画在你的上下文窗口所在的位置。
业务应用为什么能压缩 50 倍
不靠压缩技巧,靠删除。一个企业应用是两样东西交织在一起:
- 决策。 有哪些对象、它们如何关联、谁能看到哪个字段、线索转化时发生什么。这是你的业务本体(ontology),真正不可约减——只有你能做这些决定。
- 管道。 数据表、CRUD 接口、列表页和详情页、权限中间件、审计写入。这些在古往今来每一个业务应用里几乎一模一样——也就意味着它们是可派生的。
ObjectStack 押的注是:制品里只保留决策,管道全部由运行时派生。那 1792 行就是决策清单——类型化、经 Zod 校验的元数据。数据库 schema、REST API、管理界面和 MCP 工具在每次启动时由它计算出来。可派生的东西一概不存储,所以可派生的东西永远不会漂移——也永远不占你的 token 预算。
什么压缩不了
对边界诚实,比推销更重要:
- 新颖算法。 定价优化器、自定义撮合引擎,过去是真代码,现在还是真代码。格式留有逃生舱——action 和插件就是普通 TypeScript。
- 像素级定制体验。 Schema 驱动的 UI 渲染企业软件的模式非常好;但品牌官网和游戏不是这么做的。
- 奇特的集成。 对接一个三十年前的 SOAP 服务,连接器代码还是连接器代码。
所以这个论断比「一切皆元数据」更窄——也因此更强:构成企业软件主体的 CRUD + 工作流内核是可派生的,而真正重要的残差——本体——装得进上下文。
软件达到上下文体量后,什么变了
- 评审变成真的。 1792 行是一次代码评审;30 万行是一场仪式。人能读完整个 diff,校验门和运行时的权限、审计强制在后面兜底。
- 维护不再腐烂。 整个系统装得进上下文时,智能体是整体重构,而不是修补它看得见的那部分。企业软件常见的熵增曲线——每次变更都比上一次更危险——被拉平了。
- 本体始终归你。 定义是 Apache-2.0 的开放格式,是你仓库里的普通文件——人能读,任何智能体能写,可跨运行时迁移。
跑一遍这个循环
把你的编码智能体指向 ObjectStack——脚手架自带 AGENTS.md 和技能包,智能体一开始就加载了这个格式的规则:
npm create objectstack@latest my-app && cd my-app
npx os dev --ui # 应用已运行——把下一个需求直接告诉你的智能体
更想在浏览器里完成?ObjectOS 是同一个思路的托管形态——在线构建与问询,内置 AI Builder、权限与审计。