跳到主要内容

Custom Commands

介绍

Tuanjie AI Custom Commands(自定义命令)让您能够将最常用或最喜爱的提示词保存为快捷方式。通过将复杂的提示词封装成简洁的命令,您可以大幅简化工作流程,确保团队使用统一的标准,并提高日常开发效率。

什么是 Custom Commands?

Custom Commands 是以 TOML 格式定义的可重用提示词模板。它们允许您:

  • 将重复使用的复杂提示词保存为简短的命令
  • 支持参数注入,使命令能够动态响应用户输入
  • 执行 Shell 命令并注入结果到提示词中
  • 直接嵌入文件内容到提示词中
  • 创建命名空间命令,便于组织和管理

Custom Commands 的核心价值

  • 提高效率:用简短的命令(如 /commit)替换冗长的提示词
  • 保持一致性:确保团队使用相同的工作流程和标准
  • 减少输入:避免重复输入相同的提示词内容
  • 上下文感知:命令可以接收参数并动态生成提示词
  • 可维护性:集中管理常用的工作流程,便于更新和共享

适合用 Custom Commands 的场景

  • 经常重复使用的复杂提示词(如代码审查、提交消息生成、文档编写)
  • 需要特定格式的输出(如 Conventional Commits、API 文档、测试报告)
  • 团队需要统一的标准流程(如代码风格检查、安全审计)
  • 需要结合 Shell 命令或文件内容的任务(如 Git 操作、文件分析)

不适合用 Custom Commands 的场景:

  • 简单的一次性任务
  • 需要复杂逻辑和条件判断的任务(考虑使用 Skills 或 Subagents)
  • 需要持久状态的任务(考虑使用 Extension)

通过 GUI 管理 Commands

  1. 在对话框输入 /,在下拉菜单中选择 "Manage commands"。或者直接输入 /commands
  2. 在打开的对话框中,您可以查看所有可用的命令及其描述。
  3. 创建新的 command 后,请运行 /commands reload 以加载更改。
  4. 在对话窗口中直接输入命令名称(如 /commit)即可执行。

创建 command 时 Project 与 Global 的区别:

  • Project:该命令仅在当前项目中使用,会随项目仓库共享给团队
  • Global:该命令在所有项目中都可以使用,适合个人常用的命令

通过 CLI 管理 Commands

Command 发现路径与优先级

Tuanjie AI 会自动从两个位置加载 Command,优先级从高到低:

项目命令(Project Commands)

  • 路径:.codely/commands/.agents/commands/
  • 作用:团队共享,跟随项目,优先级最高
  • 可以提交到版本控制中与团队共享

用户命令(User Commands)

  • 路径:~/.codely/commands/~/.agents/commands/
  • 作用:个人全局使用,所有项目都生效

优先级规则:

项目命令 > 用户命令

同层级内:.agents/commands/ 优先于 .codely/commands/

Command 工作原理

  1. 发现:新建会话或运行 /commands reload 时,Tuanjie AI 扫描所有路径,加载命令名称与描述
  2. 执行:用户输入命令(如 /commit),Tuanjie AI 加载对应的 TOML 文件
  3. 处理:解析命令中的特殊语法({{args}}!{...}@{...}
  4. 注入:将参数、Shell 命令输出或文件内容注入到提示词中
  5. 发送:将最终生成的提示词发送给 AI 模型

命令命名和命名空间

命令的名称由其文件路径相对于命令目录的位置决定。子目录用于创建命名空间命令,路径分隔符(/\)会被转换为冒号(:)。

  • ~/.codely/commands/test.toml → 命令 /test
  • <项目>/.codely/commands/git/commit.toml → 命令 /git:commit
  • <项目>/.codely/commands/review/security.toml → 命令 /review:security

交互式会话内管理

在 Tuanjie AI 对话输入框中使用 /commands 系列命令:

# 列出所有可用的命令
/commands list

# 重新扫描并加载所有命令
/commands reload

如何触发并使用 Command

  1. 确保命令已被发现:/commands list 能看到
  2. 在对话中直接输入命令名称,例如:
    /commit
    /git:fix Button is misaligned
    /review FileCommandLoader.ts --verbose
  3. Tuanjie AI 会加载对应的 TOML 文件,处理其中的特殊语法,然后将生成的提示词发送给 AI

创建自定义 Commands

手动创建

标准目录结构
~/.codely/commands/                    # 用户命令目录
├── git/
│ ├── commit.toml # Git 提交命令
│ ├── fix.toml # Git 修复命令
│ └── push.toml # Git 推送命令
├── refactor/
│ ├── pure.toml # 纯函数重构
│ └── clean.toml # 代码清理
└── test/
├── unit.toml # 单元测试
└── integration.toml # 集成测试
TOML 文件格式

命令定义文件必须使用 TOML 格式编写,并使用 .toml 文件扩展名。

基本示例:

# ~/.codely/commands/commit.toml
# 通过以下方式调用:/commit

description = "生成基于暂存更改的 Conventional Commit 提交消息。"
prompt = """
请基于以下 git diff 生成一个 Conventional Commit 提交消息:

!{git diff --staged}

提交消息格式:
<type>(<scope>): <subject>

<body>

<footer>

类型(type)必须是以下之一:
- feat: 新功能
- fix: 修复 bug
- docs: 文档更改
- style: 代码格式(不影响代码运行的变动)
- refactor: 重构(既不是新增功能,也不是修复 bug)
- perf: 性能优化
- test: 增加测试
- chore: 构建过程或辅助工具的变动
"""

必需字段:

字段类型说明
promptString执行命令时将发送给 Tuanjie AI 模型的提示词。可以是单行或多行字符串。

可选字段:

字段类型说明
descriptionString命令功能的简短单行描述。此文本将显示在 /help 菜单中命令的旁边。

参数处理

Custom Commands 支持两种强大的参数处理方法。

1. 使用 {{args}} 进行精确控制

如果您的提示词包含特殊占位符 {{args}},CLI 会用用户在命令名后输入的文本替换该占位符。

示例:

# git/fix.toml
description = "为给定问题生成代码修复。"
prompt = "请为以下描述的问题提供代码修复:{{args}}。"

调用:/git:fix Button is misaligned

模型接收:请为以下描述的问题提供代码修复:Button is misaligned。

2. 默认参数处理

如果您的提示词不包含 {{args}},CLI 会将用户输入的完整命令附加到提示词末尾,用两个换行符分隔。

示例:

# review.toml
description = "审查提供的代码。"
prompt = """
你是一个专业的代码审查专家。

请审查用户提供的代码,关注以下方面:
- 代码风格和格式
- 潜在的 bug
- 性能问题
- 安全漏洞

**用户的原始命令将附加在您的指令下方。**
"""

调用:/review FileCommandLoader.ts

模型接收:原始提示词 + 换行符 + FileCommandLoader.ts

执行 Shell 命令(!{...}

您可以通过在提示词内直接执行 Shell 命令并注入其输出来使命令动态化。

工作原理:

  1. 使用 !{command} 语法执行 Shell 命令
  2. 如果 {{args}} 存在于块内,会自动进行 Shell 转义
  3. CLI 会提示您确认后再执行命令(安全措施)
  4. 命令输出会替换 !{...}

示例:

# git/commit.toml
description = "基于暂存更改生成 Git 提交消息。"
prompt = """
请基于以下 git diff 生成一个 Conventional Commit 提交消息:

!{git diff --staged}
"""

调用:/git:commit

CLI 执行 git diff --staged,将输出注入到提示词中,然后发送给 AI。

安全提示: 始终确认 Shell 命令执行,避免在命令中硬编码敏感信息。

注入文件内容(@{...}

您可以使用 @{...} 语法直接将文件或目录列表的内容嵌入到提示词中。

工作原理:

  • 文件注入:@{path/to/file.txt} 被 file.txt 的内容替换
  • 多模态支持:支持图像(PNG、JPEG)、PDF、音频或视频文件
  • 目录列表:@{path/to/dir} 会遍历目录,插入所有文件内容
  • 工作区感知:命令在当前目录和工作区目录中搜索路径
  • 处理顺序:文件注入在 Shell 命令和参数替换之前处理

示例:

# review.toml
description = "使用最佳实践指南审查提供的上下文。"
prompt = """
你是一个专业的代码审查专家。

请审查 `{{args}}`。

使用以下最佳实践进行审查:

@{docs/best-practices.md}
"""

调用:/review FileCommandLoader.ts

CLI 将 docs/best-practices.md 的内容注入到提示词中,{{args}} 替换为 FileCommandLoader.ts,然后发送给 AI。

示例:创建"纯函数"重构命令

让我们创建一个全局命令,要求模型重构一段代码为纯函数。

步骤 1:创建文件和目录

macOS/Linux:

mkdir -p ~/.codely/commands/refactor
touch ~/.codely/commands/refactor/pure.toml

Windows (PowerShell):

New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.codely\commands\refactor"
New-Item -ItemType File -Force -Path "$env:USERPROFILE\.codely\commands\refactor\pure.toml"

步骤 2:向文件添加内容

# ~/.codely/commands/refactor/pure.toml
# 通过以下方式调用:/refactor:pure

description = "要求模型将当前上下文重构为纯函数。"
prompt = """
请分析我在当前上下文中提供的代码。
将其重构为纯函数。

你的回复应包括:
1. 重构后的纯函数代码块。
2. 对你所做的主要更改及其如何贡献于纯度的简要解释。

纯函数的特点:
- 相同输入总是产生相同输出
- 不修改外部状态
- 没有副作用
- 不依赖外部可变状态
"""

步骤 3:运行命令

# 首先将文件添加到上下文
@my-messy-function.js

# 然后调用命令
/refactor:pure

最佳实践

  1. 描述优化:编写清晰、具体的描述,帮助理解命令的用途
  2. 组织命令:为相关命令创建子目录,使用命名空间保持结构清晰
  3. 参数处理:根据需要选择合适的参数处理方法({{args}} 或默认行为)
  4. 安全第一:始终确认 Shell 命令执行,避免硬编码敏感信息
  5. 文档化命令:在命令文件内添加注释,解释其用途和用法
  6. 版本控制:将项目命令纳入版本控制,便于团队协作

命令参考表

功能语法说明
参数注入{{args}}将用户输入注入到提示词中
Shell 命令!{command}执行 shell 命令并注入输出
文件注入@{path}注入文件或目录的内容
命令分隔/ 或 :创建命名空间命令
换行"""创建多行提示词

常见问题

如何重新加载命令?

运行 /commands reload 以在不重启 CLI 的情况下重新加载命令。

如何查看所有可用命令?

运行 /commands list/help 查看所有可用命令及其描述。

项目命令可以覆盖全局命令吗?

可以。如果项目目录中的命令与用户目录中的命令同名,项目命令将优先使用。

如何删除命令?

直接删除对应的 .toml 文件,然后运行 /commands reload

命令支持嵌套吗?

支持。您可以创建任意深度的子目录来组织命令,例如 /tools:database:migrate


文档版本:1.0 最后更新:2026 年 3 月 26 日