ClaudeMods
☰
ZH-TW
● 0 人在線上 · 瀏覽 0 次
贊助提交作品
GitHub 儲存庫 · 發布者 KilimcininKorOglu

prompt-offload

一個 Claude Code 外掛,它將超限提示寫入臨時文件,並向模型發送帶有文件路徑的第一行,保存上下文。

KilimcininKorOglu@KilimcininKorOglu

KilimcininKorOglu/claude-code-mods/tree/main/plugins/prompt-offload

已翻譯

關於這個 mod

Prompt-Offload 衡量你提交的每個提示;任何超過限制(預設為 2000 字元)的內容都會完整寫入 $TMPDIR/prompt-offload/<hash>.txt,同時模型接收前 200 字元以及命名檔案的行、其字元數和行數。它掛鉤 session.start、command.run{command=prompt-offload} 和提示.submit,將設定保留在 $.store 中,並且需要 one Read 呼叫才能查看完整的提示。達到 L2:讀取提示文字和 TMPDIR,執行 mkdir -p,寫入文件,並將所有內容保留在電腦上。透過 claude plugin marketplace add KilimcininKorOglu/claude-code-mods 然後 claude plugin install prompt-offload@kilimcininkoroglu-mods 安裝;需要Claude Code 2.1.288+ 並重新啟動。

安裝

請先查看作者 README,確認 marketplace 與外掛名稱;指令可能隨儲存庫結構而變動。

claude plugin marketplace add KilimcininKorOglu/claude-code-mods
claude plugin install prompt-offload
原文 / README

prompt-offload

You paste a long log, a stack trace or a whole file into the prompt, and all of it stays in the context for the rest of the session, also when the model needed one part of it. This mod writes a long pasted prompt to a file and sends the model its first lines with the path, so one paste does not fill the context.

What it does

  1. Each prompt you type, or send through Remote Control, is measured. A notification, a peer message, a schedule or another plugin's prompt is left alone.
  2. A prompt longer than the limit (2000 characters by default) is written to $TMPDIR/prompt-offload/<hash>.txt, whole and unchanged. The hash covers the text and the time it was sent.
  3. The model reads the first 200 characters of the prompt, then one line naming the file, the character count and the line count, and telling it to read the file before answering. When those 200 characters hold a line break past their middle, the head is cut at the last one.
  4. The transcript gets one line: how many characters went to the file and where.
  5. A failed write is not a lost prompt: the whole prompt reaches the model as it is, and the reason is logged once until a different one comes.

In the live check a 2980-character prompt was written to the file, the model read the file with Read and answered the question that only the tail of the prompt held.

Command

/prompt-offload              on or off, and the limit
/prompt-offload on | off     on by default
/prompt-offload limit <n>    at least 500 characters; kept across sessions

Install

claude plugin marketplace add KilimcininKorOglu/claude-code-mods
claude plugin install prompt-offload@kilimcininkoroglu-mods

Function hooks are early access. Claude Code 2.1.288 and later load them by default, so there is nothing to switch on.

After installing

  1. Allow reading $TMPDIR/prompt-offload, or answer the permission question the first Read of a file raises.
  2. Restart Claude Code.

What it can reach

Validated with claude plugin validate on Claude Code 2.1.283:

❯ ./register.ts hooks: session.start, command.run{command=prompt-offload}, prompt.submit
❯ ./register.ts calls: $.clock.now (via offload), $.command.register, $.env.get (via tempDir), $.fs.write (via offload), $.process.run (via tempDir), $.store.get (via readSettings), $.store.set (via setEnabled, setLimit), $.ui.log (via offload, report)
❯ ./register.ts env writes: nothing
❯ ./register.ts env reads: TMPDIR

Reach L2, writes files and runs a process.

1. Reads:    the text and origin of each submitted prompt, and TMPDIR
2. Runs:     mkdir -p, by argv
3. Sends:    the first 200 characters of the prompt and the path to the model; nothing leaves the machine
4. Persists: the whole prompt under $TMPDIR/prompt-offload, and the on/off setting and the limit in $.store
5. Hostile input: only a prompt from the composer or Remote Control is written, the file name is a hash the mod builds, and the path never reaches a shell

Limits

  • The file is not deleted by the mod; the system clears the temp directory.
  • An attachment, an image or a file reference in the prompt is not counted or moved: the mod measures the text alone.
  • The model needs one Read to see the whole prompt, so a prompt it would have answered at once costs one tool call.
  • A limit under 500 characters is refused, because a head of 200 characters leaves too little of the prompt behind.

Development

make install     # eslint, typescript-eslint, typescript
make lint        # complexity limit 10, the build fails above it
make typecheck   # needs .claude/types/ from /plugin-types
make validate
make test        # claude plugin test

更多類似作品