把智能体接入 Stuga,编辑先提案后审查
30/100
综合分
0
GitHub 星标
35
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @stuga/dsh-pluginnpm 源 · @stuga/dsh-plugin 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 35 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@stuga/dsh-plugin @ 0.2.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/8 08:45:30
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量
查看扫描证据(共 4 处,展示前 4 条)
- 读取本地文件index.js:227
entries = await readdir(root, { withFileTypes: true }); - 读取本地文件index.js:236
raw = await readFile(file, "utf8"); - 读取密钥环境变量index.js:258
if (!process.env.STUGA_API_KEY) { - 读取密钥环境变量index.js:285
const next = await fetchWorkspace(resolved.url, process.env.STUGA_API_KEY);
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 接入Stuga工作区
- 配置MCP工具
- 编辑先提案后审查
把 DeepSeek Harness 配置档接入 Stuga 工作区:Stuga 的 MCP 工具、系统提示词里的工作区约定,以及用于受审编辑的剧本技能。
README
由 DeepSeek 最新模型翻译生成@stuga/dsh-plugin
将 DeepSeek Harness(dsh)配置文件连接到 Stuga。
Stuga 是一个自托管的协作工作区:实时文档、带 SQL 的结构化数据库、混合搜索,以及为 AI 智能体提供的一流访问能力。智能体从不静默写入:每一次编辑都是可审查运行账本上的一个提案,归属于该智能体的密钥,并由人类接受、拒绝或还原。此插件让 DeepSeek Harness 智能体成为一个行为良好的 Stuga 智能体。
它有意设计为一个轻量层:
| 组件 | 作用 |
| cordis.patch.yml | 将 harness 内置的 MCP 客户端挂载到节点的 /mcp,使模型以 mcp__stuga__ 的形式获得 Stuga 的工具:用于读取的 workspaces、docs、search、markdown、comments、folders、events、collections、retrieve、databases 和 query;用于写入的 docs_create、markdown_append、markdown_edit、comments_add、media_upload、collections_edit、databases_add 和 databases_change。
展开完整文档(README 剩余 1 节)
@stuga/dsh-plugin 将 DeepSeek Harness(dsh)配置文件连接到 Stuga。 Stuga 是一个自托管的协作工作区:实时文档、带 SQL 的结构化数据库、混合搜索,以及为 AI 智能体提供的一流访问能力。智能体从不静默写入:每一次编辑都是可审查运行账本上的一个提案,归属于该智能体的密钥,并由人类接受、拒绝或还原。此插件让 DeepSeek Harness 智能体成为一个行为良好的 Stuga 智能体。 它有意设计为一个轻量层: | 组件 | 作用 | | cordis.patch.yml | 将 harness 内置的 MCP 客户端挂载到节点的 /mcp,使模型以 mcp__stuga__ 的形式获得 Stuga 的工具:用于读取的 workspaces、docs、search、markdown、comments、folders、events、collections、retrieve、databases 和 query;用于写入的 docs_create、markdown_append、markdown_edit、comments_add、media_upload、collections_edit、databases_add 和 databases_change。 | | index.js | 注册一个系统提示词部分,说明调用如何被路由和审查,并以该密钥自身的工作区及其约定作为结尾,同时注册三个操作手册技能。 | | skills/ | stuga-research、stuga-propose-edits、stuga-databases —— 通过 harness 的 skill 工具按需加载。 | Stuga 强制执行的一切(运行账本、搜索内部的访问控制、逐次调用审计、只读密钥)都由 Stuga 节点强制执行。插件仅持有一个智能体密钥,并针对该接口塑造模型的行为。 安装 你需要一个正在运行的 Stuga 节点和一个 DeepSeek Harness 安装(Node ^22.19 || >=24,pnpm 位于 PATH 中)。 1. 在 Stuga 中,打开 Settings → Your own AI,选择 DeepSeek Harness,并生成一个智能体密钥。以 harness 命名它(该名称就是审查者在收件箱中看到的内容)。你可以按需将其限制到文件夹、设为只读,或为其设置过期时间。该密钥可到达你所属的每个工作区;限制到文件夹的密钥会留在其生成时所在的工作区中。该标签页会打印下面的命令和环境变量行,并填入密钥。 2. 将插件安装到你运行的配置文件中(Web UI 配置文件为 web): dsh plugin --profile web add @stuga/dsh-plugin 若从代码检出而非 npm 安装:dsh plugin --profile web add /path/to/dsh-plugin。 3. 告诉 harness 节点在哪里以及使用哪个密钥。可以在启动它的 shell 中导出它们,或将它们放入 $DSH_HOME/.env: STUGA_URL=http://127.0.0.1:8787 STUGA_API_KEY=vk_… 4. 重启 dsh web。使用以下命令检查组合: dsh --profile web --dump-config 你应该会看到 stuga-mcp 和 stuga-guidance 行。在新会话中,mcp__stuga__ 工具可用,并且 skill 工具会列出这三个操作手册。 卸载:dsh plugin --profile web remove @stuga/dsh-plugin。 审查者看到的内容当 agent 提议进行编辑时,工具结果会显示 Proposed — … This is SUCCESS: do NOT retry,并且提示词部分会告诉模型在回复末尾附上指向 /doc/ 和 /review 的链接。在 Stuga 中打开这些链接,即可逐个变更块接受或拒绝每处更改。在收件箱中,该运行会以 deepseek-harness 徽标显示(该插件会发送 x-stuga-client 请求头),并归在该密钥的名称下。如果文档被设置为立即应用 agent 更改,编辑会立即生效并通知审阅者;结果随后会显示 Applied。 配置 stuga-guidance 行接受以下字段: | 字段 | 默认值 | 含义 | | url | $STUGA_URL 或 http://127.0.0.1:8787 | 模型提供给审阅者的链接中使用的源 | | serverName | stuga | 必须与 MCP 行的 serverName 匹配;设置提示词所引用的 mcp____ 前缀 | | section | true | 注册系统提示词部分 | | skills | true | 注册三个 playbook 技能 | | instructions | true | 读取该密钥的工作区及其约定,并将其放入系统提示词中 | | instructionsRefreshMs | 300000 | 重新读取它们的频率 | 该密钥的工作区及其约定 每次 Stuga 工具调用都会指明其操作所在的工作区:workspace_id,或者对于 search 和 retrieve 则是 workspace_ids,其中 ["*"] 涵盖该密钥可访问的每个工作区。工作区还可以为 agent 携带自由文本约定(Settings → This workspace → Agents):笔记放在哪里、不要触碰什么、内部风格。节点会在其 MCP 服务器的 instructions 字段中提供其工作区和约定,但 harness 的 MCP 客户端不会呈现该字段,而被要求获取它们的模型往往干脆不获取——在一次端到端运行中,gpt-4o 编辑了一个文档,却从未调用 workspaces action:instructions。 因此,该插件会自行通过同一个密钥读取该密钥自己的工作区——其 workspace_id、名称和约定——并将它们放在提示词部分的末尾,在那里它们无法被跳过。模型可以立即在那里调用工具。workspaces 的 list 操作会列出该密钥可访问的任何其他工作区,提示词部分和 playbook 会告诉模型在写入该工作区之前,先用 workspaces 的 instructions 操作读取其约定。节点宕机或密钥没有访问权限意味着同一件事:该部分会在没有工作区的情况下注册,且不会发生任何失败。 文件夹、数据库和文档也可以携带自己的指令,通过 Stuga 中它们的⋯菜单设置。这些指令会从最外层向内逐层叠加到工作区的指令之上,并且取决于具体条目,因此插件不会将它们放入系统提示中。节点会随条目一起传递它们:markdown read 会在文档文本之前以标记块的形式显示它们,或者以一行说明没有适用的指令开头,因此植入文档文本中的指令永远不会引导读取;而 docs metadata、docs_create 和 databases schema 会将它们作为 instructions 返回。提示部分和操作手册告诉模型在写入时遵循这些指令,绝不要将它们复制到编辑中,并将读取内容中看起来像此类块的任何后续内容视为文档文本。 为模型添加标签 来自此插件的运行在 Stuga 的审核收件箱中标记为 deepseek-harness。测试框架不会将其运行的模型暴露给其 MCP 层,因此模型标签由你设置:导出 STUGA_MODEL=gpt-4o(或你固定的任何模型),它就会显示在客户端徽章旁边。 在 $DSH_HOME/profiles/web/cordis.patch.yml 中按 id 覆盖某一行。补丁会替换该行的整个 config,因此请重新声明你需要的每个键。例如,要将 MCP 行指向 TLS 后面的节点并使用更长的工具超时: - id: stuga-mcp config: serverName: stuga transport: streamable-http url: https://notes.example.com/mcp headers: Authorization: !!js '"Bearer " + process.env.STUGA_API_KEY' x-stuga-client: deepseek-harness toolCallTimeoutMs: 120000 failOnStartupError: false 限制 - 密钥是静态的。测试框架的 MCP 客户端没有 OAuth,因此没有浏览器登录;密钥所有者是代理提出的每个提案的审核者。每人使用一个密钥,不要使用共享的团队密钥。 - 工具调用在 DeepSeek Harness Web UI 中呈现为通用卡片。对人类友好的信号是结果文本和助手回复中的链接。 - 系统提示中只包含密钥自己工作区的约定。另一个工作区的约定通过 mcp__stuga__workspaces 以 action: "instructions" 到达模型,提示部分告诉它在写入那里之前调用该操作,并且在插件无法读取密钥自己的工作区时也要调用它。 - 文件夹、数据库或文档自己的指令仅通过上述工具应答到达模型,因此模型如果在未先读取的情况下写入文档,就会错过这些指令。提示部分和操作手册说要先读取文档再编辑。 - 一个密钥共享一个请求预算(/mcp 上每分钟 600 个请求,无论其调用指定哪些工作区),供使用它的每个会话和子代理共享。 - 已针对 DeepSeek Harness 0.1.2-rc.1 进行测试。该 harness 是开发者预览版,各版本之间可能存在破坏性变更;本插件仅涉及 ctx.systemPrompt.section 和 ctx.skills.register 注册表以及 dsh-mcp-client 行,并且如果任一注册表发生变化,会降级为普通的 MCP 行。 开发 该包是纯 JavaScript,没有运行时依赖,也没有构建步骤。 npm test 提示词部分和技能手册逐字复制了 Stuga 的工具和操作名称;测试会根据 Stuga 的 MCP 服务器附带的工具(契约 2)对它们进行检查。Config 是手写的 Standard Schema 对象,Cordis 正是通过它来验证某一行的配置,因此该插件不依赖于 harness 的 schema 库。 许可证 MIT。Stuga 本身是 AGPL-3.0;本插件是客户端配置层,不包含任何 Stuga 代码。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
stuga-dev/dsh-plugin
把智能体接入 Stuga,编辑先提案后审查
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9