# 安全 中文 | [English](SAFETY.en.md) ## 实验性状态 本插件是实验性的开发者预览软件,尚未接受安全审计,不得视为安全或可用于生产环境的软件。 它本身只是一个连接管理器,但**它注册给智能体的工具,是真实 IDE 的工具**——那些工具能改文件、跑命令、连数据库、开调试器。 ## 这个插件把什么交给了模型 `dsh-mcp-jetbrains` 不自己实现能力,它把你 IDE 内置 MCP Server 暴露的工具原样注册给 DSH 的智能体。以实测的 IntelliJ IDEA 2026.2.3 为例,一次连接会暴露 **66 个工具**,其中包含但不限于: | 工具 | 能做的事 | |---|---| | `execute_terminal_command` | 在 IDE 终端里执行命令 | | `execute_sql_query` / `create_database_connection` | 连到 IDE 里已配好的数据源执行 SQL、改连接 | | `apply_patch` / `create_new_file` / `read_file` | 读改项目内文件 | | `execute_run_configuration` | 执行 Run Configuration(等于跑你的启动脚本) | | `xdebug_start_debugger_session` / `xdebug_set_variable` | 启动调试、读写运行时变量 | | `build_project` / `run_inspection_kts` | 构建、执行自定义 inspection 脚本(Kotlin) | 换言之:**接了 IDE 的 MCP,等于把 IDE 能做的事交给了模型**,而 IDE 能执行任意命令。 ## 因此存在的风险 错误的模型输出、提示注入、缺陷、配置错误或恶意输入,可能导致: - 在项目中执行任意命令(含删除、外发数据); - 读写你打开的项目文件,包括尚未提交的改动; - 对你 IDE 里配置的**生产数据库**执行写操作; - 通过构建脚本、Run Configuration、inspection 脚本间接执行代码; - 泄露代码、凭据、连接串等模型看到的内容。 ## 这个插件自己做了哪些限制 | 限制 | 说明 | |---|---| | 路由鉴权 | 设置页的所有 HTTP 路由走 DSH 自己的浏览器信任;无 cookie 一律 `401`,不泄露配置内容 | | 路径边界 | 走 IDE 的文件操作被 IDE 自身限制在项目目录内,越界被拒 | | 绝不静默回落 | 开启「读写走 IDE」后,无法路由时必须明确失败并给出解法,不会偷偷写到磁盘 | | 没有连接时先问你 | 开关可以开着但没有可用连接:第一次文件操作会先提问(粘贴 IDE 配置 / 让这次不代执行 / 取消)。选「不代执行」时插件**不写任何东西**,只把路径选择明确交回给模型,避免「以为走了 IDE、其实读了磁盘」 | | `edit` 预算 | 多次命中时逐条报候选行号,上下文不足即失败;单次 `edit` 累计读取上限 200 行,`apply_patch` 最多 2 次 | | 自动动作留痕 | 自动重连、诊断、自纠等动作写入 `diagnostics`(最近 50 条),事后可追「它为什么这么做」 | | 重连冷却 | 同一条连接 60 秒内不得再次自动重挂,避免风暴 | ## 这些限制不覆盖什么 - **终端与 SQL 工具不受「读写走 IDE」约束**:那个开关只拦 `read` / `write` / `edit`。 - **shell 删除不受约束**:若模型用 `Remove-Item` / `rm`,IDE 不知情,Local History 也救不了。 - **没有操作系统级隔离**:MCP Server 以你 IDE 的同一用户身份运行,不是沙箱。 - **不校验模型意图、不做内容过滤**:插件只负责连接与路由。 - **读到的是 IDE 缓冲区**:可能包含你尚未保存的内容。 ## 数据与联网 - **不含遥测**:源码里没有上报、统计或第三方接口调用。 - **唯一的出站连接是你自己配置的 MCP 地址**(健康探测的 TCP 拨号与会话请求)。不发往任何第三方。 - 配置保存在本机 `$DSH_HOME/storages/dsh-mcp-jetbrains.connections.json`。 ## 负责任地使用 - 只连接**你有权访问**的 IDE 与项目。 - 优先在一次性虚拟机、容器或专用环境中试用。 - 从**最小权限**开始:先关着「读写走 IDE」,确认诊断类工具够用再放开写。 - **不要**把这个插件接到生产数据库上,除非你接受它被模型写入的风险。 - 备份本项目可访问的文件;重要改动保证有版本控制兜底。 - 在放行前检查连接配置(地址、`serverName`、`projectPath`)与 IDE 侧 MCP Server 的工具暴露设置。 ## 合法用途与禁止用途 本项目用于**把你自己(或你被授权使用的)开发环境**接到 DSH 的智能体上,以便读取诊断信息、构建结果与项目文件。 明确不支持、也不得用于:未经授权访问他人计算机或数据、规避软件许可与授权机制、破解或绕过访问控制、以及任何违反所在地法律或你所使用的 IDE 许可协议的行为。 作者不对使用者的用途负责;使用者需自行确认其使用方式合法合规。 ## 不提供保证,不承担责任 请在充分了解相关风险的前提下使用本插件。本软件依照 [MIT License](LICENSE) 提供,不附带任何保证。在适用法律允许的最大范围内,对于使用本项目造成的计算机损坏、数据丢失或泄露、文件丢失或其他损害,作者和版权持有人不承担责任。 安全问题请通过仓库的 Issue 报告;涉及可利用细节的,请在报告时注明,作者会优先处理。