使用手冊 › Slima MCP › 寫入被拒:怎麼處理

寫入被拒:怎麼處理

最後更新 2026 年 9 月 9 日 · 閱讀約 8 分鐘

一句話:這篇教你分辨寫入被拒的幾種原因,以及每一種各自的下一步。

先看錯誤碼,不要重送

寫入被拒有幾種完全不同的成因,而它們的下一步互不相通。錯誤碼就是用來分辨的:

錯誤碼 狀態 意思 下一步
AI_READONLY_FILE_TYPE 403 這個型別不能整檔寫 結構化檔:改用訊息裡指名的 update_*。.character / .json 這類:沒有替代路徑
SUBSCRIPTION_REQUIRED 403 這個能力屬於訂閱方案 讀取不受限制——讀完用文字描述你建議的改動
INVALID_PATH 400 舊的劇本工作室書,寫到規劃資料夾以外 改寫到 .script_studio/planning/ 底下
FOLDER_NOT_EMPTY 422 要刪的資料夾裡還有東西 確定的話帶 recursive: true 再送一次

拿同一組參數再送一次,在這四種情況裡沒有一種會變成功。

一 · 結構化檔:訊息會指名該用哪一支工具

對 .map、.beats、.timeline、.script、.geomap 用 write_file、edit_file 或 append_to_file,會拿到這樣的回覆:

.map files are structured documents — a generic write would corrupt them.
Use POST /api/v1/books/:book_token/mcp/files/structured (the MCP client
exposes it as update_relationship_map): it takes one field-level operation at
a time, so the parts of the document you were never shown cannot be dropped.
If update_relationship_map is not in your tool list, your Slima MCP client is
older than this server — ask the author to update the Slima MCP package.
A missing tool always means an out-of-date client; nothing about this account
ever hides a tool from you.

兩件事寫在裡面:該用哪一支工具,以及那支工具不在清單上時該怎麼辦。後者很重要——0.2.0 沒有那些工具,而伺服器又不接整檔寫入,所以舊 client 是兩條路都不通。升級的做法見 slima-mcp 版本怎麼運作。

.character、.location、.json、.yaml 拿到的是同一個碼、但沒有替代路徑那一句:讀完,用文字說出你建議怎麼改。

二 · 訂閱閘:讀從來不受限

方案沒有解鎖結構化寫入時,回的是 SUBSCRIPTION_REQUIRED,訊息長這樣:

Writing .map files is part of Slima's subscription plans. Reading them is not
restricted — read the file and describe the change you recommend, and the
author can make it in the app or subscribe to let you make it directly.
(Credits bought as a one-off pack cover AI usage inside the Slima app;
structured file writing goes with a plan.)

三個重點:

  • 讀完全不受影響。 免費帳號的 AI 讀得到每一份 .map、.timeline,只是不能改。
  • 判準是方案,不是「有沒有付過錢」。 一次性的點數包買的是 app 內的 AI 用量,不解鎖結構化寫入。
  • 刪除跟寫入吃同一條規則。 免費方案刪不掉一份 .map——它建不出來、改不動,也刪不掉。

這時候最有用的回應不是重試,是把檔案讀出來、講清楚你建議改什麼,讓作者自己在 app 裡動手。

三 · 舊的劇本工作室書:INVALID_PATH

如果這本書是舊的劇本工作室書,規則完全是另一套,按路徑判斷:可寫的只有 .script_studio/planning/ 這棵樹,series.json、*.character、*.location、*.scene、*.storyline、*.note 與 .script_studio/planning/.initialized 透過 MCP 全部唯讀。

.script_studio/planning/scene-3-1-revision.md   ← 可以寫
Episodes/03/scene-1.scene                        ← 400 INVALID_PATH

作法是把提案寫進 planning 那棵樹,作者在 app 裡採納。動手之前想先知道規則,讀 slima://books/{book_token}/schema 這個資源,或直接呼叫 get_book——它對這種書會自己印出寫入限制。

四 · 最容易漏掉的一種:成功了,但檔案是空的

create_file 對五種結構化副檔名不會被拒。它會成功,然後伺服器寫進去的是一份空骨架,你送的內容被丟掉了(回覆會明講)。

這不是失敗,所以很容易被當成「建好了」。正確的流程是兩步:先 create_file 建空的,再用 update_* 一批一批填。

不是型別問題的兩種

  • 書在垃圾桶裡:被丟進垃圾桶的書不能寫。先還原。
  • 這本書是別人分享給你的:權限不到可寫的層級就只能讀。

不要繞過拒絕

Slima 的 MCP 錯誤是設計成讀完就能修好的:不存在的 id 會連真實的 id 一起回、不存在的地點層級會連真實的清單一起回、欄位放錯操作會告訴你它屬於誰。繞路的成本落在作者身上,讀訊息的成本落在你身上,而後者便宜得多。

相關

到 Slima 裡試試

打開 app,用你自己的書做一次。免費開始,不用信用卡。

打開 Slima
這篇有幫助嗎?