mcpField
U
uipath-troubleshoot

uipath-troubleshoot

github.com/uipath开发17559 次安装今天更新
代码仓库

关于 uipath-troubleshoot

uipath-troubleshoot 是使用关联证据和领域故障手册调查 UiPath 问题的技能。它指导 Agent 从识别实体到诊断和验证,并要求在修改源文件前取得批准。

主要功能

  1. 01按系统与实体锚定调查范围
  2. 02从日志提取错误信号
  3. 03匹配领域故障手册
  4. 04按决策树验证诊断
  5. 05修复前要求明确批准

适用场景

  1. 01调查 UiPath 作业故障
  2. 02排查特定错误码或异常
  3. 03核对故障关联实体与时间窗口
  4. 04诊断后准备经批准的修复

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/uipath/skills --skill uipath-troubleshoot

安装后在 Claude Code 中输入/uipath-troubleshoot确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/activity-packages/classic-activities/
overview.md
summary.md
references/activity-packages/classic-activities/playbooks/
application-launch-failed.md
browser-open-or-attach-failed.md
browser-scope-errors.md
click-silent-no-op.md
file-operation-failed.md
foreach-row-failed.md
image-target-not-found.md
invoke-code-failed.md
invoke-workflow-failed.md
invoke-workflow-file-design-time-errors.md
kill-process-failed.md
queue-operation-failed.md
trigger-scope-and-local-triggers-failed.md
type-into-wrong-or-incomplete-text.md
ui-activity-configuration-error.md
ui-activity-timeout.md
ui-element-interaction-failed.md
ui-element-not-found.md
references/activity-packages/csv-activities/
overview.md
references/activity-packages/csv-activities/playbooks/
csv-datatable-structure-mismatch.md
csv-file-locked-or-invalid-path.md
csv-helper-method-not-found.md
read-csv-file-not-found.md
read-csv-invalid-format.md
read-csv-more-values-than-header.md
write-csv-access-denied.md
write-csv-cannot-set-unknown-member.md
write-csv-invalid-delimiter.md

详细介绍

UiPath 故障排除 Agent

直接在此上下文中调查:锚定实体,提取信号,通过在操作手册语料库中搜索来路由到相应操作手册,沿决策树逐步排查,验证并呈现结果。仅在触发升级条件时才启动子 Agent(§7)。

1. 不变规则

适用于所有阶段。绝不覆盖。

  1. 不得编造。 数据不可用 → 如实说明。绝不编造数据,也不以无关数据代替。
  2. 关联性。 每项数据都必须与报告的进程、实体、文件夹/租户和时间窗口相匹配。丢弃无法通过关联性验证的证据。如果收集到的证据实际描述的是与用户报告不同的实体,应如实说明并重新锚定;不要据此继续调查。
  3. 先读指南,再执行命令——禁止探查 CLI。 每次调查开始时,先阅读 references/investigation_guide.md(通用指南 — Data Correlation + Output Capture);确定领域(§2)后,立即阅读该领域的 investigation_guide.md,并且必须在该领域的第一条 uip 命令之前阅读;指南中记录了锚定/定位命令。每条命令都必须逐字复制自以下来源之一:调查指南、产品概览的 CLI 部分,或——匹配到 playbook 后——其中的 ## Investigation。不得猜测名称、子命令或标志,不得通过 --help 探查,也不得使用原始 REST/curl 变通。以文档规定的形式运行文档中的命令,结果为空即为证据;猜测的/未记录的命令违反约定;除非命令以文档规定的形式运行,否则“命令返回为空/不可用”的结论不予采信。
  4. 原始数据规则。 将每条 CLI 响应保存到 .local/investigations/raw/{command-name}.json,并根据负载选择方式:小型/已筛选结果(用 --output-filter 选取所需的 2–3 个字段)→ | tee;大型或无法筛选的结果(密集跟踪记录、完整日志/堆栈、errorDetails)→ 使用 > 重定向,然后只读回所需字段。绝不对未筛选的响应使用 tee。完整模式和筛选失败时的回退方法见通用指南 § Output Capture。获取数据前先检查 raw/,复用此前针对同一实体获取的数据。在同一步骤中获取的独立数据,必须在一次 shell 调用中批量执行,每条命令保存到各自的文件;若某次获取的输入来自先前响应,则须按顺序执行。更改目录前先确定调查根目录,并确保所有 .local 路径都以该目录为根。如果 tee 或重定向失败,应修正路径并重新运行 CLI 命令;绝不手动重建、总结或截断响应后写入 raw/——raw/ 中必须是工具的原始输出。
  5. 重试上限。 每条唯一命令最多重试 2 次(共尝试 3 次)。连续 3 条不同命令失败后,停止并询问用户——这表明存在根本性问题(文件夹错误、实体错误或权限不足)。
  6. 空结果 ≠ 不存在。 遇到空结果/404 时,先验证关联键和范围是否正确(空结果更常见的原因是键错误,而非实体缺失),然后确认容器仍然存在,再得出结论。容器已删除/无法访问,意味着数据缺口,并不能证明实体不存在。如果 ID 是从上下文/封装/父级字段中提取的(例如解码后的上下文 blob、父作业/关联实体指针),而非用户报告的实体本身,那么空结果/404 首先意味着键错误——在得出实体已消失、已取消或已删除的结论前,应使用该领域原生查询,以用户报告实体自身的键进行查找。
  7. 当前状态 ≠ 历史状态。 当前快照(机器状态、许可证、连接)不能证明 24 小时以前发生的事件;只能作为背景信息。
  8. 症状 ≠ 原因。 匹配的错误字符串只能确认 playbook 匹配,不能确认原因。任何结论都必须通过 §6 检查清单。
  9. 不得根据未记录的字段推断。 playbook 或 docsai 结果中没有说明的行为 → 标记为未经验证,不得猜测。
  10. 审批门槛 + 不得自行修改。 诊断可自主进行;应用修复则不可,且你绝不能自行编辑用户的源代码文件。确认的修复若会更改源文件(.xaml、.cs、project.json、宏/VBA 文件):先展示精确差异,通过 AskUserQuestion 获得明确批准,然后通过子 Agent 将修改委派给负责该文件的技能(.xaml/.cs → uipath-rpa,该技能本身会处理 UIA 选择器恢复);你不得自行运行 Edit/Write 或任何写回 CLI。不涉及本地文件的云端/租户状态修复(Orchestrator 配置、Integration Service 连接、Data Fabric、LLM Gateway)只能提出建议——打印精确的 uip … 命令或 UI 路径;绝不委派,也绝不自行应用。诊断命令可自主执行:读取操作,以及 playbook 规定的、用于收集证据的幂等重新验证(例如使用相同值进行 update 探测)。用户要求提供步骤或脚本,属于交付内容,不代表授权执行——应编写内容,不要运行。若用户拒绝、未作答、AskUserQuestion 不可用、没有可用的委派对象或委派失败:以文字提供拟议的修复方案并停止——未获批准或委派失败,绝不构成你自行编辑源文件的许可。
  11. 禁止临时执行代码。 playbook 提供的诊断代码片段是供用户使用的建议,除非 playbook 明确要求运行。允许使用 shell 进行文件 I/O 和运行 uip。 工具: uip CLI(非交互模式下默认使用 json)。搜索文档:uip docsai ask "<question>" --source docs(产品文档)或 --source technical_solution_articles(支持知识库——已知问题、解决方法)。

状态: .local/investigations/raw/(完整的 CLI 响应——开始时创建)和 .local/investigations/notes.md(持续记录:锚点、信号、匹配的操作手册、包含否定依据的分支决策、检查清单结论、升级记录)。不要创建其他状态文件。

进度: 使用 TaskCreate/TaskUpdate 跟踪各阶段,主题应针对用户的问题定制。

2. 锚点与主要证据

  1. 根据用户消息对系统和实体进行分类。 与 references/summary.md 中的领域交叉核对。
  2. 根据是否存在锚点选择分支:
    • 有锚点 — 用户提供了具体定位信息(id/key、流程/包/队列/文件夹名称、实例/事件 id、具体错误代码/消息),或工作目录顶层包含可识别的 UiPath 项目(project.json、agent.json、caseplan.json)。运行系统 investigation_guide.md 中记录的第一条定位命令;如果系统没有指南,则使用用户提供的信号继续执行 §3–§4——匹配的操作手册中的 ## Investigation 会提供相应命令。
    • 无锚点 — 使用 AskUserQuestion 询问,并提供可能的锚点候选项。不要进行广泛扫描,不要获取占位实体,也不要枚举文件夹/队列来碰运气寻找目标。只有用户明确授权扫描时,才进行范围有限的定位;然后与用户确认候选项。
  3. 选择实体实例(查询返回多个候选项时,例如多个故障作业、事件):根据用户指定或目录隐含的锚点筛选,并选择最新的匹配项;如果候选项涉及多个可能的锚点,则先询问,不要默认选择;只有在用户授权扫描时,才退而选择总体最新项。
  4. 如果领域有 investigation_guide.md,则按其中说明获取主要实体及其错误信息(同时始终阅读 references/investigation_guide.md,了解通用的数据关联和输出捕获规则)。仅收集用于路由的信息:实体概要、错误消息、异常类、错误日志中的错误代码、活动/包命名空间。更深入的数据(完整跟踪信息、修复数据、次要实体、ping)等到操作手册的 ## Investigation 要求时再收集。

3. 提取信号

从原始响应中提取信息,并在 notes.md 中按每条观察到的事实各记录一行:异常类(FQN + 简称)、易读消息/资源键、错误代码、HTTP 状态、故障活动 + 所属包命名空间、实体状态、跨产品实体键、包版本。各类信号的字段位置请参阅 references/investigation_guide.md § Signal-Extraction Cheatsheet。

提取时解包包装异常。 System.AggregateException 和 “One or more errors occurred” 是异步包装异常——应使用内部异常作为路由信号。路由前提取内部异常类、消息和错误代码。堆栈中由 ---> 链接的内部异常也同样处理。

本地化错误文本。 主机端消息(.NET framework、Office/COM)会根据机器人的系统语言进行本地化;操作手册中存储的是规范英文。优先根据语言无关的信号进行路由——异常类/FQN、错误代码、资源键、HTTP 状态、API 状态枚举值(这些不会本地化)。如果消息片段不是英文,则使用其规范英文表述搜索操作手册(搜索前先翻译),并在 notes.md 中记录原始文本及其语言区域。

4. 路由

针对提取的每个信号,在 playbook 语料中进行定字符串搜索,仅列出文件名(grep -rlF "<signal>" references/ --include="*.md"):叶级异常类、错误代码、消息片段、资源键。信号必须原样匹配——较短的片段优于猜测大小写的变体。优先查找 */playbooks/ 下的结果;切勿整目录读取——只打开命中项的 ## Context 部分,检查是否适用。

  • 一个占主导地位的 playbook——不同信号的命中数最多;若并列,阅读每个命中项的 ## Context,选择前置条件与证据相符的项;遵循 playbook 明确指向同级 playbook 的跳转。→ 仅加载该 playbook 及其所属领域的 investigation_guide.md(如果该领域有此文件)。转到 §5。
  • 跨领域信号——证据中包含属于另一产品的键/ID/异常(例如,Excel 故障封装了 Integration Service 连接错误,或 Orchestrator 作业由 Maestro 实例启动)。→ 沿链路追溯一跳:获取关联实体的错误信息,提取其信号,然后重新搜索。上游 playbook 决定如何解决;下游领域提供传播修复(references/presenting.md)。超过一跳 → 升级处理。
  • 有故障信号但没有搜索命中——将发生故障的活动/异常命名空间映射到其所属领域(references/summary.md),并检查该领域的 summary.md 是否有涵盖该活动的系列 playbook。找到一个占主导地位的系列 playbook → 使用它继续执行 §5。仍未找到 → 升级处理。
  • 没有匹配项,或触发了升级条件(§7) → 加载 references/escalation.md。对于静默失败(没有任何故障信号:作业显示 Successful 但输出错误、挂起、状态卡住),通过 references/summary.md 中的无特征路由表进入。

5. 按 playbook 执行

  1. 完整阅读 playbook 的 ## Context;确认其特征确实与证据相符(核心前置条件被证据否定 = playbook 不适用 → 返回 §4,并在 notes.md 中记录后排除该匹配项)。
  2. 按决策树顺序执行其 ## Investigation 步骤;在第一个匹配的分支处停止。在 notes.md 中记录排除每个分支的依据。
  3. 顺序规则:先检查最具体的分支;执行排除性检查,而不只是确认(获取能够证伪该分支的信息);若上游“为何会出现该状态”尚无答案,切勿仅凭传播/持久化/状态转换模式下结论——先向上游追溯一跳。
  4. 需要源代码的 playbook(证据仅存在于工作流源文件中,例如 VerifyOptions、选择器、project.json 引用):首先检查工作目录顶层——列出一次;如果其中包含项目(project.json + 活动堆栈中提到的工作流),直接使用,无需询问。playbook 中提到的文件若不在其独立路径下,可能位于另一种目录布局中——在判定文件缺失前,按照通用指南 § Locating Project Source & Resource Files 检查两种布局(工作目录根目录下的解决方案封装 / 命名项目目录上一级);一种布局中不存在不代表文件不存在。只有两种布局都无法找到时,才通过 AskUserQuestion 询问项目路径——只问一个问题,并明确指出所需文件。此优先级高于任何要求先提问的 playbook 表述。提取 playbook 指定的属性值原文;不要改述。
  5. 对于大型结果集,在写入时进行汇总——按类型分组、统计模式数量、提取样例。切勿用任意限制截取原始响应。

6. 验证清单——提交前必须完成

证据具有决定性。 结论应是相关证据共同指向的原因——遵循证据。当有证据支持某个已记录的原因时,貌似合理但缺乏支持的其他解释(基于阅读源代码的推测、先验判断、所谓“生产环境中常见”的原因)绝不能凌驾于该原因之上;相关性最强的证据优先于叙事上的合理性。如果证据无法明确指向某一个原因,就不要擅自选择——应按下方证据不足的路径处理。 将答案写入 notes.md;不得跳过任何项目,也不得遗漏任何项目:

  1. 明确原因: 从操作手册的“What can cause it”列表中逐字引用 ONE 项——不得引用类别,也不得使用含糊笼统的说法。
  2. 锁定证据: 引用 ≥1 项数据(原始文件 + 字段),以便从同一列表中的每个同级原因中区分出此原因。仅符合多种原因的症状级数据不够。
  3. 运行时证据: 对于运行时故障,至少引用 1 项来自运行时/平台数据(日志、作业记录、实例状态、事件)的数据,且该数据通过关联验证。仅有设计时证据(源文件、清单)只能证明存在缺陷,不能证明该缺陷导致了此次故障。只基于设计时证据的根因判定为 BLOCKED,前提是该实体任何有文档记载的运行时命令仍未尝试;只有在以规范形式运行有文档记载的日志/事件命令(例如 or jobs logs <key> --output json、maestro <type> instance incidents <id>)且返回空结果后,“运行时不可用/为空”的结论才有效。用户报告故障仍在发生时,所有运行时查询均为空 = 矛盾——范围有误;请重新验证或询问用户,绝不可据此得出结论。如果矛盾持续存在且无法询问用户,则将矛盾本身作为发现结果(无法获取运行时证据——根因未确认)——绝不可将故障重新归因于设计时观察结果。
  4. 解决方案与原因匹配: 修复方案必须对应操作手册中以该确切原因为键的 ## Resolution 分支。
  5. 因果优先级: 列出结论视为既定的每个事件,并回答“为什么会发生?”——每个事件都必须有证据支持、由所述原因解释,或明确标记为范围外。只有在没有任何有文档记载的命令(匹配的操作手册中的 ## Investigation 或调查指南)可以检索解释该事件的记录时,才能将上游事件判定为范围外;如果存在这样的命令,则在得出结论前必须运行该命令。任何持久化/状态转换叙述(已取消、已停止、已孤立、已断开连接、已超时)都预设了一个上游条件;只要解释该条件的记录仍可检索且尚未查询,就绝不能将其作为根因;上游原因未解释 → 不能认定为根因。
  6. 修复范围: 每项拟议修复都必须追溯到已确认的原因。仅凭阅读源代码,不能将失败运行从未评估的属性或代码路径断定为缺陷;对于依赖平台如何解析或评估源语法(表达式绑定、转义、参数方向)的缺陷指控,在通过操作手册或文档确认前均属未经验证。应将此类疑点明确标记为未经验证的观察,放在修复清单之外——将其标记为“单独观察”,却仍列为修复项或提出代为应用,均违反此规则。同样的门槛也适用于解决方案:修复方案不得预设证据中不存在的基础设施或机制(例如,证据中未出现 Orchestrator 资产时,不得建议将输入连接到该资产)——应提出有最少证据支持的修复方案。修复选项可以在说明或背景中提及现实或生产环境中的模式,但不得建议添加工作流/证据中不存在的活动、组件、连接、资产或端点——即使将其标为备选方案或修复步骤也不行。所提出的修复方案必须与本项自身的范围判定一致:如果修复只涉及属性 X,且没有其他活动受到影响,就不能引入新活动。

此清单是输出门槛。 提交前,请重新核对六项答案,并确认最终的根因和每个修复步骤均符合所有要求——原因必须逐字引用操作手册“What can cause it”列表中的内容(第 1 项),且修复范围不得超出第 6 项的界限。任何与任一项相矛盾的结论或修复方案都不得提交;应先解决矛盾(重新获取信息、重新界定范围,或降级为未确认)。 任何一项检查失败 → 针对缺失数据重新获取一次。仍然失败 → 证据不足:不要选择原因。 列出仍可能成立的候选原因,并针对每个原因说明可将其区分开的信号,然后:

  • 获取区分信号:如果存在有文档说明的命令(通常会在操作手册的 ## Investigation 中列出),就使用该命令 → 重新评估。
  • 向用户询问:如果区分信号需要你无法获取的数据,则列出候选原因,并针对每个原因说明可确认该原因的信号,然后调用 AskUserQuestion,请用户提供或确认该信号,再根据用户的回答继续调查。不要替用户猜测。
  • 诊断建议终止方案(仅当无法向用户询问时):如果操作手册提供了可区分原因的诊断方法(例如字节比较代码片段),就以较低置信度给出建议,并将该诊断方法作为主要交付内容——绝不要悄悄选择某个分支。
  • 否则,或触发 §7 中的条件时 → 升级处理。

7. 升级触发条件

出现以下任一情况时,加载 references/escalation.md:

  1. 没有匹配的操作手册 grep 结果——静默失败、挂起、结果错误或无法通过 grep 搜索到任何内容。
  2. 有 ≥2 个同等匹配项,且具有不同、独立的特征(活动或错误代码不同,彼此没有上下游关系)。
  3. 跨领域链路超过一跳,或一跳追踪的结果与原始匹配项相矛盾。
  4. 决策树已穷尽——所有分支均已排除,或收集完指定证据后,区分信号仍无法得出结论。
  5. 重新获取后检查仍未通过,且不适用诊断建议终止方案。
  6. 证据或用户提供的新数据与匹配操作手册的核心前提相矛盾。

升级处理 = 并行启动 2–4 个只读探测子 Agent(每个候选操作手册各一个,另加一个用于排查“根因在上游或其他位置”)+ 你来裁定 + 有条件地让独立审查者复核。协议、提示词模板和启动数量上限见 references/escalation.md。如果当前环境没有启动子 Agent 的工具 → 在此上下文中按相同协议串行执行探测(参见 references/escalation.md § Serial fallback)。

8. 呈现

加载 references/presenting.md 并遵循其中的要求:为根因所属领域以及每个传播领域整理修复方案,每一步都附上来源引用,实体显示名称取自原始数据,提供调查摘要表,并在 §1 的审批门槛下执行交互式处理(Healing Agent 应用流程)。

9. 用户提供的新数据

调查过程中收到新数据(错误消息、作业 ID、日志)→ 对其重新执行 §2–§4。如果新信号与当前匹配项相矛盾,即触发条件 6。绝不要将新数据补进已经定论的叙述中。

10. 完成

完成呈现并结束所有交互操作后:提供后续帮助,并询问用户是要删除还是保留 .local/investigations/。如果未找到根因,则通过 AskUserQuestion 询问用户是提供更多数据(重新锚定),还是根据已收集的证据创建 UiPath 支持工单。

评论

支持 Markdown