尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于 CLI-Anything RenderDoc Harness 的无头 GPU 帧捕获分析实践指南

基于 CLI-Anything RenderDoc Harness 的无头 GPU 帧捕获分析实践指南 基于 CLI-Anything RenderDoc Harness 的无头 GPU 帧捕获分析实践指南【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything本指南围绕 CLI-Anything 仓库中 renderdoc/agent-harness 提供的 RenderDoc CLI Harnesscli-anything-renderdoc展开讲解如何在不打开 RenderDoc GUI 的情况下通过命令行对 Vulkan、D3D11/D3D12、OpenGL/OpenGL ES 的.rdc帧捕获文件进行结构化分析。读完本文你将掌握捕获文件元数据读取、Draw Call 检索、管线状态与着色器反汇编、纹理导出与像素拾取、缓冲区与网格数据读取、GPU 计数器查询、双捕获差分比对等一整套可脚本化、可被 Agent 调用的 GPU 调试能力。RenderDoc 与 CLI Harness 概览RenderDoc 是一款免费开源的 GPU 帧捕获与分析工具支持 Vulkan、D3D11、D3D12、OpenGL 与 OpenGL ES 等主流图形 API。它能够捕获单帧的 GPU 命令序列并允许对每一个 Draw Call、资源、着色器与管线状态进行细粒度检查。CLI-Anything 仓库在 renderdoc/agent-harness 下实现了一个基于 Click 的 CLI Harness将 RenderDoc 的 Python 回放 APIreplay API封装为cli-anything-renderdoc工具。它的核心价值在于无头化headless与可脚本化分析流程不再依赖交互式 GUI可以用一条条命令或让 AI Agent 批量调用完成捕获检查、状态导出与结果对比并将结果以 JSON 形式输出便于机器解析与后续处理。Harness 的整体架构来自 HARNESS.md如下agent-harness/ ├── HARNESS.md # Harness 规格说明 ├── RENDERDOC.md # 软件专用 SOP本文骨架 ├── setup.py # PEP 420 namespace package └── cli_anything/ # 无 __init__.pynamespace package └── renderdoc/ # 有 __init__.py ├── renderdoc_cli.py # Click 主入口 ├── core/ │ ├── capture.py # 捕获文件打开/元数据/转换 │ ├── actions.py # Draw Call / Action 树导航 │ ├── textures.py # 纹理枚举、像素拾取、导出 │ ├── pipeline.py # 管线状态、着色器导出、diff、cbuffer │ ├── resources.py # 缓冲区/资源枚举与读取 │ ├── mesh.py # 顶点输入/输出解码 │ ├── counters.py # GPU 性能计数器 │ ├── diff.py # 管线状态差异比对 │ └── preview.py # 预览包捕获与检查 ├── utils/ │ ├── output.py # JSON/表格输出格式化 │ └── errors.py # 错误处理 ├── skills/SKILL.md # 面向 AI 的可发现技能定义 └── tests/ # 单测与 E2E 测试其中RENDERDOC.md定义了本工具面向的软件能力矩阵CLI Coverage Map是理解命令设计意图的权威文档HARNESS.md则从工程实现角度描述了命令分组与设计模式。核心概念捕获、Action、资源、管线状态与回放理解 CLI 之前先建立 RenderDoc 的五个核心概念见 RENDERDOC.md。Capture File.rdc.rdc是一个二进制文件包含单个帧的所有 GPU 状态与命令。文件内嵌若干段sections纹理、着色器、结构化数据、缩略图等。CLI 的capture info可列出这些段及其大小、类型capture thumb可提取内嵌缩略图capture convert可转换/重存捕获。ActionsAction 是捕获中记录的 GPU 操作呈分层树状结构PushMarker / PopMarker调试分组例如RenderPass: ForwardOpaque用于组织渲染流程Drawcall实际的绘制调用携带三角形/顶点数量信息Clear清除渲染目标或深度缓冲Dispatch计算着色器派发Copy / Resolve资源拷贝操作Present帧呈现。在源码 core/actions.py 中ActionFlags位掩码被解码为可读标记列表包括Clear、Drawcall、Dispatch、CmdList、SetMarker、PushMarker、PopMarker、Present、MultiAction、Copy、Resolve、GenMips、PassBoundary、Indexed、Instanced、Indirect、ClearColor、ClearDepthStencil、BeginPass、EndPass等CLI 输出中每个 Action 会携带这些标记方便过滤。Resources资源由唯一的ResourceId标识Textures2D、3D、Cube、数组纹理含 mip 层级Buffers顶点、索引、常量、结构化缓冲区Shaders编译后的着色器程序。Pipeline State在任意事件点上完整的 GPU 管线状态都可以被检查已绑定的着色器阶段VS、HS、DS、GS、PS、CS、顶点输入属性布局、渲染目标与深度目标、视口与裁剪矩形、混合/深度模板/光栅化状态、着色器资源纹理、缓冲区、采样器以及常量缓冲区内容。Replay回放捕获可以在本地 GPU 上回放。ReplayController提供的能力包括将当前事件定位到任意 Draw Call、回读纹理/缓冲区/网格数据、拾取像素、获取 GPU 计数器、反汇编着色器。安装与运行环境安装与运行的前提条件在 renderdoc/agent-harness/cli_anything/renderdoc/README.md 中有明确说明。安装cd renderdoc/agent-harness pip install -e .前置条件必须安装 RenderDoc且其 Python 模块可被导入。需要将 RenderDoc 的 Python 目录加入PYTHONPATH# Windows典型路径 set PYTHONPATHC:\Program Files\RenderDoc # Linux典型路径 export PYTHONPATH/opt/renderdoc/lib依赖清单见 HARNESS.md类型依赖必需click8.0、prompt-toolkit3.0、python3.10可选运行时renderdocPython 模块来自 RenderDoc 安装测试pytest7.0值得强调的是**惰性导入lazy loading**设计renderdoc模块只在命令实际执行时才被导入CLI 解析阶段不会导入。这意味着即使当前机器没有安装 RenderDoccli-anything-renderdoc --help依然可以正常工作见 renderdoc_cli.py 与 HARNESS 中的设计模式 1。全局选项与命令分组全局选项选项说明--capture / -c path.rdc捕获文件路径也支持环境变量RENDERDOC_CAPTURE指定默认路径--json以 JSON 格式输出机器可读--debug出错时显示 traceback--version显示版本其中--capture通过环境变量RENDERDOC_CAPTURE提供默认值这在批量脚本中非常实用见 renderdoc_cli.py。命令分组总览所有命令按功能分为 8 个命令组 1 个 REPL 交互模式见 HARNESS.md分组命令captureinfo、thumb、convertactionslist、summary、find、gettextureslist、get、save、save-outputs、pickpipelinestate、shader-export、cbuffer、diffresourceslist、buffers、read-buffermeshinputs、outputscounterslist、fetchpreviewrecipes、capture、diff、latest快速上手示例以下命令均来自 README.md 的 Quick Start# 查看捕获信息元数据 内嵌段 cli-anything-renderdoc --capture frame.rdc capture info # 只列出实际 Draw Call cli-anything-renderdoc -c frame.rdc actions list --draws-only # Action 类型统计 cli-anything-renderdoc -c frame.rdc actions summary # 将纹理导出为 PNG cli-anything-renderdoc -c frame.rdc textures save resourceId -o output.png # 拾取像素 cli-anything-renderdoc -c frame.rdc textures pick resourceId 100 200 # 查看某个 Draw Call 的完整管线状态 cli-anything-renderdoc -c frame.rdc pipeline state 42 # 导出片元着色器反汇编 cli-anything-renderdoc -c frame.rdc pipeline shader-export 42 --stage Fragment # 列出可用 GPU 计数器 cli-anything-renderdoc -c frame.rdc counters list # 以 float32 格式读取缓冲区数据 cli-anything-renderdoc -c frame.rdc resources read-buffer resourceId --format float32 # 所有命令都支持 JSON 输出 cli-anything-renderdoc -c frame.rdc --json actions listCapture 命令组捕获文件的打开、元数据、缩略图与转换设计要点CaptureHandle捕获文件的生命周期由CaptureHandle统一管理见 core/capture.py。它是一个上下文管理器同时拥有CaptureFile与ReplayController的生命周期OpenCaptureFile()打开文件OpenFile()失败时返回非 Succeeded 的ResultCode回放控制器采用懒初始化只有真正访问controller属性时才调用OpenCapture(rd.ReplayOptions(), None)并检查LocalReplaySupport()——这保证了纯元数据操作如capture info不必启动完整回放rd.InitialiseReplay/ShutdownReplay使用引用计数管理多个句柄共享时不会过早关闭回放环境close()依次调用控制器Shutdown()、捕获文件Shutdown()并释放回放引用。capture infocli-anything-renderdoc -c frame.rdc capture info输出捕获文件绝对路径、图形 APIpipelineType、是否支持本地回放以及所有内嵌段的索引、名称、类型、未压缩/压缩大小。实现上metadata()会读取APIProperties并在旧版 API 上回退到控制器的GetAPIProperties()list_sections()遍历GetSectionCount()与GetSectionProperties(i)见 core/capture.py。capture thumbcli-anything-renderdoc -c frame.rdc capture thumb -o preview.png --max-dim 256调用GetThumbnail(rd.FileType.PNG, max_dim)提取内嵌缩略图并写为 PNG。--max-dim为 0 时保持原始尺寸。capture convertcli-anything-renderdoc -c frame.rdc capture convert -o frame_v2.rdc通过Convert()重存/转换捕获格式。默认目标格式为rdc可通过--format指定其他格式。Actions 命令组Draw Call 检索与 Action 树导航Action 树从controller.GetRootActions()获取工具将其递归展平flat并在字典中记录depth字段以保留层级信息见 core/actions.py。每个 Action 序列化后包含 eventId、actionId、名称、flags 列表、numIndices、numInstances、indexOffset、baseVertex、vertexOffset、instanceOffset、输出目标与子 Action 数量等。命令功能actions list [--flat/--no-flat] [--draws-only]列出全部 Action--flat为展平列表默认--no-flat只返回根级--draws-only只保留实际 Draw Callactions summary按类型统计 Action 数量total、drawcalls、clears、dispatches、copies、markers、presentsactions find pattern按名称大小写不敏感地搜索 Actionactions get event_id按 eventId 获取单个 Action 详情# 列出全部 Action含缩进层级与 flags cli-anything-renderdoc -c frame.rdc actions list # 只查看 Draw Call cli-anything-renderdoc -c frame.rdc actions list --draws-only # 按名称查找 cli-anything-renderdoc -c frame.rdc actions find Opaque # 获取单个 Action cli-anything-renderdoc -c frame.rdc actions get 42get_drawcalls_only()的实现是对展平列表按Drawcall in flags过滤action_summary()则遍历全部 Action 分别累加六类计数见 core/actions.py。actions find与actions get都采用先展平后过滤的策略保证任意层级嵌套的 Action 都可被检索到。Textures 命令组纹理枚举、像素拾取与导出纹理相关的实现集中在 core/textures.py。命令功能textures list列出捕获中所有纹理resourceId、宽高、mips、格式textures get resource_id获取单个纹理详情textures save resource_id -o path将纹理导出为图片文件textures save-outputs event_id -o dir保存某个事件的全部渲染目标输出含深度textures pick resource_id x y读取指定像素值纹理导出参数textures save支持丰富的导出参数cli-anything-renderdoc -c frame.rdc textures save resourceId -o out.png \ --format png --mip 0 --slice 0 --alpha preserve--formatpng、jpg/jpeg、bmp、tga、hdr、exr、dds见 core/textures.py--mip要保存的 mip 层级-1表示全部仅 DDS--slice数组切片-1表示全部仅 DDS--alphaAlpha 处理方式preserve保留、discard丢弃、blend_checkerboard混合到棋盘格背景。底层实现构造rd.TextureSave设置destType、mip、slice.sliceIndex与alpha映射后调用controller.SaveTexture()返回文件绝对路径、格式与大小见 core/textures.py。save-outputs一键导出渲染目标cli-anything-renderdoc -c frame.rdc textures save-outputs 42 -o outputs/ --format png该命令先将回放定位到event_idSetFrameEvent读取GetOutputTargets()与GetDepthTarget()逐个跳过空资源并保存为event{id}_rt{i}.png深度目标保存为event{id}_depth.png见 core/textures.py。这是快速拿到某一帧“实际渲染结果”的高效途径。pick像素拾取cli-anything-renderdoc -c frame.rdc textures pick resourceId 100 200 --mip 0 --slice 0通过controller.PickPixel(tex_id, x, y, sub, rd.CompType.Typeless)获取像素并以 float、uint、int 三种数值表示形式输出见 core/textures.py适合脚本化断言像素颜色。Pipeline 命令组管线状态、着色器导出与常量缓冲区管线相关实现集中在 core/pipeline.py。pipeline state任意事件的完整管线状态cli-anything-renderdoc -c frame.rdc pipeline state 42get_pipeline_state()先SetFrameEvent(event_id, True)定位事件再GetPipelineState()提取见 core/pipeline.py六个着色器阶段Vertex、TessControl、TessEval、Geometry、Fragment、Compute的绑定情况、resourceId、入口点、是否可调试、输入/输出签名数量、常量块与资源数量顶点输入名称、绑定的顶点缓冲区索引、字节偏移、是否逐实例、格式渲染目标与深度目标resourceId视口x、y、width、height、minDepth、maxDepth光栅化状态、混合状态、深度模板状态。其中光栅化/混合/深度模板状态针对不同图形 API 走不同的提取路径D3D11 走GetD3D11PipelineState、D3D12 走GetD3D12PipelineState、OpenGL 走GetGLPipelineState、Vulkan 走GetVulkanPipelineState见 core/pipeline.py。这意味着同一份 CLI 在 D3D11、D3D12、GL、Vulkan 捕获上都能给出结构一致的状态 JSON便于跨 API 做统一分析。pipeline shader-export着色器源码/反汇编导出# 导出片元着色器 cli-anything-renderdoc -c frame.rdc pipeline shader-export 42 --stage Fragment # 指定输出目录 cli-anything-renderdoc -c frame.rdc pipeline shader-export 42 --stage Vertex -o my_shaders/导出策略见 core/pipeline.py按着色器编码类型分派文本着色器GLSL、HLSL、Slang原始字节本身即可读直接保存为.glsl/.hlsl/.slang源文件二进制着色器DXBC、DXIL、SPIR-V、OpenGL SPIR-V依次尝试 ① 提取内嵌调试源码用/Zi编译的 HLSL/GLSL→ ② RenderDoc 反汇编字节码汇编。原始二进制始终会一并保存。默认输出目录为capture_exported/shaders/。反汇编通过controller.DisassembleShader(pso, refl, target)实现并支持枚举多个反汇编目标见 core/pipeline.py。pipeline cbuffer常量缓冲区内容cli-anything-renderdoc -c frame.rdc pipeline cbuffer 42 --stage Fragment --index 0get_cbuffer_contents()使用controller.GetCBufferVariableContents()读取某个阶段、某个索引的常量缓冲区内变量及其运行时值见 core/pipeline.py。索引越界时返回明确错误信息适合自动化脚本做边界校验。pipeline diff管线状态差异比对# 同一捕获内两个事件对比 cli-anything-renderdoc -c frame.rdc pipeline diff 100 200 # 两个不同捕获的事件对比 cli-anything-renderdoc -c frame.rdc pipeline diff 100 200 -b b.rdc # 自定义输出路径 cli-anything-renderdoc -c a.rdc pipeline diff 100 200 -b b.rdc -o result.jsonpipeline diff是排查“两次绘制为何表现不同”的关键武器见 renderdoc_cli.py支持同捕获双事件、跨捕获双事件--capture-b / -b两种模式--compact/--no-compact默认 compact会递归剪除所有标记为SAME的相同部分让 diff JSON 只保留真正变化的字段结果写入 JSON 文件自动生成如diff_stem_eid100_vs_eid200.jsonstdout 只打印路径非常适合流水线消费。扩展shader reflection 深度导出除了上述命令Harness 还内置了隐藏命令pipeline dump-shader-reflection与pipeline dump可一次性导出完整ShaderReflection签名、cbuffer 布局、资源声明、调试源码、运行时 GPU 绑定bindings.json、常量缓冲区运行时值cbuffer_values.json以及原始着色器字节输出结构参考 core/pipeline.py。反射导出默认不包含文件正文仅给出contents_length避免产生数 MB 的 JSON 巨型文件需要源码时再显式导出。Resources 命令组缓冲区与资源枚举命令功能resources list列出所有资源resourceId、类型、名称resources buffers只列出缓冲区资源resourceId、长度、创建标志resources read-buffer resource_id读取原始缓冲区数据# 十六进制输出默认 cli-anything-renderdoc -c frame.rdc resources read-buffer resourceId # float32 输出 cli-anything-renderdoc -c frame.rdc resources read-buffer resourceId --format float32 # uint32 输出指定偏移与长度 cli-anything-renderdoc -c frame.rdc resources read-buffer resourceId --offset 16 --length 128 --format uint32get_buffer_data()通过controller.GetBufferData(buf_id, offset, length)取数并按--format解码见 core/resources.pyhex默认十六进制字符串float32按小端f解包为浮点数列表uint32按小端I解包为无符号整数列表raw字节列表。Mesh 命令组顶点输入与 VS 后输出# 解码顶点着色器输入最多 100 个顶点 cli-anything-renderdoc -c frame.rdc mesh inputs 42 --max-vertices 100 # 查看 VS 后post-VS输出签名 cli-anything-renderdoc -c frame.rdc mesh outputs 42 --max-vertices 100get_mesh_inputs()从管线状态读取索引缓冲IBuffer、顶点缓冲VBuffers与顶点属性布局先按索引缓冲格式B/H/I取决于byteStride解码索引再结合baseVertex、vertexOffset计算每个顶点的实际字节偏移最后根据属性格式解码为数值见 core/mesh.py。格式解码支持 UInt/SInt/Float/UNorm/SNorm 等分量类型并正确处理 BGRA 通道重排与归一化值换算见 core/mesh.py。get_mesh_outputs()则调用GetPostVSData(0, 0, rd.MeshDataStage.VSOut)获取顶点着色器输出数据并列出输出签名的语义名、分量数与系统值见 core/mesh.py可用于验证 VS 输出的装配正确性。Counters 命令组GPU 性能计数器# 列出所有可用计数器 cli-anything-renderdoc -c frame.rdc counters list # 抓取指定计数器结果默认 SamplesPassed cli-anything-renderdoc -c frame.rdc counters fetch --ids 0,1,2list_counters()通过EnumerateCounters()DescribeCounter()枚举计数器返回名称、描述、结果字节宽度、结果类型与单位见 core/counters.py。fetch_counters()默认抓取SamplesPassed若不可用则取第一个可用计数器通过controller.FetchCounters()获取逐事件的计数器值并按计数器分组、标注 eventId 输出见 core/counters.py。传入非法 ID 时工具会返回valid_counter_ids提示可用范围。Preview 预览包与 REPL 交互模式Preview BundlesHarness 提供“预览包”preview bundle机制用于诚实honest的捕获检查与比对——不依赖人工操作 GUI 截图而是把关键证据落盘# 捕获一个预览包 cli-anything-renderdoc -c frame.rdc --json preview capture --recipe quick --event-id 42 # 捕获一个 diff 预览包 cli-anything-renderdoc -c frame.rdc --json preview diff 100 200 # 返回最新已存在的包 cli-anything-renderdoc -c frame.rdc --json preview latest --recipe quick预览包通常包含缩略图、渲染目标输出图片以及管线/Action JSONdiff 包还会额外包含pipeline_diff.json。相关实现位于 core/preview.py命令定义见 renderdoc_cli.py。生成后可以使用 CLI-Hub 的预览工具查看cli-hub previews inspect|html|open参见 cli-hub 模块。REPL 交互模式不带子命令直接运行cli-anything-renderdoc -c frame.rdc即进入交互式 REPL逐行输入子命令即可见 renderdoc_cli.pycapture → info|thumb|convert actions → list|summary|find|get textures → list|get|save|save-outputs|pick pipeline → state|shader-export|cbuffer|diff preview → recipes|capture|diff|latest resources → list|buffers|read-buffer mesh → inputs|outputs counters → list|fetch help / quitREPL 内部对每一行调用cli.main(args, standalone_modeFalse, objctx.obj)复用同一套命令解析捕获句柄在整个会话期间保持打开_repl_mode控制清理回调跳过关闭直到退出才统一释放。工程实现模式与测试体系五项关键设计模式来自 HARNESS.md惰性加载renderdoc仅在命令运行时导入保证--help不依赖 RenderDoc 安装CaptureHandle 上下文管理器统一管理 CaptureFile 与 ReplayController 生命周期replay API 引用计数共享字典化返回所有 core 函数返回纯dict/list可直接 JSON 序列化天然适配--json输出双输出_output()根据--json切换 JSON 或人类可读格式见 renderdoc_cli.py错误字典边界层错误以{error: message}返回而非抛异常让脚本能稳定解析失败原因。测试策略测试计划与结果记录在 tests/TEST.md单元测试tests/test_core.py基于 mock不依赖renderdoc模块与真实.rdc文件覆盖 actions、textures、resources、diff、输出与错误工具、CLI help 与子进程调用共 45 项全部通过E2E 测试tests/test_full_e2e.py需要真实 RenderDoc .rdc捕获文件通过RENDERDOC_TEST_CAPTURE环境变量指定缺少前置条件时优雅跳过14 项全部 Skip。运行方式# 单元测试无需 RenderDoc cd renderdoc/agent-harness pytest cli_anything/renderdoc/tests/test_core.py -v # E2E 测试需要 RenderDoc 捕获文件 RENDERDOC_TEST_CAPTURE/path/to/capture.rdc pytest cli_anything/renderdoc/tests/test_full_e2e.py -v # 全部测试 pytest cli_anything/renderdoc/tests/ -v这种“离线可跑单测 真实环境跑 E2E”的分层策略让没有 GPU 调试环境的 CI 也能验证命令解析与核心逻辑而真正需要 RenderDoc 的路径则在具备条件的环境里回归。CLI 覆盖矩阵能力与现状一览RENDERDOC.md 中的 CLI Coverage Map 完整刻画了当前工具对 RenderDoc 能力的覆盖情况RenderDoc FeatureCLI CommandStatusOpen/close capturecapture info✅ DoneCapture metadatacapture info✅ DoneList sectionscapture info✅ DoneExtract thumbnailcapture thumb✅ DoneConvert capturecapture convert✅ DoneList all actionsactions list✅ DoneAction summaryactions summary✅ DoneFind actions by nameactions find✅ DoneGet single actionactions get✅ DoneFilter draw calls onlyactions list --draws-only✅ DoneList texturestextures list✅ DoneGet texture detailstextures get✅ DoneSave texture to filetextures save✅ DoneSave render target outputstextures save-outputs✅ DonePick pixel valuetextures pick✅ DonePipeline statepipeline state✅ DoneShader disassemblypipeline shader-export✅ DoneConstant buffer contentspipeline cbuffer✅ DonePipeline diffpipeline diff✅ DoneList resourcesresources list✅ DoneList buffersresources buffers✅ DoneRead buffer dataresources read-buffer✅ DoneVertex inputsmesh inputs✅ DonePost-VS outputsmesh outputs✅ DoneGPU counters listcounters list✅ DoneFetch counter resultscounters fetch✅ DoneRemote capture—❌ FutureShader debugging—❌ FutureResource diff—❌ Future边界说明远程捕获Remote capture、着色器逐步调试Shader debugging、资源差异比对Resource diff三项在本文档中标注为“Future”即当前 CLI 尚未覆盖属规划能力不应视为已实现功能。典型实战流程一次完整的无头帧分析把以上命令串联起来可以形成一条完整的无头分析流水线# 0. 设置环境Linux 示例 export PYTHONPATH/opt/renderdoc/lib export RENDERDOC_CAPTUREframe.rdc # 1. 捕获概览API、回放能力、内嵌段 cli-anything-renderdoc capture info # 2. 动作概览先统计再定位目标 Draw Call cli-anything-renderdoc actions summary cli-anything-renderdoc actions find Shadow # 3. 导出关键事件的所有渲染目标拿到“看得见”的证据 cli-anything-renderdoc textures save-outputs 42 -o rt42/ --format png # 4. 管线状态 着色器导出定位状态差异 cli-anything-renderdoc pipeline state 42 cli-anything-renderdoc pipeline shader-export 42 --stage Vertex # 5. 常量缓冲区与网格数据深入数值层 cli-anything-renderdoc pipeline cbuffer 42 --stage Vertex --index 0 cli-anything-renderdoc mesh inputs 42 # 6. 双事件/双捕获差异对比回归分析 cli-anything-renderdoc pipeline diff 100 200 cli-anything-renderdoc pipeline diff 42 42 -b reference.rdc # 7. 全部以 JSON 输出交给脚本/Agent 做断言 cli-anything-renderdoc --json actions list --draws-only配合RENDERDOC_CAPTURE环境变量与--json全局开关这组命令可以被 CI 流水线、自动化测试与 AI Agent 稳定复用——这正是 CLI-Anything “让所有软件 Agent-Native”理念在 GPU 图形调试领域的具体落地从“人工打开 GUI 逐帧查看”升级为“命令行可编程、结果可结构化、证据可落盘”的调试范式。延伸阅读软件专用 SOP本文骨架renderdoc/agent-harness/RENDERDOC.mdHarness 规格说明renderdoc/agent-harness/HARNESS.md工具 README 与快速上手renderdoc/agent-harness/cli_anything/renderdoc/README.md主 CLI 入口renderdoc/agent-harness/cli_anything/renderdoc/renderdoc_cli.py测试计划与结果renderdoc/agent-harness/cli_anything/renderdoc/tests/TEST.md面向 AI 的技能定义renderdoc/agent-harness/cli_anything/renderdoc/skills/SKILL.md【免费下载链接】CLI-AnythingCLI-Anything: Making ALL Software Agent-Native -- CLI-Hub: https://clianything.cc/项目地址: https://gitcode.com/GitHub_Trending/cl/CLI-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表