DeepSeek Harness Hub
← 返回列表

流式规则注入jiesou/dsh-stream-rules

DeepSeek Harnessspec-screenedmemory在 GitHub 查看 ↗
⚠ 装前注意

按需匹配注入规则,不占用系统上下文

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/8/21 · 已提供中文文档

模式匹配自动注入 steering rules,不占系统上下文 - Inject rules when needed, without wasting context. Similar to oh-my-pi's "Time-traveling stream rules", but with a very simple and compact code implementation.

综合分
32.9
GitHub 分
32.9
用户评分
★ Stars
4
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add jiesou/dsh-stream-rules
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/8/21(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包@jiesou/dsh-stream-rules(未发布到 npm,仅可源码安装)
Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 17:01:00

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-stream-rules

按需注入规则,不浪费上下文。

你可以为 agent 编写自定义的流式规则(streaming rules)。

规则只在模式匹配后作为一条 steering notice 注入,然后 agent 会从同一个位置重试。
这样你就能控制 agent 的行为边界,同时不浪费上下文。

由我的 jiesou/opencode-stream-rules 移植到 DSH。
与 oh-my-pi 的 "Time-traveling stream rules" 类似,但代码实现非常简单紧凑。

工作原理

当规则在某个工具调用(工具名 + 序列化后的参数)上 match 返回 true 时,该规则触发:

- 默认 — 通过 agent.inject() 向 agent 注入一条 SYSTEM NOTICE steering 消息(DSH 的"非唤醒"机制,为下一次 pre-step 排队模型可见上下文)。agent 会从同一位置重试,此时它已经知道了这条规则。
- reject: true — 拒绝第一次工具调用({ kind: 'deny' });之后的尝试会被放行。在不至于过度限制的前提下进行 steering,例如在容器内已经允许 pip install 通过时。

每条规则在每个会话(每个 agent)中最多触发一次,与原始版本的 notified 去重逻辑一致。

安装

从 npm 安装(预构建产物,推荐):

dsh plugin --profile  add @jiesou/dsh-stream-rules

或从 GitHub 安装(安装时会运行 prepare 构建):

dsh plugin --profile  add github:jiesou/dsh-stream-rules

或者在你 profile 的 cordis.patch.yml 中添加一行:

- id: stream-rules
name: '@jiesou/dsh-stream-rules'

安装之后

你需要自己编写 .js 规则文件。在编辑之前,这个插件默认不会做任何事。

1. 找到插件的路径:

$DSH_HOME/profiles//node_modules/@jiesou/dsh-stream-rules

$DSH_HOME 默认是 ~/.dsh。

2. 编写规则:

mv rules/rules.js.example rules/rules.local.js

- 以 _ 开头的文件会被跳过。
- 可以用 config.rules 指向其他规则目录:

- id: stream-rules
name: '@jiesou/dsh-stream-rules'
config:
rules: /path/to/your/rules

- 带 reject: true 的规则只在第一次工具调用时拒绝;之后 agent 重试会被放行。既做了引导又不过度限制(例如在容器里时允许 pip install)。

编写规则

// 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
]

| 字段     | 必填 | 说明                                                              |
| -------- | ---- | ----------------------------------------------------------------- |
| match  | ✅   | (v: string) => boolean;每次工具调用都会被扁平化为字符串并匹配 |
| prompt | ✅   | 用于 steering 的提示语                                           |
| reject |      | 若为 true,则先阻止第一次工具调用,而不仅仅是 steering         |

兼容性

声明在 package.json 的 dsh.compatibility:DSH >=0.1.0-rc.6 =24.0.0,Profile web / headless。

逐版本证据(每个版本都用 dsh plugin add  装进一次性 Profile):Profile 能组合并冷启动;再针对该版本的 tools/pre-execute waterfall 与 agent.inject() 直接验证工具调用钩子(steering 通知送达、reject: true 拒绝第一次调用并放行重试);最后卸载插件,Profile 仍能启动。

| DSH 版本 | 安装 | 启动 | 钩子 | 卸载 |
| --- | --- | --- | --- | --- |
| 0.1.5-alpha.1 | 通过 | 通过 | 通过 | 通过 |
| 0.1.5-alpha.2 | 通过 | 通过 | 通过 | 通过 |
| 0.1.5-rc.1 | 通过 | 通过 | 通过 | 通过 |

实现说明

- 单个 src/index.ts(约 60 行)。
- 使用 DSH 的 tools/pre-execute waterfall(deny)和 agent.inject()(steering),这些都是官方文档记载的原生扩展点。没有改动核心,没有 monkey-patching。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群