跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

自定义命令参数

区分正文替换、Shell 参数转义和完整命令追加,避免误解参数解析。

{{args}} 接收命令名之后的输入文本。它是提示模板的占位符,不是声明式参数 Schema,也不自动把输入拆成具名字段。

提示正文中的原样替换

description = "Explain the requested issue."
prompt = "Explain this issue and suggest a minimal fix: {{args}}"

调用 /explain "Button is misaligned" 时,正文中的替换文本仍包含用户输入的双引号。可以在 prompt 中要求模型识别版本、类别和说明,但这属于模型解释提示的过程,不能当成确定性的命令行参数校验。

Shell 块中的转义

prompt = """
Summarize matches for {{args}}.
!{grep -r {{args}} .}
"""

同一次调用中,正文里的 {{args}} 原样替换,!{...} 内的占位符先做 Shell 转义。CLI 在替换完成后检查并展示将执行的命令,请用户确认。

转义适用于这个占位符的 Shell 使用位置;固定命令文本、脚本本身和命令的实际作用仍需审阅。不同平台的 Shell 引号形式不同,以确认框中解析后的命令为准,不手工假定会得到某一种引号序列。

没有占位符时

如果 prompt 不包含 {{args}},CLI 根据是否提供参数处理:

调用方式发给模型的提示
/review原始 prompt
/review src/parser.ts原始 prompt,两个换行,再加完整的 /review src/parser.ts

可以在模板中说明“用户调用的完整命令附在下方”,让模型知道如何利用输入。追加的并非只有参数子串。

与文件注入的顺序

@{...} 的文件注入先于 !{...} 和 {{args}} 处理。不要依赖 @{ {{args}} } 来动态生成文件路径;官方示例使用固定的 @{docs/best-practices.md},再把 {{args}} 作为独立任务说明。完整流程见文件注入。