SlashCommand
介绍
Tuanjie AI 交互模式命令通过特定前缀触发,分为三类:
| 前缀类型 | 功能描述 | 典型用例 |
|---|---|---|
斜杠命令 (/) | 对 Tuanjie AI 本身的元级控制 | 管理会话、修改设置、获取帮助 |
@ 命令 (@) | 快速将本地文件内容注入对话 | 让 AI 分析指定文件或目录下的代码 |
感叹号命令 (!) | 直接与系统 Shell 交互 | 执行系统命令如 git status、ls 等 |
斜杠命令 /
斜杠命令用于管理 Tuanjie AI 会话、界面和基本行为。
内置命令
会话和项目管理
这些命令帮助您保存、恢复和总结工作进度。
| 命令 | 描述 | 用法示例 |
|---|---|---|
| /chat | 管理对话历史,用于交互式分支对话状态 | /chat list、/chat save |
| → list | 列出已保存的对话检查点 | /chat list |
| → save | 保存当前对话历史。您必须添加标签来标识对话状态。 检查点位置: • Linux/macOS: ~/.config/google-generative-ai/checkpoints/• Windows: C:\Users\<YourUsername>\AppData\Roaming\google-generative-ai\checkpoints/注意: 这些检查点用于手动保存和恢复对话状态。有关在文件修改之前创建的自动检查点,请参阅检查点文档 | /chat save <tag> |
| → resume(或 load) | 从之前的保存中恢复对话 | /chat resume <tag> |
| → delete | 删除已保存的对话检查点 | /chat delete <tag> |
| → export | 导出对话历史为文件 | /chat export [--enhanced] |
| → loop | 控制当前聊天会话的循环检测。循环检测可以防止无限工具/内容循环 | /chat loop off|on |
| /resume | 自动恢复最近会话中的最后一次对话。 此命令查找最近更新的对话文件并恢复对话历史和上下文。不需要标签 — 它只是恢复上次活动的对话。 注意: 这与 /chat resume <tag> 不同,后者需要具有特定标签的手动保存检查点 | /resume |
| /compress(或 /summarize) | 通过用摘要替换上下文来压缩上下文。这可以节省用于未来任务的令牌,同时保留已发生事件的高级摘要 | /compress |
| /restore | 恢复工具调用。这将重置对话和文件历史到工具调用被建议时的状态。 这对于撤销工具所做的文件编辑特别有用。如果在没有工具调用 ID 的情况下运行,它将列出可用的检查点以从中恢复。 注意: 仅在 CLI 使用 --checkpointing 选项调用或通过设置配置时可用 | /restore(列表)或 /restore <id> |
| /init | 分析项 目并创建定制的 CODELY.md 文件(或由 contextFileName 指定的文件名)。 如果已存在非空文件,则不会进行任何更改。该命令会创建一个空文件并提示模型用项目特定的指令填充它 | /init |
| → general | 初始化通用项目分析(默认行为) | /init general |
| → unity | 初始化 Unity 特定项目分析 | /init unity |
界面和工作区控制
用于调整界面外观和工作环境的命令。
| 命令 | 描述 | 用法示例 |
|---|---|---|
| /clear | 清除屏幕和对话历史。此命令会重置聊天并清除终端显示 | /clear(快捷键:Ctrl+L) |
| /theme | 更改 Tuanjie AI 视觉主题 | /theme |
| /vim | 开启/关闭 vim 模式。启用 vim 模式后,输入区域支持 vim 样式的导航和编辑命令。 功能: • NORMAL 模式: h、j、k、l 导航;w、b、e 按单词跳转;0、$、^ 转到行首/行尾;G 转到特定行 • INSERT 模式: 标准文本输入,使用 escape 返回 NORMAL 模式 • 编辑命令: x 删除,c 更改,i、a、o、O 插入;复杂操作如 dd、cc、dw、cw • 计数支持: 使用数字作为命令前缀(如 3h、5w) • 重复命令: 使用 . 重复上一个编辑操作• 持久设置: Vim 模式首选项保存到 ~/.codely-cli/settings.json 并在会话之间恢复状态指示器: 启用时,在页脚显示 [NORMAL] 或 [INSERT] | /vim(再次运行可退出 vim 模式) |
| /directory | 管理多目录支持的工作区 | /dir add ./src,./tests |
| → add | 将目录添加到工作区。使用逗号分隔多个路径。 路径类型: 可以是绝对路径或相对于当前工作目录的路径。还支持从主目录引用(使用 ~)。自动刷新: 添加目录后会自动刷新内存以包含新目录中的 GEMINI.md 文件。 注意: 在限制性沙箱配置文件中禁用。如果您使用该功能,请在启动会话时使用 --include-directories | /directory add <path1>,<path2> |
| → show | 显示所有已添加的目录 | /directory show |
| /editor | 设置外部编辑器偏好。打开对话框以选择支持的编辑器 | /editor |
| /copy | 将最后的结果或代码片段复制到剪贴板。复制 AI 的最后输出内容 | /copy |
工具和模型管理
用于管理 AI 工具和模型的命令。
| 命令 | 描述 | 用法示例 |
|---|---|---|
| /mcp | 列出已配置的模型上下文协议(MCP)服务器、它们的连接状态、服务器详情和可用工具 | /mcp、/mcp desc(快捷键:Ctrl+T) |
| → desc | 显示 MCP 服务器和工具的详细描述 | /mcp desc |
| → nodesc | 隐藏工具描述,仅显示工具名称 | /mcp nodesc |
| → schema | 显示工具配置参数的完整 JSON 架构 | /mcp schema |
| /tools | 显示当前可用的工具列表 | /tools、/tools desc |
| → desc | 显示每个工具的详细描述 | /tools desc |
| → nodesc | 隐藏工具描述,仅显示工具名称 | /tools nodesc |
| /model | 管理和切换可用的 AI 模型 | /model list、/model use |
| → list | 列出所有可用的模型(内置模型和用户添加的模型) | /model list |
| → use | 切换到指定的模型 | /model use <model> |
| → add | 添加自定义模型到可用模型列表 | /model add [--provider <provider>] |
| → remove | 从可用模型列表中移除用户添加的模型 | /model remove <model> |
| → list-provider | 列出指定提供商的可用模型 | /model list-provider <provider> |
| /agents | 管理和使用专门的 AI 代理进行代码分析 | /agents list、/agents create |
| → list | 列出所有可用的代理(内置代理和自定义代理) | /agents list |
| → info | 显示指定代理的详细信息 | /agents info <name> |
| → create | 创建新的自定义代理(带引导设置) | /agents create ["description"] [--global] |
| → manage | 管理代理(编辑、删除等) | /agents manage |
| → reload | 重新加载所有代理配置 | /agents reload |
| → help | 显示代理命令的帮助信息 | /agents help |
| /memory | 管理 AI 的指令上下文 (默认从 CODELY.md 文件加载的分层内存;可通过 contextFileName 配置) | /memory show、/memory add-global <文本> |
| → show | 显示当前内存内容。显示从所有上下文文件(例如,CODELY.md)加载的当前分层内存的完整、连接内容 | /memory show |
| → add-global | 将内容添加到全局内存(在所有项目中共享) | /memory add-global <要记住的文本> |
| → add-project | 将内容添加到项目内存(仅限当前项目) | /memory add-project <要记住的文本> |
| → refresh | 从源文件刷新内存。 从配置位置(全局、项目/祖先和子目录)中找到的所有上下文文件(默认:CODELY.md)重新加载分层指令内存。这使用最新的上下文内容更新模型 | /memory refresh |
| /extensions | 列出活动的扩展。显示当前 Tuanjie AI 会话中所有活动的扩展及其版本。请参阅 Tuanjie AI 扩展文档 | /extensions |
Unity 集成
用于管理 Unity Editor 集成的命令。
| 命令 | 描述 | 用法示例 |
|---|---|---|
| /upm | Unity TCP 连接状态和自动重连管理。用于管理 Tuanjie AI 与 Unity Editor 之间的连接 | /upm status、/upm refresh |
| → status | 显示 Unity TCP 连接状态并测试连接性。显示服务器信息、客户端连接状态、可用工具等 | /upm status |
| → refresh | 通过重新读取 .com-unity-codely.json 并重新连接来刷新 Unity TCP 连接 | /upm refresh |
| → install | 通过更新 Packages/manifest.json 将 cn.tuanjie.codely.bridge 包安装到 Unity 项目 | /upm install |
信息和设置
用于获取信息和进行系统设置的命令。
| 命令 | 描述 | 用法示例 |
|---|---|---|
| /help | 显示可用命令的帮助信息 | /help 或 /? |
| /about | 显示版本信息。 显示 CLI 版本、操作系统版本、沙箱环境、模型版本、认证类型等信息。 提交问题时请分享此信息 | /about |
| /stats(或 /usage) | 检查会话统计信息。显示当前 Tuanjie AI 会话的持续时间等统计信息 | /stats [model|tools] |
| → model | 显示模型特定的使用统计信息 | /stats model |
| → tools | 显示工具特定的使用统计信息 | /stats tools |
| /settings | 查看和编辑 Tuanjie AI 设置。此命令提供了一个用户友好的界面,用于更改控制 Tuanjie AI 行为和外观的设置 | /settings |
| /auth | 更改认证方法 | /auth |
| /bug | 提交关于 Tuanjie AI 的问题。 默认情况下,问题会提交到 Tuanjie AI 的 GitLab 仓库。您在 /bug 后输入的字符串将成为所提交错误的标题。 可以使用 .codely-cli/settings.json 文件中的 bugCommand 设置来自定义 bug 报告的 URL 模板 | /bug Button click unresponsive |
| /docs | 在浏览器中打开完整的 Tuanjie AI 文档 | /docs |
| /setup-github | 设置 GitHub 集成 | /setup-github |
| /terminal-setup | 配置终端键绑定以支持多行输入(VS Code、Cursor、Windsurf)。 自动检测并配置终端以支持 Shift+Enter 和 Ctrl+Enter 进行多行输入 | /terminal-setup |
| /ide | 管理 IDE 集成设置 | /ide |
| /privacy | 显示隐私声明。 打开对话框显示隐私声明,并允许用户选择是否同意收集其数据以用于服务改进目的 | /privacy |
| /quit(或 /exit) | 退出 CLI。退出 Tuanjie AI 并显示会话持续时间 | /quit 或 /exit |
| /corgi | 切换 Corgi 模式。切换特殊功能模式 | /corgi |
| /example-prompt | 管理和运行示例提示。 此命令允许您运行预定义的示例提示。如果不提供 prompt-name,将列出所有可用的示例提示 | /example-prompt [prompt-name] |
常用快捷键
| 快捷键 | 功能 | 说明 |
|---|---|---|
| Ctrl/cmd+L | 清除屏幕 | 等同于 /clear |
| Ctrl/cmd+T | 切换工具描述 | MCP 工具管理 |
| Ctrl/cmd+C×2 | 退出确认 | 安全退出机制 |
| Ctrl/cmd+Z | 撤销输入 | 文本编辑 |
| Ctrl/cmd+Shift+Z | 重做输入 | 文本编辑 |
| Ctrl/Alt/cmd + v | 粘贴 |
自定义命令
自定义命令可以让用户把常用的提示保存成快捷命令,就像创建自己的"宏"一样。比如,您经常需要 AI 帮您写提交信息,就可以创建一个 /commit 命令,以后直接输入 /commit 就能自动 生成。
详细的创建和管理方式请参阅 Commands(命令) 文档。
什么是自定义命令?
简单理解:把一段常用的提示词保存成文件,然后通过 /命令名 来快速调用。
举个例子:
- 您经常需要 AI 帮您审查代码,每次都写"请审查这段代码,关注性能和安全问题"很麻烦
- 创建一个自定义命令
/review,把这句话保存进去 - 以后只需要输入
/review,AI 就知道要做什么了
命令存放位置:全局 vs 项目
自定义命令可以放在两个地方,用途不同:
| 存放位置 | 路径 | 谁可以用 | 适合场景 | 优先级 |
|---|---|---|---|---|
| 全局命令 | ~/.codely-cli/commands/ | 所有项目都能用 | 个人常用命令,比如代码审查、重构等 | 低 |
| 项目命令 | <项目根目录>/.codely-cli/commands/ | 只在当前项目有效 | 项目特定命令,比如项目规范、团队约定等 | 高 |
重要规则:如果同一个命令名在全局和项目中都存在,项目命令优先。这样项目可以覆盖全局设置。
示例:
- 全局有
/review命令:通用的代码审查 - 项目也有
/review命令:项目特定的审查标准 - 在项目中使用
/review时,会使用项目版本
如何命名命令?
命令名由文件路径决定,非常简单:
| 文件位置 | 生成的命令 | 使用示例 |
|---|---|---|
~/.codely-cli/commands/test.toml | /test | /test 参数 |
~/.codely-cli/commands/git/commit.toml | /git:commit | /git:commit 消息 |
项目/.codely-cli/commands/utils/format.toml | /utils:format | /utils:format 代码 |
命名规则:
- 文件名(不含
.toml)就是命令名 - 子目录用冒号(
:)连接,形成命名空间 - 例如:
git/commit.toml→/git:commit
为什么要用命名空间?
- 避免命令名冲突:
/git:commit和/svn:commit不会冲突 - 更好的组织:相关命令放在同一目录下
创建命令:最简单的开始
每个自定义命令就是一个 .toml 文件,包含两个部分:
| 字段 | 是否必 需 | 说明 | 示例 |
|---|---|---|---|
| prompt | 必需 | 告诉 AI 要做什么的提示词 | prompt = "请分析代码:{{args}}" |
| description | 可选 | 命令的简短说明(会在 /help 中显示) | description = "代码分析工具" |
最简单的例子:
创建一个文件 ~/.codely-cli/commands/hello.toml:
description = "友好的问候"
prompt = "请用友好的方式问候用户:{{args}}"
然后就可以使用:/hello 世界 → AI 会说:"你好,世界!"
如何传递参数给命令?
当您使用自定义命令时,可能需要传递一些信息。Tuanjie AI 提供了三种灵活的方式:
方式 1:精确控制参数位置(推荐)— 使用 {{args}}
什么时候用:当您需要把用户输入放在提示词的特定位置时。
怎么用:在 prompt 中使用 {{args}},它会被替换成用户输入的内容。
示例 1:简单的参数替换
# 文件:~/.codely-cli/commands/fix.toml
description = "修复代码问题"
prompt = "请修复以下问题:{{args}}"
使用:/fix "按钮点击无响应"
AI 收到:请修复以下问题:按钮点击无响应
示例 2:在 Shell 命令中使用
# 文件:~/.codely-cli/commands/search.toml
description = "在代码中搜索"
prompt = "请搜索以下内容:!{grep {{args}} .}"
使用:/search "hello"
实际执行:grep "hello" .,然后把结果发给 AI
方式 2:自动追加参数(简单场景)
什么时候用:当您不需要精确控制参数位置,或者参数是补充说明时。
怎么用:不在 prompt 中使用 {{args}},参数会自动追加到提示词末尾。
示例:
# 文件:~/.codely-cli/commands/explain.toml
description = "解释代码"
prompt = "请详细解释这段代码的功能和实现原理。"
使用情况对比:
| 您输入 | AI 收到的完整提示 |
|---|---|
| /explain | 请详细解释这段代码的功能和实现原理。 |
| /explain 这段代码 | 请详细解释这段代码的功能和实现原理。 /explain 这段代码 |
注意:这种方式下,AI 需要自己从追加的命令中提取信息,所以更适合让 AI 自己解析的场景。
方式 3:执行 Shell 命令获取动态内容 — 使用 !{...}
什么时候用:当您需要从系统获取实时信息时,比如 Git 状态、文件内容等。
怎么用:在 prompt 中使用 !{命令},命令执行后的输出会替换这个位置。
安全提示:使用 !{...} 时,系统会先弹出确认对 话框,让您确认是否执行该命令。
示例:自动生成 Git 提交信息
# 文件:项目/.codely-cli/commands/git/commit.toml
description = "基于暂存更改生成提交消息"
prompt = """
请基于以下 Git diff 生成符合 Conventional Commit 规范的提交消息:
```diff
!{git diff --staged}
"""
使用流程:
1. 您输入:`/git:commit`
2. 系统提示:`即将执行命令:git diff --staged`,询问是否继续
3. 您确认后,系统执行命令,获取 diff 内容
4. AI 收到包含 diff 的完整提示,生成提交信息
示例:代码审查时引用项目规范
```toml
# 文件:项目/.codely-cli/commands/review.toml
description = "基于项目规范审查代码"
prompt = """
请审查以下代码:{{args}}
参考项目规范:
@{docs/code-standards.md}
"""
说明:
@{文件路径}会读取文件内容并注入到提示中- 支持文本文件、图片、PDF 等
- 目录会递归读取所有文件(遵循 .gitignore)
参数处理的执行顺序
当您的命令同时使用多种方式时,处理顺序如下:
- 首先:处理
@{文件路径}— 读取文件内容 - 然后:处理
!{命令}— 执行命令并获取输出 - 最后:处理
{{args}}— 替换用户输入的参数
这样设计的好处是:您可以在命令中引用文件,执行命令获取动态内容,最后再插入用户参数。
完整示例:创建一个"代码重构"命令
让我们一步步创建一个实用的命令:将代码重构为纯函数。
步骤 1:创建命令文件
# 创建目录(如果不存在)
mkdir -p ~/.codely-cli/commands/refactor
# 创建命令文件
touch ~/.codely-cli/commands/refactor/pure.toml
步骤 2:编写命令内容
用编辑器打开 ~/.codely-cli/commands/refactor/pure.toml,写入:
description = "将代码重构为纯函数"
prompt = """
请分析当前上下文中的代码,将其重构为纯函数。
要求:
1. 提供重构后的代码
2. 解释关键更改和纯函数特性实现
3. 保持功能不变
"""
步骤 3:使用命令
- 先把要重构的代码加入上下文:
@my-function.js
- 然后调用命令:
/refactor:pure
- AI 会分析代码并给出重构建议!
命令名解释:
- 文件路径:
~/.codely-cli/commands/refactor/pure.toml - 生成的命令:
/refactor:pure refactor是目录名(命名空间)pure是文件名(命令名)
@ 命令(引入文件)
@ 命令用于快速将本地文件或目录内容添加到对话中。
| 命令格式 | 描述 | 示例 |
|---|---|---|
@<文件路径> | 注入指定文件的内容 | @src/main.py 请解释这段代码 |
@<目录路径> | 递归读取目录中的所有文本文件 | @docs/ 总结这个文档的内容 |
单独的 @ | 如果您键入一个单独的 @ 符号而没有路径,查询将按原样传递给模型。如果您在提示中专门讨论 @ 符号,这可能很有用 | @ 这个符号在编程中用于什么? |
注意:路径中的空格需要使用反斜杠转义(例如,@My\ Documents/file.txt)
详情:
- 如果提供了单个文件的路径,则读取该文件的内容
- 如果提供了目录的路径,命令会尝试读取该目录和任何子目录中文件的内容
- 命令在内部使用 read_many_files 工具。内容被获取,然后在发送给模型之前插入到您的查询中
- Git 感知过滤:默认情况下,git 忽略的文件(如
node_modules/、dist/、.env、.git/)会被排除。可通过fileFiltering设置更改此行为 - 文件类型:该命令适用于基于文本的文件。虽然它可能尝试读取任何文件,但二进制文件或非常大的文件可能会被底层的 read_many_files 工具跳过或截断,以确保性能和相关性。工具会指示是否跳过了文件
- 输出:CLI 将显示一个工具调用消息,指示使用了 read_many_files,以及详细说明状态和已处理路径的消息
错误处理:
- 如果 @ 后指定的路径未找到或无效,将显示错误消息,查询可能不会发送给模型,或者会在没有文件内容的情况下发送
- 如果 read_many_files 工具遇到错误(例如,权限问题),也会报告
感叹号命令 ! — Shell 命令执行
感叹号命令允许您在 Tuanjie AI 内直接执行系统命令。
| 命令格式 | 描述 | 示例 |
|---|---|---|
!<shell 命令> | 在子 Shell 中执行命令 | !ls -la、!git status |
单独的 ! | 切换 Shell 模式,任何输入都直接作为 Shell 命令执行 进入:输入 ! 进入 Shell 模式退出:再次输入 ! 退出 Shell 模式 | !(进入)→ 输入命令 → !(退出) |
详情:
- 在 Linux/macOS 上使用 bash 或在 Windows 上使用最佳可用 shell(PowerShell Core、Windows PowerShell 或命令提示符)执行给定的命令
- 命令的任何输出或错误都会显示在终端中
- 切换 shell 模式:单独键入
!会切换 shell 模式- 进入 shell 模式:激活时,shell 模式使用不同的颜色和"Shell 模式指示器"。在 shell 模式中,您键入的文本被直接解释为 shell 命令
- 退出 shell 模式:退出时,UI 恢复为标准外观,正常的 Tuanjie AI 行为恢复
- 所有
!使用的注意事项:您在 shell 模式中执行的命令具有与直接在终端中运行它们相同的权限和影响 - 环境变量:当通过
!或在 shell 模式中执行命令时,子进程环境中会设置QWEN_CODE=1环境变量。这允许脚本或工具检测它们是否从 CLI 内运行
最佳实践
命令设计建议
| 实践要点 | 推荐做法 | 避免 |
|---|---|---|
| 命令命名 | 使用命名空间组织(如 git:commit、utils:format) | 使用过于通用的名称(如 do、run) |
| 参数处理 | 明确使用 {{args}} 指定参数位置 | 依赖默认追加(容易让 AI 混淆) |
| 文件组织 | 按功能分类到不同目录 | 所有命令都放在根目录 |
| 描述字段 | 始终写清晰的 description | 依赖自动生成的描述 |
| 错误处理 | 在 prompt 中说明如何处理错误 | 忽略可能的执行失败 |
安全提示
Tuanjie AI 已经内置了安全保护:
| 安全机制 | 作用 | 您需要做什么 |
|---|---|---|
| Shell 转义 | 防止恶意命令注入 | 无需操作,自动处理 |
| 执行确认 | 执行 !{...} 前会询问确认 | 仔细查看要执行的命令,确认无误后再允许 |
| 错误报告 | 命令执行失败时会显示错误信息 | 查看错误信息,检查命令是否正确 |
常见问题
如何查看所有可用的斜杠命令?
输入 / 即可查看所有可用的斜杠命令列表,或输入 /help 获取帮助信息。
项目命令可以覆盖全局命令吗?
可以。如果项目目录中的命令与用户目录中的命令同名,项目命令将优先使用。
@ 命令支持哪些文件类型?
@ 命令适用于基于文本的文件。二进制文件或非常大的文件可能会被跳过或截断。支持文本文件、图片、PDF 等。
Shell 模式和感叹号命令有什么区别?
单独输入 ! 会切换 Shell 模式,在 Shell 模式下所有输入都直接作为 Shell 命令执行。而 !命令 格式则是执行单条命令后自动返回正常模式。