Emilia-awa/hermes-dsh-bridge
hermes-dsh-bridge
Hermes ↔ DeepSeek Harness MCP bridge: drive dsh agents (tasks, sessions, files, presets, stats) from any MCP client. Hermes = brain, Harness = arms.
Install
npx @deepseek-ai/dsh plugin --profile web add github:Emilia-awa/hermes-dsh-bridgeRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/hermes-dsh-bridge)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from Emilia-awa/hermes-dsh-bridge, cleaned of badges and images.
hermes-dsh-bridge
专门桥接 Hermes ↔ DeepSeek Harness 的 MCP 插件:在 Harness 内部启动一个 MCP server,让外部 MCP 客户端(如 Hermes)驱动 Harness 的 Agent 执行真实编码任务。
Hermes 是大脑,Harness 是双手。
为什么存在
Harness 自带强大的 Agent 运行时(工具、LLM、Agent、会话),但它是 Cordis 应用,别的 Agent 调不动它。这个插件把 Harness 翻了个面:在 Harness 内部启动一个真正的 MCP server(StreamableHTTP),桥接 Harness 核心服务(ctx.agents / ctx.agentPresets / ctx.tools),让外部"大脑"把真正的活派给 Harness 的"双手"。
Hermes (MCP client, 大脑)
│ agent_run / task_inbox / fs_read / session_stats ... (HTTP)
▼
harness-mcp-server (MCP server, :8090)
│ ctx.agents.create → mount 'standard' preset
▼
Harness agent — 完整工具集: bash, fs, todo, web…
工具(25 个)
任务
| 工具 | 方向 | 用途 |
|---|---|---|
agent_run | → Harness | 同步执行任务;返回结构化结果 + 本轮 stats 统计;可选 preset 单次覆盖预设、sandbox 单次覆盖权限三档;需要提档审批时会挂起等审(见"权限三档与审批桥") |
task_inbox | → Harness | 推结构化任务(任务+记忆上下文+cwd+可选 preset/sandbox)进异步队列;审批转接的主路径:挂起等审期间轮询 approval_list → approval_respond 即续跑 |
task_result | ← Harness | 取回队列任务的结构化结果 |
task_list | ← Harness | 异步任务队列快照(id/status/createdAt/error) |
task_cancel | → | 取消队列任务:queued 直接移除;running 尽力中止(agent.cancel,结果丢弃、会话保留可续接) |
会话
| 工具 | 方向 | 用途 |
|---|---|---|
session_list | ← | 列会话(live+持久化合并),每行带 token/LLM 用时摘要 |
session_log | ← | 读会话事件日志(已剥离 reasoning),tail N 条、按类型过滤 |
session_stats | ← | 会话统计:rounds/steps/llmTime/toolTime/ttft/tokensPerSec/cacheHitRate/inputTokens/outputTokens |
session_search | ← | 跨会话搜索:标题匹配 + 内容搜索(持久化事件,单会话 2s 超时跳过),正则可选 |
rename_session | ← | 会话改名(便于归档区分) |
attach_session | ← | 会话归组到工作区 |
文件(受 path jail 约束)
| 工具 | 方向 | 用途 |
|---|---|---|
fs_read | ← | 读文本文件(行号分页;路径 jail + 敏感名黑名单) |
fs_list | ← | 列目录(递归 depth 层,敏感项自动隐藏) |
fs_stat | ← | 文件/目录元数据 |
fs_write | → | 写文件(overwrite/append/create-new)——opt-in(enableFsWrite: true 才注册),仅限 workspaceRoots |
预设
| 工具 | 方向 | 用途 |
|---|---|---|
preset_list | ← | 列出可用 agent preset + 默认 |
preset_get | ← | 查询会话实际生效的 preset(或默认) |
preset_set | → | 切换默认 preset(scope=new-default)或空白会话的 preset(scope=session) |
元
| 工具 | 方向 | 用途 |
|---|---|---|
echo | — | 验证 MCP 连通 |
harness_list_tools | — | 列出 Harness 内部注册的工具名 |
权限与审批
| 工具 | 方向 | 用途 |
|---|---|---|
policy_get | ← | 查询会话生效策略:{sessionId, sandboxMode, source: override|default, workspaceRoot, approvalPolicy};无参返回部署默认 |
set_policy | → | 切换 live 会话 的文件权限档(追加 sandbox/mode 事件,下一次受限调用生效,重启靠 replay 保持);冷会话需先 resume 再切 |
approval_list | ← | 列出挂起审批(沙箱提档 escalation 等):[{approvalId, sessionId, toolName, callId?, reason?, requestedAt, waitedMs}] + bridge 形态/超时配置 |
approval_respond | → | 回答挂起审批:allowed-once(仅本次放行)/rejected;与 Web UI 双通道先答者胜,败者回 receipt=not-pending |
状态与配置
| 工具 | 方向 | 用途 |
|---|---|---|
status_get | ← | 版本/uptime/provider/model/preset/live agents/队列深度 + sandboxPolicy{defaultMode,bridge,pendingApprovals} |
config_get | ← | 运行时配置摘要(authToken 打码为 ***)+ defaultSandbox/approvalsBridge/approvalTimeoutMs |
结构化结果与统计
每次 agent_run 返回结构化结果,并附带本轮用量统计:
…
