Skip to content

[code-review] desktop_control typeText 未转义换行/Tab 等控制字符 — 多行文本输入在 macOS 上 100% 编译失败 #178

Description

@topcheer

文件与行号

internal/tool/desktop_control_darwin.go:231-240(typeText,随 da94e2e 挪动过行号,内容未变)

问题描述

转义只处理 \\"(L235-236),但生成的 Swift 源码用单行双引号字面量 let text = "%s"(L239)。text 含换行/Tab/回车等控制字符时,Swift 源码出现裸控制字符 → swift -e 编译失败 → 整个 type 动作失败。

触发场景

desktop_control {action:"type", text:"line1\nline2"}(多行文本输入是最常见用例)。已在 macOS 实测:

  • 裸换行 → error: unterminated string literal
  • 裸 Tab → error: unprintable ASCII character found in source file

两者均编译失败,无回退路径。同文件 L668 附近第二处相同转义逻辑(keyCombo/keys 路径)同样遗漏。

预期行为 vs 实际行为

  • 预期:type 动作可输入多行文本
  • 实际:任何含控制字符的输入 100% 失败(确定性编译错误)

修复建议

\n\\n\r\\r\t\\t;或对全部 rune < 0x20 输出 \u{XX} 转义。

严重程度

Medium(经独立 subagent 复核并在本机 swift 工具链实测复现编译失败)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions