LlamaFS自组织文件管理器
LlamaFS是一个自组织文件管理器。它可以基于文件内容和修改时间等属性自动重命名和组织您的文件。它能让你不把时间花在对文件的复制、粘贴、重命名、拷贝、排序等简单操作上。有幸在Github上看到LlamaFS这个repo,感慨万千。
技术简介
LlamaFS以批处理模式和监视模式两种模式运行。在批处理模式下,您可以向LlamaFS发送目录,它将返回建议的文件结构并组织您的文件。在监视模式下,LlamaFS启动一个监视目录的守护进程。它拦截所有文件系统操作,使用您最近的修改记录来重命名文件。
从源码上看,LlamaFS像一个Agent,通过prompt使LLM输出指定格式的json,再根据LLM生成的json进行文件处理操作。给的prompt像这样:
You will be provided with list of source files and a summary of their contents. For each file, propose a new path and filename, using a directory structure that optimally organizes the files using known conventions and best practices.
If the file is already named well or matches a known convention, set the destination path to the same as the source path.
Your response must be a JSON object with the following schema:
```json
{
"files": [
{
"src_path": "original file path",
"dst_path": "new file path under proposed directory structure with proposed file name"
}
]
}
比如移动文件的功能,是这样实现的,下面函数的request参数就是模型返回的json:
@app.post("/commit")
async def commit(request: CommitRequest):
src = os.path.join(request.base_path, request.src_path)
dst = os.path.join(request.base_path, request.dst_path)
if not os.path.exists(src):
raise HTTPException(
status_code=400, detail="Source path does not exist in filesystem"
)
# Ensure the destination directory exists
dst_directory = os.path.dirname(dst)
os.makedirs(dst_directory, exist_ok=True)
try:
# If src is a file and dst is a directory, move the file into dst with the original filename.
if os.path.isfile(src) and os.path.isdir(dst):
shutil.move(src, os.path.join(dst, os.path.basename(src)))
else:
shutil.move(src, dst)
except Exception as e:
raise HTTPException(
status_code=500,
detail=f"An error occurred while moving the resource: {e}"
)
return {"message": "Commit successful"}
感觉LlamaFS像一个“中间件”,只负责发HTTP Request给LLM server获取Respose并采取对应的行动。
展望
未来的文件管理
LlamaFS现在看起来只是个基于LLM的大号桌面助手或者文件夹助手,但是它后面关于操作系统文件管理逻辑的更迭是巨大的。它提供了一种全新的用户体验:如果你有对文件操作的需求,那么可以告诉AI,让它理解你的指令并帮你完成这些繁琐的文件和文件夹的新建、删除、修改、查找操作,尽管它现在的宣传“让LLM帮你完成计算机科学里最困难的事——命名”有玩梗的意味。因为,作为普通操作系统用户,我们根本就没有必要关心这份文件的文件名和存储的具体位置是什么,我们只关心文件里面是什么东西、有什么用,我们只要求在我们需要的时候能把它翻出来。借助LLM,我们能够更加方便地对文件和目录进行增删改查
未来的操作系统会在现有的API(ls、cd、touch)等命令上添加一层由大模型包装的高阶API。如果你需要查找某个文件,你只需要向大模型描述你的文件就行。这个描述可以是“昨天关机前关闭的那份文档”,也可以是文件内容的一部分,让LLM通过向量数据库等技术帮你查找文件。
下一代操作系统的文件管理,理念会像当年胎死腹中的WinFS的理念一样,目录结构不再重要,能让用户找到自己保存的文件就行。文件名、目录等概念完全多余,而这会推动新的数据标准建立、新的结构化的底层数据存储范式形成。这些改动对于增加、删除、修改的方式变化不会很明显,但是对于文件查找来说,变化可就太大了。
基于大模型的操作系统
最后再提一嘴AI系统。虽然我不是很清除现在某些厂商吹捧的AI系统到底是什么样子的,但是如果只是像Windows那样加个copilot,我觉得远远不够。我觉得未来的操作系统会有一个模型提供底层智能支持,在这个模型上面,有各种各样的操作系统相关的agent。LlamaFS可以看作一个文件管理的agent,然后还有负责进程调度、内存管理等的agent,这些agent通过prompt等方式使LLM做出合适的应答,而LLM又可以收集到整个设备的信息做出更符合当前情况的回答。这些agent提供一套更符合常人直觉的高层API给用户使用,又向下通过Python间接调用了操作系统的cp mv等指令。这才是基于大模型的操作系统。
LlamaFS自组织文件管理器的更多相关文章
- 【原】iOS学习之文件管理器(NSFileManager)和文件对接器(NSFileHandle)
1.文件管理器(NSFileManager) 1> 主要作用及功能方法 主要作用:此类主要是对文件进行的操作(创建/删除/改名等)以及文件信息的获取. 功能方法: 2> 创建文件夹 创建所 ...
- atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 。打开浏览服务器文件夹java .net php
atitit. web 在线文件管理器最佳实践(1)--- elFinder 的使用流程解决之道 .打开浏览服务器文件夹java .net php 1. 环境:::项目java web,需要打开浏览服 ...
- Web 在线文件管理器学习笔记与总结(19)上传文件
dir.func.php 中添加方法: /* 上传文件 */ function uploadFile($fileInfo,$path,$allowExt = array('jpg','jpeg','p ...
- Web 在线文件管理器学习笔记与总结(17)复制文件 (18)剪切文件
(17)复制文件 ① 复制文件通过copy($src,$dst) 来实现 ② 检测目标目录是否存在,如果存在则继续检测目标目录中是否存在同名文件,如果不存在则复制成功 file.func.php 中添 ...
- Web 在线文件管理器学习笔记与总结(15)剪切文件夹 (16)删除文件夹
(15)剪切文件夹 ① 通过rename($oldname,$newname) 函数实现剪切文件夹的操作 ② 需要检测目标文件夹是否存在,如果存在还要检测目标目录中是否存在同名文件夹,如果不存在则剪切 ...
- Web 在线文件管理器学习笔记与总结(13)重命名文件夹(14)复制文件夹
(13)重命名文件夹 ① 重命名文件夹通过 rename($oldname,$newname) 实现 ② 检测文件夹名是否符合规范 ③ 检测当前目录中是否存在同名文件夹名称,如果不存在则重命名成功 i ...
- Web 在线文件管理器学习笔记与总结(11)获取文件夹信息 (12)返回上一级操作
(11)获取文件夹信息 文件夹没有修改操作. index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...
- Web 在线文件管理器学习笔记与总结(10)查看文件夹中的内容
① 读取文件夹大小 a. 封装计算文件夹大小的函数 b. 打开文件夹 c. 循环判断文件夹下的内容是文件还是文件夹,如果是文件,则累积相加文件的大小:如果是文件夹,则递归调用该函数 注意两个问题: ...
- Web 在线文件管理器学习笔记与总结(9)下载文件
① 普通形式的文件可以使用超链接形式下载 <a href = '下载文件名'>点击下载</a> ② 如果下载图片.html 等类型的文件,使用header() 函数发送网页头信 ...
- Web 在线文件管理器学习笔记与总结(8)删除文件
unlink($filename) 删除文件 index.php: <?php require 'dir.func.php'; require 'file.func.php'; require ...
随机推荐
- 使用mmdetection训练自己的coco数据集(免费分享自制数据集文件)
首先需要准备好数据集,这里有labelme标签数据转coco数据集标签的说明:labelme转coco数据集 - 一届书生 - 博客园 (cnblogs.com) 1. 准备工作目录 我们的工作目录, ...
- LeetCode - 最接近的三数之和
最接近的三数之和 你一个长度为 n 的整数数组 nums 和 一个目标值 target.请你从 nums 中选出三个整数,使它们的和与 target 最接近. 返回这三个数的和. 假定每组输入只存在恰 ...
- SQL Server实战一:创建、分离、附加、删除、备份数据库
本文介绍基于Microsoft SQL Server软件,实现数据库创建.分离.附加.删除与备份的方法. 目录 1 交互式创建数据库 2 Transact-SQL指定参数创建数据库 3 交互式分离 ...
- 通过定时SQL提取阿里云API网关访问日志指标
简介: 阿里云API网关服务提供API托管服务,提供了强大的适配和集成能力,可以将各种不同的业务系统API实现统一管理.API网关同时支持将API访问日志一键存储到日志服务,通过日志服务强大的查询分析 ...
- ATC'22顶会论文RunD:高密高并发的轻量级 Serverless 安全容器运行时 | 龙蜥技术
简介: RunD可以在88毫秒内启动,并且在104核384GB内存的单节点上每秒启动超过200个安全容器. 编者按:目前的安全容器软件栈 - 包括 host 操作系统中的 cgroup.guest 操 ...
- [FAQ] swagger-php 支持 Authorization Bearer token 校验的用法
@OA\SecurityScheme 可以是 Controller 层面也可以是 Action 层面. 类型 type="apiKey". in="header" ...
- WPF 已知问题 某些设备上的应用在 WindowChromeWorker 抛出 System.OverflowException 异常
准确来说,这个不算是 WPF 的问题,而是系统等的问题.在某些设备上的使用了 WindowChrome 功能的 WPF 应用,将在运行过程,在 WindowChromeWorker 类里面抛出 Sys ...
- vue-在公共icon封装组件里使用svg图标
1.安装svg-sprite-loader.package.json:"svg-sprite-loader": "^3.9.2", 2.build/webpac ...
- SAP集成技术(四)五种集成架构
本文中,我们将介绍并解释五个主要的模型.我们主要区分直接集成.中间件导向集成以及两个一般的架构概念.直接集成(例如点对点集成)中的标准化很少,但中间件导向的拓扑(例如中心辐射型拓扑以及企业服务总线)追 ...
- pde复习笔记 第一章 波动方程 第三节 分离变量法
教材 谷超豪<数学物理方程>第四版,虽然我们老师用的第三版,但是除了页码对不上,习题多了一点,也似乎没有多少区别. 打算开个新栏专门总结一下pde的各种计算问题,在图书馆算的手麻了,但是习 ...