常见工作流
了解使用 Qwen Code 的常见工作流。
本文档中的每个任务均包含清晰的操作说明、示例命令以及最佳实践,助你充分发挥 Qwen Code 的能力。
理解新代码库
快速获取代码库概览
假设你刚加入一个新项目,需要快速理解其整体结构。
1. 切换到项目根目录
cd /path/to/project2. 启动 Qwen Code
qwen3. 请求高层级概览
为我概述一下这个代码库4. 深入了解特定组件
解释一下这里采用的主要架构模式关键的数据模型有哪些?认证机制是如何实现的?- 先从宽泛的问题入手,再逐步聚焦到具体领域
- 主动询问项目中采用的编码规范与设计模式
- 请求提供项目专用术语的词汇表
查找相关代码
假设你需要定位与某个特定功能或特性相关的代码。
1. 让 Qwen Code 帮你查找相关文件
查找处理用户身份验证的文件2. 获取组件之间如何交互的上下文信息
这些身份验证文件是如何协同工作的?3. 理解执行流程
追踪从前端到数据库的登录流程- 明确说明你要查找的内容
- 使用项目中的领域术语
高效修复 Bug
假设你遇到了一条错误消息,需要定位并修复其根源。
1. 将错误信息分享给 Qwen Code
我运行 npm test 时遇到了一个错误2. 请求修复建议
请为 user.ts 中的 @ts-ignore 提供几种修复方案3. 应用修复
按你的建议,在 user.ts 中添加空值检查- 告知 Qwen Code 复现该问题所需的命令,并获取堆栈跟踪(stack trace)
- 说明复现该错误的具体步骤
- 告知 Qwen Code 该错误是偶发性的还是稳定复现的
重构代码
假设你需要将旧代码更新为采用现代模式和最佳实践。
1. 识别待重构的遗留代码
在我们的代码库中查找已弃用的 API 用法2. 获取重构建议
建议如何将 utils.js 重构为使用现代 JavaScript 特性3. 安全地应用变更
将 utils.js 重构为使用 ECMAScript 2024 特性,同时保持原有行为不变4. 验证重构结果
运行重构后代码的测试- 请 Qwen Code 解释采用现代方法的优势
- 如有需要,请要求变更保持向后兼容性
- 分小步、可测试地进行重构
使用专用子智能体
假设你希望使用专用 AI 子智能体更高效地处理特定任务。
1. 查看可用的子智能体
/agents该命令会列出所有可用的子智能体,并支持创建新的子智能体。
2. 自动调用子智能体
Qwen Code 会自动将合适的任务委派给专用子智能体:
审查我最近的代码变更是否存在安全问题运行全部测试并修复所有失败项3. 显式指定特定子智能体
使用 code-reviewer 子智能体检查 auth 模块让 debugger 子智能体调查用户无法登录的原因4. 为你的工作流创建自定义子智能体
/agents然后选择“创建”,并按提示完成以下配置:
- 一个唯一标识符,用于描述该子智能体的用途(例如
code-reviewer、api-designer); - Qwen Code 应在何种条件下调用该子智能体;
- 该子智能体可访问的工具列表;
- 一段系统提示词(system prompt),用于定义该子智能体的角色与行为。
编写测试
假设你需要为尚未覆盖的代码添加测试。
1. 识别未测试的代码
在 NotificationsService.swift 中查找未被测试覆盖的函数2. 生成测试脚手架
为通知服务添加测试3. 添加有意义的测试用例
为通知服务中的边界条件添加测试用例4. 运行并验证测试
运行新添加的测试,并修复所有失败项Qwen Code 能够生成符合你项目现有模式与规范的测试。在请求生成测试时,请明确说明你希望验证的具体行为。Qwen Code 会分析你已有的测试文件,以匹配当前所用的风格、测试框架及断言模式。
如需实现全面覆盖,可请 Qwen Code 帮你识别可能遗漏的边界情况。Qwen Code 能分析你的代码执行路径,并针对错误条件、边界值以及容易被忽视的异常输入,提出相应的测试建议。
创建拉取请求(Pull Request)
假设你需要为你所做的更改创建一份文档详尽的拉取请求。
1. 概述你的更改
总结我对认证模块所做的更改2. 使用 Qwen Code 生成拉取请求
创建一个 PR3. 审查并优化
在 PR 描述中补充更多关于安全改进的上下文信息4. 添加测试细节
添加有关这些更改如何进行测试的信息- 可直接让 Qwen Code 为你创建 PR
- 在提交前,务必审查 Qwen Code 生成的 PR
- 可要求 Qwen Code 标出潜在风险或需注意的事项
处理文档
假设你需要为代码添加或更新文档。
1. 识别缺少文档的代码
在 auth 模块中查找缺少规范 JSDoc 注释的函数2. 生成文档
为 auth.js 中缺少文档的函数添加 JSDoc 注释3. 审查并增强文档
结合更多上下文和示例,优化生成的文档4. 验证文档
检查文档是否符合本项目的标准- 明确指定你希望采用的文档风格(如 JSDoc、docstring 等)
- 要求文档中包含使用示例
- 请求为公共 API、接口及复杂逻辑提供文档
参考文件和目录
使用 @ 符号可快速引用文件或目录,无需等待 Qwen Code 读取它们。
1. 引用单个文件
解释 @src/utils/auth.js 中的逻辑这会将该文件的全部内容包含在对话中。
2. 引用目录
@src/components 的目录结构是怎样的?这会提供一个包含文件信息的目录列表。
3. 引用 MCP 资源
展示 @github: repos/owner/repo/issues 中的数据这会使用格式 @server: resource 从已连接的 MCP 服务器获取数据。详情请参阅 MCP。
- 文件路径可以是相对路径或绝对路径
@文件引用会将该文件所在目录及其父目录中的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 键退出。
- 对话历史记录保存在本地机器上
- 使用
--continue快速访问最近一次对话 - 使用
--resume从多个历史对话中选择特定的一次 - 恢复对话时,将完整显示此前全部对话历史,再继续进行
- 恢复后的对话将沿用原始对话所使用的模型和配置
工作原理:
- 对话存储:所有对话及其完整消息历史均自动保存至本地
- 消息反序列化:恢复时,完整消息历史被还原,以维持上下文连贯性
- 工具状态保留:前次对话中使用的工具及其执行结果均被保留
- 上下文恢复:恢复后的对话将完整继承此前全部上下文
示例:
# 恢复最近一次对话
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
qwen5. 管理你的工作树
# 列出所有工作树
git worktree list
# 完成后移除工作树
git worktree remove ../project-feature-a- 每个工作树拥有独立的文件状态,非常适合并行运行 Qwen Code 会话
- 在一个工作树中所做的更改不会影响其他工作树,从而避免多个 Qwen Code 实例相互干扰
- 所有工作树共享相同的 Git 历史记录和远程连接
- 对于长期运行的任务,你可以在一个工作树中让 Qwen Code 工作,同时在另一个工作树中继续开发
- 使用具有描述性的目录名称,以便快速识别每个工作树对应的任务
- 记得根据项目配置,在每个新建的工作树中初始化开发环境。具体操作取决于你的技术栈,可能包括:
- JavaScript 项目:安装依赖(
npm install、yarn) - Python 项目:创建虚拟环境或使用包管理器安装依赖
- 其他语言:遵循项目标准的初始化流程
- JavaScript 项目:安装依赖(
将 Qwen Code 用作类 Unix 工具
将 Qwen Code 添加到你的验证流程中
假设你想将 Qwen Code 用作代码检查器(linter)或代码审阅者。
将 Qwen Code 添加到你的构建脚本中:
// package.json
{
...
"scripts": {
...
"lint:Qwen Code": "qwen -p '你是一个代码检查器。请比对当前变更与 main 分支,报告所有与拼写错误相关的潜在问题。在第一行输出文件名和行号,在第二行输出问题描述。不要返回任何其他文本。'"
}
}- 在 CI/CD 流水线中使用 Qwen Code 实现自动化代码审阅
- 自定义提示词(prompt),以检测与项目相关的特定问题
- 可考虑为不同类型的验证创建多个脚本
输入管道,输出管道
假设你想将数据通过管道传入 Qwen Code,并以结构化格式获取返回结果。
通过管道将数据传入 Qwen Code:
cat build-error.txt | qwen -p '简洁地解释此构建错误的根本原因' > output.txt- 使用管道将 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。
- 若只需获取 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 有哪些限制?Qwen Code 基于其文档提供上述问题的答案。如需可执行示例和实操演示,请参阅上方的具体工作流章节。
- 无论您使用的是哪个版本的 Qwen Code,它始终能访问最新的 Qwen Code 文档
- 提出具体问题,以获得更详尽的回答
- Qwen Code 可解释复杂功能,例如 MCP 集成、企业级配置以及高级工作流