LlamaFS自組織檔案管理器

vanilla阿草發表於2024-05-29

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(lscdtouch)等命令上新增一層由大模型包裝的高階API。如果你需要查詢某個檔案,你只需要向大模型描述你的檔案就行。這個描述可以是“昨天關機前關閉的那份文件”,也可以是檔案內容的一部分,讓LLM透過向量資料庫等技術幫你查詢檔案。

下一代作業系統的檔案管理,理念會像當年胎死腹中的WinFS的理念一樣,目錄結構不再重要,能讓使用者找到自己儲存的檔案就行。檔名、目錄等概念完全多餘,而這會推動新的資料標準建立、新的結構化的底層資料儲存正規化形成。這些改動對於增加、刪除、修改的方式變化不會很明顯,但是對於檔案查詢來說,變化可就太大了。

基於大模型的作業系統

最後再提一嘴AI系統。雖然我不是很清除現在某些廠商吹捧的AI系統到底是什麼樣子的,但是如果只是像Windows那樣加個copilot,我覺得遠遠不夠。我覺得未來的作業系統會有一個模型提供底層智慧支援,在這個模型上面,有各種各樣的作業系統相關的agent。LlamaFS可以看作一個檔案管理的agent,然後還有負責程序排程、記憶體管理等的agent,這些agent透過prompt等方式使LLM做出合適的應答,而LLM又可以收集到整個裝置的資訊做出更符合當前情況的回答。這些agent提供一套更符合常人直覺的高層API給使用者使用,又向下透過Python間接呼叫了作業系統的cp mv等指令。這才是基於大模型的作業系統。

相關文章