Issue:read_file 工具对 .vue 文件返回错误,但 modify_file 可以正常工作

Bug 反馈已修复
用用户7100702026-06-164301

问题描述

read_file 工具无法读取 .vue 文件,返回错误提示 "read_file 仅支持文本文件和图片",但 modify_file 工具可以正常修改 .vue 文件。这导致工作流程断裂:无法先读取文件内容了解上下文,就无法精确修改。

复现步骤

测试 1:读取 .vue 文件 ❌

read_file("front/src/App.vue")
→ 返回:{"success":false,"error":"无法读取: front/src/App.vue\nread_file 仅支持文本文件和图片。"}

测试 2:修改 .vue 文件 ✅

modify_file("front/src/App.vue", operation="insert_after_line", afterLine=1, content="<!-- 测试注释 -->")
→ 返回:{"success":true,"data":"文件已修改: front/src/App.vue (insert_after_line)"}
→ 验证:bash head -n 10 确认修改成功写入

测试 3:对比其他文件类型

文件类型 示例文件 read_file modify_file
.txt D:\Desktop\新建 文本文档.txt ✅ 正常 ✅ 正常
.java /.../test/tst1.java ✅ 正常 ✅ 正常
.js front/babel.config.js ✅ 正常 未测试
.ts public/cdn/axios/index.d.ts ✅ 正常 未测试
.vue front/src/App.vue ❌ 错误 ✅ 正常

错误分析

read_file 工具内部对 .vue 文件的 MIME 类型或扩展名判断存在问题,错误地将其识别为非文本文件,但:

  1. .vue 文件本质上是纯文本文件(XML/HTML + JavaScript + CSS)
  2. modify_file 工具可以正常处理,说明系统底层文件 I/O 没有问题
  3. 其他文本格式(.java, .js, .ts)都能正常读取

实际影响

  1. 无法使用标准工作流程:正常流程是 read_file → 分析内容 → modify_file 精确修改,现在被迫盲改
  2. 必须使用 bash 绕过:用 cat/head/tail 命令读取,但命令输出的内容没有行号,无法使用 modify_file 的 replace_lines 等精确定位功能
  3. sed 存在转义问题:在 Windows Git Bash 下使用 sed 修改时,转义字符处理容易出错

环境信息

  • 工作空间:D:\
  • 工作空间类型:external
  • 权限模式:full_access
  • 平台:Windows
  • Shell:Git Bash

预期行为

.vue 文件是标准的文本文件,read_file 应该像处理 .js、.ts、.java 一样正常读取。

建议修复方案

  1. 检查 read_file 工具的文件类型白名单,确保包含 .vue 扩展名
  2. 或改用基于文件内容的文本检测(如检查是否包含可打印字符),而非依赖扩展名白名单
  3. 统一 read_file 和 modify_file 的文件类型判断逻辑

可能受影响的其他文件类型

评论与讨论

0/2000

还没有评论,分享你的体验吧。