


















现代计算机文件系统和 Web 架构的根基都建立在“目录 + 文件名”的层级结构之上。这种设计在纸张时代有其合理性——一份文档需要一个文件夹放置,一本书放在某层书架。
在数字时代,这种“路径思维”带来了几个根本性问题:
/usr/local/share/... 是人为路径,重命名目录名称或改变目录层级结构就会导致访问失败。且重命名可能会破坏引用。https://example.com/docs/guide.html)在网页结构稍变哪怕目录或文件名改变时就失效,造成“404”泛滥。随着数据量与分布式需求剧增,一个更基础、内容驱动的存储和访问模型呼之欲出。
不再通过路径查找文件,而是通过文件内容生成的哈希(如 SHA-256 或 IPFS CID)来唯一识别文件。这种方式称为内容寻址(Content Addressing)。
3a7d9f8b2c...C:/Users/vicent/filename.jpg... → /3a7d9f8b2c...这意味着:
我们可以为每个哈希文件记录一段独立的元数据文档(JSON/YAML),采用属性–键/值对描述资源:
//某张照片文件的元数据
{
"id": "3a7d9f8b2c...",
"attributes": {
"类型": "照片",
"时间": "2003年5月16日 12:34",
"地点": {
"id": "2c2e1f4a....",// 指向一个公共实体(网络上的共享文件)
"label": "非洲" //可选,便于离线阅读
},
"作者": {
"id": "Rb8c9d0e1f2a3b...",//指向作者的账号实体文件
},
"内容": "大象","草原","夕阳", //利用AI大模型识别文件内容自动添加的元数据
},
}语义更明确
非洲 容易被理解为任意与“非洲”有关的概念;地点=非洲 则明确了“非洲”是地理位置,而不是主题、格式、作者等其它维度。类型检查与范围约束
时间=2003 可以强制是整数,或者 GPS坐标=41.40338,2.17403 强制是浮点数。可以利用数值对属性进行计算汇总、平均值、最大/最小值等支持层次嵌套与继承
当“值”可以指向另一个文件的 ID/URL(相当于公共标签),就能自然构建层级或本体(ontology)关系, 如:
地点=非洲,而“非洲”本身是一个资源文件,里面又带有更丰富的元数据(所属大洲、人口、气候等){
"id": "2c2e1f4a....",
"attributes": {
"类型": "地区",
"名称": "非洲", "Africa"
"人口": "13.73 亿|ee9f81caf017b...." // 拉取最新的人口数据
"面积": "11,730,000 mi²"
"气候": "3d50087846aa5...","G2u6e86typ5..." //指向多个说明气候的文件
},
}作者=vicent,作者也是一个文件,里面可以带该作者的性别、生日、出生地、籍贯、职业等元数据{
"id": "Rb8c9d0e1f2a3b...",
"attributes": {
"类型": "人物",
"性别": "男"
"姓名": "vicent"
"生日": "1988-3-26"
"出生地": "3d50087846aa5..."
},
}后续可以通过爬取文件id获得更多的语义。对于公开的知识和数据,可以作为知识库共享出来做成一个小型本体(如wikipedia),就可以让属性值更通用、更可复用。
利用AI模型构建基于属性的自动分类
如果要为文件增加一些个性化的、非官方受控词汇表中的元数据,可以先将指定的文件训练成特定模型并手动标记键值对,然后再通过这些预训练的模型去识别相关的文件内容并批量自动增加元数据,方便后续组织和查询,作为私人数据资源进行管理。
在上面的例子中,假设照片中的内容是傍晚时分草原上的大象,可以利用AI识图模型来自动给照片添加相应的键值大象,草原,夕阳 等,甚至可以对内容细分,如大象=非洲象这样更清晰的语义
模版与继承
通过将指定的文件定义为类型模板,可以将该文件中定义的元数据属性自动传递给引用它的文件(实例),快速创建相同类型的文件实例。例如在一个“照片”类模板文件中定义了 作者、拍摄设备、拍摄地点、时间等属性后,用户就可以通过新文件中添加类型=照片引用该文件来快速创建一个照片类的文件实例,自动继承“照片”类文件定义的元数据属性,而不必为每一个同类文件手动设定相同的元数据属性。
同时,当模板类文件被多个文件引用时,即可反向查询显示所有引用该模板的文件。如果模板类文件作为属性,利用这种方式可以变相实现属性枚举值的效果。同样是上面照片的例子,当通过“照片”类模板文件创建了一批照片后,使用照片::可以列出所有的照片文件实例。
查询与索引
由于基于位置寻址的传统目录层次型文件系统被基于纯内容寻址的面向对象-关系型文件系统取代,用户不再关心 /africa/animals/elephant.jpg 这种结构,既无需命名文件,也无需通过文件目录分类、路径来访问文件,而是通过属性查询:
1)单条件查询:
# 找出所有 地点=非洲 的文件
地点=非洲
# sql语法
SELECT id FROM files
WHERE json_extract(attributes, '$.地点.id') = 'africa';2)多条件组合查询:
#找出2003年在非洲拍的照片
地点=非洲 AND 类型=照片 AND 时间=2003年
#sql语法
SELECT id FROM files
WHERE json_extract(attributes,'$.地点.id')='africa'
AND json_extract(attributes,'$.时间.year')>=2003
AND json_extract(attributes,'$.类型.id')>='照片';3)递归反向查询:
# sql语法
SELECT f.id, FROM files f
JOIN file_attributes a ON f.id = a.file_id
WHERE a.value = 'abc123...';由于照片文件中的地点属性指向了“非洲”文件,因此在“非洲”文件中,可以反向查询列出所有包含地点=非洲键/值对的文件(包括且不仅限于照片),并按指定的属性排序和分组,以列表或卡片视图展示出来。
同样的例子还有对某本书、某部电影、某张音乐专辑的评论、评分,将其作为独立的文件存储而不是嵌入到书籍、电影或音乐的元数据中,通过在评论中引用来源书籍、电影或音乐文件id,这样当查看书籍、电影或音乐文件时,就可以通过反向链接看到关于此书、该电影或音乐专辑的所有评论,甚至可以递归查询该评论的作者、评论时间、评论的评论(回复)等。
例如上面的人口属性,其数值是变动的,每年会做一次统计更新,而文档本身是不变的,这样需要拉取最新的数据,并保留之前的数值以便查看历史人口数据的变动情况。
若将网站中的页面、图片、脚本等资源全部转为基于内容寻址的哈希结构,我们将得到一种“不可变、去中心化、无需路径”的 Web:
ipfs://Qm123abc... ← 由内容生成的 CID (Content ID)即使内容被复制到世界任何一台节点,只要哈希一致,即可无缝访问。无需关心它存在哪台服务器、哪一台设备上。
这正是 IPFS(InterPlanetary File System)、Hypercore 等新一代协议的理念。
传统Web的路径式URL网址:
https://example.com/docs/guide.html反映了底层是“文件夹 + 文件名”式的服务器架构:
https://example.com = 域名,对应某台服务器的 IP。/docs/guide.html = 那台服务器上的路径,访问实际磁盘上的 /var/www/docs/guide.html 文件。这套方式诞生于“每个网站都维护自己的文件结构”的时代。
而在内容寻址(Content Addressing)架构下:
example.com 对应的只是一个命名入口(可选)/docs/guide.html 可以被一个语义查询如 网站内容=guide 取代用户可通过以下方式访问资源:
ipfs://search?类型=docs & 主题=guide & 作者=Alice这个请求查出满足条件的哈希 b5e1c2a4...,然后浏览器自动发起:
ipfs://b5e1c2a4...ipfs:// 协议)ipfs://Qm123abc...如你所见哈希地址非常冗长难以记忆,你无法指望用户输入哈希地址来访问网站。所以可以引入 命名层(Name Layer),也就是人类可读的“名字映射系统”,但不是传统路径结构的必须部分。类似于DNS是IP地址的名字层,同样我们可以使用去中心化的 ENS/IPNS 作为哈希ID的名字层。
维护一张独立的名称映射表作为公共目录服务(类似DNS→IP):
{
"非洲大象图": "Qm123abc...",
"企鹅纪录片": "Qm456xyz..."
}当用户访问 https://alice.space/非洲大象图 时,前端即可查表转为 ipfs://Qm123abc...。
这类似于 DNS,但可更去中心化(如 ENS)或私有化(局域知识库)。
用户不再输入路径,而是通过属性、语义、自然语言等方式索引资源。
| 模块 | 功能说明 |
|---|---|
| 数据存储 | 存储文件 ID(如哈希)及其属性键值对 |
| 索引服务 | 为属性构建倒排索引,加速搜索(如 B-tree / Inverted Index) |
| 查询引擎 | 解析用户查询(如“地点=非洲 AND 类型=图片”)并执行 |
| API 接口 | 提供 IPFS或 RPC 接口供前端调用 |
| 前端 UI | 可视化查询与结果呈现,支持组合查询与属性筛选 |
属性分类浏览:
前端展示做“搜索→哈希跳转”的中间层,浏览器和操作系统GUI本身要支持“基于标签/属性”的文件访问或网站导航,用键值对代替路径式层级。

例如在浏览器或文件管理器里,提供类似 Gmail 筛选器或数据库条件构建器,下拉可选属性名(如 地点、作者、时间),输入时智能提示可用值(如非洲、vicent、2025年),用户可以按键、按值过滤,也可以用可视化的时间线/地图定制化检索,将组合条件保存为查询分类。
这样,传统路径式 URL 不再必要,用户与网站的交互从传统的“查路径”变成了“问内容”,查询结果会返回多个哈希,用户可选择查看或进一步筛选。最终访问的是纯粹由内容生成的 CID。
| 层级 | 传统 Web | 去路径 Web / 内容寻址式 Web |
|---|---|---|
| 资源地址 | 路径式 URL (/docs/a.html) | 哈希值(如 Qm123abc...) |
| 名称层 | DNS + 文件路径 | 可读名称 → 哈希映射(如 ENS/IPNS) |
| 访问协议 | HTTP(位置寻址) | IPFS / Dat / Hypercore(内容寻址) |
| 存储模型 | 路径+文件 | 哈希+属性+去中心化副本 |
| 查询方式 | 路径匹配 | 属性筛选 / 标签系统 / 自然语言搜索 |
ipfs://,需要走 HTTP 网关(绕回中心化),网关如 https://ipfs.io/ipfs/... 实际上是中心化入口。在 AI、元宇宙、知识图谱、Web3 等趋势推动下,我们亟需打破“路径 = 分类”的思维定式。文件和网页的身份不应由它们存在哪决定,而应由它们是什么决定。
基于内容寻址与属性索引的新一代架构,为人类与机器共同参与的未来网络奠定了更稳固的基础:
正如计算机不再依赖纸张,Web 也终将超越路径。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。