🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

插件互转桥 Fectivnfy112357/crossplug

DeepSeek Harness
Fectivnfy11235782 天前有提交已提供中文文档扫描:含敏感能力

在 DSH 与 mcode 间双向转换插件包

27.5/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Fectivnfy112357/crossplug
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · market
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 82 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 138 处,展示前 53 条)
  • 执行外部命令来自配置/变量
    adapters/mcode/extension.js:23
    const r = execFileSync(process.execPath, [CORE_RUN, ...args, '--json'], {
  • 执行外部命令来自配置/变量
    bin/convert.mjs:18
    const r = spawnSync(process.execPath, [CORE, ...args, '--json'], { encoding: 'utf8' });
  • 写入本地文件
    core/dsh2mcode.js:151
    fs.mkdirSync(path.dirname(file), { recursive: true });
  • 写入本地文件
    core/dsh2mcode.js:152
    fs.writeFileSync(file, content, 'utf8');
  • 读取本地文件
    core/dsh2mcode.js:156
    if (!fs.existsSync(src)) return;
  • 写入本地文件
    core/dsh2mcode.js:157
    fs.mkdirSync(dst, { recursive: true });
  • 读取本地文件
    core/dsh2mcode.js:158
    for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
  • 写入本地文件
    core/dsh2mcode.js:162
    else if (entry.isFile()) fs.copyFileSync(s, d);
  • 读取本地文件
    core/dsh2mcode.js:171
    if (!fs.existsSync(presetPath)) throw new Error(`preset.yml 不存在: ${presetPath}`);
  • 读取本地文件
    core/dsh2mcode.js:172
    if (!fs.existsSync(compositionPath)) throw new Error(`agent.cordis.yml 不存在: ${compositionPath}`);
  • 读取本地文件
    core/dsh2mcode.js:175
    fs.readFileSync(presetPath, 'utf8'),
  • 读取本地文件
    core/dsh2mcode.js:176
    fs.readFileSync(compositionPath, 'utf8'),
  • 写入本地文件
    core/dsh2mcode.js:645
    fs.mkdirSync(path.join(outDir, 'vendor'), { recursive: true });
  • 写入本地文件
    core/dsh2mcode.js:647
    fs.copyFileSync(srcFile, path.join(outDir, 'vendor', 'dsh-plugin.js'));
  • 写入本地文件
    core/install.js:24
    fs.mkdirSync(dst, { recursive: true });
  • 读取本地文件
    core/install.js:25
    for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
  • 写入本地文件
    core/install.js:29
    else if (entry.isFile()) fs.copyFileSync(s, d);
  • 读取本地文件
    core/install.js:38
    if (fs.existsSync(target) && !opts.force) {
  • 读取本地文件
    core/install.js:42
    if (!fs.existsSync(path.join(srcPreset, 'preset.yml'))) {
  • 删除本地文件
    core/install.js:45
    fs.rmSync(target, { recursive: true, force: true });
  • 读取本地文件
    core/install.js:67
    if (!fs.existsSync(pj)) return null;
  • 读取本地文件
    core/install.js:69
    const obj = JSON.parse(fs.readFileSync(pj, 'utf8'));
  • 读取本地文件
    core/install.js:76
    const isFromConvert = !!(srcDir && fs.existsSync(srcDir));
  • 删除本地文件
    core/install.js:91
    fs.rmSync(pluginDir, { recursive: true, force: true });
  • 写入本地文件
    core/install.js:92
    fs.mkdirSync(pluginDir, { recursive: true });
  • 写入本地文件
    core/install.js:115
    fs.mkdirSync(path.dirname(extDir), { recursive: true });
  • 删除本地文件
    core/install.js:119
    fs.rmSync(extDir, { recursive: true, force: true });
  • 删除本地文件
    core/install.js:122
    fs.rmSync(path.join(extDir, 'plugin.json'), { force: true });
  • 删除本地文件
    core/install.js:123
    fs.rmSync(path.join(extDir, 'skills'), { recursive: true, force: true });
  • 写入本地文件
    core/install.js:130
    fs.mkdirSync(path.dirname(extDir), { recursive: true });
  • 删除本地文件
    core/install.js:135
    fs.rmSync(extDir, { recursive: true, force: true });
  • 写入本地文件
    core/install.js:136
    fs.mkdirSync(extDir, { recursive: true });
  • 读取本地文件
    core/mcode2dsh.js:31
    if (fs.existsSync(pkgPath)) {
  • 读取本地文件
    core/mcode2dsh.js:33
    const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
  • 读取本地文件
    core/mcode2dsh.js:36
    if (fs.existsSync(main)) return { file: main, pkg };
  • 读取本地文件
    core/mcode2dsh.js:44
    if (fs.existsSync(f)) return { file: f, pkg };
  • 读取本地文件
    core/mcode2dsh.js:51
    if (fs.existsSync(f)) return { file: f, pkg: undefined };
  • 执行外部命令来自配置/变量
    core/mcode2dsh.js:76
    const r = spawnSync(process.execPath, ['--check', file], { encoding: 'utf8' });
  • 读取本地文件
    core/mcode2dsh.js:107
    const source = fs.readFileSync(src, 'utf8');
  • 写入本地文件
    core/mcode2dsh.js:143
    fs.mkdirSync(vendorDir, { recursive: true });
  • 写入本地文件
    core/mcode2dsh.js:150
    fs.writeFileSync(path.join(vendorDir, vendorFileName), stripped, 'utf8');
  • 写入本地文件
    core/mcode2dsh.js:151
    fs.copyFileSync(src, path.join(vendorDir, path.basename(src)));
  • 写入本地文件
    core/mcode2dsh.js:158
    fs.writeFileSync(path.join(vendorDir, vendorFileName), vendorSource, 'utf8');
  • 写入本地文件
    core/mcode2dsh.js:162
    fs.writeFileSync(path.join(vendorDir, vendorFileName), rewritten, 'utf8');
  • 写入本地文件
    core/mcode2dsh.js:164
    fs.writeFileSync(path.join(vendorDir, 'typebox-shim.js'), typeboxShimCode(), 'utf8');
  • 读取本地文件
    core/run.js:58
    if (fs.existsSync(userDir)) {
  • 读取本地文件
    core/run.js:59
    for (const d of fs.readdirSync(userDir, { withFileTypes: true })) {
  • 读取本地文件
    core/run.js:60
    if (d.isDirectory() && fs.existsSync(path.join(userDir, d.name, 'agent.cordis.yml'))) {
  • 读取本地文件
    core/run.js:68
    if (fs.existsSync(deployDir)) {
  • 读取本地文件
    core/run.js:69
    for (const d of fs.readdirSync(deployDir, { withFileTypes: true })) {
  • 读取本地文件
    core/run.js:70
    if (d.isDirectory() && fs.existsSync(path.join(deployDir, d.name, 'agent.cordis.yml'))) {
  • 执行外部命令固定命令
    core/run.js:86
    ? spawnSync('cmd', ['/c', 'npm root -g'], { encoding: 'utf8', windowsHide: true })
  • 执行外部命令固定命令
    core/run.js:87
    : spawnSync('npm', ['root', '-g'], { encoding: 'utf8', windowsHide: true });
扫描于 2026/11/5(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • DSH与mcode互转
  • 多格式插件包转换
  • 双向安装器

README

由 DeepSeek 最新模型翻译生成
crossplug — DSH ↔ mcode 插件互转桥 在 DSH(DeepSeek Harness)与 mcode(MiniMax Code / pi)之间双向转换插件的零依赖工具。 转换是“脚手架 + 映射”:能映射的能力直接桥接(逻辑零移植),无法映射的生成带说明的桩,每项结论写进输出包的 CONVERSION-REPORT.md。 使用 安装转换器(可选,装到任一侧) node bin/convert.mjs install dsh # DSH 侧:agent preset(~/.dsh/.agent-presets/crossplug/) node bin/convert.mjs install dsh-host # DSH 侧:宿主组合插件(推荐,所有会话可用,需重启 DSH) node bin/convert.mjs install mcode # mcode 侧:agent-plugins 插件包(~/.minimax/plugins/crossplug/) 转换 DSH → mcode node bin/convert.mjs dsh2mcode [--out ] [--install mcode] mcode → DSH(默认输出 agent preset)
展开完整文档(README 剩余 1 节)
crossplug — DSH ↔ mcode 插件互转桥

在 DSH(DeepSeek Harness)与 mcode(MiniMax Code / pi)之间双向转换插件的零依赖工具。
转换是“脚手架 + 映射”:能映射的能力直接桥接(逻辑零移植),无法映射的生成带说明的桩,每项结论写进输出包的 CONVERSION-REPORT.md。

使用

安装转换器(可选,装到任一侧)

node bin/convert.mjs install dsh # DSH 侧:agent preset(~/.dsh/.agent-presets/crossplug/)
node bin/convert.mjs install dsh-host # DSH 侧:宿主组合插件(推荐,所有会话可用,需重启 DSH)
node bin/convert.mjs install mcode # mcode 侧:agent-plugins 插件包(~/.minimax/plugins/crossplug/)

转换

DSH → mcode
node bin/convert.mjs dsh2mcode [--out ] [--install mcode]

mcode → DSH(默认输出 agent preset)
node bin/convert.mjs mcode2dsh [--out ] [--install dsh]
输出为普通插件(宿主组合插件,所有会话可用,不依赖 preset 选择)
node bin/convert.mjs mcode2dsh --host [--install dsh-host]

安装 host 模式转换产物到指定 profile
node bin/convert.mjs install dsh-host --src --profile

查看两侧插件
node bin/convert.mjs list

输入形态:DSH preset 目录(preset.yml + agent.cordis.yml)、DSH 插件源码(.js)、 pi extension 文件(.js/.ts)、pi 插件包目录(含 vendor/ 相对依赖)、 agent-plugins 插件包(plugin.json / .minimax-plugin / .claude-plugin)。

在 DSH 里用

- 转换产物为 preset:复制到 ~/.dsh/.agent-presets//,新会话选择该 preset。
- 转换产物为 host 插件(--host):所有会话自动生效,无需选择 preset。

在 MiniMax Code 里用

- 转换产物复制到 ~/.minimax/plugins//,/plugins → Local 标签页安装/启用;包内技能自动注册为斜杠命令(/技能名)。
- mcode 侧使用转换器自身:安装后通过 /convert-plugin 斜杠命令或自然语言触发。

注意事项

1. mcode CLI 不加载 pi extension(2026-08-15 实证,见 doc/mcode-plugin-spec.md §1.1): ~/.minimax/settings.json 的 extensions 数组是死配置。面向 mcode 的产物以 agent-plugins MCP 包为准(工具经 MCP stdio 生效);pi extension 包与事件桥接仅在独立 pi CLI / DSH 运行时有效。
2. 事件桥接范围:system-prompt/assemble ↔ before_agent_start、
session/event(turn/end) ↔ turn_end 为 1:1;其余事件弱/只读转发或丢失(报告标注)。
3. 能力边界:mcode 插件承载 skills/MCP,DSH 工具行无法自动变成 mcode 插件工具; TUI 渲染、快捷键、provider 注册等两侧无对应,空操作。MCP 服务器不随 preset 迁移(DSH 侧需手工配置)。
4. 技能不转换:两侧通过 ~/.agents/skills 共享,转换器只处理插件。
5. mcode 插件市场官方插件(恒生、企查查等)是服务端付费产品,无法本地转换。
6. 详细规范与事件映射疑问见 doc/(dsh-plugin-spec.md / mcode-plugin-spec.md / event-mapping-questions.md)。
预览分享卡片长什么样 ↓Fectivnfy112357/crossplug
分享 · DeepSeek Harness Hub
Fectivnfy112357/crossplug

在 DSH 与 mcode 间双向转换插件包

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部