tancheng33/dsh-spill-s30

dsh-spill-s3

S3-compatible spill backend for DeepSeek Harness: oversized tool output goes to object storage (AWS S3, MinIO, R2) instead of the agent's local disk

包名
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.