toby-bridges/api-relay-audit
toby-bridges/api-relay-audit从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
信任面板:把 dsh 信任插件族九个通道(注入拦截、写拒绝、出网拦截、custody 链校验、工具面/系统提示词漂移、残留扫描、压缩遗忘约束、profile 组成)聚合成右侧栏一块仪表盘——一个状态灯 + 事件卡片,把引擎术语翻译成非安全背景用户能看懂并知道要不要处理的句子;read/egress 引擎随包自带 npm 依赖,未装兄弟插件也能工作,缺失的通道仅显示未安装。
If this helps you, please give it a star — it helps others find it. Thanks!

One plain-language dashboard for the dsh trust family in your DeepSeek Harness (dsh) web sidebar: every interception, denial, drift and forgotten constraint across nine channels, translated into sentences a non-security user can read and act on. Zero LLM calls.
A status light, nine channel rows, and event cards — that's it:
Every event answers the same four questions in order: who, what they tried, what we did about it,
whether you must act. Engine jargon (INSTR_OVERRIDE, hash-chain digests, surface drift) stays in the
expandable detail; the headline is a sentence like:
Something the agent read tried to send your credentials somewhere. It was quarantined — the agent did not follow it.
A long conversation was summarized — the agent forgot 2 of your instructions. They were re-inserted automatically.
The tools available to your agent changed since the last checkpoint. 1 removed: janitor_scan.
A first-run intro card explains the light and the row semantics in one glance; it dismisses with one click and stays dismissed.
The panel follows the DSH i18n system: events travel from the host as translation keys +
params, the client renders them through its zh/en dictionaries with the host's locale service
(language switches live, browser language as fallback). A regression test pins the contract: every
key the host can produce must exist in both dictionaries.
State-like events (tool-surface / prompt / composition drift) carry a content-derived stable id: acknowledging one sticks across polling, and a genuinely new drift arrives as a genuinely new card.
| Channel | Source | What it watches |
|---|---|---|
| What the agent reads | dsh-read-guard | prompt injection in files and fetches |
| What the agent changes | dsh-pr-gate | writes outside the promised scope |
| The activity record | dsh-attest-chain | tampering with the custody ledger (verified live) |
| The tools it can use | dsh-mcp-test | registry drift vs baseline |
| Leftovers in your workspace | dsh-janitor | scan verdicts |
| Where data is sent | dsh-egress-gate | destinations outside the allow list |
| The instructions it starts with | dsh-prompt-drift | system-prompt changes |
| The plugins that are loaded | dsh-freeze | profile composition |
| What it remembers | dsh-compaction-guard | constraints lost to compaction |
Channels report not installed when their plugin/data source is absent — the panel degrades
gracefully and still works standalone: the read/egress engines run from the panel's own
npm dependencies, so injection and egress events appear even without the sibling plugins.
dsh plugin --profile web add dsh-trust-panel
Configuration (in cordis.yml): eventsPath (panel event log), maxEvents, and the
allow/deny domain lists used by the built-in egress mirror.
translate.ts; the mapping is unit-tested, so a rule rename cannot silently regress the wording./trust-panel/api/summary every 5 s; a WebSocket upgrade can come later without changing the model.window.__ModuleLoader__ module table (react arrives via that table's require, not a bundler). This package authors its client directly in that format and ships it unbuilt; a rolldown build is unnecessary at this size. Undocumented upstream, learned the hard way.sidebarRight controller opens it; the panel calls openTab once per session so the light is visible out of the box.If the family's engines change their ledger formats in incompatible ways and the sync cannot be maintained, this panel should be retired rather than show stale or wrong translations — a trust UI that lies is worse than none.
/trust-panel/api/summary responds with
live aggregation (including a true-positive tool-surface drift detection during the
verification boot), Chinese rendering verified in-browser, acknowledge flow verified
across poll cycles by browser automation.MIT