用 Rust 搭建一切皆插件的 agent 宿主
35.9/100
综合分
9
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/redoop/dsh-rs.git按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · other
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 70 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-rs(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 15:44:34
安全扫描自动 · 静态分析源码v2.7.0⚪ 扫描:无法判定尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。
- · 包内无可扫 JS
- · TS 源码(可能为非 JS 实现或未发布源码),无法判定
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 一切皆插件
- Rust编写
dsh-rs:一切皆插件,用 Rust 写——基于 cordis-rs 内核的 DeepSeek Harness Rust 移植版。
README
由 DeepSeek 最新模型翻译生成dsh-rs — 一切皆插件(Rust 版)
crates.io
docs.rs
DeepSeek Harness(dsh)的独立 Rust 移植版:一个一切皆插件的 agent 宿主,建立在 cordis-rust(cordis 内核的 Rust 移植,即 DSH 插件系统的内核)之上。以单一 crate 发布在 crates.io 上:
[dependencies]
dsh-rs = "0.2"
$ cargo install dsh-rs # 安装 dsh 可执行文件(provider 配置在 ~/.dsh/config.json)
$ dsh run --prompt "hi" --provider opencode
思维模型与参考实现完全一致:模型适配器、工具、会话持久化、系统提示词装配与 agent 循环本身,都是挂在同一个共享 Context 上的插件。没有需要打补丁的特权内核——你可以通过"在旁边挂一个新插件"来扩展宿主,而每一次注册都是一个 effect,当它所属的插件卸载时自动回卷。
核心思想
不需要任何手工连线。一个插件声明它 需要什么(inject)与 提供什么(ctx.provide)。
展开完整文档(README 剩余 1 节)
dsh-rs — 一切皆插件(Rust 版)
crates.io
docs.rs
DeepSeek Harness(dsh)的独立 Rust 移植版:一个一切皆插件的 agent 宿主,建立在 cordis-rust(cordis 内核的 Rust 移植,即 DSH 插件系统的内核)之上。以单一 crate 发布在 crates.io 上:
[dependencies]
dsh-rs = "0.2"
$ cargo install dsh-rs # 安装 dsh 可执行文件(provider 配置在 ~/.dsh/config.json)
$ dsh run --prompt "hi" --provider opencode
思维模型与参考实现完全一致:模型适配器、工具、会话持久化、系统提示词装配与 agent 循环本身,都是挂在同一个共享 Context 上的插件。没有需要打补丁的特权内核——你可以通过"在旁边挂一个新插件"来扩展宿主,而每一次注册都是一个 effect,当它所属的插件卸载时自动回卷。
核心思想
不需要任何手工连线。一个插件声明它 需要什么(inject)与 提供什么(ctx.provide)。cordis 内核自动计算依赖图,并把每个 fiber 收敛到它期望的 epoch:
consumer 先注册(PENDING)
| provider 出现
v
provider LOADING --> ACTIVE --notify--> consumer 重新检查 --> ACTIVE
在 dsh-rs 中,agent 循环是一个 inject 了 sessions、systemPrompt、 tools、llm、llmStreams 五个服务的插件——只有当整条脊柱就绪后它才会激活;任一依赖消失时它按 LIFO 顺序卸载。
与参考宿主的架构对照
| DeepSeek Harness (TS) | dsh-rs 模块 | ctx 键 |
| packages/llm — Message / ContentBlock / StreamChunk、适配器板缝 | llm | llm, llmStreams |
| packages/core/session — 只追加的 SessionEvent 日志 | session | sessions |
| packages/core/tools — 作用域注册表 + 守卫管线 | tools | tools |
| packages/core/system-prompt — 提示词分段/变量 | core | systemPrompt |
| packages/core/agent + agent-loop — Agent 句柄 + 驱动 | core | agents |
| dsh-base bundle 组合 | bundle | — |
| dsh 无头 CLI | cli(二进制 dsh) | — |
| — | types / api(共享词汇 / 接口层 + typed events + manifest) | — |
事件词汇与回合流镜像参考实现:
turn/start
领取 next-step 输入 + 一条排队消息装配提示词分段与工具 schema -> agent/pre-step reject | enter(messages) step/start 追加进入的消息为 user/message 从日志推导模型历史 agent/request -> llm/stream -> assistant/chunk* -> assistant/message tool/call* -> tools/pre-execute -> guards -> tools/execute -> tool/result* step/end 工具还有请求,或 next-step 输入到达 -> 进入下一步 -> agent/turn-stopping turn/end
turn/、step/、user/message、assistant/ 与 tool/ 是持久化的会话事件;agent/pre-step、agent/request、llm/stream 与三个 tools/* 事件是 cordis 瀑布(waterfall)——监听器可通过调用 next() 否决或改写。
session/event 火线喂养持久化,session/flush 是被等待的耐久化检查点。
目录结构(单一 crate)
Cargo.toml 包 dsh-rs 0.2.0(库 dsh_rs + 二进制 dsh) src/ types/ 共享词汇(消息、流、会话事件、agent 选项) api/ 接口层:服务 trait + wrapper、typed events、插件 manifest llm/ 适配器板缝:mock + OpenAI 兼容 SSE 适配器、分块组装、路由 session/ 只追加会话日志、SessionStore、surface 投影(derive_messages)、 JSONL 持久化与崩溃回合修复 tools/ ToolDefinition/ToolSchema、ToolRegistry 守卫管线(pre-execute -> guards -> execute -> post-execute)、内置:bash, read_file, write_file, edit_file, glob, grep, todo_write core/ SystemPromptService(sections/contexts/variables)、agent 注册表
+ 句柄(followup/steer/inject/cancel/when_idle)、agent-loop 驱动 bundle/ base bundle 组合 + JSON profile 安装器 + manifest 注册表 + 动态插件宿主 cli/ runner 辅助 + 终端聊天 UI(dsh chat) main.rs dsh 二进制:run / chat / transcript / providers / plugin load / dump-config tests/ 集成测试(对话流、TUI 状态、动态插件、会话/工具/LLM 回归) crates/ dsh-plugin-contract/ 已发布的 C-ABI 契约(0.2.0,crates.io) dsh-plugin-hello/ 示例 cdylib 插件(独立构建)
构建与测试
cargo build # 单 crate:根目录直接构建
cargo test # 70 个测试,全部通过
运行
mock provider 无需网络:它会回显最后一条用户消息,也可以被脚本化用于工具调用流(测试套件全程使用)。
对 mock provider 运行一次提示词 ./target/debug/dsh run --prompt "list the files" --cwd /tmp
交互式聊天 —— 终端上为完整 TUI,管道输入时为行模式 ./target/debug/dsh chat # TUI:enter 发送,↑/↓ 历史,pgup/pgdn 滚动, ctrl-u 清空,ctrl-c / ctrl-q 退出(IME 安全:单独的 'q' 永不退出) printf "hello\n" | ./target/debug/dsh chat # 管道输入 → 行模式 ./target/debug/dsh chat --line # 强制行模式
将会话持久化到 JSONL store,然后读回 transcript ./target/debug/dsh run --prompt "hello" --store /tmp/dsh-sessions ./target/debug/dsh transcript session-1 --store /tmp/dsh-sessions
OpenAI 兼容 provider(基于 SSE 的 chat-completions)
./target/debug/dsh run --prompt "hello" \
--provider openai --model gpt-4o-mini \
--openai-base https://api.openai.com/v1 --openai-key sk-...
JSON profile:{ "bundles": ["base"], "config": { "store_dir": ..., "openai": ... } } ./target/debug/dsh run --prompt "hello" --profile profile.json
DeepSeek / 多 provider 配置
dsh 会按 $DSH_CONFIG、~/.dsh/config.json、./dsh.json 的顺序自动发现默认
配置(首个命中生效;dsh.json 已被 gitignore,密钥不会进入提交)。配置就位后,
dsh run 与 dsh chat(TUI)即可直连 DeepSeek:agent 循环以流式输出,工具
调用(bash、文件工具……)真实执行:
{
"provider": "deepseek",
"model": "deepseek-v4-flash",
"store_dir": "/tmp/dsh-sessions",
"openai": {
"providers": ["deepseek", "openai"],
"base_url": "https://api.deepseek.com/v1",
"api_key": "sk-...",
"model": "deepseek-v4-flash"
},
"adapters": {
"opencode": {
"providers": ["opencode"],
"base_url": "https://opencode.ai/zen/go/v1",
"api_key": "sk-...",
"model": "deepseek-v4-flash"
}
}
}
./target/debug/dsh chat # 对 DeepSeek 的 TUI ./target/debug/dsh run --prompt "请执行 date 命令并把结果告诉我" ./target/debug/dsh run --provider opencode --prompt "用一句话介绍你自己"
adapters. 每段注册一个 OpenAI 兼容适配器,段名即 provider 路由(可用段内 providers 覆盖);dsh providers 列出当前全部路由。
OpenAI 兼容适配器针对 DeepSeek 的思考模式做了调优:推理增量拥有独立的块索引,后续请求会把 reasoning_content 回显回去(DeepSeek 拒绝省略该字段的调用),空 tool_calls 数组不会出现在线上消息里。
测试 dsh chat
tests/chat_flow.rs 在三个层面验证 chat TUI:
- 二进制冒烟测试 —— 在封闭环境(临时 HOME、无默认配置、mock provider)中启动真实的 dsh 二进制,断言一次完整的管道对话:横幅、每行一次回显、干净退出。
- 按键处理 —— 用真实 harness 驱动 ChatTui::handle_key:输入、Enter 提交、
↑/↓ 历史回看、Esc 清空、q/Ctrl-C 退出语义。
- 渲染 —— 把帧渲染进 ratatui TestBackend 缓冲区,断言可见布局(标题 + 会话 id、对话行、输入提示、状态/快捷键),包括一段脚本化工具调用回合: bash → 结果 → 最终回答。
cargo test --test chat_flow # 16 个测试,无需终端
cargo test # 全量 70 个测试
动态插件(独立编译 + 运行时加载)
插件可以独立编译为 cdylib 并在运行时加载——宿主 dlopen 它并适配为 cordis Plugin trait。插件只讲一个零依赖的 C-ABI 契约(dsh-plugin-contract),绝不链接 cordis 或 tokio:宿主实现框架,插件只负责计算(与 cordis-rust 的 dynhost 同款设计)。
1. 把示例插件编译为独立库
(cd crates/dsh-plugin-hello && cargo build)
2. 把它加载进运行中的宿主;它声明工具并完成注册 ./target/debug/dsh plugin load crates/dsh-plugin-hello/target/debug/libdsh_plugin_hello.so loaded plugin: dsh-plugin-hello (state: Active) declared tools: dsh_hello tools now registered: bash, dsh_hello, edit_file, ...
3. agent 循环现在可以像内置工具一样调用 dsh_hello ./target/debug/dsh run --prompt "use dsh_hello" --provider mock
插件的 JSON 声明(describe)列出它需要的服务(inject)与提供的工具;每个工具的 execute 通过 invoke 回调进库。加载、注册与卸载都是 cordis fiber effect——卸载插件会自动注销其工具。带有 inject: ["tools"] 的插件只在服务就绪后收敛,与静态插件完全一致。写你自己的插件:实现 DshPluginExports (参见 crates/dsh-plugin-hello)并导出为 dsh_plugin_exports。
扩展
加工具:构造 ToolDefinition 并注册到 ctx.tools。加 provider:实现 LlmAdapter 并注册到 ctx.llm。加提示词段:ctx.systemPrompt.section(...)。
拦截行为:监听 agent/pre-step、agent/request、tools/pre-execute 或 llm/stream 瀑布。一切皆插件,一切都可以从配置替换。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
redoop/dsh-rs
用 Rust 搭建一切皆插件的 agent 宿主
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7