agent-insight 0.2.0-beta → 0.2.2-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +2 -2
  3. package/.next/standalone/.next/server/app/(main)/accessconfig/install/page_client-reference-manifest.js +1 -1
  4. package/.next/standalone/.next/server/app/(main)/dashboard/page_client-reference-manifest.js +1 -1
  5. package/.next/standalone/.next/server/app/(main)/dataset/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/(main)/eval/page_client-reference-manifest.js +1 -1
  7. package/.next/standalone/.next/server/app/(main)/eval/run/[runId]/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/(main)/eval/trajectory/[taskId]/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(main)/eval/trajectory/[taskId]/trace/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(main)/eval/trajectory/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/(main)/fault/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(main)/metrics/evaluators/[id]/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(main)/metrics/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/(main)/modelconfig/registry/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(main)/modelconfig/web-search/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(main)/quality/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/(main)/skill-eval/grayscale/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/(main)/skill-eval/page_client-reference-manifest.js +1 -1
  19. package/.next/standalone/.next/server/app/(main)/skill-generator/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/(main)/skill-opt/[name]/[version]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/(main)/skill-opt/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/.next/server/app/(main)/trace/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  24. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  25. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  26. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  27. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  28. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  29. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  30. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  31. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  32. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  33. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  34. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  35. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  36. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  37. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  38. package/.next/standalone/.next/server/app/accessconfig/channels.html +1 -1
  39. package/.next/standalone/.next/server/app/accessconfig/channels.rsc +1 -1
  40. package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig/channels/__PAGE__.segment.rsc +1 -1
  41. package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig/channels.segment.rsc +1 -1
  42. package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
  43. package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p.segment.rsc +1 -1
  44. package/.next/standalone/.next/server/app/accessconfig/channels.segments/_full.segment.rsc +1 -1
  45. package/.next/standalone/.next/server/app/accessconfig/channels.segments/_head.segment.rsc +1 -1
  46. package/.next/standalone/.next/server/app/accessconfig/channels.segments/_index.segment.rsc +1 -1
  47. package/.next/standalone/.next/server/app/accessconfig/channels.segments/_tree.segment.rsc +1 -1
  48. package/.next/standalone/.next/server/app/accessconfig/health.html +1 -1
  49. package/.next/standalone/.next/server/app/accessconfig/health.rsc +1 -1
  50. package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig/health/__PAGE__.segment.rsc +1 -1
  51. package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig/health.segment.rsc +1 -1
  52. package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
  53. package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p.segment.rsc +1 -1
  54. package/.next/standalone/.next/server/app/accessconfig/health.segments/_full.segment.rsc +1 -1
  55. package/.next/standalone/.next/server/app/accessconfig/health.segments/_head.segment.rsc +1 -1
  56. package/.next/standalone/.next/server/app/accessconfig/health.segments/_index.segment.rsc +1 -1
  57. package/.next/standalone/.next/server/app/accessconfig/health.segments/_tree.segment.rsc +1 -1
  58. package/.next/standalone/.next/server/app/accessconfig/install.html +1 -1
  59. package/.next/standalone/.next/server/app/accessconfig/install.rsc +2 -2
  60. package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig/install/__PAGE__.segment.rsc +2 -2
  61. package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig/install.segment.rsc +1 -1
  62. package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
  63. package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p.segment.rsc +1 -1
  64. package/.next/standalone/.next/server/app/accessconfig/install.segments/_full.segment.rsc +2 -2
  65. package/.next/standalone/.next/server/app/accessconfig/install.segments/_head.segment.rsc +1 -1
  66. package/.next/standalone/.next/server/app/accessconfig/install.segments/_index.segment.rsc +1 -1
  67. package/.next/standalone/.next/server/app/accessconfig/install.segments/_tree.segment.rsc +1 -1
  68. package/.next/standalone/.next/server/app/accessconfig/webhooks.html +1 -1
  69. package/.next/standalone/.next/server/app/accessconfig/webhooks.rsc +1 -1
  70. package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig/webhooks/__PAGE__.segment.rsc +1 -1
  71. package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig/webhooks.segment.rsc +1 -1
  72. package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
  73. package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p.segment.rsc +1 -1
  74. package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_full.segment.rsc +1 -1
  75. package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_head.segment.rsc +1 -1
  76. package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_index.segment.rsc +1 -1
  77. package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_tree.segment.rsc +1 -1
  78. package/.next/standalone/.next/server/app/accessconfig.html +1 -1
  79. package/.next/standalone/.next/server/app/accessconfig.rsc +1 -1
  80. package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p/accessconfig/__PAGE__.segment.rsc +1 -1
  81. package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
  82. package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p.segment.rsc +1 -1
  83. package/.next/standalone/.next/server/app/accessconfig.segments/_full.segment.rsc +1 -1
  84. package/.next/standalone/.next/server/app/accessconfig.segments/_head.segment.rsc +1 -1
  85. package/.next/standalone/.next/server/app/accessconfig.segments/_index.segment.rsc +1 -1
  86. package/.next/standalone/.next/server/app/accessconfig.segments/_tree.segment.rsc +1 -1
  87. package/.next/standalone/.next/server/app/agents.html +1 -1
  88. package/.next/standalone/.next/server/app/agents.rsc +1 -1
  89. package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +1 -1
  90. package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p/agents.segment.rsc +1 -1
  91. package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p.segment.rsc +1 -1
  92. package/.next/standalone/.next/server/app/agents.segments/_full.segment.rsc +1 -1
  93. package/.next/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
  94. package/.next/standalone/.next/server/app/agents.segments/_index.segment.rsc +1 -1
  95. package/.next/standalone/.next/server/app/agents.segments/_tree.segment.rsc +1 -1
  96. package/.next/standalone/.next/server/app/api/agent/run/route.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/api/agent/stream/route.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/app/api/debug/batch-tasks/[taskId]/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/api/debug/execute/route.js.nft.json +1 -1
  100. package/.next/standalone/.next/server/app/api/debug/grayscale-tasks/[taskId]/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/api/eval/terminate-all/route.js.nft.json +1 -1
  102. package/.next/standalone/.next/server/app/api/eval/trajectory/results/[id]/route.js +1 -1
  103. package/.next/standalone/.next/server/app/api/eval/trajectory/run/route.js +6 -6
  104. package/.next/standalone/.next/server/app/api/eval/trajectory/run/route.js.nft.json +1 -1
  105. package/.next/standalone/.next/server/app/api/eval/trajectory/runs/route.js +1 -1
  106. package/.next/standalone/.next/server/app/api/fault/diagnosis/stream/route.js.nft.json +1 -1
  107. package/.next/standalone/.next/server/app/api/observe/executions/[executionId]/agent-debug/route.js.nft.json +1 -1
  108. package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/run/route.js.nft.json +1 -1
  109. package/.next/standalone/.next/server/app/api/skill-generator/attachments/route.js.nft.json +1 -1
  110. package/.next/standalone/.next/server/app/api/skill-generator/chat/route.js.nft.json +1 -1
  111. package/.next/standalone/.next/server/app/api/skill-opt/chat/route.js.nft.json +1 -1
  112. package/.next/standalone/.next/server/app/api/user-evaluators/route.js.nft.json +1 -1
  113. package/.next/standalone/.next/server/app/dashboard.html +1 -1
  114. package/.next/standalone/.next/server/app/dashboard.rsc +2 -2
  115. package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p/dashboard/__PAGE__.segment.rsc +2 -2
  116. package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p/dashboard.segment.rsc +1 -1
  117. package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p.segment.rsc +1 -1
  118. package/.next/standalone/.next/server/app/dashboard.segments/_full.segment.rsc +2 -2
  119. package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  120. package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +1 -1
  121. package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  122. package/.next/standalone/.next/server/app/dataset.html +1 -1
  123. package/.next/standalone/.next/server/app/dataset.rsc +2 -2
  124. package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p/dataset/__PAGE__.segment.rsc +2 -2
  125. package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p/dataset.segment.rsc +1 -1
  126. package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p.segment.rsc +1 -1
  127. package/.next/standalone/.next/server/app/dataset.segments/_full.segment.rsc +2 -2
  128. package/.next/standalone/.next/server/app/dataset.segments/_head.segment.rsc +1 -1
  129. package/.next/standalone/.next/server/app/dataset.segments/_index.segment.rsc +1 -1
  130. package/.next/standalone/.next/server/app/dataset.segments/_tree.segment.rsc +1 -1
  131. package/.next/standalone/.next/server/app/eval/trajectory.html +1 -1
  132. package/.next/standalone/.next/server/app/eval/trajectory.rsc +2 -2
  133. package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval/trajectory/__PAGE__.segment.rsc +2 -2
  134. package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval/trajectory.segment.rsc +1 -1
  135. package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval.segment.rsc +1 -1
  136. package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p.segment.rsc +1 -1
  137. package/.next/standalone/.next/server/app/eval/trajectory.segments/_full.segment.rsc +2 -2
  138. package/.next/standalone/.next/server/app/eval/trajectory.segments/_head.segment.rsc +1 -1
  139. package/.next/standalone/.next/server/app/eval/trajectory.segments/_index.segment.rsc +1 -1
  140. package/.next/standalone/.next/server/app/eval/trajectory.segments/_tree.segment.rsc +1 -1
  141. package/.next/standalone/.next/server/app/eval.html +1 -1
  142. package/.next/standalone/.next/server/app/eval.rsc +2 -2
  143. package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p/eval/__PAGE__.segment.rsc +2 -2
  144. package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p/eval.segment.rsc +1 -1
  145. package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p.segment.rsc +1 -1
  146. package/.next/standalone/.next/server/app/eval.segments/_full.segment.rsc +2 -2
  147. package/.next/standalone/.next/server/app/eval.segments/_head.segment.rsc +1 -1
  148. package/.next/standalone/.next/server/app/eval.segments/_index.segment.rsc +1 -1
  149. package/.next/standalone/.next/server/app/eval.segments/_tree.segment.rsc +1 -1
  150. package/.next/standalone/.next/server/app/fault.html +1 -1
  151. package/.next/standalone/.next/server/app/fault.rsc +2 -2
  152. package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p/fault/__PAGE__.segment.rsc +2 -2
  153. package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p/fault.segment.rsc +1 -1
  154. package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p.segment.rsc +1 -1
  155. package/.next/standalone/.next/server/app/fault.segments/_full.segment.rsc +2 -2
  156. package/.next/standalone/.next/server/app/fault.segments/_head.segment.rsc +1 -1
  157. package/.next/standalone/.next/server/app/fault.segments/_index.segment.rsc +1 -1
  158. package/.next/standalone/.next/server/app/fault.segments/_tree.segment.rsc +1 -1
  159. package/.next/standalone/.next/server/app/index.html +1 -1
  160. package/.next/standalone/.next/server/app/index.rsc +1 -1
  161. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  162. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
  163. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  164. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
  165. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  166. package/.next/standalone/.next/server/app/login.html +1 -1
  167. package/.next/standalone/.next/server/app/login.rsc +1 -1
  168. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +1 -1
  169. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
  170. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +1 -1
  171. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  172. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  173. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
  174. package/.next/standalone/.next/server/app/memory.html +1 -1
  175. package/.next/standalone/.next/server/app/memory.rsc +1 -1
  176. package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p/memory/__PAGE__.segment.rsc +1 -1
  177. package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p/memory.segment.rsc +1 -1
  178. package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p.segment.rsc +1 -1
  179. package/.next/standalone/.next/server/app/memory.segments/_full.segment.rsc +1 -1
  180. package/.next/standalone/.next/server/app/memory.segments/_head.segment.rsc +1 -1
  181. package/.next/standalone/.next/server/app/memory.segments/_index.segment.rsc +1 -1
  182. package/.next/standalone/.next/server/app/memory.segments/_tree.segment.rsc +1 -1
  183. package/.next/standalone/.next/server/app/metrics.html +1 -1
  184. package/.next/standalone/.next/server/app/metrics.rsc +2 -2
  185. package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p/metrics/__PAGE__.segment.rsc +2 -2
  186. package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p/metrics.segment.rsc +1 -1
  187. package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p.segment.rsc +1 -1
  188. package/.next/standalone/.next/server/app/metrics.segments/_full.segment.rsc +2 -2
  189. package/.next/standalone/.next/server/app/metrics.segments/_head.segment.rsc +1 -1
  190. package/.next/standalone/.next/server/app/metrics.segments/_index.segment.rsc +1 -1
  191. package/.next/standalone/.next/server/app/metrics.segments/_tree.segment.rsc +1 -1
  192. package/.next/standalone/.next/server/app/modelconfig/registry.html +1 -1
  193. package/.next/standalone/.next/server/app/modelconfig/registry.rsc +2 -2
  194. package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig/registry/__PAGE__.segment.rsc +2 -2
  195. package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig/registry.segment.rsc +1 -1
  196. package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
  197. package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p.segment.rsc +1 -1
  198. package/.next/standalone/.next/server/app/modelconfig/registry.segments/_full.segment.rsc +2 -2
  199. package/.next/standalone/.next/server/app/modelconfig/registry.segments/_head.segment.rsc +1 -1
  200. package/.next/standalone/.next/server/app/modelconfig/registry.segments/_index.segment.rsc +1 -1
  201. package/.next/standalone/.next/server/app/modelconfig/registry.segments/_tree.segment.rsc +1 -1
  202. package/.next/standalone/.next/server/app/modelconfig/web-search.html +1 -1
  203. package/.next/standalone/.next/server/app/modelconfig/web-search.rsc +2 -2
  204. package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig/web-search/__PAGE__.segment.rsc +2 -2
  205. package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig/web-search.segment.rsc +1 -1
  206. package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
  207. package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p.segment.rsc +1 -1
  208. package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_full.segment.rsc +2 -2
  209. package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_head.segment.rsc +1 -1
  210. package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_index.segment.rsc +1 -1
  211. package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_tree.segment.rsc +1 -1
  212. package/.next/standalone/.next/server/app/modelconfig.html +1 -1
  213. package/.next/standalone/.next/server/app/modelconfig.rsc +1 -1
  214. package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p/modelconfig/__PAGE__.segment.rsc +1 -1
  215. package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
  216. package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p.segment.rsc +1 -1
  217. package/.next/standalone/.next/server/app/modelconfig.segments/_full.segment.rsc +1 -1
  218. package/.next/standalone/.next/server/app/modelconfig.segments/_head.segment.rsc +1 -1
  219. package/.next/standalone/.next/server/app/modelconfig.segments/_index.segment.rsc +1 -1
  220. package/.next/standalone/.next/server/app/modelconfig.segments/_tree.segment.rsc +1 -1
  221. package/.next/standalone/.next/server/app/optapi.html +1 -1
  222. package/.next/standalone/.next/server/app/optapi.rsc +1 -1
  223. package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p/optapi/__PAGE__.segment.rsc +1 -1
  224. package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p/optapi.segment.rsc +1 -1
  225. package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p.segment.rsc +1 -1
  226. package/.next/standalone/.next/server/app/optapi.segments/_full.segment.rsc +1 -1
  227. package/.next/standalone/.next/server/app/optapi.segments/_head.segment.rsc +1 -1
  228. package/.next/standalone/.next/server/app/optapi.segments/_index.segment.rsc +1 -1
  229. package/.next/standalone/.next/server/app/optapi.segments/_tree.segment.rsc +1 -1
  230. package/.next/standalone/.next/server/app/quality.html +1 -1
  231. package/.next/standalone/.next/server/app/quality.rsc +2 -2
  232. package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p/quality/__PAGE__.segment.rsc +2 -2
  233. package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p/quality.segment.rsc +1 -1
  234. package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p.segment.rsc +1 -1
  235. package/.next/standalone/.next/server/app/quality.segments/_full.segment.rsc +2 -2
  236. package/.next/standalone/.next/server/app/quality.segments/_head.segment.rsc +1 -1
  237. package/.next/standalone/.next/server/app/quality.segments/_index.segment.rsc +1 -1
  238. package/.next/standalone/.next/server/app/quality.segments/_tree.segment.rsc +1 -1
  239. package/.next/standalone/.next/server/app/security.html +1 -1
  240. package/.next/standalone/.next/server/app/security.rsc +1 -1
  241. package/.next/standalone/.next/server/app/security.segments/!KG1haW4p/security/__PAGE__.segment.rsc +1 -1
  242. package/.next/standalone/.next/server/app/security.segments/!KG1haW4p/security.segment.rsc +1 -1
  243. package/.next/standalone/.next/server/app/security.segments/!KG1haW4p.segment.rsc +1 -1
  244. package/.next/standalone/.next/server/app/security.segments/_full.segment.rsc +1 -1
  245. package/.next/standalone/.next/server/app/security.segments/_head.segment.rsc +1 -1
  246. package/.next/standalone/.next/server/app/security.segments/_index.segment.rsc +1 -1
  247. package/.next/standalone/.next/server/app/security.segments/_tree.segment.rsc +1 -1
  248. package/.next/standalone/.next/server/app/skill-detail.html +1 -1
  249. package/.next/standalone/.next/server/app/skill-detail.rsc +1 -1
  250. package/.next/standalone/.next/server/app/skill-detail.segments/_full.segment.rsc +1 -1
  251. package/.next/standalone/.next/server/app/skill-detail.segments/_head.segment.rsc +1 -1
  252. package/.next/standalone/.next/server/app/skill-detail.segments/_index.segment.rsc +1 -1
  253. package/.next/standalone/.next/server/app/skill-detail.segments/_tree.segment.rsc +1 -1
  254. package/.next/standalone/.next/server/app/skill-detail.segments/skill-detail/__PAGE__.segment.rsc +1 -1
  255. package/.next/standalone/.next/server/app/skill-detail.segments/skill-detail.segment.rsc +1 -1
  256. package/.next/standalone/.next/server/app/skill-eval/grayscale.html +2 -2
  257. package/.next/standalone/.next/server/app/skill-eval/grayscale.rsc +3 -3
  258. package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval/grayscale/__PAGE__.segment.rsc +2 -2
  259. package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval/grayscale.segment.rsc +1 -1
  260. package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval.segment.rsc +1 -1
  261. package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p.segment.rsc +1 -1
  262. package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_full.segment.rsc +3 -3
  263. package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_head.segment.rsc +1 -1
  264. package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_index.segment.rsc +1 -1
  265. package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_tree.segment.rsc +1 -1
  266. package/.next/standalone/.next/server/app/skill-eval.html +1 -1
  267. package/.next/standalone/.next/server/app/skill-eval.rsc +4 -4
  268. package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p/skill-eval/__PAGE__.segment.rsc +2 -2
  269. package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p/skill-eval.segment.rsc +1 -1
  270. package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p.segment.rsc +1 -1
  271. package/.next/standalone/.next/server/app/skill-eval.segments/_full.segment.rsc +4 -4
  272. package/.next/standalone/.next/server/app/skill-eval.segments/_head.segment.rsc +1 -1
  273. package/.next/standalone/.next/server/app/skill-eval.segments/_index.segment.rsc +1 -1
  274. package/.next/standalone/.next/server/app/skill-eval.segments/_tree.segment.rsc +1 -1
  275. package/.next/standalone/.next/server/app/skill-generator.html +1 -1
  276. package/.next/standalone/.next/server/app/skill-generator.rsc +2 -2
  277. package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p/skill-generator/__PAGE__.segment.rsc +2 -2
  278. package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p/skill-generator.segment.rsc +1 -1
  279. package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p.segment.rsc +1 -1
  280. package/.next/standalone/.next/server/app/skill-generator.segments/_full.segment.rsc +2 -2
  281. package/.next/standalone/.next/server/app/skill-generator.segments/_head.segment.rsc +1 -1
  282. package/.next/standalone/.next/server/app/skill-generator.segments/_index.segment.rsc +1 -1
  283. package/.next/standalone/.next/server/app/skill-generator.segments/_tree.segment.rsc +1 -1
  284. package/.next/standalone/.next/server/app/skill-history.html +1 -1
  285. package/.next/standalone/.next/server/app/skill-history.rsc +1 -1
  286. package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p/skill-history/__PAGE__.segment.rsc +1 -1
  287. package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p/skill-history.segment.rsc +1 -1
  288. package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p.segment.rsc +1 -1
  289. package/.next/standalone/.next/server/app/skill-history.segments/_full.segment.rsc +1 -1
  290. package/.next/standalone/.next/server/app/skill-history.segments/_head.segment.rsc +1 -1
  291. package/.next/standalone/.next/server/app/skill-history.segments/_index.segment.rsc +1 -1
  292. package/.next/standalone/.next/server/app/skill-history.segments/_tree.segment.rsc +1 -1
  293. package/.next/standalone/.next/server/app/skill-opt.html +1 -1
  294. package/.next/standalone/.next/server/app/skill-opt.rsc +2 -2
  295. package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p/skill-opt/__PAGE__.segment.rsc +2 -2
  296. package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p/skill-opt.segment.rsc +1 -1
  297. package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p.segment.rsc +1 -1
  298. package/.next/standalone/.next/server/app/skill-opt.segments/_full.segment.rsc +2 -2
  299. package/.next/standalone/.next/server/app/skill-opt.segments/_head.segment.rsc +1 -1
  300. package/.next/standalone/.next/server/app/skill-opt.segments/_index.segment.rsc +1 -1
  301. package/.next/standalone/.next/server/app/skill-opt.segments/_tree.segment.rsc +1 -1
  302. package/.next/standalone/.next/server/app/skill-release.html +1 -1
  303. package/.next/standalone/.next/server/app/skill-release.rsc +1 -1
  304. package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p/skill-release/__PAGE__.segment.rsc +1 -1
  305. package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p/skill-release.segment.rsc +1 -1
  306. package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p.segment.rsc +1 -1
  307. package/.next/standalone/.next/server/app/skill-release.segments/_full.segment.rsc +1 -1
  308. package/.next/standalone/.next/server/app/skill-release.segments/_head.segment.rsc +1 -1
  309. package/.next/standalone/.next/server/app/skill-release.segments/_index.segment.rsc +1 -1
  310. package/.next/standalone/.next/server/app/skill-release.segments/_tree.segment.rsc +1 -1
  311. package/.next/standalone/.next/server/app/skills.html +1 -1
  312. package/.next/standalone/.next/server/app/skills.rsc +1 -1
  313. package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p/skills/__PAGE__.segment.rsc +1 -1
  314. package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p/skills.segment.rsc +1 -1
  315. package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p.segment.rsc +1 -1
  316. package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +1 -1
  317. package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
  318. package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +1 -1
  319. package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
  320. package/.next/standalone/.next/server/app/trace.html +1 -1
  321. package/.next/standalone/.next/server/app/trace.rsc +2 -2
  322. package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p/trace/__PAGE__.segment.rsc +2 -2
  323. package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p/trace.segment.rsc +1 -1
  324. package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p.segment.rsc +1 -1
  325. package/.next/standalone/.next/server/app/trace.segments/_full.segment.rsc +2 -2
  326. package/.next/standalone/.next/server/app/trace.segments/_head.segment.rsc +1 -1
  327. package/.next/standalone/.next/server/app/trace.segments/_index.segment.rsc +1 -1
  328. package/.next/standalone/.next/server/app/trace.segments/_tree.segment.rsc +1 -1
  329. package/.next/standalone/.next/server/chunks/[root-of-the-server]__29b88539._.js +1 -1
  330. package/.next/standalone/.next/server/chunks/[root-of-the-server]__571e2dc5._.js +1 -1
  331. package/.next/standalone/.next/server/chunks/[root-of-the-server]__aeca73e7._.js +1 -1
  332. package/.next/standalone/.next/server/chunks/_5041b697._.js +1 -1
  333. package/.next/standalone/.next/server/chunks/_73cb0d03._.js +7 -7
  334. package/.next/standalone/.next/server/chunks/_7ecc72d5._.js +1 -1
  335. package/.next/standalone/.next/server/chunks/_b2cfd29b._.js +1 -1
  336. package/.next/standalone/.next/server/chunks/_d36858e9._.js +3 -3
  337. package/.next/standalone/.next/server/chunks/src_lib_69eb724e._.js +1 -1
  338. package/.next/standalone/.next/server/chunks/ssr/_2e8ebb20._.js +1 -1
  339. package/.next/standalone/.next/server/chunks/ssr/_8e76c6f5._.js +1 -1
  340. package/.next/standalone/.next/server/chunks/ssr/_da30fab4._.js +1 -1
  341. package/.next/standalone/.next/server/chunks/ssr/_ddf088e7._.js +1 -1
  342. package/.next/standalone/.next/server/chunks/ssr/src_243b92c2._.js +1 -1
  343. package/.next/standalone/.next/server/chunks/ssr/src_app_(main)_eval_trajectory_page_tsx_052751f5._.js +1 -1
  344. package/.next/standalone/.next/server/chunks/ssr/src_app_(main)_skill-eval_page_tsx_d6828614._.js +1 -1
  345. package/.next/standalone/.next/server/chunks/ssr/src_f0e17888._.js +1 -1
  346. package/.next/standalone/.next/server/pages/404.html +1 -1
  347. package/.next/standalone/.next/server/pages/500.html +2 -2
  348. package/.next/standalone/.next/static/chunks/046dc786e7e13cc4.js +1 -0
  349. package/.next/standalone/.next/static/chunks/4812c235bebb18ff.js +1 -0
  350. package/.next/standalone/.next/static/chunks/49bb7f20fbab9dac.js +1 -0
  351. package/.next/standalone/.next/static/chunks/{150c66f334898c1b.js → 6f9e84819ba4f450.js} +1 -1
  352. package/.next/{static/chunks/9ce93159d07d77fc.js → standalone/.next/static/chunks/781813e2aa38a20f.js} +1 -1
  353. package/.next/{static/chunks/d12348f4045911d6.js → standalone/.next/static/chunks/84b0f0dc8be9bc7e.js} +1 -1
  354. package/.next/standalone/.next/static/chunks/8871e04c4e1fd6c4.js +1 -0
  355. package/.next/standalone/.next/static/chunks/e33bd5306b9b9d64.js +1 -0
  356. package/.next/standalone/package.json +1 -3
  357. package/.next/standalone/scripts/install.js +11 -0
  358. package/.next/standalone/scripts/postinstall.js +20 -6
  359. package/.next/standalone/scripts/start.js +8 -0
  360. package/.next/static/chunks/046dc786e7e13cc4.js +1 -0
  361. package/.next/static/chunks/4812c235bebb18ff.js +1 -0
  362. package/.next/static/chunks/49bb7f20fbab9dac.js +1 -0
  363. package/.next/static/chunks/{150c66f334898c1b.js → 6f9e84819ba4f450.js} +1 -1
  364. package/.next/{standalone/.next/static/chunks/9ce93159d07d77fc.js → static/chunks/781813e2aa38a20f.js} +1 -1
  365. package/.next/{standalone/.next/static/chunks/d12348f4045911d6.js → static/chunks/84b0f0dc8be9bc7e.js} +1 -1
  366. package/.next/static/chunks/8871e04c4e1fd6c4.js +1 -0
  367. package/.next/static/chunks/e33bd5306b9b9d64.js +1 -0
  368. package/package.json +1 -3
  369. package/scripts/install.js +11 -0
  370. package/scripts/postinstall.js +20 -6
  371. package/scripts/start.js +8 -0
  372. package/.next/standalone/.next/static/chunks/63fd190c8d8ebf18.js +0 -1
  373. package/.next/standalone/.next/static/chunks/7100361dbae12246.js +0 -1
  374. package/.next/standalone/.next/static/chunks/a9d1c1054358afe7.js +0 -1
  375. package/.next/standalone/.next/static/chunks/bc8ee6907cb73517.js +0 -1
  376. package/.next/standalone/.next/static/chunks/d2f0f5c92132648a.js +0 -1
  377. package/.next/static/chunks/63fd190c8d8ebf18.js +0 -1
  378. package/.next/static/chunks/7100361dbae12246.js +0 -1
  379. package/.next/static/chunks/a9d1c1054358afe7.js +0 -1
  380. package/.next/static/chunks/bc8ee6907cb73517.js +0 -1
  381. package/.next/static/chunks/d2f0f5c92132648a.js +0 -1
  382. /package/.next/standalone/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_buildManifest.js +0 -0
  383. /package/.next/standalone/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_clientMiddlewareManifest.json +0 -0
  384. /package/.next/standalone/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_ssgManifest.js +0 -0
  385. /package/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_buildManifest.js +0 -0
  386. /package/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_clientMiddlewareManifest.json +0 -0
  387. /package/.next/static/{xPAK0xEAbffUxaOdHM34l → _A9OyLyPRvkXox-SGvz3D}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,218469,456420,248105,e=>{"use strict";var t=e.i(271645);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,a)=>a?a.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,t.createContext)({}),o=(0,t.forwardRef)(({color:e,size:r,strokeWidth:o,absoluteStrokeWidth:i,className:s="",children:d,iconNode:c,...u},m)=>{let{size:g=24,strokeWidth:p=2,absoluteStrokeWidth:y=!1,color:f="currentColor",className:b=""}=(0,t.useContext)(l)??{},v=i??y?24*Number(o??p)/Number(r??g):o??p;return(0,t.createElement)("svg",{ref:m,...n,width:r??g??n.width,height:r??g??n.height,stroke:e??f,strokeWidth:v,className:a("lucide",b,s),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...c.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(d)?d:[d]])}),i=(e,n)=>{let l=(0,t.forwardRef)(({className:l,...i},s)=>(0,t.createElement)(o,{ref:s,iconNode:n,className:a(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=r(e),l};e.s(["default",()=>i],456420);let s=i("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);e.s(["PanelLeftClose",()=>s],218469);let d=i("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);e.s(["PanelLeftOpen",()=>d],248105)},540568,e=>{"use strict";var t=e.i(843476),a=e.i(218469),r=e.i(248105),n=e.i(760045);function l({title:e,actions:l}){let{isCollapsed:o,toggleSidebar:i}=(0,n.useSidebar)(),s=o?r.PanelLeftOpen:a.PanelLeftClose;return(0,t.jsxs)("header",{className:"sticky top-0 z-10 flex h-14 items-center gap-3 border-b border-border bg-card px-6",style:{flexShrink:0},children:[(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":o?"展开侧栏":"折叠侧栏",className:"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-foreground-secondary transition-colors hover:bg-background-secondary hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:(0,t.jsx)(s,{className:"size-4"})}),(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 text-sm font-medium text-foreground",children:"string"==typeof e?(0,t.jsx)("span",{className:"truncate",children:e}):e}),l&&(0,t.jsx)("div",{className:"flex items-center gap-2",children:l})]})}e.s(["AppTopBar",()=>l])},186336,e=>{"use strict";let t;var a=e.i(271645),r=e.i(981140),n=e.i(820783),l=e.i(843476),o=e.i(726330),i=e.i(610772),s=e.i(853660),d=e.i(774606),c=e.i(296626);e.i(174080);var u=Symbol("radix.slottable");function m(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===u}var g=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var r,o;let i,s,d,c=(o=r=`Primitive.${t}`,(i=a.forwardRef((e,t)=>{let{children:r,...l}=e;if(a.isValidElement(r)){var o;let e,i,s=(o=r,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),d=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(l,r.props);return r.type!==a.Fragment&&(d.ref=t?(0,n.composeRefs)(t,s):s),a.cloneElement(r,d)}return a.Children.count(r)>1?a.Children.only(null):null})).displayName=`${o}.SlotClone`,s=i,(d=a.forwardRef((e,t)=>{let{children:r,...n}=e,o=a.Children.toArray(r),i=o.find(m);if(i){let e=i.props.children,r=o.map(t=>t!==i?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,l.jsx)(s,{...n,ref:t,children:a.isValidElement(e)?a.cloneElement(e,void 0,r):null})}return(0,l.jsx)(s,{...n,ref:t,children:r})})).displayName=`${r}.Slot`,d),u=a.forwardRef((e,a)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(r?c:t,{...n,ref:a})});return u.displayName=`Primitive.${t}`,{...e,[t]:u}},{}),p=e.i(369340),y=Symbol("radix.slottable");function f(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===y}var b=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var r,o;let i,s,d,c=(o=r=`Primitive.${t}`,(i=a.forwardRef((e,t)=>{let{children:r,...l}=e;if(a.isValidElement(r)){var o;let e,i,s=(o=r,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),d=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(l,r.props);return r.type!==a.Fragment&&(d.ref=t?(0,n.composeRefs)(t,s):s),a.cloneElement(r,d)}return a.Children.count(r)>1?a.Children.only(null):null})).displayName=`${o}.SlotClone`,s=i,(d=a.forwardRef((e,t)=>{let{children:r,...n}=e,o=a.Children.toArray(r),i=o.find(f);if(i){let e=i.props.children,r=o.map(t=>t!==i?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,l.jsx)(s,{...n,ref:t,children:a.isValidElement(e)?a.cloneElement(e,void 0,r):null})}return(0,l.jsx)(s,{...n,ref:t,children:r})})).displayName=`${r}.Slot`,d),u=a.forwardRef((e,a)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(r?c:t,{...n,ref:a})});return u.displayName=`Primitive.${t}`,{...e,[t]:u}},{}),v=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),h=a.forwardRef((e,t)=>(0,l.jsx)(b.span,{...e,ref:t,style:{...v,...e.style}}));h.displayName="VisuallyHidden";var[x,k]=function(e,t=[]){let r=[],n=()=>{let t=r.map(e=>a.createContext(e));return function(r){let n=r?.[e]||t;return a.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return n.scopeName=e,[function(t,n){let o=a.createContext(n),i=r.length;r=[...r,n];let s=t=>{let{scope:r,children:n,...s}=t,d=r?.[e]?.[i]||o,c=a.useMemo(()=>s,Object.values(s));return(0,l.jsx)(d.Provider,{value:c,children:n})};return s.displayName=t+"Provider",[s,function(r,l){let s=l?.[e]?.[i]||o,d=a.useContext(s);if(d)return d;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:a,scopeName:r})=>{let n=a(e)[`__scope${r}`];return{...t,...n}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(n,...t)]}("Tooltip",[s.createPopperScope]),A=(0,s.createPopperScope)(),w="TooltipProvider",S="tooltip.open",[T,C]=x(w),j=e=>{let{__scopeTooltip:t,delayDuration:r=700,skipDelayDuration:n=300,disableHoverableContent:o=!1,children:i}=e,s=a.useRef(!0),d=a.useRef(!1),c=a.useRef(0);return a.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,l.jsx)(T,{scope:t,isOpenDelayedRef:s,delayDuration:r,onOpen:a.useCallback(()=>{window.clearTimeout(c.current),s.current=!1},[]),onClose:a.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.current=!0,n)},[n]),isPointerInTransitRef:d,onPointerInTransitChange:a.useCallback(e=>{d.current=e},[]),disableHoverableContent:o,children:i})};j.displayName=w;var L="Tooltip",[P,N]=x(L),E=e=>{let{__scopeTooltip:t,children:r,open:n,defaultOpen:o,onOpenChange:d,disableHoverableContent:c,delayDuration:u}=e,m=C(L,e.__scopeTooltip),g=A(t),[y,f]=a.useState(null),b=(0,i.useId)(),v=a.useRef(0),h=c??m.disableHoverableContent,x=u??m.delayDuration,k=a.useRef(!1),[w,T]=(0,p.useControllableState)({prop:n,defaultProp:o??!1,onChange:e=>{e?(m.onOpen(),document.dispatchEvent(new CustomEvent(S))):m.onClose(),d?.(e)},caller:L}),j=a.useMemo(()=>w?k.current?"delayed-open":"instant-open":"closed",[w]),N=a.useCallback(()=>{window.clearTimeout(v.current),v.current=0,k.current=!1,T(!0)},[T]),E=a.useCallback(()=>{window.clearTimeout(v.current),v.current=0,T(!1)},[T]),R=a.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{k.current=!0,T(!0),v.current=0},x)},[x,T]);return a.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),(0,l.jsx)(s.Root,{...g,children:(0,l.jsx)(P,{scope:t,contentId:b,open:w,stateAttribute:j,trigger:y,onTriggerChange:f,onTriggerEnter:a.useCallback(()=>{m.isOpenDelayedRef.current?R():N()},[m.isOpenDelayedRef,R,N]),onTriggerLeave:a.useCallback(()=>{h?E():(window.clearTimeout(v.current),v.current=0)},[E,h]),onOpen:N,onClose:E,disableHoverableContent:h,children:r})})};E.displayName=L;var R="TooltipTrigger",I=a.forwardRef((e,t)=>{let{__scopeTooltip:o,...i}=e,d=N(R,o),c=C(R,o),u=A(o),m=a.useRef(null),p=(0,n.useComposedRefs)(t,m,d.onTriggerChange),y=a.useRef(!1),f=a.useRef(!1),b=a.useCallback(()=>y.current=!1,[]);return a.useEffect(()=>()=>document.removeEventListener("pointerup",b),[b]),(0,l.jsx)(s.Anchor,{asChild:!0,...u,children:(0,l.jsx)(g.button,{"aria-describedby":d.open?d.contentId:void 0,"data-state":d.stateAttribute,...i,ref:p,onPointerMove:(0,r.composeEventHandlers)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(f.current||c.isPointerInTransitRef.current||(d.onTriggerEnter(),f.current=!0))}),onPointerLeave:(0,r.composeEventHandlers)(e.onPointerLeave,()=>{d.onTriggerLeave(),f.current=!1}),onPointerDown:(0,r.composeEventHandlers)(e.onPointerDown,()=>{d.open&&d.onClose(),y.current=!0,document.addEventListener("pointerup",b,{once:!0})}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>{y.current||d.onOpen()}),onBlur:(0,r.composeEventHandlers)(e.onBlur,d.onClose),onClick:(0,r.composeEventHandlers)(e.onClick,d.onClose)})})});I.displayName=R;var _="TooltipPortal",[O,M]=x(_,{forceMount:void 0}),D=e=>{let{__scopeTooltip:t,forceMount:a,children:r,container:n}=e,o=N(_,t);return(0,l.jsx)(O,{scope:t,forceMount:a,children:(0,l.jsx)(c.Presence,{present:a||o.open,children:(0,l.jsx)(d.Portal,{asChild:!0,container:n,children:r})})})};D.displayName=_;var q="TooltipContent",$=a.forwardRef((e,t)=>{let a=M(q,e.__scopeTooltip),{forceMount:r=a.forceMount,side:n="top",...o}=e,i=N(q,e.__scopeTooltip);return(0,l.jsx)(c.Presence,{present:r||i.open,children:i.disableHoverableContent?(0,l.jsx)(H,{side:n,...o,ref:t}):(0,l.jsx)(K,{side:n,...o,ref:t})})}),K=a.forwardRef((e,t)=>{let r=N(q,e.__scopeTooltip),o=C(q,e.__scopeTooltip),i=a.useRef(null),s=(0,n.useComposedRefs)(t,i),[d,c]=a.useState(null),{trigger:u,onClose:m}=r,g=i.current,{onPointerInTransitChange:p}=o,y=a.useCallback(()=>{c(null),p(!1)},[p]),f=a.useCallback((e,t)=>{let a,r=e.currentTarget,n={x:e.clientX,y:e.clientY},l=function(e,t){let a=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),n=Math.abs(t.right-e.x),l=Math.abs(t.left-e.x);switch(Math.min(a,r,n,l)){case l:return"left";case n:return"right";case a:return"top";case r:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());c(((a=[...function(e,t,a=5){let r=[];switch(t){case"top":r.push({x:e.x-a,y:e.y+a},{x:e.x+a,y:e.y+a});break;case"bottom":r.push({x:e.x-a,y:e.y-a},{x:e.x+a,y:e.y-a});break;case"left":r.push({x:e.x+a,y:e.y-a},{x:e.x+a,y:e.y+a});break;case"right":r.push({x:e.x-a,y:e.y-a},{x:e.x-a,y:e.y+a})}return r}(n,l),...function(e){let{top:t,right:a,bottom:r,left:n}=e;return[{x:n,y:t},{x:a,y:t},{x:a,y:r},{x:n,y:r}]}(t.getBoundingClientRect())].slice()).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let a=0;a<e.length;a++){let r=e[a];for(;t.length>=2;){let e=t[t.length-1],a=t[t.length-2];if((e.x-a.x)*(r.y-a.y)>=(e.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();let a=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;a.length>=2;){let e=a[a.length-1],t=a[a.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))a.pop();else break}a.push(r)}return(a.pop(),1===t.length&&1===a.length&&t[0].x===a[0].x&&t[0].y===a[0].y)?t:t.concat(a)}(a))),p(!0)},[p]);return a.useEffect(()=>()=>y(),[y]),a.useEffect(()=>{if(u&&g){let e=e=>f(e,g),t=e=>f(e,u);return u.addEventListener("pointerleave",e),g.addEventListener("pointerleave",t),()=>{u.removeEventListener("pointerleave",e),g.removeEventListener("pointerleave",t)}}},[u,g,f,y]),a.useEffect(()=>{if(d){let e=e=>{let t=e.target,a={x:e.clientX,y:e.clientY},r=u?.contains(t)||g?.contains(t),n=!function(e,t){let{x:a,y:r}=e,n=!1;for(let e=0,l=t.length-1;e<t.length;l=e++){let o=t[e],i=t[l],s=o.x,d=o.y,c=i.x,u=i.y;d>r!=u>r&&a<(c-s)*(r-d)/(u-d)+s&&(n=!n)}return n}(a,d);r?y():n&&(y(),m())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[u,g,d,m,y]),(0,l.jsx)(H,{...e,ref:s})}),[z,B]=x(L,{isInside:!1}),W=((t=({children:e})=>(0,l.jsx)(l.Fragment,{children:e})).displayName="TooltipContent.Slottable",t.__radixId=u,t),H=a.forwardRef((e,t)=>{let{__scopeTooltip:r,children:n,"aria-label":i,onEscapeKeyDown:d,onPointerDownOutside:c,...u}=e,m=N(q,r),g=A(r),{onClose:p}=m;return a.useEffect(()=>(document.addEventListener(S,p),()=>document.removeEventListener(S,p)),[p]),a.useEffect(()=>{if(m.trigger){let e=e=>{let t=e.target;t?.contains(m.trigger)&&p()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[m.trigger,p]),(0,l.jsx)(o.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:p,children:(0,l.jsxs)(s.Content,{"data-state":m.stateAttribute,...g,...u,ref:t,style:{...u.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,l.jsx)(W,{children:n}),(0,l.jsx)(z,{scope:r,isInside:!0,children:(0,l.jsx)(h,{id:m.contentId,role:"tooltip",children:i||n})})]})})});$.displayName=q;var U="TooltipArrow",V=a.forwardRef((e,t)=>{let{__scopeTooltip:a,...r}=e,n=A(a);return B(U,a).isInside?null:(0,l.jsx)(s.Arrow,{...n,...r,ref:t})});V.displayName=U,e.s(["Arrow",()=>V,"Content",()=>$,"Portal",()=>D,"Provider",()=>j,"Root",()=>E,"Trigger",()=>I],186336)},565804,e=>{"use strict";let t={agent:{name:"Agent",tag:"metric",body:"接入到本平台的智能体实例,对应一个真实运行的对外服务进程。"},"user-agent":{name:"用户 Agent",tag:"metric",body:"通过客户端接入本平台的 Agent 实例,由用户/团队自行注册和维护。"},"system-agent":{name:"系统 Agent",tag:"metric",body:"平台内置的 Agent,用于支撑平台自身功能(如智能诊断)。"},"agent-ownership":{name:"Agent 归属",tag:"metric",body:"标识 Agent 的来源,取值为:用户 Agent、系统 Agent。"},"main-agent":{name:"主 Agent",tag:"trace",body:"直接接收用户请求的入口 Agent,执行过程中可派生子 Agent。"},platform:{name:"平台",tag:"metric",body:"Agent 运行所基于的底层框架/Runtime(如 opencode)。一个 Agent 只能属于一个平台。"},"p95-latency":{name:"P95 时延",tag:"metric",body:"所有请求按耗时排序后第 95 百分位的耗时,反映长尾体验。",formula:"sort(durations)[ceil(0.95 × n)]"},"agent-status":{name:"Agent 状态",tag:"metric",body:"运行中 / 异常 / 空闲 三态,由心跳与最近一次执行结果共同判定。"},"connected-agent":{name:"接入 Agent",tag:"metric",body:"已通过 SDK 或配置完成对接、可向平台上报 Trace 的 Agent。"},"agent-type":{name:"Agent 类型",tag:"metric",body:"区分 主 Agent(入口)与 子 Agent(由主 Agent 派生执行子任务)。"},custom:{name:"Custom",tag:"metric",body:'Agent 的来源类型,表示自定义实现,与"模板"或"预置"相对。'},"trace-link":{name:"链路跟踪",tag:"trace",body:"跳转到该 Agent 最近若干次执行的全链路 Trace 视图。"},"smart-diagnosis":{name:"智能诊断",tag:"fault",body:"对该 Agent 最近一次失败/异常调用进行 AI 归因分析。"},trace:{name:"Trace",tag:"trace",body:"一次完整任务执行从入口到结束的全部调用记录,由若干 Span 组成。"},span:{name:"Span",tag:"trace",body:"Trace 中的单个执行片段,可代表一次 LLM 调用、工具调用或子 Agent 派生。"},"tool-error-rate":{name:"工具错误率",tag:"metric",body:"工具调用失败次数占总工具调用次数的比例。",formula:"failed_tool_calls / total_tool_calls"},"main-agent-only":{name:"仅主 Agent",tag:"trace",body:"筛选项,只展示由主 Agent 发起的根 Trace,过滤子 Agent 派生记录。"},"multi-agent":{name:"Multi-Agent",tag:"trace",body:"标签,表示该 Trace 中存在多个 Agent 协同(含主-子派生)。"},"task-spawns":{name:"TASK SPAWNS",tag:"trace",body:"一次 Trace 中派生子任务/子 Agent 的次数。"},"tool-calls":{name:"TOOL CALLS",tag:"tool",body:"一次 Trace 中工具调用的次数。"},"skill-calls":{name:"SKILL CALLS",tag:"skill",body:"一次 Trace 中命中并调用 Skill 的次数。"},"llm-turns":{name:"LLM TURNS",tag:"trace",body:"一次 Trace 中与底层模型的对话轮次。"},tokens:{name:"Tokens",tag:"metric",body:"模型消耗的 Token 总量,分 INPUT / OUTPUT / CACHE READ。"},"cache-read":{name:"CACHE READ",tag:"metric",body:"命中提示词缓存而被复用的 Token 数,计费远低于普通 Input。"},depth:{name:"depth",tag:"trace",body:"当前节点在 Trace 树中的层级深度,0 为根节点。"},"fault-diagnosis":{name:"故障诊断",tag:"fault",body:"对当前 Trace 触发 AI 归因分析,跳转到智能诊断页面。"},"execution-session":{name:"Execution Session",tag:"trace",body:"一次完整的执行会话,对应一次 Trace。"},"insight-ai":{name:"Insight AI",tag:"fault",body:"平台内置的诊断 Agent(FAULT-DIAGNOSIS-AGENT),读取 Trace 上下文并产出归因结论。"},"fault-item":{name:"故障条目",tag:"fault",body:"诊断 Agent 在一次执行中识别出的独立问题,可并存多个。"},"fault-raw-error":{name:"原始错误类故障",tag:"fault",body:"系统/工具直接抛出的硬错误,如 Timeout、5xx、权限拒绝。"},"fault-effect-divergence":{name:"效果偏差类故障",tag:"fault",body:"未抛错但产出与预期不符的软故障,如答非所问、关键信息遗漏。"},"fault-mark":{name:"故障标记",tag:"fault",body:"故障的机读类型,如 TIMEOUT、RATE_LIMIT、OUTPUT_MISMATCH。"},"chain-status":{name:"链路状态",tag:"trace",body:"当前 Trace 的最终状态,如 CHAIN_ERROR · L13 表示第 13 个节点处出错。"},"node-summary":{name:"节点摘要",tag:"trace",body:'故障所在 Span 的简短描述(如"LLM Provider")。'},"match-evidence":{name:"匹配依据",tag:"fault",body:"诊断 Agent 得出结论时引用的证据来源(节点 ID、字段、上下文)。"},"cite-node":{name:"引用节点",tag:"trace",body:"追问 Agent 时可通过 @ 引用具体 Span,让诊断聚焦在该节点上。"},dataset:{name:"评测集",tag:"eval",body:"一组带标准答案的测试样本,用于离线评估 Agent 或 Skill 的质量。"},"dataset-input":{name:"input",tag:"eval",body:"评测样本的输入字段,对应用户提问或上游入参。"},"reference-output":{name:"reference_output",tag:"eval",body:"评测样本的标准答案(Ground Truth),用于和 Agent 实际输出做对照。"},"pending-sync":{name:"待同步",tag:"eval",body:"数据集已修改但尚未推送到执行端。"},"latest-pass-rate":{name:"最新通过率",tag:"eval",body:"该评测集最近一次执行时的通过样本占比。"},evaluator:{name:"评估器",tag:"eval",body:"给实际输出打分的判定器,可以是规则、脚本或 LLM。"},"evaluator-custom":{name:"自建评估器",tag:"eval",body:"用户自定义的评估器,需自行配置评分逻辑。"},"evaluator-preset":{name:"预置评估器",tag:"eval",body:'平台内置、开箱即用的评估器(如"Agent 任务完成度")。'},"llm-judge":{name:"LLM Judge",tag:"eval",body:"由大模型担任的评估器,按设定的标尺对输出评分。"},"score-range":{name:"评分 0–1",tag:"eval",body:"单项打分取值范围,1 为满分,0 为完全未达预期。"},"eval-dimension":{name:"评估维度标签",tag:"eval",body:"评估器关注的维度,如 结果 / 任务完成 / 内容质量 / Agent 通用评测,一个评估器可同时打多个维度。"},"eval-batch":{name:"评测批次",tag:"eval",body:"一次完整评测任务的执行实例,包含若干 Trace 样本。"},"eval-agent":{name:"执行 Agent",tag:"eval",body:"本次评测中被测试的 Agent。"},"auto-observe":{name:"自动观测",tag:"eval",body:"开启后该批次评测结果将纳入 Skill 综合健康分。"},"result-eval":{name:"结果评测",tag:"eval",body:"仅对最终输出与 Ground Truth 做对比的评测维度。"},"trajectory-eval":{name:"轨迹评测",tag:"eval",body:"对中间步骤(如调用顺序、是否调用某工具)做评测的维度。"},"custom-eval":{name:"自定义评测",tag:"eval",body:"用户自定义评估器对该次执行的额外评分通道。"},"eval-conclusion":{name:"综合评测结论",tag:"eval",body:"多维度评分加权后的最终结论与建议。"},skill:{name:"Skill",tag:"skill",body:"可被 Agent 加载并按需调用的能力包,由一份 SKILL.md 主文档加若干脚本/参考资料组成。"},"skill-activated-unused":{name:"已激活待引用",tag:"skill",body:'Skill 已激活但暂无 Agent 引用,处于"上架但闲置"状态。'},"skill-progress":{name:"流程进度",tag:"skill",body:'Skill 在"生成 → 分析 → 优化"三段生命周期中的位置(如 2/3 表示已完成前两步)。'},"skill-to-optimize":{name:"待优化",tag:"skill",body:'已分析出问题、等待进入"优化"环节的 Skill 数。'},"skill-version":{name:"版本",tag:"skill",body:"Skill 的不可变快照,当前激活的版本会被 Agent 实际加载。"},"skill-lifecycle":{name:"SKILL 生命周期",tag:"skill",body:"三阶段流水:①生成(产出 SKILL.md 与脚本)→ ②分析(评估质量)→ ③优化(按分析结果迭代)。"},"expected-chain":{name:"预期执行链路",tag:"skill",body:'Skill 被调用时按 SKILL.md 解析出的步骤序列,用于"声明 vs 实际"的对照。'},"skill-generation":{name:"Skill 生成",tag:"skill",body:"通过对话与模型协作,自动产出 SKILL.md 与配套 scripts/references 目录。"},"skill-md":{name:"主文档",tag:"skill",body:"SKILL.md,Skill 的入口说明书,包含触发条件、核心指令、参数约束等,模型据此决定何时及如何调用。"},"skill-scripts":{name:"scripts/",tag:"skill",body:"Skill 附带的可执行脚本目录,运行时由 Agent 调用。"},"skill-references":{name:"references/",tag:"skill",body:"Skill 的参考资料目录,作为模型上下文,本身不可执行。"},"scenario-template":{name:"场景模板",tag:"skill",body:"生成时的目标场景类型,影响 SKILL.md 的结构与措辞。"},"risk-zones":{name:"安全区 / 交互区 / 禁止区",tag:"skill",body:"Skill 内部约定的操作风险分层:可自动执行 / 需用户确认 / 绝不执行。"},"web-search":{name:"联网搜索",tag:"tool",body:"生成过程中是否允许模型实时检索外部资料。"},"health-score":{name:"综合健康分 · 置信加权",tag:"skill",body:'Skill 当前总分。各维度按权重加权,未跑完的维度不计入分母,故称"置信加权"。',formula:"Σ(score_i × weight_i) / Σ(weight_i, 已完成)"},"eval-coverage":{name:"评估覆盖度",tag:"eval",body:"4 个评估维度中已完成评测的占比(如 0/4 维 · 0%)。"},"traj-completeness":{name:"完整性",tag:"eval",body:'评测 Agent 是否覆盖了该 Skill 要求的关键步骤、顺序是否正确——即"该做的有没有做、有没有漏步/乱序"。trace 模式下取 analyze-match 确定性对齐的覆盖率。',formula:"覆盖率(命中关键步骤 / 应有关键步骤) − 顺序惩罚 · 轨迹分权重 45%"},"traj-tool-choice":{name:"工具选择",tag:"eval",body:'评测每一步是否选对工具 / Skill、参数与调用时机是否合理——即"工具用得对不对、巧不巧"。',formula:"逐步打分均值(选对 1.0 / 时机不当 0.7 / 参数错 0.5 / 选错 0)· 轨迹分权重 35%"},"traj-redundancy":{name:"冗余",tag:"eval",body:'评测是否存在重复调用、绕路、死循环式的多余操作——即"有没有废动作、执行效率高不高"。由规则统计连续重复 / 高频调用得出,不靠 LLM 数循环。',formula:"1 − (连续重复段 × 0.2 + 高频调用 × 0.1) · 轨迹分权重 20%"},"one-line-diagnosis":{name:"一句话诊断",tag:"fault",body:"系统对当前评测状态总结出的结论与建议。"},"basic-diagnosis":{name:"基础诊断",tag:"fault",body:"仅依据当前已有数据的浅层诊断,覆盖度低时也能给出。"},"smart-run":{name:"SMART RUN",tag:"eval",body:"一键跑齐缺失维度的批量执行入口,自动调度未跑的评测项。"},"pending-dimensions":{name:"待跑维度",tag:"eval",body:'状态为"未配置"或"待分析"、尚未产出分数的评估维度。'},"four-dim-eval":{name:"4 维评估能力",tag:"eval",body:"当前对 Skill 的四个评估视角:A/B 测试、用例分析、触发分析、静态合规。"},"dim-status":{name:"待分析 / 待扫描 / 未配置",tag:"eval",body:"维度状态:数据已就绪等待跑分 / 等待静态扫描 / 尚未配置数据集或参数。"},"weight-excluded":{name:"不计入总分",tag:"eval",body:"某维度未完成时,其权重从分母中剔除,标注中给出被剔除的权重大小(如 -40%)。"},"ab-test":{name:"A/B 测试",tag:"eval",body:'同一份输入分别在"开启 Skill"与"不开启 Skill"两个 Agent 版本下执行,对比效果差异。'},"control-version":{name:"对照版本(A)",tag:"eval",body:"不挂载该 Skill 的基线 Agent。"},"experiment-version":{name:"实验版本(B)",tag:"eval",body:"挂载了该 Skill 的 Agent。"},"repeat-rounds":{name:"重复轮次",tag:"eval",body:"同一样本重复执行的次数,用于计算方差、消除随机性。"},"auto-eval":{name:"自动评测",tag:"eval",body:'跑完后自动调用评估器返回准确率与"Skill 是否生效"的判断。'},"log-skill-trigger":{name:"记录 Skill 触发详情",tag:"skill",body:"保留每条样本下 Skill 的命中/未命中明细,便于事后定位。"},"eval-source":{name:"从数据集发起 / 从执行链路发起",tag:"eval",body:"输入来源:复用既有评测集,或直接选取线上 Trace 作为输入。"},"case-analysis":{name:"用例分析",tag:"eval",body:'基于已评测 Trace 的"结果 + 轨迹"双维度回看,定位 Skill 在真实流量中的得失。'},"result-analysis":{name:"结果分析",tag:"eval",body:"仅看最终答案是否达成用户目标。"},"trajectory-analysis":{name:"轨迹分析",tag:"eval",body:"看中间过程是否按 SKILL.md 期望的步骤进行。"},"case-set":{name:"用例集",tag:"eval",body:'当前 Skill 版本关联的 Trace 集合,可勾选送入"触发分析"。'},"high-divergence":{name:"高偏离",tag:"fault",body:"实际输出与参考答案差异较大的样本筛选标签。"},"trigger-analysis":{name:"触发分析",tag:"skill",body:"评估 Skill 路由是否准确——哪些 query 应命中本 Skill、哪些不应。"},"trigger-eval-set":{name:"触发评价集",tag:"eval",body:'专用于触发分析的数据集,每条样本带有"是否应触发"的标注。'},"trigger-hit-rate":{name:"触发集命中率",tag:"metric",body:'"应触发且确实触发"的样本占比,越高越好。',formula:"should_trigger ∩ did_trigger / should_trigger"},"false-trigger-rate":{name:"误触发率",tag:"fault",body:'"不应触发却触发"的样本占比,越低越好。',formula:"¬should_trigger ∩ did_trigger / ¬should_trigger"},"edge-case":{name:"边界用例",tag:"eval",body:"处在触发/不触发边界、最容易判错的样本。"},"ai-draft":{name:"AI 起草",tag:"tool",body:"让模型基于现有 Skill 描述自动生成一份触发评价集草稿。"},"opencode-live":{name:"opencode-live",tag:"metric",body:"当前触发分析所使用的线上路由通道名称。"},"static-compliance":{name:"静态合规分析",tag:"eval",body:"基于规则的 SKILL.md 文本扫描,不需要实际执行 Skill。"},"purpose-fit":{name:"目的适配性",tag:"eval",body:"Skill 是否有清晰的单一目的,便于 LLM 准确识别调用时机。"},"structure-norm":{name:"结构规范性",tag:"eval",body:"SKILL.md 的元数据规范、内容组织和信息密度。"},"instruction-fit":{name:"指令适配性",tag:"eval",body:"指令自由度与任务风险等级、确定性是否匹配。"},"content-consistency":{name:"内容一致性",tag:"eval",body:"术语和表达风格是否前后一致,是否依赖隐含的时效性假设。"},"ops-reliability":{name:"运维可靠性",tag:"eval",body:"安全边界、灾难恢复路径与可观测性。"},"script-quality":{name:"脚本及参考文档质量",tag:"eval",body:"配套脚本与参考资料的独立性、健壮性与自愈能力。"},"skill-optimization":{name:"Skill 优化",tag:"skill",body:"基于分析结果,对 SKILL.md 与配套脚本/参考资料进行版本迭代。"},"current-version":{name:"当前版本",tag:"skill",body:"正在被引用的激活版本,作为优化的基线(如 v0 当前)。"},"quality-monitoring":{name:"质量监控",tag:"metric",body:'以单个 Agent 为对象,对其时间窗内全部 trace 做整体度量:四维评分、趋势、统一问题汇总,并可下钻到单条 trace 诊断。回答"这个 Agent 整体好不好、先修哪个问题"。'},"quality-composite-score":{name:"综合质量分",tag:"metric",body:"把窗口内全部 trace 的四维表现压成的总分(0–100)。按 P0/P1/P2 优先级加权;任一 P0 硬约束命中(如安全违规)时封顶降级标红。状态按绝对阈值判定:≥85 达标 / 70–85 关注 / <70 异常,不与其他 Agent 比排名。",formula:"综合分 = Σ(层均值 × 层权重);权重 P0 0.55 / P1 0.30 / P2 0.15(缺层时重新归一)"},"quality-priority-tiers":{name:"指标优先级 P0/P1/P2",tag:"metric",body:"P0 必达基线:任务完成度、安全、工具正确性、成本\nP1 重要进阶:计划效率、约束遵循、工具归因(依赖轨迹评测,无数据记 N/A)\nP2 增益项:如用户满意度(暂未启用)\nN/A 的层不参与综合分加权。"},"quality-deterministic-baseline":{name:"确定性打底",tag:"eval",body:"没有模型评测分的 trace,其指标由确定性规则推断:有工具报错或失败记录 → 判失败;无任何失败信号 → 视为成功。零模型成本但偏乐观,须结合评测覆盖一起判读。"},"quality-eval-coverage":{name:"评测覆盖",tag:"eval",body:"窗口内有模型评测分(judge 结果分或轨迹评测分)的 trace 占比。覆盖越低,分数越依赖确定性推断;可通过采样回填提升覆盖。",formula:"评测覆盖 = 已评测 trace 数 ÷ 窗口内 trace 总数"},"quality-pass-rate":{name:"达标率",tag:"metric",body:'窗口内"无失败信号"的 trace 占比(确定性口径:无工具报错、无失败记录、judge 未判错)。',formula:"达标率 = 成功 trace 数 ÷ trace 总数"},"quality-impact":{name:"影响度",tag:"metric",body:'统一问题汇总的排序键,回答"先修哪个":频次越高、越严重、影响面越聚焦的问题排越前。',formula:"影响度 = 频次 × 严重度权重 ÷ 受影响维度数"},"quality-pareto":{name:"帕累托累计",tag:"metric",body:'问题按频次降序排列后的累计占比,用于判断"修前几类能消掉多大比例的报错"。通常头部少数几类覆盖大多数报错次数。'},"quality-skill-drag":{name:"Skill 拖累榜",tag:"skill",body:'按 Skill 聚合窗口内未解决的 SkillIssue,回答"哪个 skill 在拖累这个 Agent"。点「去优化」直达 Skills 优化工作台,修复后自动销账。',formula:"拖累分 = Σ(未解决问题的严重度权重);受影响 = 调用该 skill 的 trace 占比"},"quality-expected-gain":{name:"预期收益(估)",tag:"metric",body:"修复该问题后达标率提升的保守估算:按关联 trace 占窗口 trace 的比例推算,封顶于剩余提升空间。仅供排序参考,非承诺值。"},"quality-attribution":{name:"归因标签",tag:"fault",body:"问题该派给谁修:\nagent逻辑:提示词 / Skill / 编排问题\n模型能力:理解偏差、幻觉\n工具&infra:超时、限流、环境故障\n外部输入:用户输入或上游数据问题\n当前由确定性规则、评测信号与诊断结论推断。"},"quality-dim-result":{name:"结果维(做对了吗)",tag:"metric",body:"完成度与安全两个指标的均值。\n完成度:有 judge 评测分用评测分;没有则确定性推断——有工具报错/失败记录判 0,无失败信号判 100\n安全:失败记录命中注入/越权/PII 即判 0,且综合分硬降级(0 容忍)",formula:"结果 = (完成度均值 + 安全均值) ÷ 2\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-process":{name:"过程维(路径对不对)",tag:"metric",body:'有效子指标的均值,识别"蒙对"(结果好/过程差)与"白忙"(过程好/结果差)。\n工具正确性:1 − 工具错误次数 ÷ 调用次数(恒可算)\n计划效率 / 约束遵循 / 工具归因:依赖轨迹评测,缺数据记 N/A 不入分母\n覆盖率低 = 只测了工具正确性一个角度,分数偏"薄"',formula:"过程 = mean(非 N/A 子指标)\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-cost":{name:"成本维(划不划算)",tag:"metric",body:'每条 trace 的"预算余量分"求均值:取 时延/Token/步数 三者中最紧张的占用率,剩余空间即得分。预算上限为可配置参数(默认 120 秒 / 20 万 token / 60 步,待标定)。\n注意:均值会掩盖失控长尾,须结合趋势里的 p95 一起看。',formula:"单条成本分 = (1 − max(时延/上限, token/上限, 步数/上限)) × 100\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-error":{name:"错误维(在哪儿崩)",tag:"metric",body:'无错 trace 的占比(卡片大数字显示的是报错次数,状态按错误分判定)。\n错误事件来自重解析执行步骤:工具步看返回内容,LLM 步只看结构化元信息——模型"谈论失败"不算"步骤失败"。',formula:"错误分 = (1 − 出错 trace 数 ÷ trace 总数) × 100\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"model-registry":{name:"模型注册",tag:"tool",body:"录入外部模型(如 DeepSeek、OpenAI 等)的密钥与 endpoint,供 Agent / 评估器调用。"},"install-guide":{name:"安装指导",tag:"tool",body:"现有 Agent 接入本平台的 SDK 与配置文档入口。"}};function a(e){return t[e]}e.s(["getTermById",()=>a])},810818,e=>{"use strict";let t=(0,e.i(456420).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["Info",()=>t],810818)},797324,e=>{"use strict";var t=e.i(843476),a=e.i(810818),r=e.i(186336),n=e.i(975157);let l={metric:{label:"指标",cls:"bg-background-secondary text-foreground-muted"},trace:{label:"链路",cls:"bg-background-secondary text-foreground-muted"},tool:{label:"工具",cls:"bg-background-secondary text-foreground-muted"},skill:{label:"Skill",cls:"bg-[var(--tag-purple-bg)] text-[var(--tag-purple-fg)]"},fault:{label:"故障",cls:"bg-error-subtle text-error border border-error-border"},eval:{label:"评测",cls:"bg-success-subtle text-success border border-success-border"}};function o({term:e,tag:o,body:i,formula:s,related:d,children:c,align:u="start",side:m="bottom",badgeTone:g="muted",className:p}){let y=o?l[o]:null;return(0,t.jsx)(r.Provider,{delayDuration:150,skipDelayDuration:50,children:(0,t.jsxs)(r.Root,{children:[(0,t.jsx)(r.Trigger,{asChild:!0,children:(0,t.jsxs)("span",{className:(0,n.cn)("inline-flex items-center gap-1 cursor-help select-none align-baseline","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",p),tabIndex:0,"aria-label":`${e} 术语解释`,children:[c??(0,t.jsx)("span",{children:e}),(0,t.jsx)(a.Info,{className:(0,n.cn)("size-3 shrink-0 opacity-70","primary"===g?"text-primary":"text-foreground-muted"),"aria-hidden":!0})]})}),(0,t.jsx)(r.Portal,{children:(0,t.jsxs)(r.Content,{align:u,side:m,sideOffset:6,collisionPadding:12,className:(0,n.cn)("z-50 w-[260px] space-y-3 rounded-md border border-card-border bg-card p-4 text-card-foreground shadow-sm outline-none","data-[state=delayed-open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2","data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2"),children:[(0,t.jsxs)("header",{className:"flex items-center justify-between gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:e}),y&&(0,t.jsx)("span",{className:(0,n.cn)("inline-flex items-center px-1.5 py-0.5 rounded-sm text-[10px] leading-none",y.cls),children:y.label})]}),(0,t.jsx)("div",{className:"text-xs leading-[18px] text-foreground-secondary whitespace-pre-line",children:i}),s&&(0,t.jsx)("div",{className:"border-t border-card-border pt-2 font-mono text-[11px] leading-4 tabular-nums text-foreground-muted",children:s}),d&&d.length>0&&(0,t.jsx)("footer",{className:"border-t border-card-border pt-2 flex flex-wrap gap-1.5",children:d.map(e=>(0,t.jsx)("button",{type:"button",onClick:e.onClick,className:"text-[11px] text-primary hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",children:e.name},e.id))})]})})]})})}e.s(["TermPopover",()=>o])},460435,e=>{"use strict";var t=e.i(843476),a=e.i(565804),r=e.i(797324);function n({id:e,render:n="default",label:l,align:o,side:i,badgeTone:s,className:d}){let c=(0,a.getTermById)(e);if(!c)return(0,t.jsx)("span",{className:d,children:l??e});let u=l??c.name;return(0,t.jsx)(r.TermPopover,{term:c.name,tag:c.tag,body:c.body,formula:c.formula,align:o,side:i,badgeTone:s,className:d,children:"compact"===n?(0,t.jsx)(t.Fragment,{}):(0,t.jsx)("span",{children:u})})}e.s(["Term",()=>n])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,218469,456420,248105,e=>{"use strict";var t=e.i(271645);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,a)=>a?a.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,t.createContext)({}),o=(0,t.forwardRef)(({color:e,size:r,strokeWidth:o,absoluteStrokeWidth:i,className:s="",children:d,iconNode:c,...u},m)=>{let{size:g=24,strokeWidth:p=2,absoluteStrokeWidth:y=!1,color:f="currentColor",className:b=""}=(0,t.useContext)(l)??{},v=i??y?24*Number(o??p)/Number(r??g):o??p;return(0,t.createElement)("svg",{ref:m,...n,width:r??g??n.width,height:r??g??n.height,stroke:e??f,strokeWidth:v,className:a("lucide",b,s),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...c.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(d)?d:[d]])}),i=(e,n)=>{let l=(0,t.forwardRef)(({className:l,...i},s)=>(0,t.createElement)(o,{ref:s,iconNode:n,className:a(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=r(e),l};e.s(["default",()=>i],456420);let s=i("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);e.s(["PanelLeftClose",()=>s],218469);let d=i("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);e.s(["PanelLeftOpen",()=>d],248105)},540568,e=>{"use strict";var t=e.i(843476),a=e.i(218469),r=e.i(248105),n=e.i(760045);function l({title:e,actions:l}){let{isCollapsed:o,toggleSidebar:i}=(0,n.useSidebar)(),s=o?r.PanelLeftOpen:a.PanelLeftClose;return(0,t.jsxs)("header",{className:"sticky top-0 z-10 flex h-14 items-center gap-3 border-b border-border bg-card px-6",style:{flexShrink:0},children:[(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":o?"展开侧栏":"折叠侧栏",className:"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-foreground-secondary transition-colors hover:bg-background-secondary hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:(0,t.jsx)(s,{className:"size-4"})}),(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 text-sm font-medium text-foreground",children:"string"==typeof e?(0,t.jsx)("span",{className:"truncate",children:e}):e}),l&&(0,t.jsx)("div",{className:"flex items-center gap-2",children:l})]})}e.s(["AppTopBar",()=>l])},186336,e=>{"use strict";let t;var a=e.i(271645),r=e.i(981140),n=e.i(820783),l=e.i(843476),o=e.i(726330),i=e.i(610772),s=e.i(853660),d=e.i(774606),c=e.i(296626);e.i(174080);var u=Symbol("radix.slottable");function m(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===u}var g=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var r,o;let i,s,d,c=(o=r=`Primitive.${t}`,(i=a.forwardRef((e,t)=>{let{children:r,...l}=e;if(a.isValidElement(r)){var o;let e,i,s=(o=r,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),d=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(l,r.props);return r.type!==a.Fragment&&(d.ref=t?(0,n.composeRefs)(t,s):s),a.cloneElement(r,d)}return a.Children.count(r)>1?a.Children.only(null):null})).displayName=`${o}.SlotClone`,s=i,(d=a.forwardRef((e,t)=>{let{children:r,...n}=e,o=a.Children.toArray(r),i=o.find(m);if(i){let e=i.props.children,r=o.map(t=>t!==i?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,l.jsx)(s,{...n,ref:t,children:a.isValidElement(e)?a.cloneElement(e,void 0,r):null})}return(0,l.jsx)(s,{...n,ref:t,children:r})})).displayName=`${r}.Slot`,d),u=a.forwardRef((e,a)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(r?c:t,{...n,ref:a})});return u.displayName=`Primitive.${t}`,{...e,[t]:u}},{}),p=e.i(369340),y=Symbol("radix.slottable");function f(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===y}var b=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var r,o;let i,s,d,c=(o=r=`Primitive.${t}`,(i=a.forwardRef((e,t)=>{let{children:r,...l}=e;if(a.isValidElement(r)){var o;let e,i,s=(o=r,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),d=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(l,r.props);return r.type!==a.Fragment&&(d.ref=t?(0,n.composeRefs)(t,s):s),a.cloneElement(r,d)}return a.Children.count(r)>1?a.Children.only(null):null})).displayName=`${o}.SlotClone`,s=i,(d=a.forwardRef((e,t)=>{let{children:r,...n}=e,o=a.Children.toArray(r),i=o.find(f);if(i){let e=i.props.children,r=o.map(t=>t!==i?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,l.jsx)(s,{...n,ref:t,children:a.isValidElement(e)?a.cloneElement(e,void 0,r):null})}return(0,l.jsx)(s,{...n,ref:t,children:r})})).displayName=`${r}.Slot`,d),u=a.forwardRef((e,a)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(r?c:t,{...n,ref:a})});return u.displayName=`Primitive.${t}`,{...e,[t]:u}},{}),v=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),h=a.forwardRef((e,t)=>(0,l.jsx)(b.span,{...e,ref:t,style:{...v,...e.style}}));h.displayName="VisuallyHidden";var[x,k]=function(e,t=[]){let r=[],n=()=>{let t=r.map(e=>a.createContext(e));return function(r){let n=r?.[e]||t;return a.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return n.scopeName=e,[function(t,n){let o=a.createContext(n),i=r.length;r=[...r,n];let s=t=>{let{scope:r,children:n,...s}=t,d=r?.[e]?.[i]||o,c=a.useMemo(()=>s,Object.values(s));return(0,l.jsx)(d.Provider,{value:c,children:n})};return s.displayName=t+"Provider",[s,function(r,l){let s=l?.[e]?.[i]||o,d=a.useContext(s);if(d)return d;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:a,scopeName:r})=>{let n=a(e)[`__scope${r}`];return{...t,...n}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(n,...t)]}("Tooltip",[s.createPopperScope]),A=(0,s.createPopperScope)(),w="TooltipProvider",S="tooltip.open",[T,C]=x(w),j=e=>{let{__scopeTooltip:t,delayDuration:r=700,skipDelayDuration:n=300,disableHoverableContent:o=!1,children:i}=e,s=a.useRef(!0),d=a.useRef(!1),c=a.useRef(0);return a.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,l.jsx)(T,{scope:t,isOpenDelayedRef:s,delayDuration:r,onOpen:a.useCallback(()=>{window.clearTimeout(c.current),s.current=!1},[]),onClose:a.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.current=!0,n)},[n]),isPointerInTransitRef:d,onPointerInTransitChange:a.useCallback(e=>{d.current=e},[]),disableHoverableContent:o,children:i})};j.displayName=w;var L="Tooltip",[P,N]=x(L),E=e=>{let{__scopeTooltip:t,children:r,open:n,defaultOpen:o,onOpenChange:d,disableHoverableContent:c,delayDuration:u}=e,m=C(L,e.__scopeTooltip),g=A(t),[y,f]=a.useState(null),b=(0,i.useId)(),v=a.useRef(0),h=c??m.disableHoverableContent,x=u??m.delayDuration,k=a.useRef(!1),[w,T]=(0,p.useControllableState)({prop:n,defaultProp:o??!1,onChange:e=>{e?(m.onOpen(),document.dispatchEvent(new CustomEvent(S))):m.onClose(),d?.(e)},caller:L}),j=a.useMemo(()=>w?k.current?"delayed-open":"instant-open":"closed",[w]),N=a.useCallback(()=>{window.clearTimeout(v.current),v.current=0,k.current=!1,T(!0)},[T]),E=a.useCallback(()=>{window.clearTimeout(v.current),v.current=0,T(!1)},[T]),R=a.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{k.current=!0,T(!0),v.current=0},x)},[x,T]);return a.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),(0,l.jsx)(s.Root,{...g,children:(0,l.jsx)(P,{scope:t,contentId:b,open:w,stateAttribute:j,trigger:y,onTriggerChange:f,onTriggerEnter:a.useCallback(()=>{m.isOpenDelayedRef.current?R():N()},[m.isOpenDelayedRef,R,N]),onTriggerLeave:a.useCallback(()=>{h?E():(window.clearTimeout(v.current),v.current=0)},[E,h]),onOpen:N,onClose:E,disableHoverableContent:h,children:r})})};E.displayName=L;var R="TooltipTrigger",I=a.forwardRef((e,t)=>{let{__scopeTooltip:o,...i}=e,d=N(R,o),c=C(R,o),u=A(o),m=a.useRef(null),p=(0,n.useComposedRefs)(t,m,d.onTriggerChange),y=a.useRef(!1),f=a.useRef(!1),b=a.useCallback(()=>y.current=!1,[]);return a.useEffect(()=>()=>document.removeEventListener("pointerup",b),[b]),(0,l.jsx)(s.Anchor,{asChild:!0,...u,children:(0,l.jsx)(g.button,{"aria-describedby":d.open?d.contentId:void 0,"data-state":d.stateAttribute,...i,ref:p,onPointerMove:(0,r.composeEventHandlers)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(f.current||c.isPointerInTransitRef.current||(d.onTriggerEnter(),f.current=!0))}),onPointerLeave:(0,r.composeEventHandlers)(e.onPointerLeave,()=>{d.onTriggerLeave(),f.current=!1}),onPointerDown:(0,r.composeEventHandlers)(e.onPointerDown,()=>{d.open&&d.onClose(),y.current=!0,document.addEventListener("pointerup",b,{once:!0})}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>{y.current||d.onOpen()}),onBlur:(0,r.composeEventHandlers)(e.onBlur,d.onClose),onClick:(0,r.composeEventHandlers)(e.onClick,d.onClose)})})});I.displayName=R;var _="TooltipPortal",[O,M]=x(_,{forceMount:void 0}),D=e=>{let{__scopeTooltip:t,forceMount:a,children:r,container:n}=e,o=N(_,t);return(0,l.jsx)(O,{scope:t,forceMount:a,children:(0,l.jsx)(c.Presence,{present:a||o.open,children:(0,l.jsx)(d.Portal,{asChild:!0,container:n,children:r})})})};D.displayName=_;var q="TooltipContent",$=a.forwardRef((e,t)=>{let a=M(q,e.__scopeTooltip),{forceMount:r=a.forceMount,side:n="top",...o}=e,i=N(q,e.__scopeTooltip);return(0,l.jsx)(c.Presence,{present:r||i.open,children:i.disableHoverableContent?(0,l.jsx)(H,{side:n,...o,ref:t}):(0,l.jsx)(K,{side:n,...o,ref:t})})}),K=a.forwardRef((e,t)=>{let r=N(q,e.__scopeTooltip),o=C(q,e.__scopeTooltip),i=a.useRef(null),s=(0,n.useComposedRefs)(t,i),[d,c]=a.useState(null),{trigger:u,onClose:m}=r,g=i.current,{onPointerInTransitChange:p}=o,y=a.useCallback(()=>{c(null),p(!1)},[p]),f=a.useCallback((e,t)=>{let a,r=e.currentTarget,n={x:e.clientX,y:e.clientY},l=function(e,t){let a=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),n=Math.abs(t.right-e.x),l=Math.abs(t.left-e.x);switch(Math.min(a,r,n,l)){case l:return"left";case n:return"right";case a:return"top";case r:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());c(((a=[...function(e,t,a=5){let r=[];switch(t){case"top":r.push({x:e.x-a,y:e.y+a},{x:e.x+a,y:e.y+a});break;case"bottom":r.push({x:e.x-a,y:e.y-a},{x:e.x+a,y:e.y-a});break;case"left":r.push({x:e.x+a,y:e.y-a},{x:e.x+a,y:e.y+a});break;case"right":r.push({x:e.x-a,y:e.y-a},{x:e.x-a,y:e.y+a})}return r}(n,l),...function(e){let{top:t,right:a,bottom:r,left:n}=e;return[{x:n,y:t},{x:a,y:t},{x:a,y:r},{x:n,y:r}]}(t.getBoundingClientRect())].slice()).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let a=0;a<e.length;a++){let r=e[a];for(;t.length>=2;){let e=t[t.length-1],a=t[t.length-2];if((e.x-a.x)*(r.y-a.y)>=(e.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();let a=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;a.length>=2;){let e=a[a.length-1],t=a[a.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))a.pop();else break}a.push(r)}return(a.pop(),1===t.length&&1===a.length&&t[0].x===a[0].x&&t[0].y===a[0].y)?t:t.concat(a)}(a))),p(!0)},[p]);return a.useEffect(()=>()=>y(),[y]),a.useEffect(()=>{if(u&&g){let e=e=>f(e,g),t=e=>f(e,u);return u.addEventListener("pointerleave",e),g.addEventListener("pointerleave",t),()=>{u.removeEventListener("pointerleave",e),g.removeEventListener("pointerleave",t)}}},[u,g,f,y]),a.useEffect(()=>{if(d){let e=e=>{let t=e.target,a={x:e.clientX,y:e.clientY},r=u?.contains(t)||g?.contains(t),n=!function(e,t){let{x:a,y:r}=e,n=!1;for(let e=0,l=t.length-1;e<t.length;l=e++){let o=t[e],i=t[l],s=o.x,d=o.y,c=i.x,u=i.y;d>r!=u>r&&a<(c-s)*(r-d)/(u-d)+s&&(n=!n)}return n}(a,d);r?y():n&&(y(),m())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[u,g,d,m,y]),(0,l.jsx)(H,{...e,ref:s})}),[z,B]=x(L,{isInside:!1}),W=((t=({children:e})=>(0,l.jsx)(l.Fragment,{children:e})).displayName="TooltipContent.Slottable",t.__radixId=u,t),H=a.forwardRef((e,t)=>{let{__scopeTooltip:r,children:n,"aria-label":i,onEscapeKeyDown:d,onPointerDownOutside:c,...u}=e,m=N(q,r),g=A(r),{onClose:p}=m;return a.useEffect(()=>(document.addEventListener(S,p),()=>document.removeEventListener(S,p)),[p]),a.useEffect(()=>{if(m.trigger){let e=e=>{let t=e.target;t?.contains(m.trigger)&&p()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[m.trigger,p]),(0,l.jsx)(o.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:p,children:(0,l.jsxs)(s.Content,{"data-state":m.stateAttribute,...g,...u,ref:t,style:{...u.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,l.jsx)(W,{children:n}),(0,l.jsx)(z,{scope:r,isInside:!0,children:(0,l.jsx)(h,{id:m.contentId,role:"tooltip",children:i||n})})]})})});$.displayName=q;var U="TooltipArrow",V=a.forwardRef((e,t)=>{let{__scopeTooltip:a,...r}=e,n=A(a);return B(U,a).isInside?null:(0,l.jsx)(s.Arrow,{...n,...r,ref:t})});V.displayName=U,e.s(["Arrow",()=>V,"Content",()=>$,"Portal",()=>D,"Provider",()=>j,"Root",()=>E,"Trigger",()=>I],186336)},565804,e=>{"use strict";let t={agent:{name:"Agent",tag:"metric",body:"接入到本平台的智能体实例,对应一个真实运行的对外服务进程。"},"user-agent":{name:"用户 Agent",tag:"metric",body:"通过客户端接入本平台的 Agent 实例,由用户/团队自行注册和维护。"},"system-agent":{name:"系统 Agent",tag:"metric",body:"平台内置的 Agent,用于支撑平台自身功能(如智能诊断)。"},"agent-ownership":{name:"Agent 归属",tag:"metric",body:"标识 Agent 的来源,取值为:用户 Agent、系统 Agent。"},"main-agent":{name:"主 Agent",tag:"trace",body:"直接接收用户请求的入口 Agent,执行过程中可派生子 Agent。"},platform:{name:"平台",tag:"metric",body:"Agent 运行所基于的底层框架/Runtime(如 opencode)。一个 Agent 只能属于一个平台。"},"p95-latency":{name:"P95 时延",tag:"metric",body:"所有请求按耗时排序后第 95 百分位的耗时,反映长尾体验。",formula:"sort(durations)[ceil(0.95 × n)]"},"agent-status":{name:"Agent 状态",tag:"metric",body:"运行中 / 异常 / 空闲 三态,由心跳与最近一次执行结果共同判定。"},"connected-agent":{name:"接入 Agent",tag:"metric",body:"已通过 SDK 或配置完成对接、可向平台上报 Trace 的 Agent。"},"agent-type":{name:"Agent 类型",tag:"metric",body:"区分 主 Agent(入口)与 子 Agent(由主 Agent 派生执行子任务)。"},custom:{name:"Custom",tag:"metric",body:'Agent 的来源类型,表示自定义实现,与"模板"或"预置"相对。'},"trace-link":{name:"链路跟踪",tag:"trace",body:"跳转到该 Agent 最近若干次执行的全链路 Trace 视图。"},"smart-diagnosis":{name:"智能诊断",tag:"fault",body:"对该 Agent 最近一次失败/异常调用进行 AI 归因分析。"},trace:{name:"Trace",tag:"trace",body:"一次完整任务执行从入口到结束的全部调用记录,由若干 Span 组成。"},span:{name:"Span",tag:"trace",body:"Trace 中的单个执行片段,可代表一次 LLM 调用、工具调用或子 Agent 派生。"},"tool-error-rate":{name:"工具错误率",tag:"metric",body:"工具调用失败次数占总工具调用次数的比例。",formula:"failed_tool_calls / total_tool_calls"},"main-agent-only":{name:"仅主 Agent",tag:"trace",body:"筛选项,只展示由主 Agent 发起的根 Trace,过滤子 Agent 派生记录。"},"multi-agent":{name:"Multi-Agent",tag:"trace",body:"标签,表示该 Trace 中存在多个 Agent 协同(含主-子派生)。"},"task-spawns":{name:"TASK SPAWNS",tag:"trace",body:"一次 Trace 中派生子任务/子 Agent 的次数。"},"tool-calls":{name:"TOOL CALLS",tag:"tool",body:"一次 Trace 中工具调用的次数。"},"skill-calls":{name:"SKILL CALLS",tag:"skill",body:"一次 Trace 中命中并调用 Skill 的次数。"},"llm-turns":{name:"LLM TURNS",tag:"trace",body:"一次 Trace 中与底层模型的对话轮次。"},tokens:{name:"Tokens",tag:"metric",body:"模型消耗的 Token 总量,分 INPUT / OUTPUT / CACHE READ。"},"cache-read":{name:"CACHE READ",tag:"metric",body:"命中提示词缓存而被复用的 Token 数,计费远低于普通 Input。"},depth:{name:"depth",tag:"trace",body:"当前节点在 Trace 树中的层级深度,0 为根节点。"},"fault-diagnosis":{name:"故障诊断",tag:"fault",body:"对当前 Trace 触发 AI 归因分析,跳转到智能诊断页面。"},"execution-session":{name:"Execution Session",tag:"trace",body:"一次完整的执行会话,对应一次 Trace。"},"insight-ai":{name:"Insight AI",tag:"fault",body:"平台内置的诊断 Agent(FAULT-DIAGNOSIS-AGENT),读取 Trace 上下文并产出归因结论。"},"fault-item":{name:"故障条目",tag:"fault",body:"诊断 Agent 在一次执行中识别出的独立问题,可并存多个。"},"fault-raw-error":{name:"原始错误类故障",tag:"fault",body:"系统/工具直接抛出的硬错误,如 Timeout、5xx、权限拒绝。"},"fault-effect-divergence":{name:"效果偏差类故障",tag:"fault",body:"未抛错但产出与预期不符的软故障,如答非所问、关键信息遗漏。"},"fault-mark":{name:"故障标记",tag:"fault",body:"故障的机读类型,如 TIMEOUT、RATE_LIMIT、OUTPUT_MISMATCH。"},"chain-status":{name:"链路状态",tag:"trace",body:"当前 Trace 的最终状态,如 CHAIN_ERROR · L13 表示第 13 个节点处出错。"},"node-summary":{name:"节点摘要",tag:"trace",body:'故障所在 Span 的简短描述(如"LLM Provider")。'},"match-evidence":{name:"匹配依据",tag:"fault",body:"诊断 Agent 得出结论时引用的证据来源(节点 ID、字段、上下文)。"},"cite-node":{name:"引用节点",tag:"trace",body:"追问 Agent 时可通过 @ 引用具体 Span,让诊断聚焦在该节点上。"},dataset:{name:"评测集",tag:"eval",body:"一组带标准答案的测试样本,用于离线评估 Agent 或 Skill 的质量。"},"dataset-input":{name:"input",tag:"eval",body:"评测样本的输入字段,对应用户提问或上游入参。"},"reference-output":{name:"reference_output",tag:"eval",body:"评测样本的标准答案(Ground Truth),用于和 Agent 实际输出做对照。"},"pending-sync":{name:"待同步",tag:"eval",body:"数据集已修改但尚未推送到执行端。"},"latest-pass-rate":{name:"最新通过率",tag:"eval",body:"该评测集最近一次执行时的通过样本占比。"},evaluator:{name:"评估器",tag:"eval",body:"给实际输出打分的判定器,可以是规则、脚本或 LLM。"},"evaluator-custom":{name:"自建评估器",tag:"eval",body:"用户自定义的评估器,需自行配置评分逻辑。"},"evaluator-preset":{name:"预置评估器",tag:"eval",body:'平台内置、开箱即用的评估器(如"Agent 任务完成度")。'},"llm-judge":{name:"LLM Judge",tag:"eval",body:"由大模型担任的评估器,按设定的标尺对输出评分。"},"score-range":{name:"评分 0–1",tag:"eval",body:"单项打分取值范围,1 为满分,0 为完全未达预期。"},"eval-dimension":{name:"评估维度标签",tag:"eval",body:"评估器关注的维度,如 结果 / 任务完成 / 内容质量 / Agent 通用评测,一个评估器可同时打多个维度。"},"eval-batch":{name:"评测批次",tag:"eval",body:"一次完整评测任务的执行实例,包含若干 Trace 样本。"},"eval-agent":{name:"执行 Agent",tag:"eval",body:"本次评测中被测试的 Agent。"},"auto-observe":{name:"自动观测",tag:"eval",body:"开启后该批次评测结果将纳入 Skill 综合健康分。"},"result-eval":{name:"结果评测",tag:"eval",body:"仅对最终输出与 Ground Truth 做对比的评测维度。"},"trajectory-eval":{name:"轨迹评测",tag:"eval",body:"对中间步骤(如调用顺序、是否调用某工具)做评测的维度。"},"custom-eval":{name:"自定义评测",tag:"eval",body:"用户自定义评估器对该次执行的额外评分通道。"},"eval-conclusion":{name:"综合评测结论",tag:"eval",body:"多维度评分加权后的最终结论与建议。"},skill:{name:"Skill",tag:"skill",body:"可被 Agent 加载并按需调用的能力包,由一份 SKILL.md 主文档加若干脚本/参考资料组成。"},"skill-activated-unused":{name:"已激活待引用",tag:"skill",body:'Skill 已激活但暂无 Agent 引用,处于"上架但闲置"状态。'},"skill-progress":{name:"流程进度",tag:"skill",body:'Skill 在"生成 → 分析 → 优化"三段生命周期中的位置(如 2/3 表示已完成前两步)。'},"skill-to-optimize":{name:"待优化",tag:"skill",body:'已分析出问题、等待进入"优化"环节的 Skill 数。'},"skill-version":{name:"版本",tag:"skill",body:"Skill 的不可变快照,当前激活的版本会被 Agent 实际加载。"},"skill-lifecycle":{name:"SKILL 生命周期",tag:"skill",body:"三阶段流水:①生成(产出 SKILL.md 与脚本)→ ②分析(评估质量)→ ③优化(按分析结果迭代)。"},"expected-chain":{name:"预期执行链路",tag:"skill",body:'Skill 被调用时按 SKILL.md 解析出的步骤序列,用于"声明 vs 实际"的对照。'},"skill-generation":{name:"Skill 生成",tag:"skill",body:"通过对话与模型协作,自动产出 SKILL.md 与配套 scripts/references 目录。"},"skill-md":{name:"主文档",tag:"skill",body:"SKILL.md,Skill 的入口说明书,包含触发条件、核心指令、参数约束等,模型据此决定何时及如何调用。"},"skill-scripts":{name:"scripts/",tag:"skill",body:"Skill 附带的可执行脚本目录,运行时由 Agent 调用。"},"skill-references":{name:"references/",tag:"skill",body:"Skill 的参考资料目录,作为模型上下文,本身不可执行。"},"scenario-template":{name:"场景模板",tag:"skill",body:"生成时的目标场景类型,影响 SKILL.md 的结构与措辞。"},"risk-zones":{name:"安全区 / 交互区 / 禁止区",tag:"skill",body:"Skill 内部约定的操作风险分层:可自动执行 / 需用户确认 / 绝不执行。"},"web-search":{name:"联网搜索",tag:"tool",body:"生成过程中是否允许模型实时检索外部资料。"},"health-score":{name:"综合健康分 · 置信加权",tag:"skill",body:"Skill 当前总分。各维度按权重加权,未跑完的维度不计入分母;用例分析维度只读取当前关联评测任务的结果。",formula:"Σ(score_i × weight_i) / Σ(weight_i, 已完成)"},"eval-coverage":{name:"评估覆盖度",tag:"eval",body:"4 个评估维度中已完成评测的占比(如 0/4 维 · 0%)。"},"traj-completeness":{name:"完整性",tag:"eval",body:'评测 Agent 是否覆盖了该 Skill 要求的关键步骤、顺序是否正确——即"该做的有没有做、有没有漏步/乱序"。trace 模式下取 analyze-match 确定性对齐的覆盖率。',formula:"覆盖率(命中关键步骤 / 应有关键步骤) − 顺序惩罚 · 轨迹分权重 45%"},"traj-tool-choice":{name:"工具选择",tag:"eval",body:'评测每一步是否选对工具 / Skill、参数与调用时机是否合理——即"工具用得对不对、巧不巧"。',formula:"逐步打分均值(选对 1.0 / 时机不当 0.7 / 参数错 0.5 / 选错 0)· 轨迹分权重 35%"},"traj-redundancy":{name:"冗余",tag:"eval",body:'评测是否存在重复调用、绕路、死循环式的多余操作——即"有没有废动作、执行效率高不高"。由规则统计连续重复 / 高频调用得出,不靠 LLM 数循环。',formula:"1 − (连续重复段 × 0.2 + 高频调用 × 0.1) · 轨迹分权重 20%"},"one-line-diagnosis":{name:"一句话诊断",tag:"fault",body:"系统对当前评测状态总结出的结论与建议。"},"basic-diagnosis":{name:"基础诊断",tag:"fault",body:"仅依据当前已有数据的浅层诊断,覆盖度低时也能给出。"},"smart-run":{name:"SMART RUN",tag:"eval",body:"一键跑齐缺失维度的批量执行入口,自动调度未跑的评测项。"},"pending-dimensions":{name:"待跑维度",tag:"eval",body:'状态为"未配置"或"待分析"、尚未产出分数的评估维度。'},"four-dim-eval":{name:"4 维评估能力",tag:"eval",body:"当前对 Skill 的四个评估视角:A/B 测试、用例分析、触发分析、静态合规。"},"dim-status":{name:"待分析 / 待扫描 / 未配置",tag:"eval",body:"维度状态:数据已就绪等待跑分 / 等待静态扫描 / 尚未配置数据集或参数。"},"weight-excluded":{name:"不计入总分",tag:"eval",body:"某维度未完成时,其权重从分母中剔除,标注中给出被剔除的权重大小(如 -40%)。"},"ab-test":{name:"A/B 测试",tag:"eval",body:'同一份输入分别在"开启 Skill"与"不开启 Skill"两个 Agent 版本下执行,对比效果差异。'},"control-version":{name:"对照版本(A)",tag:"eval",body:"不挂载该 Skill 的基线 Agent。"},"experiment-version":{name:"实验版本(B)",tag:"eval",body:"挂载了该 Skill 的 Agent。"},"repeat-rounds":{name:"重复轮次",tag:"eval",body:"同一样本重复执行的次数,用于计算方差、消除随机性。"},"auto-eval":{name:"自动评测",tag:"eval",body:'跑完后自动调用评估器返回准确率与"Skill 是否生效"的判断。'},"log-skill-trigger":{name:"记录 Skill 触发详情",tag:"skill",body:"保留每条样本下 Skill 的命中/未命中明细,便于事后定位。"},"eval-source":{name:"从数据集发起 / 从执行链路发起",tag:"eval",body:"输入来源:复用既有评测集,或直接选取线上 Trace 作为输入。"},"case-analysis":{name:"用例分析",tag:"eval",body:'基于已评测 Trace 的"结果 + 轨迹"双维度回看,定位 Skill 在真实流量中的得失。'},"result-analysis":{name:"结果分析",tag:"eval",body:"仅看最终答案是否达成用户目标。"},"trajectory-analysis":{name:"轨迹分析",tag:"eval",body:"看中间过程是否按 SKILL.md 期望的步骤进行。"},"case-set":{name:"用例集",tag:"eval",body:'当前 Skill 版本关联的 Trace 集合,可勾选送入"触发分析"。'},"high-divergence":{name:"高偏离",tag:"fault",body:"实际输出与参考答案差异较大的样本筛选标签。"},"trigger-analysis":{name:"触发分析",tag:"skill",body:"评估 Skill 路由是否准确——哪些 query 应命中本 Skill、哪些不应。"},"trigger-eval-set":{name:"触发评价集",tag:"eval",body:'专用于触发分析的数据集,每条样本带有"是否应触发"的标注。'},"trigger-hit-rate":{name:"触发集命中率",tag:"metric",body:'"应触发且确实触发"的样本占比,越高越好。',formula:"should_trigger ∩ did_trigger / should_trigger"},"false-trigger-rate":{name:"误触发率",tag:"fault",body:'"不应触发却触发"的样本占比,越低越好。',formula:"¬should_trigger ∩ did_trigger / ¬should_trigger"},"edge-case":{name:"边界用例",tag:"eval",body:"处在触发/不触发边界、最容易判错的样本。"},"ai-draft":{name:"AI 起草",tag:"tool",body:"让模型基于现有 Skill 描述自动生成一份触发评价集草稿。"},"opencode-live":{name:"opencode-live",tag:"metric",body:"当前触发分析所使用的线上路由通道名称。"},"static-compliance":{name:"静态合规分析",tag:"eval",body:"基于规则的 SKILL.md 文本扫描,不需要实际执行 Skill。"},"purpose-fit":{name:"目的适配性",tag:"eval",body:"Skill 是否有清晰的单一目的,便于 LLM 准确识别调用时机。"},"structure-norm":{name:"结构规范性",tag:"eval",body:"SKILL.md 的元数据规范、内容组织和信息密度。"},"instruction-fit":{name:"指令适配性",tag:"eval",body:"指令自由度与任务风险等级、确定性是否匹配。"},"content-consistency":{name:"内容一致性",tag:"eval",body:"术语和表达风格是否前后一致,是否依赖隐含的时效性假设。"},"ops-reliability":{name:"运维可靠性",tag:"eval",body:"安全边界、灾难恢复路径与可观测性。"},"script-quality":{name:"脚本及参考文档质量",tag:"eval",body:"配套脚本与参考资料的独立性、健壮性与自愈能力。"},"skill-optimization":{name:"Skill 优化",tag:"skill",body:"基于分析结果,对 SKILL.md 与配套脚本/参考资料进行版本迭代。"},"current-version":{name:"当前版本",tag:"skill",body:"正在被引用的激活版本,作为优化的基线(如 v0 当前)。"},"quality-monitoring":{name:"质量监控",tag:"metric",body:'以单个 Agent 为对象,对其时间窗内全部 trace 做整体度量:四维评分、趋势、统一问题汇总,并可下钻到单条 trace 诊断。回答"这个 Agent 整体好不好、先修哪个问题"。'},"quality-composite-score":{name:"综合质量分",tag:"metric",body:"把窗口内全部 trace 的四维表现压成的总分(0–100)。按 P0/P1/P2 优先级加权;任一 P0 硬约束命中(如安全违规)时封顶降级标红。状态按绝对阈值判定:≥85 达标 / 70–85 关注 / <70 异常,不与其他 Agent 比排名。",formula:"综合分 = Σ(层均值 × 层权重);权重 P0 0.55 / P1 0.30 / P2 0.15(缺层时重新归一)"},"quality-priority-tiers":{name:"指标优先级 P0/P1/P2",tag:"metric",body:"P0 必达基线:任务完成度、安全、工具正确性、成本\nP1 重要进阶:计划效率、约束遵循、工具归因(依赖轨迹评测,无数据记 N/A)\nP2 增益项:如用户满意度(暂未启用)\nN/A 的层不参与综合分加权。"},"quality-deterministic-baseline":{name:"确定性打底",tag:"eval",body:"没有模型评测分的 trace,其指标由确定性规则推断:有工具报错或失败记录 → 判失败;无任何失败信号 → 视为成功。零模型成本但偏乐观,须结合评测覆盖一起判读。"},"quality-eval-coverage":{name:"评测覆盖",tag:"eval",body:"窗口内有模型评测分(judge 结果分或轨迹评测分)的 trace 占比。覆盖越低,分数越依赖确定性推断;可通过采样回填提升覆盖。",formula:"评测覆盖 = 已评测 trace 数 ÷ 窗口内 trace 总数"},"quality-pass-rate":{name:"达标率",tag:"metric",body:'窗口内"无失败信号"的 trace 占比(确定性口径:无工具报错、无失败记录、judge 未判错)。',formula:"达标率 = 成功 trace 数 ÷ trace 总数"},"quality-impact":{name:"影响度",tag:"metric",body:'统一问题汇总的排序键,回答"先修哪个":频次越高、越严重、影响面越聚焦的问题排越前。',formula:"影响度 = 频次 × 严重度权重 ÷ 受影响维度数"},"quality-pareto":{name:"帕累托累计",tag:"metric",body:'问题按频次降序排列后的累计占比,用于判断"修前几类能消掉多大比例的报错"。通常头部少数几类覆盖大多数报错次数。'},"quality-skill-drag":{name:"Skill 拖累榜",tag:"skill",body:'按 Skill 聚合窗口内未解决的 SkillIssue,回答"哪个 skill 在拖累这个 Agent"。点「去优化」直达 Skills 优化工作台,修复后自动销账。',formula:"拖累分 = Σ(未解决问题的严重度权重);受影响 = 调用该 skill 的 trace 占比"},"quality-expected-gain":{name:"预期收益(估)",tag:"metric",body:"修复该问题后达标率提升的保守估算:按关联 trace 占窗口 trace 的比例推算,封顶于剩余提升空间。仅供排序参考,非承诺值。"},"quality-attribution":{name:"归因标签",tag:"fault",body:"问题该派给谁修:\nagent逻辑:提示词 / Skill / 编排问题\n模型能力:理解偏差、幻觉\n工具&infra:超时、限流、环境故障\n外部输入:用户输入或上游数据问题\n当前由确定性规则、评测信号与诊断结论推断。"},"quality-dim-result":{name:"结果维(做对了吗)",tag:"metric",body:"完成度与安全两个指标的均值。\n完成度:有 judge 评测分用评测分;没有则确定性推断——有工具报错/失败记录判 0,无失败信号判 100\n安全:失败记录命中注入/越权/PII 即判 0,且综合分硬降级(0 容忍)",formula:"结果 = (完成度均值 + 安全均值) ÷ 2\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-process":{name:"过程维(路径对不对)",tag:"metric",body:'有效子指标的均值,识别"蒙对"(结果好/过程差)与"白忙"(过程好/结果差)。\n工具正确性:1 − 工具错误次数 ÷ 调用次数(恒可算)\n计划效率 / 约束遵循 / 工具归因:依赖轨迹评测,缺数据记 N/A 不入分母\n覆盖率低 = 只测了工具正确性一个角度,分数偏"薄"',formula:"过程 = mean(非 N/A 子指标)\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-cost":{name:"成本维(划不划算)",tag:"metric",body:'每条 trace 的"预算余量分"求均值:取 时延/Token/步数 三者中最紧张的占用率,剩余空间即得分。预算上限为可配置参数(默认 120 秒 / 20 万 token / 60 步,待标定)。\n注意:均值会掩盖失控长尾,须结合趋势里的 p95 一起看。',formula:"单条成本分 = (1 − max(时延/上限, token/上限, 步数/上限)) × 100\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-error":{name:"错误维(在哪儿崩)",tag:"metric",body:'无错 trace 的占比(卡片大数字显示的是报错次数,状态按错误分判定)。\n错误事件来自重解析执行步骤:工具步看返回内容,LLM 步只看结构化元信息——模型"谈论失败"不算"步骤失败"。',formula:"错误分 = (1 − 出错 trace 数 ÷ trace 总数) × 100\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"model-registry":{name:"模型注册",tag:"tool",body:"录入外部模型(如 DeepSeek、OpenAI 等)的密钥与 endpoint,供 Agent / 评估器调用。"},"install-guide":{name:"安装指导",tag:"tool",body:"现有 Agent 接入本平台的 SDK 与配置文档入口。"}};function a(e){return t[e]}e.s(["getTermById",()=>a])},810818,e=>{"use strict";let t=(0,e.i(456420).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["Info",()=>t],810818)},797324,e=>{"use strict";var t=e.i(843476),a=e.i(810818),r=e.i(186336),n=e.i(975157);let l={metric:{label:"指标",cls:"bg-background-secondary text-foreground-muted"},trace:{label:"链路",cls:"bg-background-secondary text-foreground-muted"},tool:{label:"工具",cls:"bg-background-secondary text-foreground-muted"},skill:{label:"Skill",cls:"bg-[var(--tag-purple-bg)] text-[var(--tag-purple-fg)]"},fault:{label:"故障",cls:"bg-error-subtle text-error border border-error-border"},eval:{label:"评测",cls:"bg-success-subtle text-success border border-success-border"}};function o({term:e,tag:o,body:i,formula:s,related:d,children:c,align:u="start",side:m="bottom",badgeTone:g="muted",className:p}){let y=o?l[o]:null;return(0,t.jsx)(r.Provider,{delayDuration:150,skipDelayDuration:50,children:(0,t.jsxs)(r.Root,{children:[(0,t.jsx)(r.Trigger,{asChild:!0,children:(0,t.jsxs)("span",{className:(0,n.cn)("inline-flex items-center gap-1 cursor-help select-none align-baseline","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",p),tabIndex:0,"aria-label":`${e} 术语解释`,children:[c??(0,t.jsx)("span",{children:e}),(0,t.jsx)(a.Info,{className:(0,n.cn)("size-3 shrink-0 opacity-70","primary"===g?"text-primary":"text-foreground-muted"),"aria-hidden":!0})]})}),(0,t.jsx)(r.Portal,{children:(0,t.jsxs)(r.Content,{align:u,side:m,sideOffset:6,collisionPadding:12,className:(0,n.cn)("z-50 w-[260px] space-y-3 rounded-md border border-card-border bg-card p-4 text-card-foreground shadow-sm outline-none","data-[state=delayed-open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2","data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2"),children:[(0,t.jsxs)("header",{className:"flex items-center justify-between gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:e}),y&&(0,t.jsx)("span",{className:(0,n.cn)("inline-flex items-center px-1.5 py-0.5 rounded-sm text-[10px] leading-none",y.cls),children:y.label})]}),(0,t.jsx)("div",{className:"text-xs leading-[18px] text-foreground-secondary whitespace-pre-line",children:i}),s&&(0,t.jsx)("div",{className:"border-t border-card-border pt-2 font-mono text-[11px] leading-4 tabular-nums text-foreground-muted",children:s}),d&&d.length>0&&(0,t.jsx)("footer",{className:"border-t border-card-border pt-2 flex flex-wrap gap-1.5",children:d.map(e=>(0,t.jsx)("button",{type:"button",onClick:e.onClick,className:"text-[11px] text-primary hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",children:e.name},e.id))})]})})]})})}e.s(["TermPopover",()=>o])},460435,e=>{"use strict";var t=e.i(843476),a=e.i(565804),r=e.i(797324);function n({id:e,render:n="default",label:l,align:o,side:i,badgeTone:s,className:d}){let c=(0,a.getTermById)(e);if(!c)return(0,t.jsx)("span",{className:d,children:l??e});let u=l??c.name;return(0,t.jsx)(r.TermPopover,{term:c.name,tag:c.tag,body:c.body,formula:c.formula,align:o,side:i,badgeTone:s,className:d,children:"compact"===n?(0,t.jsx)(t.Fragment,{}):(0,t.jsx)("span",{children:u})})}e.s(["Term",()=>n])}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,218469,456420,248105,e=>{"use strict";var t=e.i(271645);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,a)=>a?a.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,t.createContext)({}),o=(0,t.forwardRef)(({color:e,size:r,strokeWidth:o,absoluteStrokeWidth:i,className:s="",children:d,iconNode:c,...u},m)=>{let{size:g=24,strokeWidth:p=2,absoluteStrokeWidth:y=!1,color:f="currentColor",className:b=""}=(0,t.useContext)(l)??{},v=i??y?24*Number(o??p)/Number(r??g):o??p;return(0,t.createElement)("svg",{ref:m,...n,width:r??g??n.width,height:r??g??n.height,stroke:e??f,strokeWidth:v,className:a("lucide",b,s),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...c.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(d)?d:[d]])}),i=(e,n)=>{let l=(0,t.forwardRef)(({className:l,...i},s)=>(0,t.createElement)(o,{ref:s,iconNode:n,className:a(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=r(e),l};e.s(["default",()=>i],456420);let s=i("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);e.s(["PanelLeftClose",()=>s],218469);let d=i("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);e.s(["PanelLeftOpen",()=>d],248105)},540568,e=>{"use strict";var t=e.i(843476),a=e.i(218469),r=e.i(248105),n=e.i(760045);function l({title:e,actions:l}){let{isCollapsed:o,toggleSidebar:i}=(0,n.useSidebar)(),s=o?r.PanelLeftOpen:a.PanelLeftClose;return(0,t.jsxs)("header",{className:"sticky top-0 z-10 flex h-14 items-center gap-3 border-b border-border bg-card px-6",style:{flexShrink:0},children:[(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":o?"展开侧栏":"折叠侧栏",className:"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-foreground-secondary transition-colors hover:bg-background-secondary hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:(0,t.jsx)(s,{className:"size-4"})}),(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 text-sm font-medium text-foreground",children:"string"==typeof e?(0,t.jsx)("span",{className:"truncate",children:e}):e}),l&&(0,t.jsx)("div",{className:"flex items-center gap-2",children:l})]})}e.s(["AppTopBar",()=>l])},186336,e=>{"use strict";let t;var a=e.i(271645),r=e.i(981140),n=e.i(820783),l=e.i(843476),o=e.i(726330),i=e.i(610772),s=e.i(853660),d=e.i(774606),c=e.i(296626);e.i(174080);var u=Symbol("radix.slottable");function m(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===u}var g=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var r,o;let i,s,d,c=(o=r=`Primitive.${t}`,(i=a.forwardRef((e,t)=>{let{children:r,...l}=e;if(a.isValidElement(r)){var o;let e,i,s=(o=r,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),d=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(l,r.props);return r.type!==a.Fragment&&(d.ref=t?(0,n.composeRefs)(t,s):s),a.cloneElement(r,d)}return a.Children.count(r)>1?a.Children.only(null):null})).displayName=`${o}.SlotClone`,s=i,(d=a.forwardRef((e,t)=>{let{children:r,...n}=e,o=a.Children.toArray(r),i=o.find(m);if(i){let e=i.props.children,r=o.map(t=>t!==i?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,l.jsx)(s,{...n,ref:t,children:a.isValidElement(e)?a.cloneElement(e,void 0,r):null})}return(0,l.jsx)(s,{...n,ref:t,children:r})})).displayName=`${r}.Slot`,d),u=a.forwardRef((e,a)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(r?c:t,{...n,ref:a})});return u.displayName=`Primitive.${t}`,{...e,[t]:u}},{}),p=e.i(369340),y=Symbol("radix.slottable");function f(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===y}var b=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var r,o;let i,s,d,c=(o=r=`Primitive.${t}`,(i=a.forwardRef((e,t)=>{let{children:r,...l}=e;if(a.isValidElement(r)){var o;let e,i,s=(o=r,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),d=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(l,r.props);return r.type!==a.Fragment&&(d.ref=t?(0,n.composeRefs)(t,s):s),a.cloneElement(r,d)}return a.Children.count(r)>1?a.Children.only(null):null})).displayName=`${o}.SlotClone`,s=i,(d=a.forwardRef((e,t)=>{let{children:r,...n}=e,o=a.Children.toArray(r),i=o.find(f);if(i){let e=i.props.children,r=o.map(t=>t!==i?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,l.jsx)(s,{...n,ref:t,children:a.isValidElement(e)?a.cloneElement(e,void 0,r):null})}return(0,l.jsx)(s,{...n,ref:t,children:r})})).displayName=`${r}.Slot`,d),u=a.forwardRef((e,a)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(r?c:t,{...n,ref:a})});return u.displayName=`Primitive.${t}`,{...e,[t]:u}},{}),v=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),h=a.forwardRef((e,t)=>(0,l.jsx)(b.span,{...e,ref:t,style:{...v,...e.style}}));h.displayName="VisuallyHidden";var[x,k]=function(e,t=[]){let r=[],n=()=>{let t=r.map(e=>a.createContext(e));return function(r){let n=r?.[e]||t;return a.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return n.scopeName=e,[function(t,n){let o=a.createContext(n),i=r.length;r=[...r,n];let s=t=>{let{scope:r,children:n,...s}=t,d=r?.[e]?.[i]||o,c=a.useMemo(()=>s,Object.values(s));return(0,l.jsx)(d.Provider,{value:c,children:n})};return s.displayName=t+"Provider",[s,function(r,l){let s=l?.[e]?.[i]||o,d=a.useContext(s);if(d)return d;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:a,scopeName:r})=>{let n=a(e)[`__scope${r}`];return{...t,...n}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(n,...t)]}("Tooltip",[s.createPopperScope]),A=(0,s.createPopperScope)(),w="TooltipProvider",S="tooltip.open",[T,C]=x(w),j=e=>{let{__scopeTooltip:t,delayDuration:r=700,skipDelayDuration:n=300,disableHoverableContent:o=!1,children:i}=e,s=a.useRef(!0),d=a.useRef(!1),c=a.useRef(0);return a.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,l.jsx)(T,{scope:t,isOpenDelayedRef:s,delayDuration:r,onOpen:a.useCallback(()=>{window.clearTimeout(c.current),s.current=!1},[]),onClose:a.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.current=!0,n)},[n]),isPointerInTransitRef:d,onPointerInTransitChange:a.useCallback(e=>{d.current=e},[]),disableHoverableContent:o,children:i})};j.displayName=w;var L="Tooltip",[P,N]=x(L),E=e=>{let{__scopeTooltip:t,children:r,open:n,defaultOpen:o,onOpenChange:d,disableHoverableContent:c,delayDuration:u}=e,m=C(L,e.__scopeTooltip),g=A(t),[y,f]=a.useState(null),b=(0,i.useId)(),v=a.useRef(0),h=c??m.disableHoverableContent,x=u??m.delayDuration,k=a.useRef(!1),[w,T]=(0,p.useControllableState)({prop:n,defaultProp:o??!1,onChange:e=>{e?(m.onOpen(),document.dispatchEvent(new CustomEvent(S))):m.onClose(),d?.(e)},caller:L}),j=a.useMemo(()=>w?k.current?"delayed-open":"instant-open":"closed",[w]),N=a.useCallback(()=>{window.clearTimeout(v.current),v.current=0,k.current=!1,T(!0)},[T]),E=a.useCallback(()=>{window.clearTimeout(v.current),v.current=0,T(!1)},[T]),R=a.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{k.current=!0,T(!0),v.current=0},x)},[x,T]);return a.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),(0,l.jsx)(s.Root,{...g,children:(0,l.jsx)(P,{scope:t,contentId:b,open:w,stateAttribute:j,trigger:y,onTriggerChange:f,onTriggerEnter:a.useCallback(()=>{m.isOpenDelayedRef.current?R():N()},[m.isOpenDelayedRef,R,N]),onTriggerLeave:a.useCallback(()=>{h?E():(window.clearTimeout(v.current),v.current=0)},[E,h]),onOpen:N,onClose:E,disableHoverableContent:h,children:r})})};E.displayName=L;var R="TooltipTrigger",I=a.forwardRef((e,t)=>{let{__scopeTooltip:o,...i}=e,d=N(R,o),c=C(R,o),u=A(o),m=a.useRef(null),p=(0,n.useComposedRefs)(t,m,d.onTriggerChange),y=a.useRef(!1),f=a.useRef(!1),b=a.useCallback(()=>y.current=!1,[]);return a.useEffect(()=>()=>document.removeEventListener("pointerup",b),[b]),(0,l.jsx)(s.Anchor,{asChild:!0,...u,children:(0,l.jsx)(g.button,{"aria-describedby":d.open?d.contentId:void 0,"data-state":d.stateAttribute,...i,ref:p,onPointerMove:(0,r.composeEventHandlers)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(f.current||c.isPointerInTransitRef.current||(d.onTriggerEnter(),f.current=!0))}),onPointerLeave:(0,r.composeEventHandlers)(e.onPointerLeave,()=>{d.onTriggerLeave(),f.current=!1}),onPointerDown:(0,r.composeEventHandlers)(e.onPointerDown,()=>{d.open&&d.onClose(),y.current=!0,document.addEventListener("pointerup",b,{once:!0})}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>{y.current||d.onOpen()}),onBlur:(0,r.composeEventHandlers)(e.onBlur,d.onClose),onClick:(0,r.composeEventHandlers)(e.onClick,d.onClose)})})});I.displayName=R;var _="TooltipPortal",[O,M]=x(_,{forceMount:void 0}),D=e=>{let{__scopeTooltip:t,forceMount:a,children:r,container:n}=e,o=N(_,t);return(0,l.jsx)(O,{scope:t,forceMount:a,children:(0,l.jsx)(c.Presence,{present:a||o.open,children:(0,l.jsx)(d.Portal,{asChild:!0,container:n,children:r})})})};D.displayName=_;var q="TooltipContent",$=a.forwardRef((e,t)=>{let a=M(q,e.__scopeTooltip),{forceMount:r=a.forceMount,side:n="top",...o}=e,i=N(q,e.__scopeTooltip);return(0,l.jsx)(c.Presence,{present:r||i.open,children:i.disableHoverableContent?(0,l.jsx)(H,{side:n,...o,ref:t}):(0,l.jsx)(K,{side:n,...o,ref:t})})}),K=a.forwardRef((e,t)=>{let r=N(q,e.__scopeTooltip),o=C(q,e.__scopeTooltip),i=a.useRef(null),s=(0,n.useComposedRefs)(t,i),[d,c]=a.useState(null),{trigger:u,onClose:m}=r,g=i.current,{onPointerInTransitChange:p}=o,y=a.useCallback(()=>{c(null),p(!1)},[p]),f=a.useCallback((e,t)=>{let a,r=e.currentTarget,n={x:e.clientX,y:e.clientY},l=function(e,t){let a=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),n=Math.abs(t.right-e.x),l=Math.abs(t.left-e.x);switch(Math.min(a,r,n,l)){case l:return"left";case n:return"right";case a:return"top";case r:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());c(((a=[...function(e,t,a=5){let r=[];switch(t){case"top":r.push({x:e.x-a,y:e.y+a},{x:e.x+a,y:e.y+a});break;case"bottom":r.push({x:e.x-a,y:e.y-a},{x:e.x+a,y:e.y-a});break;case"left":r.push({x:e.x+a,y:e.y-a},{x:e.x+a,y:e.y+a});break;case"right":r.push({x:e.x-a,y:e.y-a},{x:e.x-a,y:e.y+a})}return r}(n,l),...function(e){let{top:t,right:a,bottom:r,left:n}=e;return[{x:n,y:t},{x:a,y:t},{x:a,y:r},{x:n,y:r}]}(t.getBoundingClientRect())].slice()).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let a=0;a<e.length;a++){let r=e[a];for(;t.length>=2;){let e=t[t.length-1],a=t[t.length-2];if((e.x-a.x)*(r.y-a.y)>=(e.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();let a=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;a.length>=2;){let e=a[a.length-1],t=a[a.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))a.pop();else break}a.push(r)}return(a.pop(),1===t.length&&1===a.length&&t[0].x===a[0].x&&t[0].y===a[0].y)?t:t.concat(a)}(a))),p(!0)},[p]);return a.useEffect(()=>()=>y(),[y]),a.useEffect(()=>{if(u&&g){let e=e=>f(e,g),t=e=>f(e,u);return u.addEventListener("pointerleave",e),g.addEventListener("pointerleave",t),()=>{u.removeEventListener("pointerleave",e),g.removeEventListener("pointerleave",t)}}},[u,g,f,y]),a.useEffect(()=>{if(d){let e=e=>{let t=e.target,a={x:e.clientX,y:e.clientY},r=u?.contains(t)||g?.contains(t),n=!function(e,t){let{x:a,y:r}=e,n=!1;for(let e=0,l=t.length-1;e<t.length;l=e++){let o=t[e],i=t[l],s=o.x,d=o.y,c=i.x,u=i.y;d>r!=u>r&&a<(c-s)*(r-d)/(u-d)+s&&(n=!n)}return n}(a,d);r?y():n&&(y(),m())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[u,g,d,m,y]),(0,l.jsx)(H,{...e,ref:s})}),[z,B]=x(L,{isInside:!1}),W=((t=({children:e})=>(0,l.jsx)(l.Fragment,{children:e})).displayName="TooltipContent.Slottable",t.__radixId=u,t),H=a.forwardRef((e,t)=>{let{__scopeTooltip:r,children:n,"aria-label":i,onEscapeKeyDown:d,onPointerDownOutside:c,...u}=e,m=N(q,r),g=A(r),{onClose:p}=m;return a.useEffect(()=>(document.addEventListener(S,p),()=>document.removeEventListener(S,p)),[p]),a.useEffect(()=>{if(m.trigger){let e=e=>{let t=e.target;t?.contains(m.trigger)&&p()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[m.trigger,p]),(0,l.jsx)(o.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:p,children:(0,l.jsxs)(s.Content,{"data-state":m.stateAttribute,...g,...u,ref:t,style:{...u.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,l.jsx)(W,{children:n}),(0,l.jsx)(z,{scope:r,isInside:!0,children:(0,l.jsx)(h,{id:m.contentId,role:"tooltip",children:i||n})})]})})});$.displayName=q;var U="TooltipArrow",V=a.forwardRef((e,t)=>{let{__scopeTooltip:a,...r}=e,n=A(a);return B(U,a).isInside?null:(0,l.jsx)(s.Arrow,{...n,...r,ref:t})});V.displayName=U,e.s(["Arrow",()=>V,"Content",()=>$,"Portal",()=>D,"Provider",()=>j,"Root",()=>E,"Trigger",()=>I],186336)},810818,e=>{"use strict";let t=(0,e.i(456420).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["Info",()=>t],810818)},565804,e=>{"use strict";let t={agent:{name:"Agent",tag:"metric",body:"接入到本平台的智能体实例,对应一个真实运行的对外服务进程。"},"user-agent":{name:"用户 Agent",tag:"metric",body:"通过客户端接入本平台的 Agent 实例,由用户/团队自行注册和维护。"},"system-agent":{name:"系统 Agent",tag:"metric",body:"平台内置的 Agent,用于支撑平台自身功能(如智能诊断)。"},"agent-ownership":{name:"Agent 归属",tag:"metric",body:"标识 Agent 的来源,取值为:用户 Agent、系统 Agent。"},"main-agent":{name:"主 Agent",tag:"trace",body:"直接接收用户请求的入口 Agent,执行过程中可派生子 Agent。"},platform:{name:"平台",tag:"metric",body:"Agent 运行所基于的底层框架/Runtime(如 opencode)。一个 Agent 只能属于一个平台。"},"p95-latency":{name:"P95 时延",tag:"metric",body:"所有请求按耗时排序后第 95 百分位的耗时,反映长尾体验。",formula:"sort(durations)[ceil(0.95 × n)]"},"agent-status":{name:"Agent 状态",tag:"metric",body:"运行中 / 异常 / 空闲 三态,由心跳与最近一次执行结果共同判定。"},"connected-agent":{name:"接入 Agent",tag:"metric",body:"已通过 SDK 或配置完成对接、可向平台上报 Trace 的 Agent。"},"agent-type":{name:"Agent 类型",tag:"metric",body:"区分 主 Agent(入口)与 子 Agent(由主 Agent 派生执行子任务)。"},custom:{name:"Custom",tag:"metric",body:'Agent 的来源类型,表示自定义实现,与"模板"或"预置"相对。'},"trace-link":{name:"链路跟踪",tag:"trace",body:"跳转到该 Agent 最近若干次执行的全链路 Trace 视图。"},"smart-diagnosis":{name:"智能诊断",tag:"fault",body:"对该 Agent 最近一次失败/异常调用进行 AI 归因分析。"},trace:{name:"Trace",tag:"trace",body:"一次完整任务执行从入口到结束的全部调用记录,由若干 Span 组成。"},span:{name:"Span",tag:"trace",body:"Trace 中的单个执行片段,可代表一次 LLM 调用、工具调用或子 Agent 派生。"},"tool-error-rate":{name:"工具错误率",tag:"metric",body:"工具调用失败次数占总工具调用次数的比例。",formula:"failed_tool_calls / total_tool_calls"},"main-agent-only":{name:"仅主 Agent",tag:"trace",body:"筛选项,只展示由主 Agent 发起的根 Trace,过滤子 Agent 派生记录。"},"multi-agent":{name:"Multi-Agent",tag:"trace",body:"标签,表示该 Trace 中存在多个 Agent 协同(含主-子派生)。"},"task-spawns":{name:"TASK SPAWNS",tag:"trace",body:"一次 Trace 中派生子任务/子 Agent 的次数。"},"tool-calls":{name:"TOOL CALLS",tag:"tool",body:"一次 Trace 中工具调用的次数。"},"skill-calls":{name:"SKILL CALLS",tag:"skill",body:"一次 Trace 中命中并调用 Skill 的次数。"},"llm-turns":{name:"LLM TURNS",tag:"trace",body:"一次 Trace 中与底层模型的对话轮次。"},tokens:{name:"Tokens",tag:"metric",body:"模型消耗的 Token 总量,分 INPUT / OUTPUT / CACHE READ。"},"cache-read":{name:"CACHE READ",tag:"metric",body:"命中提示词缓存而被复用的 Token 数,计费远低于普通 Input。"},depth:{name:"depth",tag:"trace",body:"当前节点在 Trace 树中的层级深度,0 为根节点。"},"fault-diagnosis":{name:"故障诊断",tag:"fault",body:"对当前 Trace 触发 AI 归因分析,跳转到智能诊断页面。"},"execution-session":{name:"Execution Session",tag:"trace",body:"一次完整的执行会话,对应一次 Trace。"},"insight-ai":{name:"Insight AI",tag:"fault",body:"平台内置的诊断 Agent(FAULT-DIAGNOSIS-AGENT),读取 Trace 上下文并产出归因结论。"},"fault-item":{name:"故障条目",tag:"fault",body:"诊断 Agent 在一次执行中识别出的独立问题,可并存多个。"},"fault-raw-error":{name:"原始错误类故障",tag:"fault",body:"系统/工具直接抛出的硬错误,如 Timeout、5xx、权限拒绝。"},"fault-effect-divergence":{name:"效果偏差类故障",tag:"fault",body:"未抛错但产出与预期不符的软故障,如答非所问、关键信息遗漏。"},"fault-mark":{name:"故障标记",tag:"fault",body:"故障的机读类型,如 TIMEOUT、RATE_LIMIT、OUTPUT_MISMATCH。"},"chain-status":{name:"链路状态",tag:"trace",body:"当前 Trace 的最终状态,如 CHAIN_ERROR · L13 表示第 13 个节点处出错。"},"node-summary":{name:"节点摘要",tag:"trace",body:'故障所在 Span 的简短描述(如"LLM Provider")。'},"match-evidence":{name:"匹配依据",tag:"fault",body:"诊断 Agent 得出结论时引用的证据来源(节点 ID、字段、上下文)。"},"cite-node":{name:"引用节点",tag:"trace",body:"追问 Agent 时可通过 @ 引用具体 Span,让诊断聚焦在该节点上。"},dataset:{name:"评测集",tag:"eval",body:"一组带标准答案的测试样本,用于离线评估 Agent 或 Skill 的质量。"},"dataset-input":{name:"input",tag:"eval",body:"评测样本的输入字段,对应用户提问或上游入参。"},"reference-output":{name:"reference_output",tag:"eval",body:"评测样本的标准答案(Ground Truth),用于和 Agent 实际输出做对照。"},"pending-sync":{name:"待同步",tag:"eval",body:"数据集已修改但尚未推送到执行端。"},"latest-pass-rate":{name:"最新通过率",tag:"eval",body:"该评测集最近一次执行时的通过样本占比。"},evaluator:{name:"评估器",tag:"eval",body:"给实际输出打分的判定器,可以是规则、脚本或 LLM。"},"evaluator-custom":{name:"自建评估器",tag:"eval",body:"用户自定义的评估器,需自行配置评分逻辑。"},"evaluator-preset":{name:"预置评估器",tag:"eval",body:'平台内置、开箱即用的评估器(如"Agent 任务完成度")。'},"llm-judge":{name:"LLM Judge",tag:"eval",body:"由大模型担任的评估器,按设定的标尺对输出评分。"},"score-range":{name:"评分 0–1",tag:"eval",body:"单项打分取值范围,1 为满分,0 为完全未达预期。"},"eval-dimension":{name:"评估维度标签",tag:"eval",body:"评估器关注的维度,如 结果 / 任务完成 / 内容质量 / Agent 通用评测,一个评估器可同时打多个维度。"},"eval-batch":{name:"评测批次",tag:"eval",body:"一次完整评测任务的执行实例,包含若干 Trace 样本。"},"eval-agent":{name:"执行 Agent",tag:"eval",body:"本次评测中被测试的 Agent。"},"auto-observe":{name:"自动观测",tag:"eval",body:"开启后该批次评测结果将纳入 Skill 综合健康分。"},"result-eval":{name:"结果评测",tag:"eval",body:"仅对最终输出与 Ground Truth 做对比的评测维度。"},"trajectory-eval":{name:"轨迹评测",tag:"eval",body:"对中间步骤(如调用顺序、是否调用某工具)做评测的维度。"},"custom-eval":{name:"自定义评测",tag:"eval",body:"用户自定义评估器对该次执行的额外评分通道。"},"eval-conclusion":{name:"综合评测结论",tag:"eval",body:"多维度评分加权后的最终结论与建议。"},skill:{name:"Skill",tag:"skill",body:"可被 Agent 加载并按需调用的能力包,由一份 SKILL.md 主文档加若干脚本/参考资料组成。"},"skill-activated-unused":{name:"已激活待引用",tag:"skill",body:'Skill 已激活但暂无 Agent 引用,处于"上架但闲置"状态。'},"skill-progress":{name:"流程进度",tag:"skill",body:'Skill 在"生成 → 分析 → 优化"三段生命周期中的位置(如 2/3 表示已完成前两步)。'},"skill-to-optimize":{name:"待优化",tag:"skill",body:'已分析出问题、等待进入"优化"环节的 Skill 数。'},"skill-version":{name:"版本",tag:"skill",body:"Skill 的不可变快照,当前激活的版本会被 Agent 实际加载。"},"skill-lifecycle":{name:"SKILL 生命周期",tag:"skill",body:"三阶段流水:①生成(产出 SKILL.md 与脚本)→ ②分析(评估质量)→ ③优化(按分析结果迭代)。"},"expected-chain":{name:"预期执行链路",tag:"skill",body:'Skill 被调用时按 SKILL.md 解析出的步骤序列,用于"声明 vs 实际"的对照。'},"skill-generation":{name:"Skill 生成",tag:"skill",body:"通过对话与模型协作,自动产出 SKILL.md 与配套 scripts/references 目录。"},"skill-md":{name:"主文档",tag:"skill",body:"SKILL.md,Skill 的入口说明书,包含触发条件、核心指令、参数约束等,模型据此决定何时及如何调用。"},"skill-scripts":{name:"scripts/",tag:"skill",body:"Skill 附带的可执行脚本目录,运行时由 Agent 调用。"},"skill-references":{name:"references/",tag:"skill",body:"Skill 的参考资料目录,作为模型上下文,本身不可执行。"},"scenario-template":{name:"场景模板",tag:"skill",body:"生成时的目标场景类型,影响 SKILL.md 的结构与措辞。"},"risk-zones":{name:"安全区 / 交互区 / 禁止区",tag:"skill",body:"Skill 内部约定的操作风险分层:可自动执行 / 需用户确认 / 绝不执行。"},"web-search":{name:"联网搜索",tag:"tool",body:"生成过程中是否允许模型实时检索外部资料。"},"health-score":{name:"综合健康分 · 置信加权",tag:"skill",body:'Skill 当前总分。各维度按权重加权,未跑完的维度不计入分母,故称"置信加权"。',formula:"Σ(score_i × weight_i) / Σ(weight_i, 已完成)"},"eval-coverage":{name:"评估覆盖度",tag:"eval",body:"4 个评估维度中已完成评测的占比(如 0/4 维 · 0%)。"},"traj-completeness":{name:"完整性",tag:"eval",body:'评测 Agent 是否覆盖了该 Skill 要求的关键步骤、顺序是否正确——即"该做的有没有做、有没有漏步/乱序"。trace 模式下取 analyze-match 确定性对齐的覆盖率。',formula:"覆盖率(命中关键步骤 / 应有关键步骤) − 顺序惩罚 · 轨迹分权重 45%"},"traj-tool-choice":{name:"工具选择",tag:"eval",body:'评测每一步是否选对工具 / Skill、参数与调用时机是否合理——即"工具用得对不对、巧不巧"。',formula:"逐步打分均值(选对 1.0 / 时机不当 0.7 / 参数错 0.5 / 选错 0)· 轨迹分权重 35%"},"traj-redundancy":{name:"冗余",tag:"eval",body:'评测是否存在重复调用、绕路、死循环式的多余操作——即"有没有废动作、执行效率高不高"。由规则统计连续重复 / 高频调用得出,不靠 LLM 数循环。',formula:"1 − (连续重复段 × 0.2 + 高频调用 × 0.1) · 轨迹分权重 20%"},"one-line-diagnosis":{name:"一句话诊断",tag:"fault",body:"系统对当前评测状态总结出的结论与建议。"},"basic-diagnosis":{name:"基础诊断",tag:"fault",body:"仅依据当前已有数据的浅层诊断,覆盖度低时也能给出。"},"smart-run":{name:"SMART RUN",tag:"eval",body:"一键跑齐缺失维度的批量执行入口,自动调度未跑的评测项。"},"pending-dimensions":{name:"待跑维度",tag:"eval",body:'状态为"未配置"或"待分析"、尚未产出分数的评估维度。'},"four-dim-eval":{name:"4 维评估能力",tag:"eval",body:"当前对 Skill 的四个评估视角:A/B 测试、用例分析、触发分析、静态合规。"},"dim-status":{name:"待分析 / 待扫描 / 未配置",tag:"eval",body:"维度状态:数据已就绪等待跑分 / 等待静态扫描 / 尚未配置数据集或参数。"},"weight-excluded":{name:"不计入总分",tag:"eval",body:"某维度未完成时,其权重从分母中剔除,标注中给出被剔除的权重大小(如 -40%)。"},"ab-test":{name:"A/B 测试",tag:"eval",body:'同一份输入分别在"开启 Skill"与"不开启 Skill"两个 Agent 版本下执行,对比效果差异。'},"control-version":{name:"对照版本(A)",tag:"eval",body:"不挂载该 Skill 的基线 Agent。"},"experiment-version":{name:"实验版本(B)",tag:"eval",body:"挂载了该 Skill 的 Agent。"},"repeat-rounds":{name:"重复轮次",tag:"eval",body:"同一样本重复执行的次数,用于计算方差、消除随机性。"},"auto-eval":{name:"自动评测",tag:"eval",body:'跑完后自动调用评估器返回准确率与"Skill 是否生效"的判断。'},"log-skill-trigger":{name:"记录 Skill 触发详情",tag:"skill",body:"保留每条样本下 Skill 的命中/未命中明细,便于事后定位。"},"eval-source":{name:"从数据集发起 / 从执行链路发起",tag:"eval",body:"输入来源:复用既有评测集,或直接选取线上 Trace 作为输入。"},"case-analysis":{name:"用例分析",tag:"eval",body:'基于已评测 Trace 的"结果 + 轨迹"双维度回看,定位 Skill 在真实流量中的得失。'},"result-analysis":{name:"结果分析",tag:"eval",body:"仅看最终答案是否达成用户目标。"},"trajectory-analysis":{name:"轨迹分析",tag:"eval",body:"看中间过程是否按 SKILL.md 期望的步骤进行。"},"case-set":{name:"用例集",tag:"eval",body:'当前 Skill 版本关联的 Trace 集合,可勾选送入"触发分析"。'},"high-divergence":{name:"高偏离",tag:"fault",body:"实际输出与参考答案差异较大的样本筛选标签。"},"trigger-analysis":{name:"触发分析",tag:"skill",body:"评估 Skill 路由是否准确——哪些 query 应命中本 Skill、哪些不应。"},"trigger-eval-set":{name:"触发评价集",tag:"eval",body:'专用于触发分析的数据集,每条样本带有"是否应触发"的标注。'},"trigger-hit-rate":{name:"触发集命中率",tag:"metric",body:'"应触发且确实触发"的样本占比,越高越好。',formula:"should_trigger ∩ did_trigger / should_trigger"},"false-trigger-rate":{name:"误触发率",tag:"fault",body:'"不应触发却触发"的样本占比,越低越好。',formula:"¬should_trigger ∩ did_trigger / ¬should_trigger"},"edge-case":{name:"边界用例",tag:"eval",body:"处在触发/不触发边界、最容易判错的样本。"},"ai-draft":{name:"AI 起草",tag:"tool",body:"让模型基于现有 Skill 描述自动生成一份触发评价集草稿。"},"opencode-live":{name:"opencode-live",tag:"metric",body:"当前触发分析所使用的线上路由通道名称。"},"static-compliance":{name:"静态合规分析",tag:"eval",body:"基于规则的 SKILL.md 文本扫描,不需要实际执行 Skill。"},"purpose-fit":{name:"目的适配性",tag:"eval",body:"Skill 是否有清晰的单一目的,便于 LLM 准确识别调用时机。"},"structure-norm":{name:"结构规范性",tag:"eval",body:"SKILL.md 的元数据规范、内容组织和信息密度。"},"instruction-fit":{name:"指令适配性",tag:"eval",body:"指令自由度与任务风险等级、确定性是否匹配。"},"content-consistency":{name:"内容一致性",tag:"eval",body:"术语和表达风格是否前后一致,是否依赖隐含的时效性假设。"},"ops-reliability":{name:"运维可靠性",tag:"eval",body:"安全边界、灾难恢复路径与可观测性。"},"script-quality":{name:"脚本及参考文档质量",tag:"eval",body:"配套脚本与参考资料的独立性、健壮性与自愈能力。"},"skill-optimization":{name:"Skill 优化",tag:"skill",body:"基于分析结果,对 SKILL.md 与配套脚本/参考资料进行版本迭代。"},"current-version":{name:"当前版本",tag:"skill",body:"正在被引用的激活版本,作为优化的基线(如 v0 当前)。"},"quality-monitoring":{name:"质量监控",tag:"metric",body:'以单个 Agent 为对象,对其时间窗内全部 trace 做整体度量:四维评分、趋势、统一问题汇总,并可下钻到单条 trace 诊断。回答"这个 Agent 整体好不好、先修哪个问题"。'},"quality-composite-score":{name:"综合质量分",tag:"metric",body:"把窗口内全部 trace 的四维表现压成的总分(0–100)。按 P0/P1/P2 优先级加权;任一 P0 硬约束命中(如安全违规)时封顶降级标红。状态按绝对阈值判定:≥85 达标 / 70–85 关注 / <70 异常,不与其他 Agent 比排名。",formula:"综合分 = Σ(层均值 × 层权重);权重 P0 0.55 / P1 0.30 / P2 0.15(缺层时重新归一)"},"quality-priority-tiers":{name:"指标优先级 P0/P1/P2",tag:"metric",body:"P0 必达基线:任务完成度、安全、工具正确性、成本\nP1 重要进阶:计划效率、约束遵循、工具归因(依赖轨迹评测,无数据记 N/A)\nP2 增益项:如用户满意度(暂未启用)\nN/A 的层不参与综合分加权。"},"quality-deterministic-baseline":{name:"确定性打底",tag:"eval",body:"没有模型评测分的 trace,其指标由确定性规则推断:有工具报错或失败记录 → 判失败;无任何失败信号 → 视为成功。零模型成本但偏乐观,须结合评测覆盖一起判读。"},"quality-eval-coverage":{name:"评测覆盖",tag:"eval",body:"窗口内有模型评测分(judge 结果分或轨迹评测分)的 trace 占比。覆盖越低,分数越依赖确定性推断;可通过采样回填提升覆盖。",formula:"评测覆盖 = 已评测 trace 数 ÷ 窗口内 trace 总数"},"quality-pass-rate":{name:"达标率",tag:"metric",body:'窗口内"无失败信号"的 trace 占比(确定性口径:无工具报错、无失败记录、judge 未判错)。',formula:"达标率 = 成功 trace 数 ÷ trace 总数"},"quality-impact":{name:"影响度",tag:"metric",body:'统一问题汇总的排序键,回答"先修哪个":频次越高、越严重、影响面越聚焦的问题排越前。',formula:"影响度 = 频次 × 严重度权重 ÷ 受影响维度数"},"quality-pareto":{name:"帕累托累计",tag:"metric",body:'问题按频次降序排列后的累计占比,用于判断"修前几类能消掉多大比例的报错"。通常头部少数几类覆盖大多数报错次数。'},"quality-skill-drag":{name:"Skill 拖累榜",tag:"skill",body:'按 Skill 聚合窗口内未解决的 SkillIssue,回答"哪个 skill 在拖累这个 Agent"。点「去优化」直达 Skills 优化工作台,修复后自动销账。',formula:"拖累分 = Σ(未解决问题的严重度权重);受影响 = 调用该 skill 的 trace 占比"},"quality-expected-gain":{name:"预期收益(估)",tag:"metric",body:"修复该问题后达标率提升的保守估算:按关联 trace 占窗口 trace 的比例推算,封顶于剩余提升空间。仅供排序参考,非承诺值。"},"quality-attribution":{name:"归因标签",tag:"fault",body:"问题该派给谁修:\nagent逻辑:提示词 / Skill / 编排问题\n模型能力:理解偏差、幻觉\n工具&infra:超时、限流、环境故障\n外部输入:用户输入或上游数据问题\n当前由确定性规则、评测信号与诊断结论推断。"},"quality-dim-result":{name:"结果维(做对了吗)",tag:"metric",body:"完成度与安全两个指标的均值。\n完成度:有 judge 评测分用评测分;没有则确定性推断——有工具报错/失败记录判 0,无失败信号判 100\n安全:失败记录命中注入/越权/PII 即判 0,且综合分硬降级(0 容忍)",formula:"结果 = (完成度均值 + 安全均值) ÷ 2\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-process":{name:"过程维(路径对不对)",tag:"metric",body:'有效子指标的均值,识别"蒙对"(结果好/过程差)与"白忙"(过程好/结果差)。\n工具正确性:1 − 工具错误次数 ÷ 调用次数(恒可算)\n计划效率 / 约束遵循 / 工具归因:依赖轨迹评测,缺数据记 N/A 不入分母\n覆盖率低 = 只测了工具正确性一个角度,分数偏"薄"',formula:"过程 = mean(非 N/A 子指标)\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-cost":{name:"成本维(划不划算)",tag:"metric",body:'每条 trace 的"预算余量分"求均值:取 时延/Token/步数 三者中最紧张的占用率,剩余空间即得分。预算上限为可配置参数(默认 120 秒 / 20 万 token / 60 步,待标定)。\n注意:均值会掩盖失控长尾,须结合趋势里的 p95 一起看。',formula:"单条成本分 = (1 − max(时延/上限, token/上限, 步数/上限)) × 100\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-error":{name:"错误维(在哪儿崩)",tag:"metric",body:'无错 trace 的占比(卡片大数字显示的是报错次数,状态按错误分判定)。\n错误事件来自重解析执行步骤:工具步看返回内容,LLM 步只看结构化元信息——模型"谈论失败"不算"步骤失败"。',formula:"错误分 = (1 − 出错 trace 数 ÷ trace 总数) × 100\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"model-registry":{name:"模型注册",tag:"tool",body:"录入外部模型(如 DeepSeek、OpenAI 等)的密钥与 endpoint,供 Agent / 评估器调用。"},"install-guide":{name:"安装指导",tag:"tool",body:"现有 Agent 接入本平台的 SDK 与配置文档入口。"}};function a(e){return t[e]}e.s(["getTermById",()=>a])},797324,e=>{"use strict";var t=e.i(843476),a=e.i(810818),r=e.i(186336),n=e.i(975157);let l={metric:{label:"指标",cls:"bg-background-secondary text-foreground-muted"},trace:{label:"链路",cls:"bg-background-secondary text-foreground-muted"},tool:{label:"工具",cls:"bg-background-secondary text-foreground-muted"},skill:{label:"Skill",cls:"bg-[var(--tag-purple-bg)] text-[var(--tag-purple-fg)]"},fault:{label:"故障",cls:"bg-error-subtle text-error border border-error-border"},eval:{label:"评测",cls:"bg-success-subtle text-success border border-success-border"}};function o({term:e,tag:o,body:i,formula:s,related:d,children:c,align:u="start",side:m="bottom",badgeTone:g="muted",className:p}){let y=o?l[o]:null;return(0,t.jsx)(r.Provider,{delayDuration:150,skipDelayDuration:50,children:(0,t.jsxs)(r.Root,{children:[(0,t.jsx)(r.Trigger,{asChild:!0,children:(0,t.jsxs)("span",{className:(0,n.cn)("inline-flex items-center gap-1 cursor-help select-none align-baseline","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",p),tabIndex:0,"aria-label":`${e} 术语解释`,children:[c??(0,t.jsx)("span",{children:e}),(0,t.jsx)(a.Info,{className:(0,n.cn)("size-3 shrink-0 opacity-70","primary"===g?"text-primary":"text-foreground-muted"),"aria-hidden":!0})]})}),(0,t.jsx)(r.Portal,{children:(0,t.jsxs)(r.Content,{align:u,side:m,sideOffset:6,collisionPadding:12,className:(0,n.cn)("z-50 w-[260px] space-y-3 rounded-md border border-card-border bg-card p-4 text-card-foreground shadow-sm outline-none","data-[state=delayed-open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2","data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2"),children:[(0,t.jsxs)("header",{className:"flex items-center justify-between gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:e}),y&&(0,t.jsx)("span",{className:(0,n.cn)("inline-flex items-center px-1.5 py-0.5 rounded-sm text-[10px] leading-none",y.cls),children:y.label})]}),(0,t.jsx)("div",{className:"text-xs leading-[18px] text-foreground-secondary whitespace-pre-line",children:i}),s&&(0,t.jsx)("div",{className:"border-t border-card-border pt-2 font-mono text-[11px] leading-4 tabular-nums text-foreground-muted",children:s}),d&&d.length>0&&(0,t.jsx)("footer",{className:"border-t border-card-border pt-2 flex flex-wrap gap-1.5",children:d.map(e=>(0,t.jsx)("button",{type:"button",onClick:e.onClick,className:"text-[11px] text-primary hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",children:e.name},e.id))})]})})]})})}e.s(["TermPopover",()=>o])},460435,e=>{"use strict";var t=e.i(843476),a=e.i(565804),r=e.i(797324);function n({id:e,render:n="default",label:l,align:o,side:i,badgeTone:s,className:d}){let c=(0,a.getTermById)(e);if(!c)return(0,t.jsx)("span",{className:d,children:l??e});let u=l??c.name;return(0,t.jsx)(r.TermPopover,{term:c.name,tag:c.tag,body:c.body,formula:c.formula,align:o,side:i,badgeTone:s,className:d,children:"compact"===n?(0,t.jsx)(t.Fragment,{}):(0,t.jsx)("span",{children:u})})}e.s(["Term",()=>n])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,218469,456420,248105,e=>{"use strict";var t=e.i(271645);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,a)=>a?a.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,t.createContext)({}),o=(0,t.forwardRef)(({color:e,size:r,strokeWidth:o,absoluteStrokeWidth:i,className:s="",children:d,iconNode:c,...u},m)=>{let{size:g=24,strokeWidth:p=2,absoluteStrokeWidth:y=!1,color:f="currentColor",className:b=""}=(0,t.useContext)(l)??{},v=i??y?24*Number(o??p)/Number(r??g):o??p;return(0,t.createElement)("svg",{ref:m,...n,width:r??g??n.width,height:r??g??n.height,stroke:e??f,strokeWidth:v,className:a("lucide",b,s),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...c.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(d)?d:[d]])}),i=(e,n)=>{let l=(0,t.forwardRef)(({className:l,...i},s)=>(0,t.createElement)(o,{ref:s,iconNode:n,className:a(`lucide-${r(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=r(e),l};e.s(["default",()=>i],456420);let s=i("panel-left-close",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m16 15-3-3 3-3",key:"14y99z"}]]);e.s(["PanelLeftClose",()=>s],218469);let d=i("panel-left-open",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}],["path",{d:"m14 9 3 3-3 3",key:"8010ee"}]]);e.s(["PanelLeftOpen",()=>d],248105)},540568,e=>{"use strict";var t=e.i(843476),a=e.i(218469),r=e.i(248105),n=e.i(760045);function l({title:e,actions:l}){let{isCollapsed:o,toggleSidebar:i}=(0,n.useSidebar)(),s=o?r.PanelLeftOpen:a.PanelLeftClose;return(0,t.jsxs)("header",{className:"sticky top-0 z-10 flex h-14 items-center gap-3 border-b border-border bg-card px-6",style:{flexShrink:0},children:[(0,t.jsx)("button",{type:"button",onClick:i,"aria-label":o?"展开侧栏":"折叠侧栏",className:"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-foreground-secondary transition-colors hover:bg-background-secondary hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:(0,t.jsx)(s,{className:"size-4"})}),(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 text-sm font-medium text-foreground",children:"string"==typeof e?(0,t.jsx)("span",{className:"truncate",children:e}):e}),l&&(0,t.jsx)("div",{className:"flex items-center gap-2",children:l})]})}e.s(["AppTopBar",()=>l])},186336,e=>{"use strict";let t;var a=e.i(271645),r=e.i(981140),n=e.i(820783),l=e.i(843476),o=e.i(726330),i=e.i(610772),s=e.i(853660),d=e.i(774606),c=e.i(296626);e.i(174080);var u=Symbol("radix.slottable");function m(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===u}var g=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var r,o;let i,s,d,c=(o=r=`Primitive.${t}`,(i=a.forwardRef((e,t)=>{let{children:r,...l}=e;if(a.isValidElement(r)){var o;let e,i,s=(o=r,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),d=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(l,r.props);return r.type!==a.Fragment&&(d.ref=t?(0,n.composeRefs)(t,s):s),a.cloneElement(r,d)}return a.Children.count(r)>1?a.Children.only(null):null})).displayName=`${o}.SlotClone`,s=i,(d=a.forwardRef((e,t)=>{let{children:r,...n}=e,o=a.Children.toArray(r),i=o.find(m);if(i){let e=i.props.children,r=o.map(t=>t!==i?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,l.jsx)(s,{...n,ref:t,children:a.isValidElement(e)?a.cloneElement(e,void 0,r):null})}return(0,l.jsx)(s,{...n,ref:t,children:r})})).displayName=`${r}.Slot`,d),u=a.forwardRef((e,a)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(r?c:t,{...n,ref:a})});return u.displayName=`Primitive.${t}`,{...e,[t]:u}},{}),p=e.i(369340),y=Symbol("radix.slottable");function f(e){return a.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===y}var b=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{var r,o;let i,s,d,c=(o=r=`Primitive.${t}`,(i=a.forwardRef((e,t)=>{let{children:r,...l}=e;if(a.isValidElement(r)){var o;let e,i,s=(o=r,(i=(e=Object.getOwnPropertyDescriptor(o.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.ref:(i=(e=Object.getOwnPropertyDescriptor(o,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?o.props.ref:o.props.ref||o.ref),d=function(e,t){let a={...t};for(let r in t){let n=e[r],l=t[r];/^on[A-Z]/.test(r)?n&&l?a[r]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(a[r]=n):"style"===r?a[r]={...n,...l}:"className"===r&&(a[r]=[n,l].filter(Boolean).join(" "))}return{...e,...a}}(l,r.props);return r.type!==a.Fragment&&(d.ref=t?(0,n.composeRefs)(t,s):s),a.cloneElement(r,d)}return a.Children.count(r)>1?a.Children.only(null):null})).displayName=`${o}.SlotClone`,s=i,(d=a.forwardRef((e,t)=>{let{children:r,...n}=e,o=a.Children.toArray(r),i=o.find(f);if(i){let e=i.props.children,r=o.map(t=>t!==i?t:a.Children.count(e)>1?a.Children.only(null):a.isValidElement(e)?e.props.children:null);return(0,l.jsx)(s,{...n,ref:t,children:a.isValidElement(e)?a.cloneElement(e,void 0,r):null})}return(0,l.jsx)(s,{...n,ref:t,children:r})})).displayName=`${r}.Slot`,d),u=a.forwardRef((e,a)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(r?c:t,{...n,ref:a})});return u.displayName=`Primitive.${t}`,{...e,[t]:u}},{}),v=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),h=a.forwardRef((e,t)=>(0,l.jsx)(b.span,{...e,ref:t,style:{...v,...e.style}}));h.displayName="VisuallyHidden";var[x,k]=function(e,t=[]){let r=[],n=()=>{let t=r.map(e=>a.createContext(e));return function(r){let n=r?.[e]||t;return a.useMemo(()=>({[`__scope${e}`]:{...r,[e]:n}}),[r,n])}};return n.scopeName=e,[function(t,n){let o=a.createContext(n),i=r.length;r=[...r,n];let s=t=>{let{scope:r,children:n,...s}=t,d=r?.[e]?.[i]||o,c=a.useMemo(()=>s,Object.values(s));return(0,l.jsx)(d.Provider,{value:c,children:n})};return s.displayName=t+"Provider",[s,function(r,l){let s=l?.[e]?.[i]||o,d=a.useContext(s);if(d)return d;if(void 0!==n)return n;throw Error(`\`${r}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let r=()=>{let r=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=r.reduce((t,{useScope:a,scopeName:r})=>{let n=a(e)[`__scope${r}`];return{...t,...n}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:n}),[n])}};return r.scopeName=t.scopeName,r}(n,...t)]}("Tooltip",[s.createPopperScope]),A=(0,s.createPopperScope)(),w="TooltipProvider",S="tooltip.open",[T,C]=x(w),j=e=>{let{__scopeTooltip:t,delayDuration:r=700,skipDelayDuration:n=300,disableHoverableContent:o=!1,children:i}=e,s=a.useRef(!0),d=a.useRef(!1),c=a.useRef(0);return a.useEffect(()=>{let e=c.current;return()=>window.clearTimeout(e)},[]),(0,l.jsx)(T,{scope:t,isOpenDelayedRef:s,delayDuration:r,onOpen:a.useCallback(()=>{window.clearTimeout(c.current),s.current=!1},[]),onClose:a.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.current=!0,n)},[n]),isPointerInTransitRef:d,onPointerInTransitChange:a.useCallback(e=>{d.current=e},[]),disableHoverableContent:o,children:i})};j.displayName=w;var L="Tooltip",[P,N]=x(L),E=e=>{let{__scopeTooltip:t,children:r,open:n,defaultOpen:o,onOpenChange:d,disableHoverableContent:c,delayDuration:u}=e,m=C(L,e.__scopeTooltip),g=A(t),[y,f]=a.useState(null),b=(0,i.useId)(),v=a.useRef(0),h=c??m.disableHoverableContent,x=u??m.delayDuration,k=a.useRef(!1),[w,T]=(0,p.useControllableState)({prop:n,defaultProp:o??!1,onChange:e=>{e?(m.onOpen(),document.dispatchEvent(new CustomEvent(S))):m.onClose(),d?.(e)},caller:L}),j=a.useMemo(()=>w?k.current?"delayed-open":"instant-open":"closed",[w]),N=a.useCallback(()=>{window.clearTimeout(v.current),v.current=0,k.current=!1,T(!0)},[T]),E=a.useCallback(()=>{window.clearTimeout(v.current),v.current=0,T(!1)},[T]),R=a.useCallback(()=>{window.clearTimeout(v.current),v.current=window.setTimeout(()=>{k.current=!0,T(!0),v.current=0},x)},[x,T]);return a.useEffect(()=>()=>{v.current&&(window.clearTimeout(v.current),v.current=0)},[]),(0,l.jsx)(s.Root,{...g,children:(0,l.jsx)(P,{scope:t,contentId:b,open:w,stateAttribute:j,trigger:y,onTriggerChange:f,onTriggerEnter:a.useCallback(()=>{m.isOpenDelayedRef.current?R():N()},[m.isOpenDelayedRef,R,N]),onTriggerLeave:a.useCallback(()=>{h?E():(window.clearTimeout(v.current),v.current=0)},[E,h]),onOpen:N,onClose:E,disableHoverableContent:h,children:r})})};E.displayName=L;var R="TooltipTrigger",I=a.forwardRef((e,t)=>{let{__scopeTooltip:o,...i}=e,d=N(R,o),c=C(R,o),u=A(o),m=a.useRef(null),p=(0,n.useComposedRefs)(t,m,d.onTriggerChange),y=a.useRef(!1),f=a.useRef(!1),b=a.useCallback(()=>y.current=!1,[]);return a.useEffect(()=>()=>document.removeEventListener("pointerup",b),[b]),(0,l.jsx)(s.Anchor,{asChild:!0,...u,children:(0,l.jsx)(g.button,{"aria-describedby":d.open?d.contentId:void 0,"data-state":d.stateAttribute,...i,ref:p,onPointerMove:(0,r.composeEventHandlers)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(f.current||c.isPointerInTransitRef.current||(d.onTriggerEnter(),f.current=!0))}),onPointerLeave:(0,r.composeEventHandlers)(e.onPointerLeave,()=>{d.onTriggerLeave(),f.current=!1}),onPointerDown:(0,r.composeEventHandlers)(e.onPointerDown,()=>{d.open&&d.onClose(),y.current=!0,document.addEventListener("pointerup",b,{once:!0})}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>{y.current||d.onOpen()}),onBlur:(0,r.composeEventHandlers)(e.onBlur,d.onClose),onClick:(0,r.composeEventHandlers)(e.onClick,d.onClose)})})});I.displayName=R;var _="TooltipPortal",[O,M]=x(_,{forceMount:void 0}),D=e=>{let{__scopeTooltip:t,forceMount:a,children:r,container:n}=e,o=N(_,t);return(0,l.jsx)(O,{scope:t,forceMount:a,children:(0,l.jsx)(c.Presence,{present:a||o.open,children:(0,l.jsx)(d.Portal,{asChild:!0,container:n,children:r})})})};D.displayName=_;var q="TooltipContent",$=a.forwardRef((e,t)=>{let a=M(q,e.__scopeTooltip),{forceMount:r=a.forceMount,side:n="top",...o}=e,i=N(q,e.__scopeTooltip);return(0,l.jsx)(c.Presence,{present:r||i.open,children:i.disableHoverableContent?(0,l.jsx)(H,{side:n,...o,ref:t}):(0,l.jsx)(K,{side:n,...o,ref:t})})}),K=a.forwardRef((e,t)=>{let r=N(q,e.__scopeTooltip),o=C(q,e.__scopeTooltip),i=a.useRef(null),s=(0,n.useComposedRefs)(t,i),[d,c]=a.useState(null),{trigger:u,onClose:m}=r,g=i.current,{onPointerInTransitChange:p}=o,y=a.useCallback(()=>{c(null),p(!1)},[p]),f=a.useCallback((e,t)=>{let a,r=e.currentTarget,n={x:e.clientX,y:e.clientY},l=function(e,t){let a=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),n=Math.abs(t.right-e.x),l=Math.abs(t.left-e.x);switch(Math.min(a,r,n,l)){case l:return"left";case n:return"right";case a:return"top";case r:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());c(((a=[...function(e,t,a=5){let r=[];switch(t){case"top":r.push({x:e.x-a,y:e.y+a},{x:e.x+a,y:e.y+a});break;case"bottom":r.push({x:e.x-a,y:e.y-a},{x:e.x+a,y:e.y-a});break;case"left":r.push({x:e.x+a,y:e.y-a},{x:e.x+a,y:e.y+a});break;case"right":r.push({x:e.x-a,y:e.y-a},{x:e.x-a,y:e.y+a})}return r}(n,l),...function(e){let{top:t,right:a,bottom:r,left:n}=e;return[{x:n,y:t},{x:a,y:t},{x:a,y:r},{x:n,y:r}]}(t.getBoundingClientRect())].slice()).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let a=0;a<e.length;a++){let r=e[a];for(;t.length>=2;){let e=t[t.length-1],a=t[t.length-2];if((e.x-a.x)*(r.y-a.y)>=(e.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();let a=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;a.length>=2;){let e=a[a.length-1],t=a[a.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))a.pop();else break}a.push(r)}return(a.pop(),1===t.length&&1===a.length&&t[0].x===a[0].x&&t[0].y===a[0].y)?t:t.concat(a)}(a))),p(!0)},[p]);return a.useEffect(()=>()=>y(),[y]),a.useEffect(()=>{if(u&&g){let e=e=>f(e,g),t=e=>f(e,u);return u.addEventListener("pointerleave",e),g.addEventListener("pointerleave",t),()=>{u.removeEventListener("pointerleave",e),g.removeEventListener("pointerleave",t)}}},[u,g,f,y]),a.useEffect(()=>{if(d){let e=e=>{let t=e.target,a={x:e.clientX,y:e.clientY},r=u?.contains(t)||g?.contains(t),n=!function(e,t){let{x:a,y:r}=e,n=!1;for(let e=0,l=t.length-1;e<t.length;l=e++){let o=t[e],i=t[l],s=o.x,d=o.y,c=i.x,u=i.y;d>r!=u>r&&a<(c-s)*(r-d)/(u-d)+s&&(n=!n)}return n}(a,d);r?y():n&&(y(),m())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[u,g,d,m,y]),(0,l.jsx)(H,{...e,ref:s})}),[z,B]=x(L,{isInside:!1}),W=((t=({children:e})=>(0,l.jsx)(l.Fragment,{children:e})).displayName="TooltipContent.Slottable",t.__radixId=u,t),H=a.forwardRef((e,t)=>{let{__scopeTooltip:r,children:n,"aria-label":i,onEscapeKeyDown:d,onPointerDownOutside:c,...u}=e,m=N(q,r),g=A(r),{onClose:p}=m;return a.useEffect(()=>(document.addEventListener(S,p),()=>document.removeEventListener(S,p)),[p]),a.useEffect(()=>{if(m.trigger){let e=e=>{let t=e.target;t?.contains(m.trigger)&&p()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[m.trigger,p]),(0,l.jsx)(o.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:p,children:(0,l.jsxs)(s.Content,{"data-state":m.stateAttribute,...g,...u,ref:t,style:{...u.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,l.jsx)(W,{children:n}),(0,l.jsx)(z,{scope:r,isInside:!0,children:(0,l.jsx)(h,{id:m.contentId,role:"tooltip",children:i||n})})]})})});$.displayName=q;var U="TooltipArrow",V=a.forwardRef((e,t)=>{let{__scopeTooltip:a,...r}=e,n=A(a);return B(U,a).isInside?null:(0,l.jsx)(s.Arrow,{...n,...r,ref:t})});V.displayName=U,e.s(["Arrow",()=>V,"Content",()=>$,"Portal",()=>D,"Provider",()=>j,"Root",()=>E,"Trigger",()=>I],186336)},810818,e=>{"use strict";let t=(0,e.i(456420).default)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]]);e.s(["Info",()=>t],810818)},565804,e=>{"use strict";let t={agent:{name:"Agent",tag:"metric",body:"接入到本平台的智能体实例,对应一个真实运行的对外服务进程。"},"user-agent":{name:"用户 Agent",tag:"metric",body:"通过客户端接入本平台的 Agent 实例,由用户/团队自行注册和维护。"},"system-agent":{name:"系统 Agent",tag:"metric",body:"平台内置的 Agent,用于支撑平台自身功能(如智能诊断)。"},"agent-ownership":{name:"Agent 归属",tag:"metric",body:"标识 Agent 的来源,取值为:用户 Agent、系统 Agent。"},"main-agent":{name:"主 Agent",tag:"trace",body:"直接接收用户请求的入口 Agent,执行过程中可派生子 Agent。"},platform:{name:"平台",tag:"metric",body:"Agent 运行所基于的底层框架/Runtime(如 opencode)。一个 Agent 只能属于一个平台。"},"p95-latency":{name:"P95 时延",tag:"metric",body:"所有请求按耗时排序后第 95 百分位的耗时,反映长尾体验。",formula:"sort(durations)[ceil(0.95 × n)]"},"agent-status":{name:"Agent 状态",tag:"metric",body:"运行中 / 异常 / 空闲 三态,由心跳与最近一次执行结果共同判定。"},"connected-agent":{name:"接入 Agent",tag:"metric",body:"已通过 SDK 或配置完成对接、可向平台上报 Trace 的 Agent。"},"agent-type":{name:"Agent 类型",tag:"metric",body:"区分 主 Agent(入口)与 子 Agent(由主 Agent 派生执行子任务)。"},custom:{name:"Custom",tag:"metric",body:'Agent 的来源类型,表示自定义实现,与"模板"或"预置"相对。'},"trace-link":{name:"链路跟踪",tag:"trace",body:"跳转到该 Agent 最近若干次执行的全链路 Trace 视图。"},"smart-diagnosis":{name:"智能诊断",tag:"fault",body:"对该 Agent 最近一次失败/异常调用进行 AI 归因分析。"},trace:{name:"Trace",tag:"trace",body:"一次完整任务执行从入口到结束的全部调用记录,由若干 Span 组成。"},span:{name:"Span",tag:"trace",body:"Trace 中的单个执行片段,可代表一次 LLM 调用、工具调用或子 Agent 派生。"},"tool-error-rate":{name:"工具错误率",tag:"metric",body:"工具调用失败次数占总工具调用次数的比例。",formula:"failed_tool_calls / total_tool_calls"},"main-agent-only":{name:"仅主 Agent",tag:"trace",body:"筛选项,只展示由主 Agent 发起的根 Trace,过滤子 Agent 派生记录。"},"multi-agent":{name:"Multi-Agent",tag:"trace",body:"标签,表示该 Trace 中存在多个 Agent 协同(含主-子派生)。"},"task-spawns":{name:"TASK SPAWNS",tag:"trace",body:"一次 Trace 中派生子任务/子 Agent 的次数。"},"tool-calls":{name:"TOOL CALLS",tag:"tool",body:"一次 Trace 中工具调用的次数。"},"skill-calls":{name:"SKILL CALLS",tag:"skill",body:"一次 Trace 中命中并调用 Skill 的次数。"},"llm-turns":{name:"LLM TURNS",tag:"trace",body:"一次 Trace 中与底层模型的对话轮次。"},tokens:{name:"Tokens",tag:"metric",body:"模型消耗的 Token 总量,分 INPUT / OUTPUT / CACHE READ。"},"cache-read":{name:"CACHE READ",tag:"metric",body:"命中提示词缓存而被复用的 Token 数,计费远低于普通 Input。"},depth:{name:"depth",tag:"trace",body:"当前节点在 Trace 树中的层级深度,0 为根节点。"},"fault-diagnosis":{name:"故障诊断",tag:"fault",body:"对当前 Trace 触发 AI 归因分析,跳转到智能诊断页面。"},"execution-session":{name:"Execution Session",tag:"trace",body:"一次完整的执行会话,对应一次 Trace。"},"insight-ai":{name:"Insight AI",tag:"fault",body:"平台内置的诊断 Agent(FAULT-DIAGNOSIS-AGENT),读取 Trace 上下文并产出归因结论。"},"fault-item":{name:"故障条目",tag:"fault",body:"诊断 Agent 在一次执行中识别出的独立问题,可并存多个。"},"fault-raw-error":{name:"原始错误类故障",tag:"fault",body:"系统/工具直接抛出的硬错误,如 Timeout、5xx、权限拒绝。"},"fault-effect-divergence":{name:"效果偏差类故障",tag:"fault",body:"未抛错但产出与预期不符的软故障,如答非所问、关键信息遗漏。"},"fault-mark":{name:"故障标记",tag:"fault",body:"故障的机读类型,如 TIMEOUT、RATE_LIMIT、OUTPUT_MISMATCH。"},"chain-status":{name:"链路状态",tag:"trace",body:"当前 Trace 的最终状态,如 CHAIN_ERROR · L13 表示第 13 个节点处出错。"},"node-summary":{name:"节点摘要",tag:"trace",body:'故障所在 Span 的简短描述(如"LLM Provider")。'},"match-evidence":{name:"匹配依据",tag:"fault",body:"诊断 Agent 得出结论时引用的证据来源(节点 ID、字段、上下文)。"},"cite-node":{name:"引用节点",tag:"trace",body:"追问 Agent 时可通过 @ 引用具体 Span,让诊断聚焦在该节点上。"},dataset:{name:"评测集",tag:"eval",body:"一组带标准答案的测试样本,用于离线评估 Agent 或 Skill 的质量。"},"dataset-input":{name:"input",tag:"eval",body:"评测样本的输入字段,对应用户提问或上游入参。"},"reference-output":{name:"reference_output",tag:"eval",body:"评测样本的标准答案(Ground Truth),用于和 Agent 实际输出做对照。"},"pending-sync":{name:"待同步",tag:"eval",body:"数据集已修改但尚未推送到执行端。"},"latest-pass-rate":{name:"最新通过率",tag:"eval",body:"该评测集最近一次执行时的通过样本占比。"},evaluator:{name:"评估器",tag:"eval",body:"给实际输出打分的判定器,可以是规则、脚本或 LLM。"},"evaluator-custom":{name:"自建评估器",tag:"eval",body:"用户自定义的评估器,需自行配置评分逻辑。"},"evaluator-preset":{name:"预置评估器",tag:"eval",body:'平台内置、开箱即用的评估器(如"Agent 任务完成度")。'},"llm-judge":{name:"LLM Judge",tag:"eval",body:"由大模型担任的评估器,按设定的标尺对输出评分。"},"score-range":{name:"评分 0–1",tag:"eval",body:"单项打分取值范围,1 为满分,0 为完全未达预期。"},"eval-dimension":{name:"评估维度标签",tag:"eval",body:"评估器关注的维度,如 结果 / 任务完成 / 内容质量 / Agent 通用评测,一个评估器可同时打多个维度。"},"eval-batch":{name:"评测批次",tag:"eval",body:"一次完整评测任务的执行实例,包含若干 Trace 样本。"},"eval-agent":{name:"执行 Agent",tag:"eval",body:"本次评测中被测试的 Agent。"},"auto-observe":{name:"自动观测",tag:"eval",body:"开启后该批次评测结果将纳入 Skill 综合健康分。"},"result-eval":{name:"结果评测",tag:"eval",body:"仅对最终输出与 Ground Truth 做对比的评测维度。"},"trajectory-eval":{name:"轨迹评测",tag:"eval",body:"对中间步骤(如调用顺序、是否调用某工具)做评测的维度。"},"custom-eval":{name:"自定义评测",tag:"eval",body:"用户自定义评估器对该次执行的额外评分通道。"},"eval-conclusion":{name:"综合评测结论",tag:"eval",body:"多维度评分加权后的最终结论与建议。"},skill:{name:"Skill",tag:"skill",body:"可被 Agent 加载并按需调用的能力包,由一份 SKILL.md 主文档加若干脚本/参考资料组成。"},"skill-activated-unused":{name:"已激活待引用",tag:"skill",body:'Skill 已激活但暂无 Agent 引用,处于"上架但闲置"状态。'},"skill-progress":{name:"流程进度",tag:"skill",body:'Skill 在"生成 → 分析 → 优化"三段生命周期中的位置(如 2/3 表示已完成前两步)。'},"skill-to-optimize":{name:"待优化",tag:"skill",body:'已分析出问题、等待进入"优化"环节的 Skill 数。'},"skill-version":{name:"版本",tag:"skill",body:"Skill 的不可变快照,当前激活的版本会被 Agent 实际加载。"},"skill-lifecycle":{name:"SKILL 生命周期",tag:"skill",body:"三阶段流水:①生成(产出 SKILL.md 与脚本)→ ②分析(评估质量)→ ③优化(按分析结果迭代)。"},"expected-chain":{name:"预期执行链路",tag:"skill",body:'Skill 被调用时按 SKILL.md 解析出的步骤序列,用于"声明 vs 实际"的对照。'},"skill-generation":{name:"Skill 生成",tag:"skill",body:"通过对话与模型协作,自动产出 SKILL.md 与配套 scripts/references 目录。"},"skill-md":{name:"主文档",tag:"skill",body:"SKILL.md,Skill 的入口说明书,包含触发条件、核心指令、参数约束等,模型据此决定何时及如何调用。"},"skill-scripts":{name:"scripts/",tag:"skill",body:"Skill 附带的可执行脚本目录,运行时由 Agent 调用。"},"skill-references":{name:"references/",tag:"skill",body:"Skill 的参考资料目录,作为模型上下文,本身不可执行。"},"scenario-template":{name:"场景模板",tag:"skill",body:"生成时的目标场景类型,影响 SKILL.md 的结构与措辞。"},"risk-zones":{name:"安全区 / 交互区 / 禁止区",tag:"skill",body:"Skill 内部约定的操作风险分层:可自动执行 / 需用户确认 / 绝不执行。"},"web-search":{name:"联网搜索",tag:"tool",body:"生成过程中是否允许模型实时检索外部资料。"},"health-score":{name:"综合健康分 · 置信加权",tag:"skill",body:"Skill 当前总分。各维度按权重加权,未跑完的维度不计入分母;用例分析维度只读取当前关联评测任务的结果。",formula:"Σ(score_i × weight_i) / Σ(weight_i, 已完成)"},"eval-coverage":{name:"评估覆盖度",tag:"eval",body:"4 个评估维度中已完成评测的占比(如 0/4 维 · 0%)。"},"traj-completeness":{name:"完整性",tag:"eval",body:'评测 Agent 是否覆盖了该 Skill 要求的关键步骤、顺序是否正确——即"该做的有没有做、有没有漏步/乱序"。trace 模式下取 analyze-match 确定性对齐的覆盖率。',formula:"覆盖率(命中关键步骤 / 应有关键步骤) − 顺序惩罚 · 轨迹分权重 45%"},"traj-tool-choice":{name:"工具选择",tag:"eval",body:'评测每一步是否选对工具 / Skill、参数与调用时机是否合理——即"工具用得对不对、巧不巧"。',formula:"逐步打分均值(选对 1.0 / 时机不当 0.7 / 参数错 0.5 / 选错 0)· 轨迹分权重 35%"},"traj-redundancy":{name:"冗余",tag:"eval",body:'评测是否存在重复调用、绕路、死循环式的多余操作——即"有没有废动作、执行效率高不高"。由规则统计连续重复 / 高频调用得出,不靠 LLM 数循环。',formula:"1 − (连续重复段 × 0.2 + 高频调用 × 0.1) · 轨迹分权重 20%"},"one-line-diagnosis":{name:"一句话诊断",tag:"fault",body:"系统对当前评测状态总结出的结论与建议。"},"basic-diagnosis":{name:"基础诊断",tag:"fault",body:"仅依据当前已有数据的浅层诊断,覆盖度低时也能给出。"},"smart-run":{name:"SMART RUN",tag:"eval",body:"一键跑齐缺失维度的批量执行入口,自动调度未跑的评测项。"},"pending-dimensions":{name:"待跑维度",tag:"eval",body:'状态为"未配置"或"待分析"、尚未产出分数的评估维度。'},"four-dim-eval":{name:"4 维评估能力",tag:"eval",body:"当前对 Skill 的四个评估视角:A/B 测试、用例分析、触发分析、静态合规。"},"dim-status":{name:"待分析 / 待扫描 / 未配置",tag:"eval",body:"维度状态:数据已就绪等待跑分 / 等待静态扫描 / 尚未配置数据集或参数。"},"weight-excluded":{name:"不计入总分",tag:"eval",body:"某维度未完成时,其权重从分母中剔除,标注中给出被剔除的权重大小(如 -40%)。"},"ab-test":{name:"A/B 测试",tag:"eval",body:'同一份输入分别在"开启 Skill"与"不开启 Skill"两个 Agent 版本下执行,对比效果差异。'},"control-version":{name:"对照版本(A)",tag:"eval",body:"不挂载该 Skill 的基线 Agent。"},"experiment-version":{name:"实验版本(B)",tag:"eval",body:"挂载了该 Skill 的 Agent。"},"repeat-rounds":{name:"重复轮次",tag:"eval",body:"同一样本重复执行的次数,用于计算方差、消除随机性。"},"auto-eval":{name:"自动评测",tag:"eval",body:'跑完后自动调用评估器返回准确率与"Skill 是否生效"的判断。'},"log-skill-trigger":{name:"记录 Skill 触发详情",tag:"skill",body:"保留每条样本下 Skill 的命中/未命中明细,便于事后定位。"},"eval-source":{name:"从数据集发起 / 从执行链路发起",tag:"eval",body:"输入来源:复用既有评测集,或直接选取线上 Trace 作为输入。"},"case-analysis":{name:"用例分析",tag:"eval",body:'基于已评测 Trace 的"结果 + 轨迹"双维度回看,定位 Skill 在真实流量中的得失。'},"result-analysis":{name:"结果分析",tag:"eval",body:"仅看最终答案是否达成用户目标。"},"trajectory-analysis":{name:"轨迹分析",tag:"eval",body:"看中间过程是否按 SKILL.md 期望的步骤进行。"},"case-set":{name:"用例集",tag:"eval",body:'当前 Skill 版本关联的 Trace 集合,可勾选送入"触发分析"。'},"high-divergence":{name:"高偏离",tag:"fault",body:"实际输出与参考答案差异较大的样本筛选标签。"},"trigger-analysis":{name:"触发分析",tag:"skill",body:"评估 Skill 路由是否准确——哪些 query 应命中本 Skill、哪些不应。"},"trigger-eval-set":{name:"触发评价集",tag:"eval",body:'专用于触发分析的数据集,每条样本带有"是否应触发"的标注。'},"trigger-hit-rate":{name:"触发集命中率",tag:"metric",body:'"应触发且确实触发"的样本占比,越高越好。',formula:"should_trigger ∩ did_trigger / should_trigger"},"false-trigger-rate":{name:"误触发率",tag:"fault",body:'"不应触发却触发"的样本占比,越低越好。',formula:"¬should_trigger ∩ did_trigger / ¬should_trigger"},"edge-case":{name:"边界用例",tag:"eval",body:"处在触发/不触发边界、最容易判错的样本。"},"ai-draft":{name:"AI 起草",tag:"tool",body:"让模型基于现有 Skill 描述自动生成一份触发评价集草稿。"},"opencode-live":{name:"opencode-live",tag:"metric",body:"当前触发分析所使用的线上路由通道名称。"},"static-compliance":{name:"静态合规分析",tag:"eval",body:"基于规则的 SKILL.md 文本扫描,不需要实际执行 Skill。"},"purpose-fit":{name:"目的适配性",tag:"eval",body:"Skill 是否有清晰的单一目的,便于 LLM 准确识别调用时机。"},"structure-norm":{name:"结构规范性",tag:"eval",body:"SKILL.md 的元数据规范、内容组织和信息密度。"},"instruction-fit":{name:"指令适配性",tag:"eval",body:"指令自由度与任务风险等级、确定性是否匹配。"},"content-consistency":{name:"内容一致性",tag:"eval",body:"术语和表达风格是否前后一致,是否依赖隐含的时效性假设。"},"ops-reliability":{name:"运维可靠性",tag:"eval",body:"安全边界、灾难恢复路径与可观测性。"},"script-quality":{name:"脚本及参考文档质量",tag:"eval",body:"配套脚本与参考资料的独立性、健壮性与自愈能力。"},"skill-optimization":{name:"Skill 优化",tag:"skill",body:"基于分析结果,对 SKILL.md 与配套脚本/参考资料进行版本迭代。"},"current-version":{name:"当前版本",tag:"skill",body:"正在被引用的激活版本,作为优化的基线(如 v0 当前)。"},"quality-monitoring":{name:"质量监控",tag:"metric",body:'以单个 Agent 为对象,对其时间窗内全部 trace 做整体度量:四维评分、趋势、统一问题汇总,并可下钻到单条 trace 诊断。回答"这个 Agent 整体好不好、先修哪个问题"。'},"quality-composite-score":{name:"综合质量分",tag:"metric",body:"把窗口内全部 trace 的四维表现压成的总分(0–100)。按 P0/P1/P2 优先级加权;任一 P0 硬约束命中(如安全违规)时封顶降级标红。状态按绝对阈值判定:≥85 达标 / 70–85 关注 / <70 异常,不与其他 Agent 比排名。",formula:"综合分 = Σ(层均值 × 层权重);权重 P0 0.55 / P1 0.30 / P2 0.15(缺层时重新归一)"},"quality-priority-tiers":{name:"指标优先级 P0/P1/P2",tag:"metric",body:"P0 必达基线:任务完成度、安全、工具正确性、成本\nP1 重要进阶:计划效率、约束遵循、工具归因(依赖轨迹评测,无数据记 N/A)\nP2 增益项:如用户满意度(暂未启用)\nN/A 的层不参与综合分加权。"},"quality-deterministic-baseline":{name:"确定性打底",tag:"eval",body:"没有模型评测分的 trace,其指标由确定性规则推断:有工具报错或失败记录 → 判失败;无任何失败信号 → 视为成功。零模型成本但偏乐观,须结合评测覆盖一起判读。"},"quality-eval-coverage":{name:"评测覆盖",tag:"eval",body:"窗口内有模型评测分(judge 结果分或轨迹评测分)的 trace 占比。覆盖越低,分数越依赖确定性推断;可通过采样回填提升覆盖。",formula:"评测覆盖 = 已评测 trace 数 ÷ 窗口内 trace 总数"},"quality-pass-rate":{name:"达标率",tag:"metric",body:'窗口内"无失败信号"的 trace 占比(确定性口径:无工具报错、无失败记录、judge 未判错)。',formula:"达标率 = 成功 trace 数 ÷ trace 总数"},"quality-impact":{name:"影响度",tag:"metric",body:'统一问题汇总的排序键,回答"先修哪个":频次越高、越严重、影响面越聚焦的问题排越前。',formula:"影响度 = 频次 × 严重度权重 ÷ 受影响维度数"},"quality-pareto":{name:"帕累托累计",tag:"metric",body:'问题按频次降序排列后的累计占比,用于判断"修前几类能消掉多大比例的报错"。通常头部少数几类覆盖大多数报错次数。'},"quality-skill-drag":{name:"Skill 拖累榜",tag:"skill",body:'按 Skill 聚合窗口内未解决的 SkillIssue,回答"哪个 skill 在拖累这个 Agent"。点「去优化」直达 Skills 优化工作台,修复后自动销账。',formula:"拖累分 = Σ(未解决问题的严重度权重);受影响 = 调用该 skill 的 trace 占比"},"quality-expected-gain":{name:"预期收益(估)",tag:"metric",body:"修复该问题后达标率提升的保守估算:按关联 trace 占窗口 trace 的比例推算,封顶于剩余提升空间。仅供排序参考,非承诺值。"},"quality-attribution":{name:"归因标签",tag:"fault",body:"问题该派给谁修:\nagent逻辑:提示词 / Skill / 编排问题\n模型能力:理解偏差、幻觉\n工具&infra:超时、限流、环境故障\n外部输入:用户输入或上游数据问题\n当前由确定性规则、评测信号与诊断结论推断。"},"quality-dim-result":{name:"结果维(做对了吗)",tag:"metric",body:"完成度与安全两个指标的均值。\n完成度:有 judge 评测分用评测分;没有则确定性推断——有工具报错/失败记录判 0,无失败信号判 100\n安全:失败记录命中注入/越权/PII 即判 0,且综合分硬降级(0 容忍)",formula:"结果 = (完成度均值 + 安全均值) ÷ 2\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-process":{name:"过程维(路径对不对)",tag:"metric",body:'有效子指标的均值,识别"蒙对"(结果好/过程差)与"白忙"(过程好/结果差)。\n工具正确性:1 − 工具错误次数 ÷ 调用次数(恒可算)\n计划效率 / 约束遵循 / 工具归因:依赖轨迹评测,缺数据记 N/A 不入分母\n覆盖率低 = 只测了工具正确性一个角度,分数偏"薄"',formula:"过程 = mean(非 N/A 子指标)\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-cost":{name:"成本维(划不划算)",tag:"metric",body:'每条 trace 的"预算余量分"求均值:取 时延/Token/步数 三者中最紧张的占用率,剩余空间即得分。预算上限为可配置参数(默认 120 秒 / 20 万 token / 60 步,待标定)。\n注意:均值会掩盖失控长尾,须结合趋势里的 p95 一起看。',formula:"单条成本分 = (1 − max(时延/上限, token/上限, 步数/上限)) × 100\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"quality-dim-error":{name:"错误维(在哪儿崩)",tag:"metric",body:'无错 trace 的占比(卡片大数字显示的是报错次数,状态按错误分判定)。\n错误事件来自重解析执行步骤:工具步看返回内容,LLM 步只看结构化元信息——模型"谈论失败"不算"步骤失败"。',formula:"错误分 = (1 − 出错 trace 数 ÷ trace 总数) × 100\n基准线:达标 ≥85 · 关注 70–85 · 异常 <70"},"model-registry":{name:"模型注册",tag:"tool",body:"录入外部模型(如 DeepSeek、OpenAI 等)的密钥与 endpoint,供 Agent / 评估器调用。"},"install-guide":{name:"安装指导",tag:"tool",body:"现有 Agent 接入本平台的 SDK 与配置文档入口。"}};function a(e){return t[e]}e.s(["getTermById",()=>a])},797324,e=>{"use strict";var t=e.i(843476),a=e.i(810818),r=e.i(186336),n=e.i(975157);let l={metric:{label:"指标",cls:"bg-background-secondary text-foreground-muted"},trace:{label:"链路",cls:"bg-background-secondary text-foreground-muted"},tool:{label:"工具",cls:"bg-background-secondary text-foreground-muted"},skill:{label:"Skill",cls:"bg-[var(--tag-purple-bg)] text-[var(--tag-purple-fg)]"},fault:{label:"故障",cls:"bg-error-subtle text-error border border-error-border"},eval:{label:"评测",cls:"bg-success-subtle text-success border border-success-border"}};function o({term:e,tag:o,body:i,formula:s,related:d,children:c,align:u="start",side:m="bottom",badgeTone:g="muted",className:p}){let y=o?l[o]:null;return(0,t.jsx)(r.Provider,{delayDuration:150,skipDelayDuration:50,children:(0,t.jsxs)(r.Root,{children:[(0,t.jsx)(r.Trigger,{asChild:!0,children:(0,t.jsxs)("span",{className:(0,n.cn)("inline-flex items-center gap-1 cursor-help select-none align-baseline","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",p),tabIndex:0,"aria-label":`${e} 术语解释`,children:[c??(0,t.jsx)("span",{children:e}),(0,t.jsx)(a.Info,{className:(0,n.cn)("size-3 shrink-0 opacity-70","primary"===g?"text-primary":"text-foreground-muted"),"aria-hidden":!0})]})}),(0,t.jsx)(r.Portal,{children:(0,t.jsxs)(r.Content,{align:u,side:m,sideOffset:6,collisionPadding:12,className:(0,n.cn)("z-50 w-[260px] space-y-3 rounded-md border border-card-border bg-card p-4 text-card-foreground shadow-sm outline-none","data-[state=delayed-open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=delayed-open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=delayed-open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2","data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2"),children:[(0,t.jsxs)("header",{className:"flex items-center justify-between gap-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:e}),y&&(0,t.jsx)("span",{className:(0,n.cn)("inline-flex items-center px-1.5 py-0.5 rounded-sm text-[10px] leading-none",y.cls),children:y.label})]}),(0,t.jsx)("div",{className:"text-xs leading-[18px] text-foreground-secondary whitespace-pre-line",children:i}),s&&(0,t.jsx)("div",{className:"border-t border-card-border pt-2 font-mono text-[11px] leading-4 tabular-nums text-foreground-muted",children:s}),d&&d.length>0&&(0,t.jsx)("footer",{className:"border-t border-card-border pt-2 flex flex-wrap gap-1.5",children:d.map(e=>(0,t.jsx)("button",{type:"button",onClick:e.onClick,className:"text-[11px] text-primary hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm",children:e.name},e.id))})]})})]})})}e.s(["TermPopover",()=>o])},460435,e=>{"use strict";var t=e.i(843476),a=e.i(565804),r=e.i(797324);function n({id:e,render:n="default",label:l,align:o,side:i,badgeTone:s,className:d}){let c=(0,a.getTermById)(e);if(!c)return(0,t.jsx)("span",{className:d,children:l??e});let u=l??c.name;return(0,t.jsx)(r.TermPopover,{term:c.name,tag:c.tag,body:c.body,formula:c.formula,align:o,side:i,badgeTone:s,className:d,children:"compact"===n?(0,t.jsx)(t.Fragment,{}):(0,t.jsx)("span",{children:u})})}e.s(["Term",()=>n])}]);