reins | DSH Plugin

DSH PLUGIN工具与能力

仓库 0x5446/reins

工具与能力 未标注验证等级 安全审查:未标注 可信度:未标注 可安装插件
安装这个插件

Native iOS client for DeepSeek Harness (dsh). Answer your agent from your phone — the relay only ever sees ciphertext.

一句话选型结论

按资料字段整理

reins | DSH Plugin 是工具与能力类的 DSH 可安装插件,未做沙盒验证,暂无安全审查结论,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类工具与能力 收录类型可安装插件 验证等级未标注验证等级 安全审查未标注
验证等级 UNKNOWN 未标注验证等级
GitHub 星标 未标注 复刻 未标注 · 未关闭 issue 未标注
最近更新 未标注 创建于 未标注
README 13.0 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:0x5446/reins
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

验证等级与安全审查

未标注验证等级
自动化流程结论,不是人工审核
验证等级未标注验证等级上游未给出验证结论,安装前请自行确认
安全审查未标注静态分析结论,未标注不代表已通过审查
仓库健康度未标注按仓库活跃度与最近更新时间给出
可信度未标注综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 安全审查还没结论,装之前先看仓库改了什么、要什么权限。
  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在工具与能力场景里给 DSH 补能力的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
reins | DSH Plugin当前 未做沙盒验证 未标注 未标注 未标注 有
huashu-design 未做沙盒验证 未标注 3.0 万 未标注 有
loopx 未做沙盒验证 未标注 6,233 未标注 无
agy-staff 未做沙盒验证 未标注 870 未标注 有
dsh-startup-screen 未做沙盒验证 未标注 633 未标注 有
minara-skills L4 · 沙盒安装通过 中风险 360 未标注 有

仓库档案

工具与能力
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方0x5446仓库 reins · 默认分支 未标注
分类工具与能力本站分类
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证未标注商用或二次分发前请确认条款原文
星标 / 复刻 / issue未标注 / 未标注 / 未标注收录时的数值,非实时
创建 / 更新未标注 · 未标注最后推送 未标注
本站收录2026-10-30首次进入本站目录的时间

README 全文

13.0 KB
作者原文,中文版优先;只做安全转义,不改内容

Rowel

The iPhone app for the DeepSeek Harness.
Your agent is waiting on you — answer from anywhere.

When dsh stops to ask permission, your phone buzzes, you see the command
or diff it wants to run, and one tap unblocks the Mac. Read what the agent
did, answer the question it is blocked on, start the next thing from a train.
End to end encrypted; the relay cannot read your traffic.

rowel.novabox.ai ·
Join the TestFlight ·
MIT, all of it: the app, Bridle, the relay, the protocol.

> Built for dsh only. Rowel speaks the DeepSeek Harness API — sessions,
> approvals, models, skills. It is not a remote for Claude Code, Codex, Cursor
> or other agents. The harness itself runs many models (DeepSeek, GLM, Qwen and
> more), and Rowel lets you pick between them.

Piece What it is Where it runs
Rowel the iOS app your iPhone
Bridle a companion process that speaks for the harness the Mac running dsh
Relay a content-blind switchboard the public internet — ours, or yours
iPhone                  internet                   your Mac
┌────────┐          ┌──────────┐          ┌──────────────────┐
│ Rowel  │◄──wss───►│  Relay    │◄──wss───►│ Bridle ──► dsh  │
└────────┘  sealed  └──────────┘  sealed  └──────────────────┘
└────────── Noise_IK_25519_ChaChaPoly_SHA256 ─────────┘

Bridle dials out. No port forwarding, no public IP, nothing to change on your
router.
When the phone and the Mac are on the same network the app tries the
Mac directly and dials the relay a quarter of a second later; the local path
normally wins, and then the relay never carries the session.

There are no accounts. Pairing is a QR code in your terminal.

Where this is

The Mac side is finished and in daily use. The relay is deployed. Rowel 1.1
needs dsh 0.2 or newer
— dsh 0.2 replaced its whole API, and the app and Bridle
now speak it directly. The app is on
TestFlight until it clears App Store
review. You can also build it yourself with Xcode, which is free but comes with
a seven-day catch.

Still on dsh 0.1? Bridle 0.1.x and app 1.0 go on working with it; install with
ROWEL_REF=v0.1.7. Moving to dsh 0.2 is one-way — read
Upgrading from dsh 0.1 first.

Getting it running

1. Install Bridle on the Mac

curl -fsSL https://rowel.novabox.ai/install | sh

Needs Node 22+ and git — the script installs neither; it stops and tells you
what is missing — and dsh 0.2, which it checks for and warns about. Everything it installs lives in ~/.rowel, plus one symlink onto
your PATH (and npm's usual cache). It is 144 lines, over a third of them
comments, if you would rather read it before running it.

2. Pair

bridle pair

It starts Bridle if none is running, prints a QR code, and stays running. In
the app, tap Connect a Mac, then I've run it — scan the code. With Bridle
already running (a service, or dsh's plugin), it just prints a fresh code.
--code does the same, for typing instead of scanning.

If dsh is already running — started by hand, or kept up by a login item —
Bridle cannot sign in to it from outside: dsh 0.2 hands its sign-in token only
to its own plugins. Run Bridle inside it instead, then restart dsh:

bridle plugin install

bridle status says which of the two you have, and bridle doctor says what
to do when it is neither. Left to itself, with no dsh running, Bridle starts one
and signs in with the token it prints.

Over SSH, where a terminal may not draw a QR code, add --link to print the raw
pairing link. When the camera is not an option, bridle pair --code prints an
8-character code to type instead and waits: the Mac then shows the phone's key
and asks you to accept it, and you check it against the key the phone shows.
SECURITY.md says why that step exists.

3. Keep it running

bridle service install

Starts after login and survives closing the terminal. bridle service uninstall
takes it back off.

The bridle command

bridle                    start (and pair, on the first run)
bridle pair               a pairing QR, starting bridle if none runs (--code: a code to type)
bridle status             machine, relay, harness, paired devices
bridle devices            list paired devices
bridle revoke     remove one
bridle backup       save this machine's identity, encrypted
bridle restore      put a saved identity back
bridle service install    keep it running after login
bridle plugin install     run bridle inside dsh instead (how it signs in to a dsh already running)
bridle doctor             check this machine's setup

Useful flags on bridle itself:

--relay        a different relay (default: the public one)
--dsh          the harness, if it is not on a usual port
--advertise    an extra address to put in the pairing code — a tunnel
hostname the machine cannot discover for itself. LAN and
Tailscale addresses are found automatically.
--direct-port    fix the local-network port
--no-direct         do not listen on the local network at all
--no-auto-start     never launch the harness
--link              also print the raw pairing link

State lives in ~/.rowel/bridle.json, mode 0600, and it holds this machine's
private key. ROWEL_HOME moves it.

Two harnesses on one Mac

One Bridle serves one dsh. Left to itself it probes the usual ports (3080–3083,
8080, 8791) and stays with whichever dsh answered last time — fine with one
harness, a coin toss with two. --dsh ends the guessing:

bridle --dsh http://127.0.0.1:3081

If nothing answers there, Bridle starts a harness on that exact port — the
startup line says (started by bridle) when it did. --no-auto-start makes it
refuse instead.

Only one Bridle may run per identity; a second start stops and names the first.
So to move your existing pairing to a different port, stop the running Bridle
and start it again with --dsh. To serve a second harness alongside the
first, give it an identity of its own:

ROWEL_HOME=~/.rowel-3081 bridle --dsh http://127.0.0.1:3081

Its first run prints its own QR code, and the app shows a second machine —
same name, told apart by a fingerprint suffix. bridle pair needs none of
this: it starts nothing, so it runs happily beside a Bridle that is already up.

Upgrading from dsh 0.1

dsh 0.2 rewrites ~/.dsh the first time it starts — settings.yaml becomes
settings.yaml.imported and its sections move into the profile — and dsh 0.1
cannot read the conversations 0.2 writes. So:

  1. Back up ~/.dsh whole before upgrading. Going back means restoring that
    copy and reinstalling @deepseek-ai/dsh@0.1.1-rc.2, not just downgrading.
  2. Upgrade dsh, Bridle (curl -fsSL https://rowel.novabox.ai/install | sh), and
    the app to 1.1 together. App 1.0 cannot talk to Bridle 0.2, and Bridle 0.2
    cannot talk to dsh 0.1.
  3. If your models came from a gateway — Command Code, OpenRouter, anything
    configured under llm-pi-ai — they are gone after the upgrade: dsh 0.2's
    default profile does not load that adapter, and the import drops the
    section. Put it back in ~/.dsh/profiles/web/cordis.patch.yml, copying the
    providers block (and your default model) from settings.yaml.imported:
- insert:
- id: llm-pi-ai
name: '@deepseek-ai/dsh-llm-pi-ai'
config:
providers:
commandcode:           # as it was under llm-pi-ai.providers
apiKeyEnv: COMMANDCODE_API_KEY
api: openai-completions
baseURL: https://api.commandcode.ai/provider/v1
# … its models list, unchanged

- id: agent-default-model
config:
provider: commandcode
model: deepseek/deepseek-v4.1-flash

Then restart dsh. Keys stay where they were: routes name them by
environment variable.
4. If Bridle ran as dsh's plugin before, it still does; otherwise run
bridle plugin install and restart dsh (see Pair).

What it is protecting, and what it is not

The relay switches sealed frames between two sockets by circuit number. It has no
key material and cannot open them, which is a property of the shape rather than a
promise about anyone's conduct — an end-to-end test taps the phone's traffic
through the relay and fails if a method name, a session id, the machine's name or
a conversation title ever appears in it. (The relay does learn the machine's
display name from Bridle's own registration; SECURITY.md lists everything it
learns.) Both
implementations of the tunnel use only their platform's own primitives, Node's
node:crypto and Swift's CryptoKit. There is no third-party cryptography
dependency in the tree.

The part people underestimate: dsh asks a browser for nothing more than the
token it printed, and Bridle holds that sign-in, so a paired phone has the same
authority over that Mac as its own terminal — it can
run commands and read and write files. bridle revoke is the only way to take
that back. Nothing in the app is a smaller permission than that; the app just
draws fewer buttons.

SECURITY.md is the full threat model, including what the relay
does learn, what an unlocked phone means, and the known weaknesses. It is worth
reading before you pair anything you care about.

Building from source

npm install
npm test               # build, docs check, unit tests. Seconds.
npm run test:e2e       # the whole stack; ROWEL_E2E_DSH_BIN= for the parts that need dsh,
# ROWEL_E2E_MODEL=1 for the few that spend model turns
npm run test:ios       # needs Xcode and `brew install xcodegen`
npm run vectors        # regenerate the cross-language test vectors
protocol/      Noise, frames, pairing, relay wire format (TypeScript)
bridle/        the companion process and its CLI
dsh-plugin/    the same core, mounted inside the harness instead of beside it
relay/         the Node relay
relay-worker/  the same relay on Cloudflare Workers and Durable Objects
e2e/           tests that span all three
ios/           the app (Swift, SwiftUI, XcodeGen)

How two implementations stay one protocol

The Noise handshake and the frame encoding are written twice, in TypeScript and
in Swift. "My server talks to my client" proves nothing when both are mine, so
npm run vectors runs the handshake with fixed keys and fixed ephemerals and
writes a deterministic fixture; the Swift side compares byte for byte — handshake
messages, the handshake hash, the confirmation number, transport ciphertext, the
pairing link, frame encoding.

A failure there is a protocol fork, not a flaky test. It has already caught one:
Foundation's JSONEncoder does not guarantee key order, which both ends were
happy to parse and no amount of talking to myself would have found.

Running your own relay

bridle --relay wss://your.host is the whole client side. relay/ is a single
Node process with no database and no configuration file; relay-worker/ is the
same switchboard on Cloudflare Workers, which is what the public one runs on.
docs/deployment.md has the DNS and TLS details.

Documentation

docs/ is in Chinese — it was written for the person maintaining this, and
translating it is a bigger job than keeping it correct. English readers are not
locked out of the parts that matter: SECURITY.md covers the threat
model, CONTRIBUTING.md covers the build and the rules, and the
code comments and commit messages are English throughout.

docs/architecture.md why it is shaped this way, where a new feature goes
docs/protocol.md the exact bytes on the wire, enough to write a third client
docs/fold.md how an event log becomes a screen, rule by rule
docs/dsh-api-inventory.md the dsh 0.2 endpoints and streams the app uses, and where
docs/deployment.md running the relay, DNS, and what shipping still needs

docs/README.md says which sections are specification-grade
and which are design-grade. Ask before reimplementing from a design-grade one.

Licence

MIT. See LICENSE.

常见问题

4 问
答案由本站依据条目字段整理,不引用上游原文
reins 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:0x5446/reins` 即可。

reins 的验证等级是什么意思?

未标注验证等级。上游未给出验证结论,安装前请自行确认

reins 安全吗?

未标注。

reins 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

工具与能力
按星标排序,可作替代方案

huashu-design

huashu-design

在 DeepSeek Harness 里说一句话,就能拿回可交付的设计:网页、App 原型、可编辑 PPTX、动画与信息图,自带 84 种风

未标注验证等级 3.0 万 星

loopx

loopx

LoopX 是面向长周期 Agent 的本地优先控制平面,作为 DSH plugin 为 DeepSeek Harness 提供持久目标、证

未标注验证等级 6,233 星

agy-staff

agy-staff

把 Google Antigravity CLI 作为快速 Gemini 员工接入 DSH,提供子代理侧边栏、编排模式与多种角色技能。

未标注验证等级 870 星

dsh-startup-screen

dsh-startup-screen

DeepSeek Harness 的启动界面与启动动画插件。

未标注验证等级 633 星

dsh-blender-plugin

dsh-blender-plugin

让 AI 模型通过直连 TCP 通道实时驱动 Blender 的 DSH plugin:15 个工具覆盖视口取帧、任意角度渲染、内循环搜索、

未标注验证等级 211 星

0x5446 的其它插件

1 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。