插件目录 / Knowledge / dsh-stream-rules
dsh-stream-rules
已验证 · 实测可装 jiesou
功能简介
按需注入规则,不浪费上下文。
可用 — 实测通过,早期项目
按需注入规则,不浪费上下文。 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-stream-rules
Inject rules when needed, without wasting context.
You can write custom streaming rules for the agent.
These rules are injected only as a steering notice after a pattern match, then agent retry from the same point.
This allows you to control the boundaries of agent behavior, without wasting context.
Port of my jiesou/opencode-stream-rules to DSH.
Similar to oh-my-pi's "Time-traveling stream rules", but with a very simple and compact code implementation.
How it works
A rule fires on a tool call (tool name + serialized arguments) when its match returns true:
- default — injects a
SYSTEM NOTICEsteering message into the agent viaagent.inject()(DSH's non-waking "queue model-facing context for the next pre-step"). The agent retries from the same point, now knowing the rule. reject: true— denies the FIRST tool call ({ kind: 'deny' }); later attempts are allowed. Steering without over-restricting, e.g. lettingpip installthrough when it's already in a container.
Each rule fires at most once per session (per agent), mirroring the original's notified dedup.
Install
From npm (prebuilt, recommended):
dsh plugin --profile <name> add @jiesou/dsh-stream-rules
Or from GitHub (runs prepare to build on install):
dsh plugin --profile <name> add github:jiesou/dsh-stream-rules
Or add the row to your profile's cordis.patch.yml:
- id: stream-rules
name: '@jiesou/dsh-stream-rules'
After installing
You need to write the rules in your own .js file. This plugin won't work by default until you edit the rules.
- Locate the plugin's path:
$DSH_HOME/profiles/<name>/node_modules/@jiesou/dsh-stream-rules
where $DSH_HOME defaults to ~/.dsh.
- Write rules:
mv rules/rules.js.example rules/rules.local.js
- Files starting with
_are skipped. - To point at a different rules directory:
config.rules:
- id: stream-rules
name: '@jiesou/dsh-stream-rules'
config:
rules: /path/to/your/rules
- A rule with
reject: truewill only be rejected on the first toolcall; subsequent attempts by the agent will be allowed. This provides steering while avoiding overly restricting the model (e.g., allowingpip installif it's already in a container).
Writing rules
// rules/rules.local.js
export default [
{
match: (v) =>
v.includes('pip') &&
v.includes('install') &&
!v.includes('uv pip') &&
!v.includes('uvx'),
reject: true,
prompt: 'Use `uvx` or `uv venv` + `uv pip` instead of `pip install` directly',
},
{
match: (v) => v.includes('curl') && v.includes('api.github.com'),
prompt: 'Prefer using `gh` cli over `curl https://api.github.com/...`. gh offers more requests limits.',
},
{
match: (v) => v.includes('pdf'),
prompt: 'Use the `markitdown` skill to read PDF files.',
},
// add your rules here
]
| field | required | description |
|---|---|---|
match |
✅ | (v: string) => boolean; every tool call is flattened to a string and matched |
prompt |
✅ | The prompt for steering |
reject |
If true, prevent the tool call first, instead of just steering |
Implementation notes
- A single
src/index.ts(~60 lines). - Uses DSH's
tools/pre-executewaterfall (deny) andagent.inject()(steering), the documented native extension points. No core changes, no monkey-patching.
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-stream-rules」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:jiesou/dsh-stream-rules Headless(CLI)profile:
dsh plugin --profile headless add github:jiesou/dsh-stream-rules 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。
使用场景
给 agent 一套记忆、知识库或检索层,让它不再跨会话丢上下文。
适合谁
跑长项目、想让 agent 记住决策、文档和偏好而不用每次重讲的人。
二次开发建议
记忆/检索后端是缝——插新存储、调蒸馏策略,或加引用与审计轨迹。