m
m 是个个人 CLI 工具集,用 Typer 和 Rich 搭的。核心是命令注册系统,自动发现插件。
功能¶
- 别名管理:JSON 存配置。
- 聊天:用 promplate 做 LLM 对话。
- 阅读:提取文本,转 Markdown。
插件
register.py 动态加命令,sys.path 黑魔法。
相关:
日常用超爽。
深入洞见¶
源码里 packages/core/m/utils/register.py 把当前工作目录临时加进 sys.path,并用 pkgutil.iter_modules 扫描 m.commands 导入子模块;packages/core/m/cli/main.py 把这些模块包装成 Typer 子应用并注册到主 app。这种约定优于配置的方式让 plugin discovery 成为自然的扩展点——把模块放进目录就能被自动暴露为命令。
参考源码:packages/core/m/utils/register.py · packages/core/m/cli/main.py