agent-insight 0.5.0 → 0.5.2
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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -0
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/routes-manifest.json +6 -0
- package/.next/standalone/.next/server/app/(main)/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/eval/trajectory/[taskId]/trace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/infra/source/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/quality/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/skill-history/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/skills/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(main)/trace/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig/channels/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig/channels.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/channels.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig/health/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig/health.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/health.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.html +2 -2
- package/.next/standalone/.next/server/app/accessconfig/install.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig/install/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig/install.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/install.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig/webhooks/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig/webhooks.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig/webhooks.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.html +1 -1
- package/.next/standalone/.next/server/app/accessconfig.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p/accessconfig/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p/accessconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/accessconfig.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.html +1 -1
- package/.next/standalone/.next/server/app/agents.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p/agents/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p/agents.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/agents.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/agent/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent/stream/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent-datasets/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agent-datasets/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agents/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/agents/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/apikey/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/organization/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/dashboard/stats/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/batch-tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/batch-tasks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/execute/[jobId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/execute/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/grayscale-tasks/[taskId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/grayscale-tasks/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/history/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/debug/history/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/config/backfill-routing/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/config/create/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/config/reparse/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/config/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/evaluation/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/rejudge/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/settings/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/terminate-all/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/trajectory/results/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/trajectory/results/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/trajectory/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/eval/trajectory/runs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/evaluation/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/evaluation/cancel/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/fault/diagnosis/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/fault/diagnosis/stream/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/fleet/breakdowns/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/fleet/trends/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/guide/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/opencode/session-complete/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/otel/v1/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/otel/v1/metrics/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/otel/v1/traces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/proxy/[taskId]/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/proxy/[taskId]/end/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/proxy/[taskId]/start/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/setup/opencode-offline-fix/route/app-paths-manifest.json +3 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/opencode-offline-fix/route/build-manifest.json +11 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/opencode-offline-fix/route/server-reference-manifest.json +4 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/opencode-offline-fix/route.js +7 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/opencode-offline-fix/route.js.map +5 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/opencode-offline-fix/route.js.nft.json +1 -0
- package/.next/standalone/.next/server/app/api/ingest/setup/opencode-offline-fix/route_client-reference-manifest.js +2 -0
- package/.next/standalone/.next/server/app/api/ingest/sync/manifest/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/sync/opencode/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/executions/[executionId]/agent-debug/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/executions/[executionId]/agent-debug/skills-analysis/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/executions/[executionId]/analyze-match/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/executions/[executionId]/infra/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/infra/history/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/infra/poll/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/infra/sources/derive/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/infra/sources/overview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/infra/sources/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/infra/sources/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/infra/sources/test/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/session/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/observe/task-stats/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/public/otel/v1/traces/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/quality/agents/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/quality/backfill/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/quality/executions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/quality/report/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/draft/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/run/[runId]/cancel/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/runs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-eval/trigger/[skillName]/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/attachments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/download/[sessionId]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/files/content/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/files/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/files/info/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/files/list/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/sessions/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-generator/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/chat/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/plan/items/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/plan/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/sessions/[id]/iterations/[draftNumber]/apply/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/sessions/[id]/iterations/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/sessions/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skill-opt/sessions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/activate/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/benchmark-generate/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/runs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/toggle/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/download/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/evaluate/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/evaluation-summary/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/files/[...path]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/parse-flow/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/[version]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/[id]/versions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/automation/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/automation/push/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/by-name/[name]/analysis-diagnosis/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/by-name/[name]/optimization-points/resolve/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/by-name/[name]/optimization-points/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/by-name/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/logs/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/publish/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/sync-enterprise/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/skills/upload/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/user-evaluators/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/dashboard.html +1 -1
- package/.next/standalone/.next/server/app/dashboard.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p/dashboard/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p/dashboard.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.html +1 -1
- package/.next/standalone/.next/server/app/dataset.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p/dataset/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p/dataset.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/dataset.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.html +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval/trajectory/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval/trajectory.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p/eval.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval/trajectory.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.html +1 -1
- package/.next/standalone/.next/server/app/eval.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p/eval/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p/eval.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/eval.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.html +1 -1
- package/.next/standalone/.next/server/app/fault.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p/fault/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p/fault.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/fault.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.html +1 -1
- package/.next/standalone/.next/server/app/infra/sources.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.segments/!KG1haW4p/infra/sources/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.segments/!KG1haW4p/infra/sources.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.segments/!KG1haW4p/infra.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra/sources.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra.html +1 -1
- package/.next/standalone/.next/server/app/infra.rsc +1 -1
- package/.next/standalone/.next/server/app/infra.segments/!KG1haW4p/infra/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra.segments/!KG1haW4p/infra.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/infra.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.html +1 -1
- package/.next/standalone/.next/server/app/login.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.html +1 -1
- package/.next/standalone/.next/server/app/memory.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p/memory/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p/memory.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/memory.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.html +1 -1
- package/.next/standalone/.next/server/app/metrics.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p/metrics/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p/metrics.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/metrics.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig/registry/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig/registry.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/registry.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig/web-search/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig/web-search.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig/web-search.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.html +1 -1
- package/.next/standalone/.next/server/app/modelconfig.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p/modelconfig/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p/modelconfig.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/modelconfig.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.html +1 -1
- package/.next/standalone/.next/server/app/optapi.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p/optapi/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p/optapi.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/optapi.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.html +1 -1
- package/.next/standalone/.next/server/app/quality.rsc +2 -2
- package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p/quality/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p/quality.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/quality.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/quality.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.html +1 -1
- package/.next/standalone/.next/server/app/security.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/!KG1haW4p/security/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/!KG1haW4p/security.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/security.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.html +1 -1
- package/.next/standalone/.next/server/app/skill-detail.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/skill-detail/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-detail.segments/skill-detail.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.html +2 -2
- package/.next/standalone/.next/server/app/skill-eval/grayscale.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval/grayscale/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval/grayscale.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p/skill-eval.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval/grayscale.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.html +1 -1
- package/.next/standalone/.next/server/app/skill-eval.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p/skill-eval/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p/skill-eval.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-eval.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.html +1 -1
- package/.next/standalone/.next/server/app/skill-generator.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p/skill-generator/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p/skill-generator.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-generator.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.html +1 -1
- package/.next/standalone/.next/server/app/skill-history.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p/skill-history/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p/skill-history.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skill-history.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-history.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.html +1 -1
- package/.next/standalone/.next/server/app/skill-opt.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p/skill-opt/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p/skill-opt.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-opt.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.html +1 -1
- package/.next/standalone/.next/server/app/skill-release.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p/skill-release/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p/skill-release.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skill-release.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.html +1 -1
- package/.next/standalone/.next/server/app/skills.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p/skills/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p/skills.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/skills.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/skills.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.html +1 -1
- package/.next/standalone/.next/server/app/trace.rsc +2 -2
- package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p/trace/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p/trace.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/!KG1haW4p.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/trace.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/trace.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +1 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__edc6a75f._.js +3 -0
- package/.next/standalone/.next/server/chunks/ce889_server_app_api_ingest_setup_opencode-offline-fix_route_actions_13b9e7e1.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_c4a195e5.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_a3d5f9bc._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0ec17dda._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_2906b362._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_3ad6a908._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_6e2c1036._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_a443e166._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_c49ac16a._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_cf1f3d2c._.js +2 -2
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/1ee0fbf466669cb8.js +1 -0
- package/.next/standalone/.next/static/chunks/3a0f454536f3ebc8.js +1 -0
- package/.next/standalone/.next/static/chunks/4dcd21eef469e66b.js +1 -0
- package/.next/{static/chunks/7e6eb6ade82c4979.js → standalone/.next/static/chunks/b40cbbf52dfd5473.js} +1 -1
- package/.next/standalone/.next/static/chunks/ec50621fcfea9f71.js +287 -0
- package/.next/standalone/Dockerfile +10 -2
- package/.next/standalone/Evaluation_and_Research/agent_evaluator_industry_research.md +260 -0
- package/.next/standalone/Evaluation_and_Research/agent_evaluator_research_qna.md +1379 -0
- package/.next/standalone/Evaluation_and_Research/agent_evaluator_research_qna_2.md +1312 -0
- package/.next/standalone/Evaluation_and_Research/agent_evaluator_research_qna_3.md +712 -0
- package/.next/standalone/Evaluation_and_Research/agent_evaluator_research_qna_4.md +1228 -0
- package/.next/standalone/docker-compose.amd64.yml +10 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/scripts/opencode-offline-fix.ps1 +93 -0
- package/.next/standalone/scripts/opencode_tui_plugin.tsx +23 -1
- package/.next/static/chunks/1ee0fbf466669cb8.js +1 -0
- package/.next/static/chunks/3a0f454536f3ebc8.js +1 -0
- package/.next/static/chunks/4dcd21eef469e66b.js +1 -0
- package/.next/{standalone/.next/static/chunks/7e6eb6ade82c4979.js → static/chunks/b40cbbf52dfd5473.js} +1 -1
- package/.next/static/chunks/ec50621fcfea9f71.js +287 -0
- package/README.md +76 -60
- package/package.json +1 -1
- package/scripts/opencode-offline-fix.ps1 +93 -0
- package/scripts/opencode_tui_plugin.tsx +23 -1
- package/.next/standalone/.next/static/chunks/13ea6fabf1d0af65.js +0 -287
- package/.next/standalone/.next/static/chunks/74a2b1d10a1772b4.js +0 -1
- package/.next/standalone/.next/static/chunks/94042ce1cf94ccfd.js +0 -1
- package/.next/standalone/.next/static/chunks/965c5a1f38c3d7db.js +0 -1
- package/.next/standalone/scripts/activate_telemetry.sh +0 -202
- package/.next/standalone/scripts/insight-paths.js +0 -33
- package/.next/standalone/scripts/opencode_otel_schema.ts +0 -73
- package/.next/standalone/scripts/opencode_plugin.ts +0 -1063
- package/.next/static/chunks/13ea6fabf1d0af65.js +0 -287
- package/.next/static/chunks/74a2b1d10a1772b4.js +0 -1
- package/.next/static/chunks/94042ce1cf94ccfd.js +0 -1
- package/.next/static/chunks/965c5a1f38c3d7db.js +0 -1
- package/scripts/activate_telemetry.sh +0 -202
- package/scripts/insight-paths.js +0 -33
- package/scripts/opencode_otel_schema.ts +0 -73
- package/scripts/opencode_plugin.ts +0 -1063
- /package/.next/standalone/.next/static/{uwRBb8F1kIm0K4LV3Jkwa → iE8084jR9Kgb7Bhs3Xokh}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{uwRBb8F1kIm0K4LV3Jkwa → iE8084jR9Kgb7Bhs3Xokh}/_clientMiddlewareManifest.json +0 -0
- /package/.next/standalone/.next/static/{uwRBb8F1kIm0K4LV3Jkwa → iE8084jR9Kgb7Bhs3Xokh}/_ssgManifest.js +0 -0
- /package/.next/static/{uwRBb8F1kIm0K4LV3Jkwa → iE8084jR9Kgb7Bhs3Xokh}/_buildManifest.js +0 -0
- /package/.next/static/{uwRBb8F1kIm0K4LV3Jkwa → iE8084jR9Kgb7Bhs3Xokh}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{uwRBb8F1kIm0K4LV3Jkwa → iE8084jR9Kgb7Bhs3Xokh}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,712 @@
|
|
|
1
|
+
# Agent 评估器调研问答 3
|
|
2
|
+
|
|
3
|
+
调研日期:2026-07-07
|
|
4
|
+
|
|
5
|
+
这份文档用于继续记录 `agent_evaluator_industry_research.md` 里的细节问题。上一份问答见 `agent_evaluator_research_qna_2.md`。
|
|
6
|
+
|
|
7
|
+
## Q8:多 Agent 交接 / 路由正确性的逻辑是什么?
|
|
8
|
+
|
|
9
|
+
### 简短结论
|
|
10
|
+
|
|
11
|
+
多 Agent 交接 / 路由正确性评估的是:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
在多 agent 系统里,主 agent 是否在正确时机,把正确任务,用正确上下文,交给正确的子 agent;
|
|
15
|
+
子 agent 完成后,主 agent 是否正确接收、整合和继续推进。
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
它不是单纯看“有没有调用子 agent”,而是看整个 handoff / routing 链路是否合理。
|
|
19
|
+
|
|
20
|
+
可以拆成四段:
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
1. 是否应该交接
|
|
24
|
+
2. 交给谁
|
|
25
|
+
3. 交接内容是否完整
|
|
26
|
+
4. 交接后结果是否被正确使用
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 为什么这个指标重要?
|
|
30
|
+
|
|
31
|
+
多 agent 系统的失败经常不是某个 agent 单独能力差,而是协作链路出了问题:
|
|
32
|
+
|
|
33
|
+
- 主 agent 不该派发时派发了。
|
|
34
|
+
- 该派发时没有派发。
|
|
35
|
+
- 派给了错误角色。
|
|
36
|
+
- 子 agent 收到的上下文不完整。
|
|
37
|
+
- 子 agent 做完了,但父 agent 没有使用结果。
|
|
38
|
+
- 多个子 agent 重复做同一件事。
|
|
39
|
+
- 子 agent 的结论互相冲突,父 agent 没有裁决。
|
|
40
|
+
|
|
41
|
+
这类问题用普通任务完成度很难定位。最终失败只会显示“没完成”,但真正原因可能是:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
路由错了,后面全都偏了。
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
所以这个指标的意义是把多 agent 失败定位到“协作/编排层”,而不是误归因到工具、最终答案或某个子 agent 的能力。
|
|
48
|
+
|
|
49
|
+
### 输入是什么?
|
|
50
|
+
|
|
51
|
+
一个多 agent 路由评估器通常需要完整 trace 或 agent tree,至少包含:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
user_task:
|
|
55
|
+
用户原始任务
|
|
56
|
+
|
|
57
|
+
available_agents:
|
|
58
|
+
可用 agent / subagent 列表、职责说明、能力边界
|
|
59
|
+
|
|
60
|
+
handoff_events:
|
|
61
|
+
父 agent 何时派发、派给谁、派发参数/任务说明
|
|
62
|
+
|
|
63
|
+
subagent_traces:
|
|
64
|
+
子 agent 实际执行过程和输出
|
|
65
|
+
|
|
66
|
+
parent_followup:
|
|
67
|
+
父 agent 如何使用子 agent 结果,是否继续推进/整合/验证
|
|
68
|
+
|
|
69
|
+
final_output:
|
|
70
|
+
最终回复或最终状态
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
如果没有可用 agent 的职责说明,就很难判断“派给谁是否正确”。这时 evaluator 只能根据 agent 名称和 trace 内容做弱判断,置信度应降低。
|
|
74
|
+
|
|
75
|
+
### 中间评估逻辑
|
|
76
|
+
|
|
77
|
+
#### 1. 判断是否需要交接
|
|
78
|
+
|
|
79
|
+
先看用户任务是否真的需要子 agent。
|
|
80
|
+
|
|
81
|
+
适合交接的情况:
|
|
82
|
+
|
|
83
|
+
- 任务可以自然拆成多个专业子任务。
|
|
84
|
+
- 需要某个专门 agent 的能力,例如 researcher、coder、reviewer、diagnoser。
|
|
85
|
+
- 主 agent 的职责不覆盖该动作。
|
|
86
|
+
- 并行处理能明显降低复杂度。
|
|
87
|
+
- 需要独立验证或复核。
|
|
88
|
+
|
|
89
|
+
不适合交接的情况:
|
|
90
|
+
|
|
91
|
+
- 单步简单任务。
|
|
92
|
+
- 子 agent 和主 agent 能力重复。
|
|
93
|
+
- 派发成本高于收益。
|
|
94
|
+
- 派发会丢失上下文或权限。
|
|
95
|
+
|
|
96
|
+
可能的判断标签:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
handoff_needed
|
|
100
|
+
handoff_unnecessary
|
|
101
|
+
handoff_missing
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### 2. 判断路由目标是否正确
|
|
105
|
+
|
|
106
|
+
如果确实发生了 handoff,要判断交给的子 agent 是否匹配任务。
|
|
107
|
+
|
|
108
|
+
例如:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
任务:分析日志中的 Kerberos 错误
|
|
112
|
+
正确路由:diagnosis / log-analysis agent
|
|
113
|
+
错误路由:frontend-ui agent
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
判断依据:
|
|
117
|
+
|
|
118
|
+
- 子 agent 的职责说明。
|
|
119
|
+
- 子任务内容。
|
|
120
|
+
- 子 agent 实际执行行为。
|
|
121
|
+
- 子 agent 是否具备需要的工具/skill。
|
|
122
|
+
|
|
123
|
+
常见错误:
|
|
124
|
+
|
|
125
|
+
```text
|
|
126
|
+
wrong_agent_type
|
|
127
|
+
over_broad_agent
|
|
128
|
+
missing_specialist
|
|
129
|
+
duplicated_routing
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### 3. 判断交接内容是否完整
|
|
133
|
+
|
|
134
|
+
路由目标正确还不够,handoff payload 也必须完整。
|
|
135
|
+
|
|
136
|
+
交接内容通常应包含:
|
|
137
|
+
|
|
138
|
+
- 用户原始目标。
|
|
139
|
+
- 当前已知上下文。
|
|
140
|
+
- 已完成步骤。
|
|
141
|
+
- 待解决子任务。
|
|
142
|
+
- 约束和边界。
|
|
143
|
+
- 可用证据或文件路径。
|
|
144
|
+
- 期望输出格式。
|
|
145
|
+
- 禁止事项或风险提示。
|
|
146
|
+
|
|
147
|
+
错误例子:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
父 agent 让子 agent “看一下这个问题”,
|
|
151
|
+
但没有给日志路径、用户目标、前面已经试过的命令。
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
这会导致子 agent 重复探索、做错范围或输出不可用结果。
|
|
155
|
+
|
|
156
|
+
可能的标签:
|
|
157
|
+
|
|
158
|
+
```text
|
|
159
|
+
context_complete
|
|
160
|
+
missing_user_goal
|
|
161
|
+
missing_evidence
|
|
162
|
+
missing_constraints
|
|
163
|
+
missing_expected_output
|
|
164
|
+
ambiguous_task
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
#### 4. 判断子 agent 是否完成被交接任务
|
|
168
|
+
|
|
169
|
+
子 agent 收到任务后,需要看它是否完成了自己的子目标。
|
|
170
|
+
|
|
171
|
+
这里不是评估整体任务完成度,而是评估:
|
|
172
|
+
|
|
173
|
+
```text
|
|
174
|
+
这个 handoff 所定义的子任务有没有完成?
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
例如:
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
父 agent 派 researcher 查资料
|
|
181
|
+
=> 子 agent 是否真的找到了相关资料并给出可用摘要?
|
|
182
|
+
|
|
183
|
+
父 agent 派 reviewer 检查代码
|
|
184
|
+
=> 子 agent 是否真的指出问题或确认无问题?
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
这一步可以使用局部 task completion / tool correctness / evidence quality。
|
|
188
|
+
|
|
189
|
+
#### 5. 判断父 agent 是否正确接收和整合结果
|
|
190
|
+
|
|
191
|
+
很多多 agent 问题发生在“子 agent 做完以后”。
|
|
192
|
+
|
|
193
|
+
父 agent 应该:
|
|
194
|
+
|
|
195
|
+
- 读取子 agent 输出。
|
|
196
|
+
- 判断是否可信。
|
|
197
|
+
- 处理冲突结论。
|
|
198
|
+
- 把子 agent 结果整合进最终答案。
|
|
199
|
+
- 必要时继续追问或补充验证。
|
|
200
|
+
|
|
201
|
+
常见错误:
|
|
202
|
+
|
|
203
|
+
```text
|
|
204
|
+
subagent_result_ignored:
|
|
205
|
+
子 agent 给了关键结论,父 agent 没用。
|
|
206
|
+
|
|
207
|
+
subagent_result_misread:
|
|
208
|
+
父 agent 误解了子 agent 输出。
|
|
209
|
+
|
|
210
|
+
conflict_not_resolved:
|
|
211
|
+
多个子 agent 结论冲突,父 agent 直接拼接。
|
|
212
|
+
|
|
213
|
+
no_parent_synthesis:
|
|
214
|
+
父 agent 直接转发子 agent 输出,没有完成最终整合。
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
#### 6. 判断整体依赖关系是否合理
|
|
218
|
+
|
|
219
|
+
复杂多 agent workflow 不是一条线,而是 DAG:
|
|
220
|
+
|
|
221
|
+
```text
|
|
222
|
+
root
|
|
223
|
+
-> researcher
|
|
224
|
+
-> coder
|
|
225
|
+
-> test-runner
|
|
226
|
+
-> reviewer
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
评估要看:
|
|
230
|
+
|
|
231
|
+
- coder 是否依赖 researcher 的结果。
|
|
232
|
+
- reviewer 是否在 coder 之后执行。
|
|
233
|
+
- test-runner 是否在修改之后执行。
|
|
234
|
+
- 父 agent 是否等待必要子任务完成。
|
|
235
|
+
|
|
236
|
+
这和 AgentEval 的 DAG 思路一致:把 agent execution 看成带依赖的步骤图,而不是扁平步骤列表。依赖建模能帮助定位上游哪一步导致后续失败。
|
|
237
|
+
|
|
238
|
+
### 输出应该是什么?
|
|
239
|
+
|
|
240
|
+
一个多 agent 路由评估器可以输出:
|
|
241
|
+
|
|
242
|
+
```json
|
|
243
|
+
{
|
|
244
|
+
"score": 0.72,
|
|
245
|
+
"label": "partial",
|
|
246
|
+
"handoff_needed": true,
|
|
247
|
+
"routing_correctness": 0.8,
|
|
248
|
+
"handoff_context_quality": 0.6,
|
|
249
|
+
"subagent_task_completion": 0.9,
|
|
250
|
+
"parent_integration_quality": 0.5,
|
|
251
|
+
"findings": [
|
|
252
|
+
{
|
|
253
|
+
"type": "missing_context",
|
|
254
|
+
"severity": "medium",
|
|
255
|
+
"parent_agent": "root",
|
|
256
|
+
"child_agent": "researcher",
|
|
257
|
+
"handoff_step": 4,
|
|
258
|
+
"evidence": "handoff payload omitted the user's expected output format",
|
|
259
|
+
"impact": "child output was useful but hard for parent to integrate"
|
|
260
|
+
}
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
建议至少保留这些字段:
|
|
266
|
+
|
|
267
|
+
| 字段 | 含义 |
|
|
268
|
+
| --- | --- |
|
|
269
|
+
| `score` | 0-1 总分 |
|
|
270
|
+
| `label` | correct / partial / incorrect / n_a |
|
|
271
|
+
| `handoff_needed` | 是否应该交接 |
|
|
272
|
+
| `routing_correctness` | 是否交给正确 agent |
|
|
273
|
+
| `handoff_context_quality` | 交接上下文是否完整 |
|
|
274
|
+
| `subagent_task_completion` | 子 agent 是否完成子任务 |
|
|
275
|
+
| `parent_integration_quality` | 父 agent 是否正确使用结果 |
|
|
276
|
+
| `findings` | 具体问题列表 |
|
|
277
|
+
| `evidence_steps` | 对应 trace step / span |
|
|
278
|
+
|
|
279
|
+
### 常见失败模式
|
|
280
|
+
|
|
281
|
+
#### 1. 该交接但没交接
|
|
282
|
+
|
|
283
|
+
```text
|
|
284
|
+
任务需要专业诊断 agent,但 root agent 自己硬做,导致漏掉关键检查。
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
标签:
|
|
288
|
+
|
|
289
|
+
```text
|
|
290
|
+
missing_handoff
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
#### 2. 不该交接却交接
|
|
294
|
+
|
|
295
|
+
```text
|
|
296
|
+
简单问题派给多个子 agent,造成成本高、延迟高、答案不一致。
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
标签:
|
|
300
|
+
|
|
301
|
+
```text
|
|
302
|
+
unnecessary_handoff
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
#### 3. 交给错误 agent
|
|
306
|
+
|
|
307
|
+
```text
|
|
308
|
+
需要数据库 agent,却派给文档总结 agent。
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
标签:
|
|
312
|
+
|
|
313
|
+
```text
|
|
314
|
+
wrong_agent
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
#### 4. 交接上下文缺失
|
|
318
|
+
|
|
319
|
+
```text
|
|
320
|
+
父 agent 没传用户目标、文件路径、已知事实、失败历史。
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
标签:
|
|
324
|
+
|
|
325
|
+
```text
|
|
326
|
+
incomplete_handoff_context
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
#### 5. 子 agent 做对了但父 agent 没用
|
|
330
|
+
|
|
331
|
+
```text
|
|
332
|
+
子 agent 找到了根因,父 agent 最终答案没有引用或采纳。
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
标签:
|
|
336
|
+
|
|
337
|
+
```text
|
|
338
|
+
ignored_subagent_result
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
#### 6. 子 agent 输出冲突未解决
|
|
342
|
+
|
|
343
|
+
```text
|
|
344
|
+
两个子 agent 给出不同结论,父 agent 没有裁决或验证。
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
标签:
|
|
348
|
+
|
|
349
|
+
```text
|
|
350
|
+
unresolved_subagent_conflict
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
#### 7. 父子职责边界混乱
|
|
354
|
+
|
|
355
|
+
```text
|
|
356
|
+
父 agent 交给子 agent 后自己又重复执行同一任务;
|
|
357
|
+
或者子 agent 越权执行本应由父 agent 决策的最终动作。
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
标签:
|
|
361
|
+
|
|
362
|
+
```text
|
|
363
|
+
role_boundary_violation
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### 它和工具选择评估有什么区别?
|
|
367
|
+
|
|
368
|
+
两者很像,但对象不同。
|
|
369
|
+
|
|
370
|
+
| 指标 | 路由对象 | 关注点 |
|
|
371
|
+
| --- | --- | --- |
|
|
372
|
+
| Tool Selection | 工具 | 是否选择了正确工具 |
|
|
373
|
+
| Multi-Agent Routing | 子 agent / handoff | 是否选择了正确执行角色,并正确交接上下文 |
|
|
374
|
+
|
|
375
|
+
工具调用通常是:
|
|
376
|
+
|
|
377
|
+
```text
|
|
378
|
+
function(args) -> result
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
多 agent 交接是:
|
|
382
|
+
|
|
383
|
+
```text
|
|
384
|
+
delegate(task + context + constraints) -> subagent work + result
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
所以多 agent 路由比工具选择多了几个问题:
|
|
388
|
+
|
|
389
|
+
- 子任务定义是否清楚。
|
|
390
|
+
- 上下文是否完整。
|
|
391
|
+
- 子 agent 是否真的完成子任务。
|
|
392
|
+
- 父 agent 是否整合结果。
|
|
393
|
+
- 多个子 agent 的依赖是否正确。
|
|
394
|
+
|
|
395
|
+
### 它和任务完成度有什么关系?
|
|
396
|
+
|
|
397
|
+
任务完成度回答:
|
|
398
|
+
|
|
399
|
+
```text
|
|
400
|
+
最后有没有完成用户目标?
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
多 agent 路由正确性回答:
|
|
404
|
+
|
|
405
|
+
```text
|
|
406
|
+
多 agent 协作过程是否正确?
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
典型组合:
|
|
410
|
+
|
|
411
|
+
| 任务完成度 | 路由正确性 | 说明 |
|
|
412
|
+
| --- | --- | --- |
|
|
413
|
+
| 高 | 高 | 多 agent 协作健康 |
|
|
414
|
+
| 高 | 低 | 可能偶然成功;有成本、稳定性或可维护性风险 |
|
|
415
|
+
| 低 | 高 | 路由没问题,失败可能在工具、环境、子 agent 能力 |
|
|
416
|
+
| 低 | 低 | 协作编排本身就是主要问题 |
|
|
417
|
+
|
|
418
|
+
### 适用场景
|
|
419
|
+
|
|
420
|
+
这个指标适合:
|
|
421
|
+
|
|
422
|
+
- 多 agent 编排系统。
|
|
423
|
+
- 有 root agent / subagent 结构的 Coding Agent。
|
|
424
|
+
- 复杂诊断 agent。
|
|
425
|
+
- 自动化运维 agent。
|
|
426
|
+
- 研究-写作-审核分工类 agent。
|
|
427
|
+
- 工作流 agent,例如 planner -> executor -> reviewer。
|
|
428
|
+
- 需要 handoff 的客服或业务办理 agent。
|
|
429
|
+
|
|
430
|
+
不适合:
|
|
431
|
+
|
|
432
|
+
- 单 agent 系统。
|
|
433
|
+
- 没有子 agent / handoff 的 trace。
|
|
434
|
+
- 只有普通工具调用、没有角色分工的任务。
|
|
435
|
+
|
|
436
|
+
这些场景应该标记:
|
|
437
|
+
|
|
438
|
+
```text
|
|
439
|
+
n_a: no multi-agent handoff
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### 在 Agent Insight 里可以怎么理解
|
|
443
|
+
|
|
444
|
+
Agent Insight 已经有 root / sub-agent execution tree,这类指标天然可以利用:
|
|
445
|
+
|
|
446
|
+
```text
|
|
447
|
+
parentExecutionId
|
|
448
|
+
rootExecutionId
|
|
449
|
+
agentSessionId
|
|
450
|
+
subagentType
|
|
451
|
+
subagentName
|
|
452
|
+
isSubagent
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
评估时可以从 trace 中抽:
|
|
456
|
+
|
|
457
|
+
```text
|
|
458
|
+
handoff step:
|
|
459
|
+
父 agent 何时调用 task/subagent
|
|
460
|
+
|
|
461
|
+
handoff payload:
|
|
462
|
+
subagent_type、任务说明、上下文、load_skills
|
|
463
|
+
|
|
464
|
+
child execution:
|
|
465
|
+
子 agent 的执行 trace、工具调用、最终输出
|
|
466
|
+
|
|
467
|
+
parent continuation:
|
|
468
|
+
父 agent 是否读取并使用子 agent 输出
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
这样可以把问题定位到:
|
|
472
|
+
|
|
473
|
+
```text
|
|
474
|
+
父 agent 路由错
|
|
475
|
+
子 agent 执行错
|
|
476
|
+
交接上下文错
|
|
477
|
+
父 agent 整合错
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
这比只看整体 trace 分更有行动价值。
|
|
481
|
+
|
|
482
|
+
### 附加问题:业界有代码参考吗,还是只有方法论?
|
|
483
|
+
|
|
484
|
+
简短结论:
|
|
485
|
+
|
|
486
|
+
```text
|
|
487
|
+
目前更多是方法论 + 平台能力 + 自定义 evaluator 模式,
|
|
488
|
+
还没有特别成熟、通用、开箱即用的“多 Agent 交接 / 路由正确性”标准代码库。
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
和工具调用不同,工具调用已经有比较清晰的结构:
|
|
492
|
+
|
|
493
|
+
```text
|
|
494
|
+
tool_name
|
|
495
|
+
arguments
|
|
496
|
+
tool_result
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
所以 Phoenix / Ragas / DeepEval 可以做出比较通用的 Tool Selection、Tool Invocation、Tool Call Accuracy。
|
|
500
|
+
|
|
501
|
+
但多 agent handoff 的结构差异很大:
|
|
502
|
+
|
|
503
|
+
```text
|
|
504
|
+
有的系统叫 handoff
|
|
505
|
+
有的系统叫 task / delegate / subagent
|
|
506
|
+
有的是 LangGraph node transition
|
|
507
|
+
有的是 swarm/router
|
|
508
|
+
有的是 supervisor-worker
|
|
509
|
+
有的是 planner-executor-reviewer
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
每个系统里的“正确交接”都依赖:
|
|
513
|
+
|
|
514
|
+
- 子 agent 职责定义。
|
|
515
|
+
- workflow 拓扑。
|
|
516
|
+
- 任务类型。
|
|
517
|
+
- handoff payload 结构。
|
|
518
|
+
- 父 agent 是否需要整合。
|
|
519
|
+
- 是否允许并行或重规划。
|
|
520
|
+
|
|
521
|
+
所以业界更多提供的是 **可实现这个 evaluator 的框架能力**,而不是一个通用 evaluator 函数。
|
|
522
|
+
|
|
523
|
+
#### 1. OpenAI agent evals:有 trace grading 能力,但需要自定义 rubric
|
|
524
|
+
|
|
525
|
+
[OpenAI agent evals](https://developers.openai.com/api/docs/guides/agent-evals) 的价值在于:它支持对 agent workflow / trace 做评估,也可以用 grader 问类似:
|
|
526
|
+
|
|
527
|
+
```text
|
|
528
|
+
是否发生了正确 handoff?
|
|
529
|
+
是否违反了指令?
|
|
530
|
+
是否调用了正确工具?
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
但它不是提供一个固定的 `MultiAgentHandoffCorrectnessMetric()`。
|
|
534
|
+
|
|
535
|
+
更接近的用法是:
|
|
536
|
+
|
|
537
|
+
```text
|
|
538
|
+
你自己定义 grader rubric
|
|
539
|
+
把 trace / spans / handoff events 放进去
|
|
540
|
+
让 grader 输出 pass/fail、score、reason
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
所以 OpenAI 提供的是 eval infrastructure 和 grader 机制,不是一个 handoff correctness 的现成指标实现。
|
|
544
|
+
|
|
545
|
+
#### 2. LangSmith:有 trace / dataset / evaluator 基础设施,但 handoff 评估通常自定义
|
|
546
|
+
|
|
547
|
+
[LangSmith](https://docs.langchain.com/langsmith/evaluation-concepts) 很适合做这类评估,因为它有:
|
|
548
|
+
|
|
549
|
+
- trace / run tree。
|
|
550
|
+
- dataset。
|
|
551
|
+
- custom evaluator。
|
|
552
|
+
- experiment comparison。
|
|
553
|
+
- human annotation。
|
|
554
|
+
|
|
555
|
+
如果你的多 agent 系统在 LangGraph / LangChain 里跑,LangSmith 能看到 intermediate steps / child runs / tool calls。
|
|
556
|
+
|
|
557
|
+
但同样地,它通常不会替你定义“什么叫正确 handoff”。你需要写自定义 evaluator:
|
|
558
|
+
|
|
559
|
+
```text
|
|
560
|
+
读取 run tree
|
|
561
|
+
抽取 supervisor -> worker 的转移
|
|
562
|
+
对照 agent role description / expected route
|
|
563
|
+
判断路由和上下文是否正确
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
所以 LangSmith 是很好的实现平台,但不是通用现成 metric。
|
|
567
|
+
|
|
568
|
+
#### 3. AgentEval:非常接近方法论,但更像论文框架
|
|
569
|
+
|
|
570
|
+
[AgentEval](https://arxiv.org/abs/2604.23581) 是目前比较接近“多步骤 / 多 agent / 工作流评估”的方法论参考。
|
|
571
|
+
|
|
572
|
+
它的核心思路是:
|
|
573
|
+
|
|
574
|
+
```text
|
|
575
|
+
把 agent execution 建模成 DAG
|
|
576
|
+
每个节点有 typed quality metrics
|
|
577
|
+
节点之间有依赖关系
|
|
578
|
+
通过 failure taxonomy 和 dependency propagation 做根因定位
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
这对多 agent handoff 很有启发,因为 handoff 本质上就是 DAG 里的边:
|
|
582
|
+
|
|
583
|
+
```text
|
|
584
|
+
parent node -> child agent node
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
可以评估:
|
|
588
|
+
|
|
589
|
+
- 这条边是否应该存在。
|
|
590
|
+
- 边指向的节点是否正确。
|
|
591
|
+
- 边上传递的上下文是否完整。
|
|
592
|
+
- 下游节点失败是否由上游交接错误导致。
|
|
593
|
+
|
|
594
|
+
但从公开资料看,AgentEval 更主要是论文和方法框架;它给了很强的设计参考,不等于可以直接 npm install / pip install 后得到一个通用 handoff evaluator。
|
|
595
|
+
|
|
596
|
+
#### 4. 其他多 agent benchmark:多评“协作结果”,少评“交接正确性”
|
|
597
|
+
|
|
598
|
+
一些 multi-agent benchmark 会评估协作能力,例如:
|
|
599
|
+
|
|
600
|
+
- BattleAgentBench:多 agent 合作/竞争能力。
|
|
601
|
+
- COMMA:多模态多 agent 沟通协作。
|
|
602
|
+
- 一些 domain workflow benchmark:多步骤、多场景任务成功率。
|
|
603
|
+
|
|
604
|
+
它们通常更关注:
|
|
605
|
+
|
|
606
|
+
```text
|
|
607
|
+
多 agent 协作后任务是否完成?
|
|
608
|
+
协作表现是否好?
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
但不一定细到:
|
|
612
|
+
|
|
613
|
+
```text
|
|
614
|
+
第 3 步是否应该 handoff?
|
|
615
|
+
handoff payload 是否缺少用户约束?
|
|
616
|
+
父 agent 是否正确整合子 agent 输出?
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
所以这些 benchmark 可以借鉴任务设计和数据集形态,但不能直接当作 handoff correctness evaluator。
|
|
620
|
+
|
|
621
|
+
### 可以参考的代码形态是什么?
|
|
622
|
+
|
|
623
|
+
虽然没有通用标准代码,但可以参考三类实现形态。
|
|
624
|
+
|
|
625
|
+
#### 1. Run tree / trace parser
|
|
626
|
+
|
|
627
|
+
先把多 agent trace 解析成结构化树:
|
|
628
|
+
|
|
629
|
+
```json
|
|
630
|
+
{
|
|
631
|
+
"agent": "root",
|
|
632
|
+
"events": [...],
|
|
633
|
+
"children": [
|
|
634
|
+
{
|
|
635
|
+
"agent": "researcher",
|
|
636
|
+
"handoff_step": 4,
|
|
637
|
+
"handoff_payload": {...},
|
|
638
|
+
"events": [...],
|
|
639
|
+
"result": "..."
|
|
640
|
+
}
|
|
641
|
+
]
|
|
642
|
+
}
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
Agent Insight 现有 `buildAgentCallTree` / root-subagent execution 模型就属于这一层。
|
|
646
|
+
|
|
647
|
+
#### 2. Handoff extractor
|
|
648
|
+
|
|
649
|
+
从 tree 中抽取 handoff record:
|
|
650
|
+
|
|
651
|
+
```json
|
|
652
|
+
{
|
|
653
|
+
"parent_agent": "root",
|
|
654
|
+
"child_agent": "researcher",
|
|
655
|
+
"handoff_step": 4,
|
|
656
|
+
"handoff_reason": "need external research",
|
|
657
|
+
"payload": {
|
|
658
|
+
"task": "...",
|
|
659
|
+
"context": "...",
|
|
660
|
+
"constraints": "..."
|
|
661
|
+
},
|
|
662
|
+
"child_result": "...",
|
|
663
|
+
"parent_used_result": true
|
|
664
|
+
}
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
#### 3. LLM judge / rule hybrid evaluator
|
|
668
|
+
|
|
669
|
+
用规则先做确定性检查:
|
|
670
|
+
|
|
671
|
+
```text
|
|
672
|
+
是否真的有 child execution
|
|
673
|
+
是否有 child result
|
|
674
|
+
父 agent 后续是否引用 child result
|
|
675
|
+
handoff payload 是否为空
|
|
676
|
+
是否重复派发同一子任务
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
再用 LLM judge 判断语义:
|
|
680
|
+
|
|
681
|
+
```text
|
|
682
|
+
是否应该派发?
|
|
683
|
+
派给这个 agent 是否合理?
|
|
684
|
+
上下文是否足够?
|
|
685
|
+
父 agent 是否正确整合?
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
### 对 Agent Insight 的判断
|
|
689
|
+
|
|
690
|
+
如果我们要做这个预置评估器,不能简单“集成某个现成库”。更现实的路线是:
|
|
691
|
+
|
|
692
|
+
```text
|
|
693
|
+
借鉴 OpenAI / LangSmith 的 trace grading 模式
|
|
694
|
+
借鉴 AgentEval 的 DAG / dependency / root cause 方法论
|
|
695
|
+
复用 Agent Insight 自己的 root-subagent trace tree
|
|
696
|
+
实现一个自定义 Multi-Agent Routing Evaluator
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
也就是说:
|
|
700
|
+
|
|
701
|
+
```text
|
|
702
|
+
业界有可参考的评估思想和平台能力;
|
|
703
|
+
但具体到多 agent handoff correctness,最好由 Agent Insight 自己实现。
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
这反而是 Agent Insight 的机会,因为你们已经有多 agent execution tree、parent/root execution 关系、subagentName/subagentType 等数据,能做得比通用平台更贴近真实 trace。
|
|
707
|
+
|
|
708
|
+
### 参考链接
|
|
709
|
+
|
|
710
|
+
- OpenAI agent evals: https://developers.openai.com/api/docs/guides/agent-evals
|
|
711
|
+
- AgentEval DAG step-level evaluation: https://arxiv.org/abs/2604.23581
|
|
712
|
+
- LangSmith evaluation concepts: https://docs.langchain.com/langsmith/evaluation-concepts
|