用途:把 Textual 终端 UI 渲染成 SVG 截图。它通过 Textual 的无头测试框架运行真实应用,驱动到目标状态后保存合成后的终端画面,官方建议优先于浏览器自动化或系统级截图工具。
主要能力:以确定性终端尺寸启动应用,模拟按键交互,在目标状态可见时调用 app.save_screenshot(output_path) 输出 .svg 文件。
使用方式:先确定 App 类与到达目标 UI 的最短可信本地路径;在仓库外编写临时 Python 脚本,用 app.run_test(size=(columns, rows)) 启动,启动后及每次改变可见状态后调用 await pilot.pause(),可用 pilot.press(...) 模拟交互,最后保存 SVG 并检查文件大小是否合理,用完删除临时脚本与截图。示例从 libs/code 运行:uv run python /tmp/capture_dcode_ui.py。
适用场景:为 deepagents-code/dcode 或独立 Textual 应用生成界面预览、附件或截图。
限制与安全:仅使用可信的本地应用代码;无头应用仍可能执行启动钩子、子进程或网络调用。对 DeepAgentsApp,需在导入 deepagents_code 前把 DEEPAGENTS_HOME 设为临时目录,并在挂载前 mock _post_paint_init,仅替换 agent 不足以隔离启动副作用。不要截取密钥、凭据、私密对话或无关用户数据,只准备预览所需的合成内容。终端尺寸要有界,可从 (110, 36) 开始。等待 worker、动画和模态过渡稳定,用额外 pilot.pause() 而非任意 sleep。生成的 SVG 不能证明交互可用,行为验证应使用常规 Textual 测试。不要手工编辑 SVG,应重现目标状态后重新截图。