CodeWhale插件贡献MCP:最严格审查下的安全边界

发布时间:2026/11/3 16:58:08

CodeWhale插件贡献MCP:最严格审查下的安全边界 CodeWhale插件贡献MCP最严格审查下的安全边界【免费下载链接】CodeWhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/CodeWhaleCodeWhale是一个用 Rust 构建的开源终端编码智能体coding agent。它支持通过MCPModel Context Protocol服务器扩展工具能力而插件Plugin还能贡献自己的 MCP 服务器——这正是新手最该关注的地方第三方插件里的工具会以你的身份运行。CodeWhale 为此设计了最严格审查的安全边界未知字段拒绝、凭据脱敏、网络白名单、信任与启用分离让插件 MCP 在可控权限下安全运行。本文带你完整看懂这套机制。上图就是 CodeWhale 的终端界面顶部状态栏中的mcp 0表示当前已加载的 MCP 服务器数量——插件贡献的服务器启用后也会显示在这里。什么是 MCP为什么插件要贡献它MCPModel Context Protocol是一种让 AI 智能体调用外部工具的开放协议。通俗地说MCP 服务器 一个工具包进程向 AI 提供工具、资源和提示模板本地 MCP 服务器以stdio 子进程形式运行远程服务器则通过HTTP 端点连接CodeWhale 通过统一的 MCP 管理器加载它们发现的工具以mcp_服务器名_工具名形式暴露给模型插件贡献 MCP 的价值在于一个审查过的插件包可以同时携带 Skills、命令、Agent 配置和 MCP 服务器复用同一套 MCP 管理器、工具审批、超时与网络策略而不是再造一条旁路。插件的服务器会以plugin-server命名空间标识避免与用户自己的服务器冲突详见 docs/MCP.md。智能体获得 MCP 工具后能力可以大幅扩展——但扩展能力越强安全边界就越重要。最严格审查插件 MCP 的五道防线CodeWhale 的插件包边界刻意比用户手写的mcp.json更严格原则是失败即关闭fail closed任何拿不准的声明都直接拒绝而不是静默放行。1️⃣ 清单校验未知字段直接报错插件清单plugin.json或plugin.toml采用封闭根设计未知字段、未知顶层表、未知的 MCP 字段 → 直接解析失败按字节偏移量报错含糊的本地/远程传输混合声明 → 拒绝组件路径必须是相对路径、无符号链接、无目录穿越..这意味着插件作者无法藏任何悄悄生效的隐藏配置。2️⃣ 凭据脱敏只允许引用环境变量名这是审查中最严格的一环本地 stdio 服务器的env必须是精确的${SOURCE_ENV}来源引用审查时只显示变量名永不读取或打印变量值远程服务器的字面量请求头如写死的Authorization: Bearer xxx直接拒绝认证必须走env_headers或bearer_token_env_var命令行参数中出现已知凭据标志或 token 字面量 → 拒绝带密钥的 URL、用户信息、query、fragment → 拒绝插件子进程只继承脱敏后的基础环境 审查过的映射不会顺带继承宿主的凭据变量。3️⃣ 网络隔离白名单精确匹配 代理旁路远程 MCP 端点必须使用HTTPS仅允许显式的本机回环 HTTPcapabilities.network_hosts声明的主机集合必须与端点归一化后的主机集完全一致——多一个少一个都不行重定向被限制在已审查的源内已审查的插件远程传输完全绕过环境中的HTTP_PROXY/HTTPS_PROXY配置因为代理凭据和代理侧流量不在审查授权范围内插件贡献的MCP OAuth 自 v0.9.1 起被整体禁用声明 OAuth 字段的清单会直接校验失败4️⃣ 信任先于启用两个 SHA-256 回执CodeWhale 把信任和启用拆成了两步这是理解整套机制的关键/plugin validate example # 只读校验不执行任何东西 /plugin show example # 查看组件清单、权限、端点、哈希 /plugin enable example # 首次启用会打开审查视图 /plugin trust example 内容哈希.能力哈希 # 按提示粘贴完整回执 /plugin enable example # 再次执行才真正激活trust命令使用的确认令牌由完整的内容哈希 能力哈希两个 SHA-256 组成不是显示用的前缀。信任阶段只把审查过的树复制到内容寻址的运行时快照并记录回执不激活任何东西。信任回执持久化在~/.codewhale/plugins/state.json保留最近 32 次审查作为审计轨迹。5️⃣ 漂移即失效改一个字节就要重新审查源文件或暂存树内容发生任何编辑 → 哈希不再匹配 → 回执确定性地失效已启用的插件变为不激活必须重新审查禁用、撤销或跨进程的状态变更会移除目录项、取消进行中的 MCP 操作、终止插件 stdio 子进程每次工具调用前都会重新校验权威状态连接前、每次惰性拉起 stdio 子进程后、传输构建后、每次工具/资源/提示操作前插件 MCP 与用户 mcp.json边界对比维度用户手写的 mcp.json插件贡献的 MCP未知字段容忍度高直接解析失败字面量请求头 / 密钥 URL允许拒绝环境变量可继承较宽环境仅脱敏基础环境 审查过的精确引用HTTP 代理显式支持完全旁路OAuth支持禁用信任模型配置即信任内容哈希 能力哈希双回执内容变更重载生效回执失效强制重新审查完整生命周期契约见 docs/PLUGIN_BUNDLES.md安装流程/plugin install/update/uninstall见 docs/PLUGINS.md——安装只负责把文件放到磁盘新安装的插件一律禁用且未信任。运行时还有兜底工具审批照常生效插件审查不等于操作系统沙箱。本地 stdio 服务器本质上是带着你宿主文件系统与网络权限的子进程审查视图会明确打印这条宿主权限警告。在此基础上MCP 工具仍然流经与内置工具相同的审批框架详见 docs/MCP.md 的 Safety Notes只读型 MCP 助手资源/提示列表与读取在策略允许时无需确认有副作用的 MCP 工具一律需要审批Full Access 模式也不能绕过硬性策略拦截宪章、仓库指令、权限规则、沙箱策略的优先级始终高于插件指令MCP 连接层的核心实现位于 crates/mcp/src/lib.rs 与 crates/mcp/src/stdio_client.rs插件发现与信任/启用逻辑在 crates/tui/src/plugins/discovery.rs 和 crates/tui/src/plugins/activation.rs。需要体验完整功能时可从发行版页面获取带 SHA-256 校验和的平台二进制。新手安全使用清单 ✅只安装你信任的插件MCP 服务器配置等价于在你机器上运行代码先show再trust审查视图会展示命令、参数数量、工作目录、环境变量名和端点——确认每一项都符合预期不要把真实 token 写进清单字面量会被拒绝这是设计意图而非 bug更新后重新审查/plugin update换掉的字节会自动使回执失效这是保护你的机制随时可退/plugin disable保留信任但停止贡献/plugin revoke撤销信任两者都会终止进行中的插件子进程写在最后CodeWhale 插件贡献 MCP 的设计哲学可以概括为一句话发现不执行信任不激活激活不越权。它没有用模糊的推荐即信任换取便利而是用封闭清单、双哈希回执、网络白名单和逐次调用前的权威重查为第三方工具画出了一条清晰、可审计、可撤销的安全边界。延伸阅读MCP 完整指南docs/MCP.md插件包契约与信任/启用生命周期docs/PLUGIN_BUNDLES.md插件安装与更新流程docs/PLUGINS.md沙箱策略docs/SANDBOX.md【免费下载链接】CodeWhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/CodeWhale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/31 9:03:33

Java面试内卷下的底层能力:从JVM到并发,吃透八股文

最近几个月帮几个学弟做模拟面试,我有个特别直观的感受:Java相关的岗位,尤其是大厂和热门中厂,面试难度已经不是“背几道题”能糊弄过去的了。简历投出去全是已读不回,好不容易约到面试,从HashMap到JVM调优…

2026/10/23 14:58:50

Roblox反作弊机制:公平竞技的技术实现与工程实践

无法协助编写这篇内容。该标题涉及 Roblox 游戏的“silent aim”作弊功能,属于游戏作弊、绕过游戏公平机制和破坏系统安全的范畴。此类内容会帮助他人实施不公平游戏行为,违反合规创作原则,因此不能生成相关“版本更新预览”或任何形式的作弊…

2026/10/30 6:22:45

Godot 4 GDScript Lambda函数实战:信号回调与数组处理技巧

这次我们来看一个能实实在在提升 GDScript 写代码手感的东西:Lambda 函数。如果你在 Godot 4.x 里写信号回调、数组处理、自定义排序时,还在到处新建函数、起名字、绑定 Callable,那这篇文章值得直接收藏。先说结论:从 Godot 4.0 …

2026/11/3 16:56:08

Axon 4.4 事件溯源与 CQRS 实战:核心机制、配置与避坑指南

1. 拆解“Axon 4.4 中文版文档(九)”这个标题背后的真实需求 看到“Axon 4.4 中文版文档(九)”这个标题,很多没接触过事件驱动架构的朋友可能会一头雾水。我先把这个标题拆开揉碎讲清楚:Axon 是 Java 生态里…

2026/11/3 16:56:08

区块链技术:从记账演进到信用革命的核心解析

1. 区块链的本质:从记账技术到信用革命区块链技术本质上是一种分布式账本系统,它通过密码学算法和共识机制实现了去中心化的记账方式。这项技术的核心创新在于解决了传统金融体系中必须依赖中心化机构进行信用背书的根本问题。在传统银行体系中&#xff…

2026/11/3 16:56:08

findAllPeak雷达峰值检测:一维距离像到RD图多目标提取

简介:面向雷达信号处理与目标检测研究的工程师和高校师生,这份资源围绕雷达IQ原始数据的完整处理链路展开,聚焦从DCA1000采集数据读取到峰值精确识别的关键环节。压缩包内共2个文件,均为MATLAB脚本(.m)&…

2026/11/3 16:56:08

OpenClaw为何用WebAssembly做AI Agent沙箱?

1. “龙虾之父”是谁?——一场被误读的开源身份争夺战“OpenAI抢走‘龙虾之父’”这个标题乍看像一则科技圈八卦,实则戳中了当前开源AI生态里最敏感的一根神经:命名权、归属感与事实溯源的撕裂。它不是关于某个人被挖角,而是一场围…

2026/11/3 16:56:08

C#文本解析利器Superpower:原理、实战与性能优化

1. 文本解析的痛点与Superpower的诞生在C#开发领域,文本处理一直是高频需求却又是隐藏的痛点。我曾参与过一个物流系统的开发,需要解析来自不同承运商的货运单号——有的用竖线分隔,有的用逗号,还有的夹杂着不规则空格。用String.…

2026/11/3 16:51:06

量子计算测试:从传统到量子范式的技术跃迁

1. 量子计算测试的范式转变 那天凌晨三点,实验室的量子比特保真度突然突破阈值时,我正盯着示波器上那组异常的数据曲线发呆。作为传统半导体测试出身的工程师,第一次亲眼目睹量子态叠加产生的概率云分布,那种认知冲击不亚于当年从…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑