必须在.qwen/settings.json中配置"post_tool_use": {"enabled": true}并绑定edit_file工具的格式化命令,否则代码编辑后不会自动格式化;支持按扩展名分发命令或用shell判断,需通过终端日志验证是否触发。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Qwen Code中编辑完文件后想让代码自动格式化,必须通过PostToolUse钩子触发本地格式化工具(如Prettier、Black、clang-format),而不是依赖模型生成即格式化的幻觉。这个环节一旦配置错,改完的代码会以未格式化状态直接写入磁盘,后续还得手动跑一遍format命令。
确认Qwen Code已启用PostToolUse机制
打开项目根目录下的 .qwen/settings.json,检查是否存在 "post_tool_use" 字段。若无此字段,Qwen Code默认跳过所有PostToolUse逻辑,无论你后续配多少脚本都不会执行。
添加基础结构(注意逗号位置):
"post_tool_use": { "enabled": true }
这一步不可跳过——【没有该字段或enabled设为false,后续所有格式化脚本均不会被调用】。
绑定格式化命令到edit_file工具
Qwen Code在执行文件编辑类操作时,底层调用的是 edit_file 工具。PostToolUse只对明确注册的工具生效,而 edit_file 是默认启用的核心工具,无需额外注册,但必须显式声明监听。
在 .qwen/settings.json 的 post_tool_use 对象内,加入 "edit_file" 子项:
"edit_file": { "command": "prettier --write {file_path}" }
其中 {file_path} 是Qwen Code自动注入的占位符,会被替换成实际被修改的文件路径;不要写成硬编码路径或省略花括号,否则命令会失败。
适配不同语言的格式化器
方法一:按文件扩展名分发命令
在 "edit_file" 下使用 "rules" 数组,每条规则匹配特定后缀并指定对应命令:
Qwen 视频智能分析基础客户端(免费版),基于 Qwen 3.5 Plus 多模态模型对本地视频进行内容分析,支持场景描述与基础内容理解,采用默认抽帧频率和提示词,适合快速概览视频,API Key 读取自 ~/.skill-platform/skill-platform.json 的 skills 配置。
"rules": [ { "pattern": "*.ts", "command": "prettier --write --parser typescript {file_path}" }, { "pattern": "*.py", "command": "black {file_path}" }, { "pattern": "*.rs", "command": "rustfmt {file_path}" } ]
方法二:统一用shell判断(适合已有复杂格式化逻辑的团队)
"command": "sh -c 'case \"{file_path}\" in *.ts|*.tsx) prettier --write --parser typescript \"{file_path}\" ;; *.py) black \"{file_path}\" ;; *.rs) rustfmt \"{file_path}\" ;; *) echo \"no formatter for \"{file_path}\"\" ;; esac'"
注意单引号和反斜杠转义:shell命令外层用单引号包裹,内部双引号和花括号必须用反斜杠转义,否则变量无法正确替换。
验证PostToolUse是否真正触发
第一步:在项目根目录启动Qwen Code会话
qwen
第二步:执行一次文件编辑(例如修改README.md)
/edit README.md → 输入新内容 → 按Ctrl+D保存
第三步:立即检查终端输出
若看到类似 [PostToolUse] Running command: prettier --write README.md 的日志,则说明钩子已激活;若无任何PostToolUse日志,返回第一步检查 .qwen/settings.json 中 post_tool_use.enabled 是否为true且语法无误。










