Skip to Content
用户指南常用命令工作流

常见工作流

了解使用 Qwen Code 的常见工作流。

本文档中的每个任务均包含清晰的操作说明、示例命令以及最佳实践,助你充分发挥 Qwen Code 的能力。

理解新代码库

快速获取代码库概览

假设你刚加入一个新项目,需要快速理解其整体结构。

1. 切换到项目根目录

cd /path/to/project

2. 启动 Qwen Code

qwen

3. 请求高层级概览

为我概述一下这个代码库

4. 深入了解特定组件

解释一下这里采用的主要架构模式
关键的数据模型有哪些?
认证机制是如何实现的?
Tip
  • 先从宽泛的问题入手,再逐步聚焦到具体领域
  • 主动询问项目中采用的编码规范与设计模式
  • 请求提供项目专用术语的词汇表

查找相关代码

假设你需要定位与某个特定功能或特性相关的代码。

1. 让 Qwen Code 帮你查找相关文件

查找处理用户身份验证的文件

2. 获取组件之间如何交互的上下文信息

这些身份验证文件是如何协同工作的?

3. 理解执行流程

追踪从前端到数据库的登录流程
Tip
  • 明确说明你要查找的内容
  • 使用项目中的领域术语

高效修复 Bug

假设你遇到了一条错误消息,需要定位并修复其根源。

1. 将错误信息分享给 Qwen Code

我运行 npm test 时遇到了一个错误

2. 请求修复建议

请为 user.ts 中的 @ts-ignore 提供几种修复方案

3. 应用修复

按你的建议,在 user.ts 中添加空值检查
Tip
  • 告知 Qwen Code 复现该问题所需的命令,并获取堆栈跟踪(stack trace)
  • 说明复现该错误的具体步骤
  • 告知 Qwen Code 该错误是偶发性的还是稳定复现的

重构代码

假设你需要将旧代码更新为采用现代模式和最佳实践。

1. 识别待重构的遗留代码

在我们的代码库中查找已弃用的 API 用法

2. 获取重构建议

建议如何将 utils.js 重构为使用现代 JavaScript 特性

3. 安全地应用变更

将 utils.js 重构为使用 ECMAScript 2024 特性,同时保持原有行为不变

4. 验证重构结果

运行重构后代码的测试
Tip
  • 请 Qwen Code 解释采用现代方法的优势
  • 如有需要,请要求变更保持向后兼容性
  • 分小步、可测试地进行重构

使用专用子智能体

假设你希望使用专用 AI 子智能体更高效地处理特定任务。

1. 查看可用的子智能体

/agents

该命令会列出所有可用的子智能体,并支持创建新的子智能体。

2. 自动调用子智能体

Qwen Code 会自动将合适的任务委派给专用子智能体:

审查我最近的代码变更是否存在安全问题
运行全部测试并修复所有失败项

3. 显式指定特定子智能体

使用 code-reviewer 子智能体检查 auth 模块
让 debugger 子智能体调查用户无法登录的原因

4. 为你的工作流创建自定义子智能体

/agents

然后选择“创建”,并按提示完成以下配置:

  • 一个唯一标识符,用于描述该子智能体的用途(例如 code-reviewerapi-designer);
  • Qwen Code 应在何种条件下调用该子智能体;
  • 该子智能体可访问的工具列表;
  • 一段系统提示词(system prompt),用于定义该子智能体的角色与行为。
Tip
  • .qwen/agents/ 目录下创建项目专属子智能体,便于团队共享;
  • 使用描述性强的 description 字段,以支持自动委派;
  • 严格限制每个子智能体的工具访问权限,仅授予其实际所需的权限;
  • 了解更多关于子智能体的信息;
  • 了解更多关于审批模式的信息

编写测试

假设你需要为尚未覆盖的代码添加测试。

1. 识别未测试的代码

在 NotificationsService.swift 中查找未被测试覆盖的函数

2. 生成测试脚手架

为通知服务添加测试

3. 添加有意义的测试用例

为通知服务中的边界条件添加测试用例

4. 运行并验证测试

运行新添加的测试,并修复所有失败项

Qwen Code 能够生成符合你项目现有模式与规范的测试。在请求生成测试时,请明确说明你希望验证的具体行为。Qwen Code 会分析你已有的测试文件,以匹配当前所用的风格、测试框架及断言模式。

如需实现全面覆盖,可请 Qwen Code 帮你识别可能遗漏的边界情况。Qwen Code 能分析你的代码执行路径,并针对错误条件、边界值以及容易被忽视的异常输入,提出相应的测试建议。

创建拉取请求(Pull Request)

假设你需要为你所做的更改创建一份文档详尽的拉取请求。

1. 概述你的更改

总结我对认证模块所做的更改

2. 使用 Qwen Code 生成拉取请求

创建一个 PR

3. 审查并优化

在 PR 描述中补充更多关于安全改进的上下文信息

4. 添加测试细节

添加有关这些更改如何进行测试的信息
Tip
  • 可直接让 Qwen Code 为你创建 PR
  • 在提交前,务必审查 Qwen Code 生成的 PR
  • 可要求 Qwen Code 标出潜在风险或需注意的事项

处理文档

假设你需要为代码添加或更新文档。

1. 识别缺少文档的代码

在 auth 模块中查找缺少规范 JSDoc 注释的函数

2. 生成文档

为 auth.js 中缺少文档的函数添加 JSDoc 注释

3. 审查并增强文档

结合更多上下文和示例,优化生成的文档

4. 验证文档

检查文档是否符合本项目的标准
Tip
  • 明确指定你希望采用的文档风格(如 JSDoc、docstring 等)
  • 要求文档中包含使用示例
  • 请求为公共 API、接口及复杂逻辑提供文档

参考文件和目录

使用 @ 符号可快速引用文件或目录,无需等待 Qwen Code 读取它们。

1. 引用单个文件

解释 @src/utils/auth.js 中的逻辑

这会将该文件的全部内容包含在对话中。

2. 引用目录

@src/components 的目录结构是怎样的?

这会提供一个包含文件信息的目录列表。

3. 引用 MCP 资源

展示 @github: repos/owner/repo/issues 中的数据

这会使用格式 @server: resource 从已连接的 MCP 服务器获取数据。详情请参阅 MCP

Tip
  • 文件路径可以是相对路径或绝对路径
  • @ 文件引用会将该文件所在目录及其父目录中的 QWEN.md 文件加入上下文
  • 目录引用仅显示文件列表,不包含文件内容
  • 可在单条消息中引用多个文件(例如:“@file 1.js@file 2.js”)

恢复之前的对话

假设你正在使用 Qwen Code 处理某项任务,需要在后续会话中从中断处继续。

Qwen Code 提供两种恢复之前对话的方式:

  • 使用 --continue 自动恢复最近一次的对话
  • 使用 --resume 显示对话选择器

1. 恢复最近一次的对话

qwen --continue

该命令将立即恢复你最近一次的对话,无需任何提示。

2. 在非交互模式下恢复对话

qwen --continue --p "继续我的任务"

配合 --continue 使用 --p(即 --prompt),可在非交互模式下恢复最近一次对话,非常适合脚本或自动化场景。

3. 显示对话选择器

qwen --resume

该命令将显示一个交互式对话选择器,以简洁列表形式展示以下信息:

  • 会话摘要(或初始提示)
  • 元数据:已耗时、消息数量、Git 分支

使用方向键导航,按 Enter 键选择目标对话;按 Esc 键退出。

Tip
  • 对话历史记录保存在本地机器上
  • 使用 --continue 快速访问最近一次对话
  • 使用 --resume 从多个历史对话中选择特定的一次
  • 恢复对话时,将完整显示此前全部对话历史,再继续进行
  • 恢复后的对话将沿用原始对话所使用的模型和配置

工作原理

  1. 对话存储:所有对话及其完整消息历史均自动保存至本地
  2. 消息反序列化:恢复时,完整消息历史被还原,以维持上下文连贯性
  3. 工具状态保留:前次对话中使用的工具及其执行结果均被保留
  4. 上下文恢复:恢复后的对话将完整继承此前全部上下文

示例

# 恢复最近一次对话 qwen --continue # 带指定提示恢复最近一次对话 qwen --continue --p "向我展示当前进展" # 显示对话选择器 qwen --resume # 在非交互模式下恢复最近一次对话 qwen --continue --p "再次运行测试"

使用 Git 工作树并行运行多个 Qwen Code 会话

假设你需要同时处理多个任务,并且要求各个 Qwen Code 实例之间实现完全的代码隔离。

1. 理解 Git 工作树

Git 工作树(worktree)允许你从同一仓库中检出多个分支到不同的目录中。每个工作树拥有独立的工作目录和文件,但共享相同的 Git 历史记录。更多详情请参阅 Git 官方工作树文档 

2. 创建新的工作树

# 创建一个带新分支的新工作树 git worktree add ../project-feature-a -b feature-a # 或者基于已有分支创建工作树 git worktree add ../project-bugfix bugfix-123

该命令将创建一个新目录,其中包含你仓库的一个独立工作副本。

3. 在每个工作树中运行 Qwen Code

# 切换到你的工作树目录 cd ../project-feature-a # 在此隔离环境中运行 Qwen Code qwen

4. 在另一个工作树中运行 Qwen Code

cd ../project-bugfix qwen

5. 管理你的工作树

# 列出所有工作树 git worktree list # 完成后移除工作树 git worktree remove ../project-feature-a
Tip
  • 每个工作树拥有独立的文件状态,非常适合并行运行 Qwen Code 会话
  • 在一个工作树中所做的更改不会影响其他工作树,从而避免多个 Qwen Code 实例相互干扰
  • 所有工作树共享相同的 Git 历史记录和远程连接
  • 对于长期运行的任务,你可以在一个工作树中让 Qwen Code 工作,同时在另一个工作树中继续开发
  • 使用具有描述性的目录名称,以便快速识别每个工作树对应的任务
  • 记得根据项目配置,在每个新建的工作树中初始化开发环境。具体操作取决于你的技术栈,可能包括:
    • JavaScript 项目:安装依赖(npm installyarn
    • Python 项目:创建虚拟环境或使用包管理器安装依赖
    • 其他语言:遵循项目标准的初始化流程

将 Qwen Code 用作类 Unix 工具

将 Qwen Code 添加到你的验证流程中

假设你想将 Qwen Code 用作代码检查器(linter)或代码审阅者。

将 Qwen Code 添加到你的构建脚本中:

// package.json { ... "scripts": { ... "lint:Qwen Code": "qwen -p '你是一个代码检查器。请比对当前变更与 main 分支,报告所有与拼写错误相关的潜在问题。在第一行输出文件名和行号,在第二行输出问题描述。不要返回任何其他文本。'" } }
Tip
  • 在 CI/CD 流水线中使用 Qwen Code 实现自动化代码审阅
  • 自定义提示词(prompt),以检测与项目相关的特定问题
  • 可考虑为不同类型的验证创建多个脚本

输入管道,输出管道

假设你想将数据通过管道传入 Qwen Code,并以结构化格式获取返回结果。

通过管道将数据传入 Qwen Code:

cat build-error.txt | qwen -p '简洁地解释此构建错误的根本原因' > output.txt
Tip
  • 使用管道将 Qwen Code 集成到现有 Shell 脚本中
  • 与其他 Unix 工具组合使用,构建强大工作流
  • 可考虑使用 --output-format 参数获取结构化输出

控制输出格式

假设你需要 Qwen Code 的输出采用特定格式,尤其是在将 Qwen Code 集成到脚本或其他工具中时。

1. 使用纯文本格式(默认)

cat data.txt | qwen -p '总结此数据' --output-format text > summary.txt

该命令仅输出 Qwen Code 的纯文本响应(默认行为)。

2. 使用 JSON 格式

cat code.py | qwen -p '分析此代码中的缺陷' --output-format json > analysis.json

该命令输出一个包含元数据(如消耗成本和耗时)的消息 JSON 数组。

3. 使用流式 JSON 格式

cat log.txt | qwen -p '解析此日志文件中的错误' --output-format stream-json

该命令在 Qwen Code 处理请求过程中实时输出一系列 JSON 对象。每个消息本身都是有效的 JSON 对象,但若将全部输出拼接起来,则整体并非有效 JSON。

Tip
  • 若只需获取 Qwen Code 的响应内容,使用 --output-format text
  • 若需完整对话日志,使用 --output-format json
  • 若需实时获取每轮对话的输出,使用 --output-format stream-json

向 Qwen Code 询问其能力

Qwen Code 内置了对其自身文档的访问能力,可回答有关其功能和限制的问题。

示例问题

Qwen Code 能创建拉取请求(pull request)吗?
Qwen Code 如何处理权限?
有哪些可用的斜杠命令(slash command)?
如何将 MCP 与 Qwen Code 配合使用?
如何为 Amazon Bedrock 配置 Qwen Code?
Qwen Code 有哪些限制?
Note

Qwen Code 基于其文档提供上述问题的答案。如需可执行示例和实操演示,请参阅上方的具体工作流章节。

Tip
  • 无论您使用的是哪个版本的 Qwen Code,它始终能访问最新的 Qwen Code 文档
  • 提出具体问题,以获得更详尽的回答
  • Qwen Code 可解释复杂功能,例如 MCP 集成、企业级配置以及高级工作流
Last updated on