命令#
将 Markdown 文件作为可执行文件#
Markdown 文件是可执行的,其运行时环境是 MoonBit Pilot!
背景#
如果你经常需要执行重复的命令,例如:
运行 `pnpm lint --fix` 直到所有错误都修复完毕
每次都复制粘贴这个短语会变得很繁琐,特别是当你有许多提示需要执行时。MoonBit Pilot 提供了一个解决方案,使管理你的日常工作提示变得简单。
最终效果#
让我们看看运行提示的最终方式:
/lint_fix
在这里,你只需要运行一个 /lint_fix
命令就可以完成上述提示的执行。
实现#
在你的项目的 .moonagent/commands
目录下,创建一个 lint_fix.md
文件,内容如下:
运行 pnpm lint --fix 直到所有错误都修复完毕
然后你就可以在 moon pilot 命令行中将 lint_fix
作为一个命令来使用,并支持自动补全。
处理动态提示#
如果你希望命令是可变的怎么办?你可以像这样修改文件内容:
运行 {{args[0] or "pnpm lint --fix"}} 直到所有错误都修复完毕
解释:
args
代表位置参数,可以使用[index]
来引用kwargs
代表键值对参数,可以使用kwargs.<key>
来引用{{}}
用于渲染一个值
让我们看看如何使用它:
act ▶ /lint_fix "echo hello"
你也可以使用命名参数:
运行 {{kwargs.command or "pnpm lint --fix"}} 直到所有错误都修复完毕
然后像这样使用它:
act ▶ /lint_fix command="echo hello"
注意,值应该用 "
引起来。
复杂脚本#
这里有一个更复杂脚本的例子,可以帮助你快速完成复杂的工程需求:
# {{ kwargs.title or "开发计划" }}
## 目标
{{ kwargs.objective or "在此处定义主要目标" }}
## 任务
{% for task in args %}
- {{ task }}
{% endfor %}
## 参数
{% for key, value in kwargs %}
- **{{ key }}**: {{ value }}
{% endfor %}
## 总结
总任务数:{{ args|length }}
总参数数:{{ kwargs|length }}
当然,为了方便起见,尽量减少参数的数量是合理的。
额外的好处#
除了完成提示管理和提高执行效率外,这实际上意味着你可以更好地使用 IDE 编辑器来编写复杂的提示,并使调试更容易。