SiriusNEO/d.sh

d.sh

Minimal agent harness in one Bash file. One-line quick start. Bootloader agent for bare-metal servers.

待分类agentclaude-codecodex

d.sh

English | 简体中文

一个面向 DeepSeek 兼容 API 的极简编码智能体,全部实现于一个 Bash 文件:d.sh。它只依赖 Bash 4.3+ 和 curl。在没有完整依赖栈的精简服务器上,它既可以作为 bootloader 智能体拉起更强的 harness(Codex、Claude Code、DeepSeek Harness),也能直接完成简单的环境配置。

快速开始

方式一:一行命令运行一次,不保存脚本和配置

DEEPSEEK_API_KEY='your-api-key' bash <(curl -fsSL https://raw.githubusercontent.com/SiriusNEO/d.sh/main/d.sh)

方式二:保存配置好的副本,长期使用

curl -fsSL https://raw.githubusercontent.com/SiriusNEO/d.sh/main/d.sh -o d.sh
bash d.sh

第一条命令把脚本下载为当前目录下的 d.sh;已存在的副本会被覆盖。第二条运行它并进入交互式配置(BASE_URL、MODEL_NAME、DEEPSEEK_API_KEY),随后进入交互提示符。所选值会写回 d.sh(权限 600),之后只需 bash d.sh。

方式三:配置一次,随时随地启动无 session 的智能体

curl -fsSL https://raw.githubusercontent.com/SiriusNEO/d.sh/main/d.sh -o ~/d.sh
cd ~ && bash d.sh   # 完成交互式配置后输入 /exit
printf "alias d='DSH_SESSION_FILE= bash ~/d.sh'\n" >> ~/.bashrc
source ~/.bashrc

然后用命令 d,随时随地启动智能体。

配置

三个连接设置:

变量用途
DEEPSEEK_API_KEYAPI key,必填
BASE_URLDeepSeek 兼容 API 地址
MODEL_NAME每次请求使用的模型

BASE_URL 默认 https://api.deepseek.com,MODEL_NAME 默认 deepseek-v4-flash。DEEPSEEK_API_KEY 始终必填。交互式配置中,直接回车保留显示的默认值;API key 输入不回显。配置从已保存的副本运行时,所选值会写回 d.sh,文件权限改为 600。

其他 harness 设置(DSH_*)见 d.sh 顶部的配置块。环境变量会覆盖脚本中保存的值,并作为交互式配置中显示的默认值。

会话

对话保存在工作目录下的 session.jsonl,下次运行自动恢复。每行包含角色、一个制表符和消息 JSON。/clear 会清空文件。把 DSH_SESSION_FILE 设为其他路径可更换文件位置,设为空值则关闭持久化。

只有完整的轮次会被写入,因此被中断的运行不会恢复到一个半截的工具调用交换。

工具

工具说明
bash持久 shell —— cwd、环境变量、函数与 virtualenv 跨调用、跨轮次保留
str_replace_editor对文本文件执行 view / create / str_replace / insert

交互命令

  • /compact —— 压缩较早的历史
  • /clear —— 重置对话和持久 shell
  • /exit —— 退出
  • Ctrl+C —— 取消进行中的模型请求或正在运行的命令并回到提示符;取消正在运行的命令还会重置持久 shell
  • Ctrl+D —— 退出(等同于 /exit)

与 DeepSeek Harness 的对齐

行为跟踪 deepseek-harness dsh-v0.1.5-alpha.1(0.1.5-alpha.1) 的 sdk-minimal 配置——这是最后一个其 sdk-minimal bundle 提供双工具配置的版本。该 bundle 自 v0.1.3-alpha.2 起未再变化;dsh-v0.1.5-alpha.2 及之后移除了 str_replace_editor,只暴露一个持久 shell。

具体含义:

  • 一个持久 Bash shell(300 秒超时)加 str_replace_editor;编辑器上游的 maxOutputChars: 16000 与本脚本的 DSH_OUTPUT_LIMIT 及工具描述一致。
  • 默认 persona 为 You are a helpful software engineer assistant.,不包含 Harness 身份或运行时上下文。
  • 未压缩的 JSONL 会话(此处为工作目录下的 session.jsonl)、1,000,000 token 的兜底上下文窗口,以及 danger-full-access(无沙箱)。
  • 自动压缩、工具结果裁剪以及 [Deep diving ...] / [Compacting context ...] 状态文案改编自同系列完整 harness(compaction-basic、compaction-tool-result-pruner、ui-chat locale),因为 sdk-minimal 本身不包含压缩。

通信协议是 OpenAI 兼容的 Chat Completions API:POST {BASE_URL}/chat/completions,Bearer 认证,携带 messages / tools / stream / max_tokens,以及 DeepSeek 的 thinking 和 reasoning_effort 扩展。这与上游 @deepseek-ai/dsh-llm-deepseek 是同一协议;既不是旧的文本 Completions API(/completions),也不是 OpenAI 的 Responses API(/responses、input / instructions)。

安全

命令以你的权限运行,且没有沙箱。交互式配置会把 API key 存进本地的 d.sh;切勿提交或分享配置过的副本。session 文件包含完整对话,同样应排除在版本控制之外。

致谢

受 deepseek-ai/deepseek-harness(MIT)启发而做的独立实现;persona、工具 schema 及 minimal profile 行为改编自 dsh-v0.1.5-alpha.1 的双工具 sdk-minimal bundle,压缩与状态行为改编自同一版本的完整 harness 包。