# Coding 模式(Beta) > **Beta 功能**:Coding 模式是 QwenPaw 为编码场景打造的 IDE 化工作台,把 Agent 从「聊天助手」升级为「能直接读你代码、改你代码的协作者」。目前仍在持续迭代,欢迎在 [GitHub](https://github.com/agentscope-ai/QwenPaw/issues) 反馈。 QwenPaw 的普通聊天模式适合「问答 + 临时任务」,但当你想让 Agent **持续在某个项目里干活**——读源码、改文件、跑测试、查 git——聊天界面就不够用了。Coding 模式提供了一个轻量 IDE 视图,把项目文件、编辑器、Diff 预览和聊天放在一个布局里,同时给 Agent 装上两个专为代码理解优化的工具:`lsp`(精确定位定义/引用)和 `ast_search`(结构化语法查找)。 --- ## 何时用 Coding 模式 | 场景 | 建议模式 | | ---------------------------------------- | --------------- | | 一次性问答 / 临时脚本 / 闲聊 | 普通 Chat 模式 | | 在指定项目里读代码、改文件、修 bug、重构 | **Coding 模式** | | 跨项目的探索 / 不绑定单一仓库的任务 | 普通 Chat 模式 | > **一句话区分**:要让 Agent 把某个目录当「工作车间」连续干活,就开 Coding 模式;只是临时问一句,就用普通模式。 --- ## 快速上手 ### 1. 切换到 Coding 模式 在聊天界面顶部找到 `Code` / `Chat` 切换按钮,点击 `Code` 即可进入。 ### 2. 选择项目 首次进入会弹出项目选择窗口,有两类方式: - **直接打开已有目录** — 通过文件浏览器选择本机上已有的项目目录,Agent 直接在该目录下工作,不会复制任何文件。适合想让 Agent 直接操作现有项目的场景。 - **导入为副本** — **克隆远程仓库**、**复制本地文件夹**、**上传 zip** 或**新建空项目**,都会在 QwenPaw 工作区的 `coding_projects/<项目名>/` 下生成一份**副本**,你的原始目录不会被改动。 无论哪种方式,Agent 接下来读写的都是所选目录,它就是后文说的「项目目录」。 ![项目选择弹窗](https://img.alicdn.com/imgextra/i3/O1CN01ofmycu235UOvIHxKZ_!!6000000007204-2-tps-3346-1670.png) > **直接打开 vs 导入副本?** 如果你的项目 IDE 已打开、有未提交改动或跑着 CI,建议使用副本模式以避免 Agent 误操作影响工作树。副本仍保留 `.git`,可以正常 commit / push。如果你希望 Agent 直接在原目录工作(例如快速修改或审查代码),选择「打开目录」即可。 **终端 TUI 快捷方式:** 在项目目录下运行 `qwenpaw .`,或用 `qwenpaw tui /path/to/repo` 显式指定目录。这样只会为本次 TUI 会话启用 Coding 模式的提示和工具行为;不会修改 `agent.json`,也不会改变控制台里保存的项目。 ### 3. 开始干活 进入 IDE 视图后,左侧是文件树,中间是带 Tab 的编辑器和 Diff 预览,右侧是聊天面板。直接像平时一样和 Agent 对话即可,例如: - 「读一下 `src/auth/login.py`,告诉我 `verify_password` 是怎么实现的」 - 「在 `tests/` 下加一个 `test_login_rate_limit.py`,覆盖 5 次失败后锁定 10 分钟的场景」 - 「这个分支相比 main 改了哪些文件?帮我写个 PR description」 ![Coding 模式 IDE 主界面](https://img.alicdn.com/imgextra/i4/O1CN014tF5921HlXCevvsBH_!!6000000000798-2-tps-3340-1678.png) --- ## Coding 模式做了什么 普通模式下 Agent 看到的是「一个工作空间」,没有特别的项目概念。打开 Coding 模式后,QwenPaw 会自动做这些事: ### 1. 注入编码专属的系统提示 告诉 Agent: - **当前项目目录是 XXX,所有文件操作要用项目根目录下的绝对路径** - 跑 shell 命令要显式指定 `cwd=` 到项目目录,否则会落在 Agent 工作区 - 引用代码时用 `path/to/file.py:42` 这种格式(IDE 可点击跳转) - 非琐碎任务先创建 `{TASK}_TODO.md` 维护清单,做一步勾一步 ### 2. 自动注册两个代码理解工具 | 工具 | 用途 | 何时自动启用 | | ------------ | ------------------------------------------------------------------------- | --------------------------------------------------------- | | `lsp` | 精准查询符号定义、引用、跳转——回答「X 在哪定义?谁调用了 Y?」 | 项目里至少检测到一种 LSP 服务器(Python/TS 默认随包安装) | | `ast_search` | 基于语法树的结构化查询——回答「所有接收 `Request` 返回 `Response` 的函数」 | 系统装了 `ast-grep` CLI(默认随包安装) | 两个工具都是**只读**的,不会修改任何文件。Agent 优先用它们而不是 `grep`,能避免误判和漏判。 ### 3. 区分「项目目录」和「工作区目录」 - **项目目录**:你选的那个仓库,Agent 干活的主战场 - **工作区目录**:QwenPaw 内部存配置、会话历史、记忆等的隐藏目录,**Agent 默认不该碰** Coding 模式的系统提示会反复强调这个区分,避免 Agent 在不该出现的地方 `ls` 或写文件。 --- ## 退出 Coding 模式 点击同一个切换按钮,从 `Chat` 切回普通模式。Agent 的项目目录绑定和系统提示注入会立即解除,但你的项目文件、Git 状态等都保持不变。 --- ## 常见问题 **Q:切换 Coding 模式会影响我已经存在的记忆 / Skills 吗?** 不会。Coding 模式只改 Agent 的系统提示和工具集,不动记忆、Skills、Persona 这些独立功能。 **Q:可以同时绑定多个项目吗?** 每个 Agent 同一时间只绑定一个项目目录。需要切换项目时,重新打开项目选择窗口选另一个即可。 **Q:`lsp` / `ast_search` 没出现在工具列表里?** 打开新对话再试。这两个工具是按项目和环境动态注册的,旧会话需要重启。如果项目里没装对应语言的 LSP 服务器(如纯 Go 项目但只装了 pylsp),`lsp` 会自动跳过对应语言。 **Q:Coding 模式和 Skills / Plan / Cron 这些可以一起用吗?** 可以。Coding 模式只是一个 UI 布局 + 工具增强层,和其他功能正交。