tancheng33/dsh-spill-s30

dsh-spill-s3

用于 DeepSeek Harness 的 S3 兼容溢出后端插件,将超大工具输出转存至对象存储而非本地磁盘。

AI 分析

核心用途是解决大模型交互过程中,工具产生海量临时数据占用本地磁盘的问题。适合需要处理大文件、长文本或高并发任务的用户。必要条件是需配置 AWS S3、MinIO 或 R2 等兼容存储桶。

包名
dsh-spill-s3
版本
0.1.0
许可证
MIT
最近更新
2026年8月16日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:tancheng33/dsh-spill-s3

Configuration

KeyDefaultMeaning
endpointhttps://s3.us-east-1.amazonaws.comService endpoint origin.
regionus-east-1Region in the SigV4 credential scope. S3-compatible servers accept any consistent value.
bucket(required)Destination bucket. It must already exist — this plugin never creates one.
prefixdsh-spillKey prefix. Artifacts land under `
/session-/`.
forcePathStyletruehost/bucket/key addressing. Required by MinIO and bare-IP endpoints; set false for AWS virtual-host style.
accessKeyIdRefAWS_ACCESS_KEY_IDCredential reference — a name, not a value.
secretAccessKeyRefAWS_SECRET_ACCESS_KEYReference for the secret key.
sessionTokenRefAWS_SESSION_TOKENReference for an STS session token. Ignored when unset.
serverSideEncryptionAES256x-amz-server-side-encryption value. Empty sends no header.
retrievalcliHow the model is told to read an artifact: cli, presigned, or locator-only.
presignExpiresSeconds3600Presigned URL lifetime (1..604800).
timeoutMs30000Upload timeout.

Credentials are references, not values

accessKeyIdRef names a credential; the value is resolved per upload through ctx.credentials, falling back to the process environment when no credential provider is mounted. Nothing secret belongs in cordis.patch.yml.

Because resolution is per operation (the seam's own contract), a rotated key reaches the next upload without restarting anything. Pair it with a central secret store — e.g. dsh-credentials-vault — and the agent host never holds a long-lived AWS key at all.

Choosing a retrieval mode

ModeThe model is toldCost
cli (default)run aws s3 cp s3://…needs the AWS CLI and credentials on the machine running commands
presignedfetch this URLputs a bearer URL in the model's context and the durable session log
locator-onlyask the usersafest; the model cannot self-serve

presigned is genuinely useful — it makes a spilled artifact readable with a plain web_fetch — but a presigned URL is a bearer credential with a lifetime. It is opt-in for that reason.