☰
装完敲 martty 却提示找不到命令,先跑一次 martty-cli
2026/10/18 11:06:34 网站建设 项目流程

装完敲 martty 却提示找不到命令,先跑一次 martty-cli

装完了,敲martty,终端回一句command not found。这是 Martty 最常见的一类问题,也最容易被误判成「没装上」:包已经躺在全局目录里,只是那个命令名还没被创建。Martty 是 openma-ai/Martty 的 DSH-first Agent TUI,MIT,npm 当前 0.3.3,80 星,周下载 340,综合分 56.3,要求node >=22.19.0、engines.dsh >=0.1.7-rc.2。两套安装路径的「命令何时出现」规则并不一样。

两条安装路径

全局 npm:

npminstall--globalmartty martty-cli

第一次必须敲martty-cli:首次启动会创建martty命令,之后直接运行martty。

交给 dsh 管:

npminstall--global@deepseek-ai/dsh dsh plugin--profilemarttyaddmartty@latest dsh--profilemartty

这条路入口是dsh --profile martty,不需要martty命令;npx martty --dsh martty等价。中文条目与版本可对照 完整插件清单与汉化避坑指南。

它不声明任何安装脚本,pnpm 严格的 build-scripts 策略(ERR_PNPM_IGNORED_BUILDS)也拦不住;安装后的动作全被推迟到首次启动,这是下面几个坑的共同根源。

坑一 · 首次启动前只有 martty-cli 这一个入口

现象。全局装完立刻敲martty,提示command not found;npm ls -g却能看到martty@0.3.3,node_modules/.bin下只有martty-cli。

原因。发布出去的martty包只声明martty-cli一个 bin。这是有意的:旧版本用过martty、dsh-tui、dsb,第三方也可能占着,只声明一个不会被占用的名字,npm 就永远不会因 bin 冲突拒装。真正的martty命令由首次启动的martty-cli创建,同时完成旧包迁移。所以「安装完成」与「命令可用」之间少了一次运行。

解决。跑一次martty-cli,或不方便全局安装时用npx --yes martty。从 0.3.1 升级的用户同样要跑一次,因为 0.3.1 时代martty还由 npm 声明;从 0.3.2 升级的用户,已有的martty保持可用。若不相干工具占用了martty,martty-cli仍是本包自己的命令名,可用它绕开。

坑二 · 旧包的 bin 链接还在,新命令被顶掉

现象。敲martty打开的是别的程序或旧界面;或者删过一次包,martty居然还在,运行时提示重装。

原因。0.2.18 时代的dsh-tui/dsbbin、0.2.14 与 0.2.20 占用过的marttybin,都可能仍指向旧包;npm link的检出目录也会留下同名链接。因为包里没有安装脚本,迁移只能安排到首次启动:清理确实属于旧包的链接、创建martty、摘除旧包清单里的 bin 声明。

解决。不要手工删链接,先跑一次martty-cli或npx martty让迁移完成,再决定要不要npm rm -g @openma/deepseek-harness-tui——删旧包只是可选收尾。还要清楚npm rm -g martty的边界:它只移除 npm 声明的martty-cli链接,留下的martty是自清理 shim,不是死链接,下次运行会提示重装并自行删除。

坑三 · 0.3.2 及更早装坏的 profile,重复 add 没用

现象。dsh plugin --profile martty add martty@latest显示成功,dsh --profile martty启动后却看不到 Martty 该有的样子;再 add 一次还是老样子。

原因。0.3.2 及更早版本在部分环境里会把包装进依赖,却没有登记进dsh.profile.bundles。dsh 判断「要不要加载这个插件」看的是 bundles 清单,不是node_modules里有没有。于是 add 认为「已安装」直接跳过,形成「装了但没启用」的僵局。

解决。

dsh plugin--profilemartty remove martty dsh plugin--profilemarttyaddmartty@latest

先 remove 再 add 才会重写 bundles。

坑四 · harness add/use 改了配置,却没换掉眼前这个会话

现象。在系统终端里martty harness add <id>与use <id>都成功,切回已经开着的 Martty 窗口,agent 还是原来那个,于是以为切换失败。

原因。add只安装并保存配置,已配置项直接复用;use只设下次启动的默认项,不启动也不认证 Agent。两者写的都是$MARTTY_HOME/settings.json的harnesses与defaultHarness,而运行中的 TUI 只在启动时读它,进程内的 ACP 子进程不会因为文件变了就重启。真正的切换要initialize与session/new都成功,失败保留原值。

解决。当前会话切换用/harness:当前项置顶并标(current),选另一项按 Enter;要新增就选「+ Add Harness…」。命令行那条留给「下次启动」。另外add不会启动或认证 Agent,登录走/auth,状态看/status。

总结

Martty 的安装故障大多不是「没装上」,而是「首次启动那一步没做」或「配置写了却没触发加载」;想对照同类插件的中文清单见 DeepSeek Harness Hub 插件清单。

适合与不适合

适合:终端里完成全部工作的人;在 dsh profile 里统一管插件与升级的团队;有一堆旧版 TUI 包、想换到新命令名的老用户;想用 ACP 接其他 agent 的人。

不适合:只想要双击即用图形客户端的人;希望「装完就一切自动」的人;需要人工风险结论的团队——该插件含敏感能力、尚无人工评估、站点未做风险分级。

标签:Martty、DeepSeek Harness、安装排错

本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询