命令#

将 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"}} 直到所有错误都修复完毕

解释:

  1. args 代表位置参数,可以使用 [index] 来引用

  2. kwargs 代表键值对参数,可以使用 kwargs.<key> 来引用

  3. {{}} 用于渲染一个值

让我们看看如何使用它:

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 编辑器来编写复杂的提示,并使调试更容易。