dashr
by fgm-builds
dsh 的 RLM 模式:IPython 统一工具调用接口,上下文即变量、提示词即变量,dsh 中一切皆插件
dsh RLM mode, IPython unified tool-calling interface, context is variables, prompt is variables, in dsh Everything is Plugin ecosystem.
安装
dsh plugin --profile web add github:fgm-builds/dashrGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
目录
⚡ Quick Install
curl -fsSL https://raw.githubusercontent.com/pgmi-builds/dashr/main/install.sh | bash
Alternative: dsh Plugin CLI (npm)
# pnpm's registry cache can lag a fresh publish — drop it first, then:
rm -rf ~/.cache/pnpm
dsh plugin --profile web add --config.auto-install-peers=false dsh-rlm-mode
# then LOCALIZE the preset files (a plain copy is not enough — the include
# path and kernel Python must be baked in; install.sh does this for you):
# sed the two placeholders in <profile>/node_modules/dsh-rlm-mode/preset/rlm-mode/agent.cordis.yml
# into ~/.dsh/.agent-presets/rlm-mode/ (see install.sh step 5/5)
After installation, launch
dsh weband select the RLM Mode agent preset.
📖 Overview
DeepSeek Harness (dsh): Everything is a plugin (万物皆插件, Cordis framework).
Prime Agent: RLM paradigm (递归自调用), Context as variables (上下文即变量).
Why not both? That's dsh in RLM mode — that's Dashr.
Dashr is an open-source plugin for the DeepSeek Harness (dsh) agent runtime. It brings RLM(Recursive Language Models:递归自调用) and the Context as Variables(上下文即变量) paradigm to dsh, registering a dedicated rlm-mode agent preset upon installation.
Instead of paying massive token costs on every round-trip tool call in standard multi-turn chat, Dashr equips the agent with a stateful, persistent Python kernel(持久化内核). The agent writes self-contained Python programs per cell, manipulating context, tools, and memory as native variables via the Python Kernel Unified Tool Calling(统一的代码化工具调用).
💡 RLM(Recursive Language Models:递归自调用)
Reference: Recursive Language Models (MIT/Stanford/Open MIND, 2025, arXiv:2512.24601)
- Context Scaling Up to 100x: 250K context LLMs effectively process 10M+ token inputs beyond physical context windows while avoiding context rot(上下文腐化/退化).
- Recursive Sub-Agent Task Decomposition (not from the reference): Recursive sub-agent/sub-task delegation aligns with granular locality and task complexity in open-world settings; delegation and receipt naturally form a doer-verifier pair.
- Resilience on Information-Dense Benchmarks: Excels on complex multi-hop reasoning tasks (e.g. OOLONG-Pairs), standard frontier LLMs fail catastrophically.
- Token & Cost Efficiency:
Outperforms standard long-context ingestion and summarization baselines by up to 2× performance.
Architecture
The runtime stack is one three-layer model (v0.1.5 layering):
- Profile layer (process-wide) —
DashrDaemon: the profile-level daemon concept, an empty shell in v0.1.5 (named in the bundle patch, which stays[]— no code yet). - Standing-mount layer —
DashrRuntime: one instance per standing mount holding the cross-session kernel map. This is the de facto daemon today — it listens for session disposal, keys one kernel per session, snapshots namespaces, and dispatches host tool calls back from cells. - Session layer — the ipykernel subprocess: a pure Python interpreter with no harness awareness; only the TS-side runtime knows about sessions and tools.
1. Context as Variables(上下文即变量,Stateful Kernel)
In standard agent loops, reading large files or computing complex payloads dumps raw output directly into the conversation history. In Dashr:
- State and computation persist inside a live IPython kernel session.
- Intermediate variables survive across cells without re-entering the prompt.
- Python Kernel Unified Tool Calling(统一的代码化工具调用): Tools are exposed as flat top-level Python callables (
await name({...})inside a cell). Intermediate execution data never round-trips through the prompt.
2. Recursive Sub-Agents(rlm())
The core mechanism of RLM:
- For token-heavy or exploratory subtasks, the agent spawns child agents (
child = await rlm({"mode": "spawn", "prompt": "Investigate repository history"})). - Sub-agents operate recursively in their own isolated context loops.
- When finished, the parent collects only the final distilled summary back into its kernel (the child's
agent_message({"receiver": "parent", ...})uplink).
3. Global Context Recency Window(全局上下文时效窗口)
- Even without spawning sub-agents, Dashr maintains a bounded Global Context Recency Window over recent turns via sliding-window compression.
- Prevents context degradation(上下文退化) and eliminates context window saturation on long workflows.
4. Compaction & Summarization(上下文压缩与提炼)
- Earlier turns that fall outside the active sliding window are automatically compressed into structured summaries (
compact()). - High-level progress, key decisions, and operating guidance are preserved in a dynamic harness (
refine()) and reinjected into the prompt.
📊 RLM Mode (Dashr) vs. Code Mode (dsh built-in)
While both RLM Mode (Dashr) and dsh's built-in Code Mode provide a code-first interface for programmatic tool orchestration, they differ fundamentally in language ecosystem, kernel persistence, and recursive capabilities:
| Dimension | RLM Mode (Dashr Plugin) | Code Mode (dsh Built-in) |
Highlight & Advantage |
|---|---|---|---|
| Interface Standardization | Host Toolset Registry Schema | Host Toolset Registry Schema | 🤝 Both dynamically expose typed SDK bindings generated from the same host registry — flat await name({...}) in Dashr vs tools.name({...}) in Code Mode. |
| Trigger & Orchestration | Programmatic Code Execution | Programmatic Code Execution | 🤝 Both collapse multiple sequential tool calls into a single code execution step. |
| Execution Language | Python (IPython 3.10+) | TypeScript / JavaScript | 🐍 Full access to Python's data science, AST analysis, and AI tooling ecosystem (pandas, numpy, etc.). |
| Backend & Kernel Layer | Persistent IPython Kernel (ZeroMQ + Jupyter Protocol) | Ephemeral Node.js Sandbox / One-shot runner | ⚡ Dashr maintains a dedicated, persistent kernel per session. Variables, imports, and objects survive across turns. |
| Functional Recursive Delegation | Native rlm() Function Call, Arbitrary Recursion Depth) |
Framework-level Sub-Agent Tool Call | 🔀 Standardized as a zero-friction Python function (rlm()). Sub-agents can recursively spawn Level 2+ sub-agents with arbitrary depth, returning results directly into Python variables. |
| State Snapshot & Revival | Full Namespace Snapshot (dill) |
Stateless between restarts | 💾 Kernel state can be serialized and restored across session restarts. |
✨ Features
- 💬 A2A Agent Messaging(智能体间直接通信) — Direct agent-to-agent messaging channels across family trees and siblings with result/message separation.
- 🔀 In-Kernel Recursive Sub-Agents — Call
rlm({"mode": "spawn", "prompt": task})to spawn sub-agents and collect results inside Python code — background by default, or block with{"run_in_background": false}. - 🪟 Global Context Recency Window(全局上下文近期窗口) — Sliding window compression that preserves recent turns while compacting older history.
- 🧠 Dynamic Harness & Compaction — Built-in
refine()for operating memory andcompact()for context reduction under pressure. - 💾 State Snapshot & Revival(状态快照与环境复原) — Save and restore the kernel namespace across sessions.
🔒 Security Model
- Tool Governance: Calls to
tools.*run throughdsh's host tool pipeline, where approval and sandbox policies apply normally. - Kernel Code Execution: Python code inside cells executes with the permissions of the local user running
dsh. Run Dashr in environments where you trust the agent's code execution against your user account (or rundshwithin a container).
📚 References & Academic Credit
The design of Dashr builds upon groundbreaking research in recursive agent execution and persistent prompt harnesses:
Recursive Language Models (RLM)
Recursive Language Models, 2025.
Paper: arXiv:2512.24601
Establishes the recursive decomposition and sub-agent execution paradigm for ultra-long context and bounded prompt management.Continual Harness & Prompt Refinement
Continual Harness for Autonomous Agents, 2026.
Paper: arXiv:2605.09998
Formulation for dynamic prompt refinement and in-loop compaction.
🙏 Acknowledgements & Attribution
Dashr is built as an open-source plugin for DeepSeek Harness (dsh).
While Dashr's codebase was developed independently from scratch for the dsh plugin ecosystem, the core design and philosophy are deeply inspired by the pioneering work of Prime Agent by Prime Intellect. We pay tribute to their introduction of the Context as Variables(上下文即变量) paradigm and the Recursive Language Model(RLM:递归自调用) execution model, which inspired us to bring these breakthrough capabilities to the dsh agent community.
⚖️ License & Compatibility
Both Dashr and upstream inspiration Prime Agent are licensed under the permissive MIT License. Dashr is fully open-source and license-compliant without IP or licensing conflicts.
📄 License
This project is licensed under the MIT License.
原始 README: https://github.com/pgmi-builds/dashr/blob/main/README.md ↗
同类插件
查看全部 →
dsh-anchored-standard
两阶段 DeepSeek Harness 预设:先 Minimal 对齐的 bootstrap,再切完整 Standard 工具(Project2 98/99)

PicGo-Core
极致的图片上传引擎,CLI 与 API 双支持

awesome-deepseek-harness
DeepSeek Harness(DSH)及其优秀社区插件的精选指南。

awesome-deepseek-harness
DeepSeek Harness (DSH)生态系统:来自dsh-external/hub和公共dsh-plugin主题的精选插件、工具和基础设施。

AI-Novel-Writer
本地优先 AI 小说创作工作台,提供 Windows/macOS 桌面版与 DeepSeek Harness 插件开发预览,支持角色、大纲、章节蓝图、审稿修稿和本地模型。

mcp-for-stata
MCP-for-Stata:把 Stata 集成进你的 agent