ai-eval-scope 0.1.5__tar.gz

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 (352) hide show
  1. ai_eval_scope-0.1.5/.coverage +0 -0
  2. ai_eval_scope-0.1.5/.gitignore +79 -0
  3. ai_eval_scope-0.1.5/CHANGELOG.md +443 -0
  4. ai_eval_scope-0.1.5/CLAUDE.md +58 -0
  5. ai_eval_scope-0.1.5/LICENSE +21 -0
  6. ai_eval_scope-0.1.5/PKG-INFO +121 -0
  7. ai_eval_scope-0.1.5/README.md +73 -0
  8. ai_eval_scope-0.1.5/agent_eval/__init__.py +3 -0
  9. ai_eval_scope-0.1.5/agent_eval/agent/__init__.py +23 -0
  10. ai_eval_scope-0.1.5/agent_eval/agent/callbacks.py +149 -0
  11. ai_eval_scope-0.1.5/agent_eval/agent/eval_tools.py +27 -0
  12. ai_eval_scope-0.1.5/agent_eval/agent/evaluation_agent.py +43 -0
  13. ai_eval_scope-0.1.5/agent_eval/agent/execution_agent.py +409 -0
  14. ai_eval_scope-0.1.5/agent_eval/agent/hooks.py +294 -0
  15. ai_eval_scope-0.1.5/agent_eval/agent/model_bridge.py +95 -0
  16. ai_eval_scope-0.1.5/agent_eval/agent/package_agent.py +381 -0
  17. ai_eval_scope-0.1.5/agent_eval/agent/package_tools.py +364 -0
  18. ai_eval_scope-0.1.5/agent_eval/agent/plan_parser.py +80 -0
  19. ai_eval_scope-0.1.5/agent_eval/agent/protocol_tools.py +204 -0
  20. ai_eval_scope-0.1.5/agent_eval/agent/session.py +235 -0
  21. ai_eval_scope-0.1.5/agent_eval/agent/sut_tools.py +392 -0
  22. ai_eval_scope-0.1.5/agent_eval/agent/tools.py +88 -0
  23. ai_eval_scope-0.1.5/agent_eval/assets/configs/execution_agent_prompts.yaml +61 -0
  24. ai_eval_scope-0.1.5/agent_eval/assets/configs/package_agent_prompts.yaml +69 -0
  25. ai_eval_scope-0.1.5/agent_eval/assets/configs/summary_prompt.yaml +47 -0
  26. ai_eval_scope-0.1.5/agent_eval/assets/configs/sut_config.example.yaml +34 -0
  27. ai_eval_scope-0.1.5/agent_eval/assets/datasets/dataset_index.yaml +182 -0
  28. ai_eval_scope-0.1.5/agent_eval/assets/packages/chat/1.0.0/agent_eval.yaml +16 -0
  29. ai_eval_scope-0.1.5/agent_eval/assets/packages/chat/1.0.0/metrics/policy.yaml +89 -0
  30. ai_eval_scope-0.1.5/agent_eval/assets/packages/chat/1.0.0/prompts/chat_answer_consistency.yaml +133 -0
  31. ai_eval_scope-0.1.5/agent_eval/assets/packages/chat/1.0.0/prompts/chat_answer_extract.yaml +53 -0
  32. ai_eval_scope-0.1.5/agent_eval/assets/packages/chat/1.0.0/prompts/chat_answer_quality.yaml +146 -0
  33. ai_eval_scope-0.1.5/agent_eval/assets/packages/chat/1.0.0/rules/chat-quality.yaml +61 -0
  34. ai_eval_scope-0.1.5/agent_eval/assets/packages/chat/1.0.0/sut_configs/sasan-agent.yaml +27 -0
  35. ai_eval_scope-0.1.5/agent_eval/assets/packages/chat/1.0.0/task_sets/default.yaml +194 -0
  36. ai_eval_scope-0.1.5/agent_eval/assets/packages/code/1.0.0/agent_eval.yaml +14 -0
  37. ai_eval_scope-0.1.5/agent_eval/assets/packages/code/1.0.0/metrics/policy.yaml +69 -0
  38. ai_eval_scope-0.1.5/agent_eval/assets/packages/code/1.0.0/prompts/code_correctness.yaml +94 -0
  39. ai_eval_scope-0.1.5/agent_eval/assets/packages/code/1.0.0/prompts/code_style.yaml +92 -0
  40. ai_eval_scope-0.1.5/agent_eval/assets/packages/code/1.0.0/rules/code-quality.yaml +51 -0
  41. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/agent_eval.yaml +12 -0
  42. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/_defaults.yaml +90 -0
  43. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/biology.yaml +2174 -0
  44. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/chemistry.yaml +2946 -0
  45. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/chinese.yaml +6934 -0
  46. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/geography.yaml +2045 -0
  47. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/history.yaml +6780 -0
  48. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/math.yaml +672 -0
  49. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/morality.yaml +4171 -0
  50. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/datasets/physics.yaml +4224 -0
  51. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/metrics/policy.yaml +112 -0
  52. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/chronological_order.yaml +123 -0
  53. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/content_diversity.yaml +190 -0
  54. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/content_verdict.yaml +82 -0
  55. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/depth_preference.yaml +187 -0
  56. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/fact_verdict.yaml +82 -0
  57. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/info_accuracy.yaml +97 -0
  58. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/knowledge_extract.yaml +45 -0
  59. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/knowledge_extract_constants.yaml +47 -0
  60. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/logical_consistency.yaml +145 -0
  61. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/pedagogical_logic.yaml +189 -0
  62. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/request_fulfillment.yaml +188 -0
  63. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/style_preference.yaml +185 -0
  64. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/prompts/visual_quality.yaml +86 -0
  65. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/rules/coursework-gate.yaml +73 -0
  66. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/rules/coursework-quality.yaml +142 -0
  67. ai_eval_scope-0.1.5/agent_eval/assets/packages/courseware/1.0.0/rules/coursework-vision.yaml +157 -0
  68. ai_eval_scope-0.1.5/agent_eval/assets/schemas/dataset_index_schema.json +92 -0
  69. ai_eval_scope-0.1.5/agent_eval/assets/schemas/dataset_schema.json +100 -0
  70. ai_eval_scope-0.1.5/agent_eval/assets/schemas/rule_set_schema.json +462 -0
  71. ai_eval_scope-0.1.5/agent_eval/assets/schemas/task_set_schema.json +52 -0
  72. ai_eval_scope-0.1.5/agent_eval/cli/__init__.py +40 -0
  73. ai_eval_scope-0.1.5/agent_eval/cli/_common.py +230 -0
  74. ai_eval_scope-0.1.5/agent_eval/cli/_env_file.py +40 -0
  75. ai_eval_scope-0.1.5/agent_eval/cli/_stages.py +343 -0
  76. ai_eval_scope-0.1.5/agent_eval/cli/cmds/__init__.py +4 -0
  77. ai_eval_scope-0.1.5/agent_eval/cli/cmds/auth.py +298 -0
  78. ai_eval_scope-0.1.5/agent_eval/cli/cmds/dataset.py +81 -0
  79. ai_eval_scope-0.1.5/agent_eval/cli/cmds/doctor.py +165 -0
  80. ai_eval_scope-0.1.5/agent_eval/cli/cmds/evaluate.py +165 -0
  81. ai_eval_scope-0.1.5/agent_eval/cli/cmds/execute.py +397 -0
  82. ai_eval_scope-0.1.5/agent_eval/cli/cmds/knowledge.py +205 -0
  83. ai_eval_scope-0.1.5/agent_eval/cli/cmds/models.py +177 -0
  84. ai_eval_scope-0.1.5/agent_eval/cli/cmds/open_url.py +73 -0
  85. ai_eval_scope-0.1.5/agent_eval/cli/cmds/pack.py +144 -0
  86. ai_eval_scope-0.1.5/agent_eval/cli/cmds/rule_set.py +62 -0
  87. ai_eval_scope-0.1.5/agent_eval/cli/cmds/runs.py +239 -0
  88. ai_eval_scope-0.1.5/agent_eval/cli/cmds/scenario.py +422 -0
  89. ai_eval_scope-0.1.5/agent_eval/cli/cmds/scenario_agent.py +416 -0
  90. ai_eval_scope-0.1.5/agent_eval/cli/cmds/secrets.py +191 -0
  91. ai_eval_scope-0.1.5/agent_eval/cli/cmds/suite.py +150 -0
  92. ai_eval_scope-0.1.5/agent_eval/cli/cmds/upload.py +252 -0
  93. ai_eval_scope-0.1.5/agent_eval/cli/console/__init__.py +0 -0
  94. ai_eval_scope-0.1.5/agent_eval/cli/console/equiv.py +44 -0
  95. ai_eval_scope-0.1.5/agent_eval/cli/console/output.py +100 -0
  96. ai_eval_scope-0.1.5/agent_eval/cli/console/prompts.py +151 -0
  97. ai_eval_scope-0.1.5/agent_eval/cli/console/render.py +94 -0
  98. ai_eval_scope-0.1.5/agent_eval/cli/main.py +110 -0
  99. ai_eval_scope-0.1.5/agent_eval/cli/workbench/__init__.py +0 -0
  100. ai_eval_scope-0.1.5/agent_eval/cli/workbench/domains/__init__.py +0 -0
  101. ai_eval_scope-0.1.5/agent_eval/cli/workbench/domains/account.py +45 -0
  102. ai_eval_scope-0.1.5/agent_eval/cli/workbench/domains/exec.py +89 -0
  103. ai_eval_scope-0.1.5/agent_eval/cli/workbench/domains/runs.py +29 -0
  104. ai_eval_scope-0.1.5/agent_eval/cli/workbench/domains/scn.py +63 -0
  105. ai_eval_scope-0.1.5/agent_eval/cli/workbench/session.py +118 -0
  106. ai_eval_scope-0.1.5/agent_eval/config/__init__.py +86 -0
  107. ai_eval_scope-0.1.5/agent_eval/config/evaluation.py +131 -0
  108. ai_eval_scope-0.1.5/agent_eval/config/execution.py +56 -0
  109. ai_eval_scope-0.1.5/agent_eval/config/llm.py +154 -0
  110. ai_eval_scope-0.1.5/agent_eval/config/llm_file.py +106 -0
  111. ai_eval_scope-0.1.5/agent_eval/config/llm_resolution.py +171 -0
  112. ai_eval_scope-0.1.5/agent_eval/config/loader.py +220 -0
  113. ai_eval_scope-0.1.5/agent_eval/config/observability.py +44 -0
  114. ai_eval_scope-0.1.5/agent_eval/config/paths.py +125 -0
  115. ai_eval_scope-0.1.5/agent_eval/config/platform_file.py +100 -0
  116. ai_eval_scope-0.1.5/agent_eval/config/reporting.py +25 -0
  117. ai_eval_scope-0.1.5/agent_eval/core/__init__.py +1 -0
  118. ai_eval_scope-0.1.5/agent_eval/core/exceptions.py +245 -0
  119. ai_eval_scope-0.1.5/agent_eval/core/logging.py +81 -0
  120. ai_eval_scope-0.1.5/agent_eval/core/types.py +93 -0
  121. ai_eval_scope-0.1.5/agent_eval/datasets/__init__.py +20 -0
  122. ai_eval_scope-0.1.5/agent_eval/datasets/downloader.py +127 -0
  123. ai_eval_scope-0.1.5/agent_eval/datasets/manager.py +156 -0
  124. ai_eval_scope-0.1.5/agent_eval/datasets/registry.py +78 -0
  125. ai_eval_scope-0.1.5/agent_eval/evaluation/__init__.py +1 -0
  126. ai_eval_scope-0.1.5/agent_eval/evaluation/base.py +100 -0
  127. ai_eval_scope-0.1.5/agent_eval/evaluation/capability.py +66 -0
  128. ai_eval_scope-0.1.5/agent_eval/evaluation/engine.py +489 -0
  129. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/__init__.py +56 -0
  130. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/commonsense_evaluators.py +1323 -0
  131. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/content_completeness.py +252 -0
  132. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/format_evaluators.py +335 -0
  133. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/formula_normalizer.py +98 -0
  134. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/plugins/__init__.py +91 -0
  135. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/quality_evaluators.py +646 -0
  136. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/scenario/__init__.py +5 -0
  137. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/scenario/chat.py +241 -0
  138. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/scenario/code.py +48 -0
  139. ai_eval_scope-0.1.5/agent_eval/evaluation/evaluators/vision_evaluators.py +286 -0
  140. ai_eval_scope-0.1.5/agent_eval/evaluation/models.py +207 -0
  141. ai_eval_scope-0.1.5/agent_eval/evaluation/registry.py +99 -0
  142. ai_eval_scope-0.1.5/agent_eval/evaluation/scenario/__init__.py +40 -0
  143. ai_eval_scope-0.1.5/agent_eval/evaluation/scenario/aggregator.py +79 -0
  144. ai_eval_scope-0.1.5/agent_eval/evaluation/scenario/defaults.py +86 -0
  145. ai_eval_scope-0.1.5/agent_eval/evaluation/scenario/expr.py +199 -0
  146. ai_eval_scope-0.1.5/agent_eval/evaluation/scenario/metrics.py +107 -0
  147. ai_eval_scope-0.1.5/agent_eval/evaluation/scenario/models.py +104 -0
  148. ai_eval_scope-0.1.5/agent_eval/evaluation/stage.py +93 -0
  149. ai_eval_scope-0.1.5/agent_eval/evaluation/summary.py +172 -0
  150. ai_eval_scope-0.1.5/agent_eval/evaluation/text_utils.py +331 -0
  151. ai_eval_scope-0.1.5/agent_eval/evaluation/vision/__init__.py +13 -0
  152. ai_eval_scope-0.1.5/agent_eval/evaluation/vision/renderer.py +202 -0
  153. ai_eval_scope-0.1.5/agent_eval/execution/__init__.py +1 -0
  154. ai_eval_scope-0.1.5/agent_eval/execution/auth/__init__.py +7 -0
  155. ai_eval_scope-0.1.5/agent_eval/execution/auth/credentials.py +130 -0
  156. ai_eval_scope-0.1.5/agent_eval/execution/auth/provider.py +186 -0
  157. ai_eval_scope-0.1.5/agent_eval/execution/auth/secrets_store.py +57 -0
  158. ai_eval_scope-0.1.5/agent_eval/execution/auth/session.py +139 -0
  159. ai_eval_scope-0.1.5/agent_eval/execution/channels/__init__.py +5 -0
  160. ai_eval_scope-0.1.5/agent_eval/execution/channels/agent_protocol.py +300 -0
  161. ai_eval_scope-0.1.5/agent_eval/execution/channels/base.py +135 -0
  162. ai_eval_scope-0.1.5/agent_eval/execution/channels/thread_commands.py +290 -0
  163. ai_eval_scope-0.1.5/agent_eval/execution/models.py +192 -0
  164. ai_eval_scope-0.1.5/agent_eval/execution/registry.py +246 -0
  165. ai_eval_scope-0.1.5/agent_eval/execution/task_builder.py +94 -0
  166. ai_eval_scope-0.1.5/agent_eval/execution/utils.py +38 -0
  167. ai_eval_scope-0.1.5/agent_eval/knowledge/__init__.py +73 -0
  168. ai_eval_scope-0.1.5/agent_eval/knowledge/auditor.py +350 -0
  169. ai_eval_scope-0.1.5/agent_eval/knowledge/base.py +56 -0
  170. ai_eval_scope-0.1.5/agent_eval/knowledge/converters/__init__.py +1 -0
  171. ai_eval_scope-0.1.5/agent_eval/knowledge/converters/math_reference.py +40 -0
  172. ai_eval_scope-0.1.5/agent_eval/knowledge/converters/periodic_table.py +148 -0
  173. ai_eval_scope-0.1.5/agent_eval/knowledge/converters/physics_reference.py +41 -0
  174. ai_eval_scope-0.1.5/agent_eval/knowledge/exceptions.py +49 -0
  175. ai_eval_scope-0.1.5/agent_eval/knowledge/extractors/__init__.py +1 -0
  176. ai_eval_scope-0.1.5/agent_eval/knowledge/extractors/llm_extractor.py +152 -0
  177. ai_eval_scope-0.1.5/agent_eval/knowledge/extractors/parsers.py +25 -0
  178. ai_eval_scope-0.1.5/agent_eval/knowledge/manager.py +112 -0
  179. ai_eval_scope-0.1.5/agent_eval/knowledge/merger.py +115 -0
  180. ai_eval_scope-0.1.5/agent_eval/knowledge/models.py +109 -0
  181. ai_eval_scope-0.1.5/agent_eval/knowledge/pipeline.py +128 -0
  182. ai_eval_scope-0.1.5/agent_eval/knowledge/registry.py +119 -0
  183. ai_eval_scope-0.1.5/agent_eval/knowledge/sources/__init__.py +1 -0
  184. ai_eval_scope-0.1.5/agent_eval/knowledge/sources/eval_sources.py +121 -0
  185. ai_eval_scope-0.1.5/agent_eval/knowledge/sources/math_reference.py +193 -0
  186. ai_eval_scope-0.1.5/agent_eval/knowledge/sources/physics_reference.py +151 -0
  187. ai_eval_scope-0.1.5/agent_eval/knowledge/sources/table_sources.py +54 -0
  188. ai_eval_scope-0.1.5/agent_eval/llm/__init__.py +26 -0
  189. ai_eval_scope-0.1.5/agent_eval/llm/client.py +74 -0
  190. ai_eval_scope-0.1.5/agent_eval/llm/factory.py +69 -0
  191. ai_eval_scope-0.1.5/agent_eval/llm/judge/__init__.py +1 -0
  192. ai_eval_scope-0.1.5/agent_eval/llm/judge/file_prompt_store.py +70 -0
  193. ai_eval_scope-0.1.5/agent_eval/llm/judge/orchestrator.py +332 -0
  194. ai_eval_scope-0.1.5/agent_eval/llm/judge/prompt_store.py +69 -0
  195. ai_eval_scope-0.1.5/agent_eval/llm/judge/recorder.py +48 -0
  196. ai_eval_scope-0.1.5/agent_eval/llm/judge/stability.py +93 -0
  197. ai_eval_scope-0.1.5/agent_eval/llm/judge/structured_output.py +110 -0
  198. ai_eval_scope-0.1.5/agent_eval/llm/judge/template_manager.py +191 -0
  199. ai_eval_scope-0.1.5/agent_eval/llm/models.py +164 -0
  200. ai_eval_scope-0.1.5/agent_eval/llm/pool.py +58 -0
  201. ai_eval_scope-0.1.5/agent_eval/llm/providers/__init__.py +1 -0
  202. ai_eval_scope-0.1.5/agent_eval/llm/providers/anthropic.py +229 -0
  203. ai_eval_scope-0.1.5/agent_eval/llm/providers/openai_compat.py +230 -0
  204. ai_eval_scope-0.1.5/agent_eval/llm/tracing.py +144 -0
  205. ai_eval_scope-0.1.5/agent_eval/observability/__init__.py +12 -0
  206. ai_eval_scope-0.1.5/agent_eval/observability/client.py +170 -0
  207. ai_eval_scope-0.1.5/agent_eval/observability/config.py +111 -0
  208. ai_eval_scope-0.1.5/agent_eval/observability/events.py +222 -0
  209. ai_eval_scope-0.1.5/agent_eval/observability/queue.py +163 -0
  210. ai_eval_scope-0.1.5/agent_eval/observability/schemas/ingest.event.v1.json +159 -0
  211. ai_eval_scope-0.1.5/agent_eval/observability/sink.py +386 -0
  212. ai_eval_scope-0.1.5/agent_eval/observability/snapshot.py +87 -0
  213. ai_eval_scope-0.1.5/agent_eval/orchestrator/__init__.py +5 -0
  214. ai_eval_scope-0.1.5/agent_eval/orchestrator/orchestrator.py +697 -0
  215. ai_eval_scope-0.1.5/agent_eval/packages/__init__.py +42 -0
  216. ai_eval_scope-0.1.5/agent_eval/packages/assets.py +169 -0
  217. ai_eval_scope-0.1.5/agent_eval/packages/manager.py +105 -0
  218. ai_eval_scope-0.1.5/agent_eval/packages/manifest.py +122 -0
  219. ai_eval_scope-0.1.5/agent_eval/packages/remote_client.py +127 -0
  220. ai_eval_scope-0.1.5/agent_eval/packages/store.py +183 -0
  221. ai_eval_scope-0.1.5/agent_eval/reporting/__init__.py +5 -0
  222. ai_eval_scope-0.1.5/agent_eval/reporting/report_generator.py +402 -0
  223. ai_eval_scope-0.1.5/agent_eval/rules/__init__.py +1 -0
  224. ai_eval_scope-0.1.5/agent_eval/rules/models.py +272 -0
  225. ai_eval_scope-0.1.5/agent_eval/rules/template.py +79 -0
  226. ai_eval_scope-0.1.5/agent_eval/rules/validation.py +83 -0
  227. ai_eval_scope-0.1.5/agent_eval/sdk/__init__.py +7 -0
  228. ai_eval_scope-0.1.5/agent_eval/sdk/rules.py +120 -0
  229. ai_eval_scope-0.1.5/agent_eval/storage/__init__.py +1 -0
  230. ai_eval_scope-0.1.5/agent_eval/storage/builder.py +317 -0
  231. ai_eval_scope-0.1.5/agent_eval/storage/collector.py +204 -0
  232. ai_eval_scope-0.1.5/agent_eval/storage/package.py +352 -0
  233. ai_eval_scope-0.1.5/agent_eval/storage/workspace.py +186 -0
  234. ai_eval_scope-0.1.5/pyproject.toml +148 -0
  235. ai_eval_scope-0.1.5/report/mypy-results.xml +5 -0
  236. ai_eval_scope-0.1.5/report/ruff-results.xml +7 -0
  237. ai_eval_scope-0.1.5/report/test-results.xml +1 -0
  238. ai_eval_scope-0.1.5/tests/__init__.py +1 -0
  239. ai_eval_scope-0.1.5/tests/config/test_evaluation_config.py +127 -0
  240. ai_eval_scope-0.1.5/tests/config/test_execution_config.py +66 -0
  241. ai_eval_scope-0.1.5/tests/config/test_llm_config.py +146 -0
  242. ai_eval_scope-0.1.5/tests/config/test_reporting_config.py +25 -0
  243. ai_eval_scope-0.1.5/tests/conftest.py +230 -0
  244. ai_eval_scope-0.1.5/tests/e2e/__init__.py +1 -0
  245. ai_eval_scope-0.1.5/tests/e2e/test_eval_e2e.py +321 -0
  246. ai_eval_scope-0.1.5/tests/evaluation/test_vision_renderer.py +210 -0
  247. ai_eval_scope-0.1.5/tests/evaluators/__init__.py +1 -0
  248. ai_eval_scope-0.1.5/tests/evaluators/test_cascade_metrics.py +252 -0
  249. ai_eval_scope-0.1.5/tests/evaluators/test_cascade_vision_integration.py +176 -0
  250. ai_eval_scope-0.1.5/tests/evaluators/test_format_and_commonsense.py +1004 -0
  251. ai_eval_scope-0.1.5/tests/evaluators/test_format_evaluators.py +106 -0
  252. ai_eval_scope-0.1.5/tests/evaluators/test_llm_judge_evaluators.py +543 -0
  253. ai_eval_scope-0.1.5/tests/evaluators/test_quality_evaluators.py +674 -0
  254. ai_eval_scope-0.1.5/tests/evaluators/test_vision_evaluator.py +267 -0
  255. ai_eval_scope-0.1.5/tests/fixtures/__init__.py +1 -0
  256. ai_eval_scope-0.1.5/tests/fixtures/configs/invalid_rule_set.yaml +7 -0
  257. ai_eval_scope-0.1.5/tests/fixtures/configs/rule_set.yaml +31 -0
  258. ai_eval_scope-0.1.5/tests/fixtures/configs/task_set.yaml +32 -0
  259. ai_eval_scope-0.1.5/tests/fixtures/golden/commonsense_error/output/index.md +26 -0
  260. ai_eval_scope-0.1.5/tests/fixtures/golden/directory_sample/M1 /345/244/247/345/215/225/345/205/203/346/246/202/350/277/260//345/244/247/345/215/225/345/205/203/346/246/202/350/277/260//345/273/272/346/236/204/346/200/247/345/257/274/345/255/246//345/273/272/346/236/204/346/200/247/345/257/274/345/255/246.html" +5 -0
  261. ai_eval_scope-0.1.5/tests/fixtures/golden/directory_sample/M1 /345/244/247/345/215/225/345/205/203/346/246/202/350/277/260//345/244/247/345/215/225/345/205/203/346/246/202/350/277/260//346/225/264/344/275/223/345/256/232/344/275/215//346/225/264/344/275/223/345/256/232/344/275/215.html" +5 -0
  262. ai_eval_scope-0.1.5/tests/fixtures/golden/directory_sample/M2 /345/255/246/344/271/240/346/226/260/347/237/245//346/226/260/347/237/245/346/216/242/347/264/242//346/267/261/345/272/246/347/220/206/350/247/243//346/267/261/345/272/246/347/220/206/350/247/243.html" +5 -0
  263. ai_eval_scope-0.1.5/tests/fixtures/golden/directory_sample/M2 /345/255/246/344/271/240/346/226/260/347/237/245//346/226/260/347/237/245/346/216/242/347/264/242//347/237/245/350/257/206/345/274/225/345/205/245//347/237/245/350/257/206/345/274/225/345/205/245.html" +5 -0
  264. ai_eval_scope-0.1.5/tests/fixtures/golden/valid_docset/output/chapter_01.md +20 -0
  265. ai_eval_scope-0.1.5/tests/fixtures/golden/valid_docset/output/index.md +39 -0
  266. ai_eval_scope-0.1.5/tests/fixtures/prompts/test_template.yaml +19 -0
  267. ai_eval_scope-0.1.5/tests/golden/__init__.py +1 -0
  268. ai_eval_scope-0.1.5/tests/integration/__init__.py +1 -0
  269. ai_eval_scope-0.1.5/tests/integration/test_observability_e2e.py +168 -0
  270. ai_eval_scope-0.1.5/tests/llm/__init__.py +1 -0
  271. ai_eval_scope-0.1.5/tests/llm/conftest.py +31 -0
  272. ai_eval_scope-0.1.5/tests/llm/test_anthropic_client.py +158 -0
  273. ai_eval_scope-0.1.5/tests/llm/test_client.py +87 -0
  274. ai_eval_scope-0.1.5/tests/llm/test_factory.py +76 -0
  275. ai_eval_scope-0.1.5/tests/llm/test_judge_orchestrator_vision.py +139 -0
  276. ai_eval_scope-0.1.5/tests/llm/test_models.py +229 -0
  277. ai_eval_scope-0.1.5/tests/llm/test_openai_compat_client.py +169 -0
  278. ai_eval_scope-0.1.5/tests/llm/test_orchestrator.py +398 -0
  279. ai_eval_scope-0.1.5/tests/llm/test_pool.py +125 -0
  280. ai_eval_scope-0.1.5/tests/llm/test_prompt_store.py +88 -0
  281. ai_eval_scope-0.1.5/tests/llm/test_recorder.py +99 -0
  282. ai_eval_scope-0.1.5/tests/llm/test_stability.py +132 -0
  283. ai_eval_scope-0.1.5/tests/llm/test_structured_output.py +123 -0
  284. ai_eval_scope-0.1.5/tests/llm/test_template_manager.py +160 -0
  285. ai_eval_scope-0.1.5/tests/llm/test_tracing.py +298 -0
  286. ai_eval_scope-0.1.5/tests/orchestrator/__init__.py +0 -0
  287. ai_eval_scope-0.1.5/tests/orchestrator/conftest.py +84 -0
  288. ai_eval_scope-0.1.5/tests/orchestrator/test_eval_flow.py +423 -0
  289. ai_eval_scope-0.1.5/tests/orchestrator/test_orchestrator.py +493 -0
  290. ai_eval_scope-0.1.5/tests/reporting/__init__.py +0 -0
  291. ai_eval_scope-0.1.5/tests/reporting/test_report_generator.py +491 -0
  292. ai_eval_scope-0.1.5/tests/unit/__init__.py +1 -0
  293. ai_eval_scope-0.1.5/tests/unit/test_agent_module.py +124 -0
  294. ai_eval_scope-0.1.5/tests/unit/test_agent_protocol_channel.py +291 -0
  295. ai_eval_scope-0.1.5/tests/unit/test_anthropic_provider.py +64 -0
  296. ai_eval_scope-0.1.5/tests/unit/test_callbacks.py +81 -0
  297. ai_eval_scope-0.1.5/tests/unit/test_capability.py +107 -0
  298. ai_eval_scope-0.1.5/tests/unit/test_chat_evaluators.py +200 -0
  299. ai_eval_scope-0.1.5/tests/unit/test_cli_auth.py +340 -0
  300. ai_eval_scope-0.1.5/tests/unit/test_cli_commands.py +552 -0
  301. ai_eval_scope-0.1.5/tests/unit/test_cli_console.py +156 -0
  302. ai_eval_scope-0.1.5/tests/unit/test_cli_dataset.py +54 -0
  303. ai_eval_scope-0.1.5/tests/unit/test_cli_llm_check.py +88 -0
  304. ai_eval_scope-0.1.5/tests/unit/test_cli_pack.py +53 -0
  305. ai_eval_scope-0.1.5/tests/unit/test_cli_pipeline.py +172 -0
  306. ai_eval_scope-0.1.5/tests/unit/test_cli_run.py +243 -0
  307. ai_eval_scope-0.1.5/tests/unit/test_cli_run_mode.py +51 -0
  308. ai_eval_scope-0.1.5/tests/unit/test_cli_secrets.py +130 -0
  309. ai_eval_scope-0.1.5/tests/unit/test_cli_stages.py +164 -0
  310. ai_eval_scope-0.1.5/tests/unit/test_cli_workbench.py +492 -0
  311. ai_eval_scope-0.1.5/tests/unit/test_collector.py +150 -0
  312. ai_eval_scope-0.1.5/tests/unit/test_config_loader.py +104 -0
  313. ai_eval_scope-0.1.5/tests/unit/test_content_completeness.py +220 -0
  314. ai_eval_scope-0.1.5/tests/unit/test_core_types.py +159 -0
  315. ai_eval_scope-0.1.5/tests/unit/test_data_models.py +444 -0
  316. ai_eval_scope-0.1.5/tests/unit/test_env_file.py +47 -0
  317. ai_eval_scope-0.1.5/tests/unit/test_execution_agent.py +450 -0
  318. ai_eval_scope-0.1.5/tests/unit/test_judge_coerce.py +31 -0
  319. ai_eval_scope-0.1.5/tests/unit/test_judge_dim_details.py +65 -0
  320. ai_eval_scope-0.1.5/tests/unit/test_knowledge_auditor.py +183 -0
  321. ai_eval_scope-0.1.5/tests/unit/test_knowledge_manager.py +98 -0
  322. ai_eval_scope-0.1.5/tests/unit/test_llm_config_file.py +184 -0
  323. ai_eval_scope-0.1.5/tests/unit/test_logging.py +29 -0
  324. ai_eval_scope-0.1.5/tests/unit/test_model_bridge.py +102 -0
  325. ai_eval_scope-0.1.5/tests/unit/test_observability_config_client_queue.py +109 -0
  326. ai_eval_scope-0.1.5/tests/unit/test_observability_events.py +130 -0
  327. ai_eval_scope-0.1.5/tests/unit/test_observability_sink.py +55 -0
  328. ai_eval_scope-0.1.5/tests/unit/test_package.py +40 -0
  329. ai_eval_scope-0.1.5/tests/unit/test_package_agent.py +690 -0
  330. ai_eval_scope-0.1.5/tests/unit/test_package_assets.py +68 -0
  331. ai_eval_scope-0.1.5/tests/unit/test_package_builder.py +343 -0
  332. ai_eval_scope-0.1.5/tests/unit/test_packages.py +239 -0
  333. ai_eval_scope-0.1.5/tests/unit/test_platform_file.py +80 -0
  334. ai_eval_scope-0.1.5/tests/unit/test_plugin_discovery.py +80 -0
  335. ai_eval_scope-0.1.5/tests/unit/test_protocol_tools.py +157 -0
  336. ai_eval_scope-0.1.5/tests/unit/test_quality_evaluator_details.py +81 -0
  337. ai_eval_scope-0.1.5/tests/unit/test_remote_client.py +137 -0
  338. ai_eval_scope-0.1.5/tests/unit/test_rule_sdk.py +119 -0
  339. ai_eval_scope-0.1.5/tests/unit/test_scenario_aggregation.py +225 -0
  340. ai_eval_scope-0.1.5/tests/unit/test_scenario_packaging.py +224 -0
  341. ai_eval_scope-0.1.5/tests/unit/test_secrets.py +110 -0
  342. ai_eval_scope-0.1.5/tests/unit/test_session.py +107 -0
  343. ai_eval_scope-0.1.5/tests/unit/test_sink_artifacts.py +142 -0
  344. ai_eval_scope-0.1.5/tests/unit/test_source_files_attribution.py +164 -0
  345. ai_eval_scope-0.1.5/tests/unit/test_sut_auth.py +368 -0
  346. ai_eval_scope-0.1.5/tests/unit/test_sut_registry.py +154 -0
  347. ai_eval_scope-0.1.5/tests/unit/test_sut_tools.py +298 -0
  348. ai_eval_scope-0.1.5/tests/unit/test_task_builder.py +87 -0
  349. ai_eval_scope-0.1.5/tests/unit/test_task_selection.py +132 -0
  350. ai_eval_scope-0.1.5/tests/unit/test_thread_commands.py +270 -0
  351. ai_eval_scope-0.1.5/tests/unit/test_workspace.py +100 -0
  352. ai_eval_scope-0.1.5/uv.lock +3508 -0
Binary file
@@ -0,0 +1,79 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .eggs/
9
+
10
+ # Virtual environment
11
+ .venv/
12
+
13
+ # Environment variables & secrets (never commit)
14
+ .env
15
+ .secret
16
+
17
+ # User LLM config (contains API keys)
18
+ llm_config.yaml
19
+
20
+ # IDE
21
+ .idea/
22
+ .vscode/
23
+
24
+ # Claude Code:团队共享配置(agents/commands/hooks/skills)入库。
25
+ # ~/.gitignore_global 的 *.md 会连带忽略 .claude 下文档,故先重新包含整个 .claude,
26
+ # 再在最后显式排除个人本地设置 settings.local.json(gitignore 后置规则生效)。
27
+ !.claude/
28
+ !.claude/**
29
+ .claude/settings.local.json
30
+ *.swp
31
+ *.swo
32
+
33
+ # Testing
34
+ .pytest_cache/
35
+ htmlcov/
36
+ .coverage
37
+ coverage.xml
38
+
39
+ # Runtime data (not version controlled)
40
+ workspace/
41
+ /packages/
42
+
43
+ # OS
44
+ .DS_Store
45
+ Thumbs.db
46
+ *.zip
47
+
48
+ # Ruff
49
+ .ruff_cache/
50
+
51
+ # mypy
52
+ .mypy_cache/
53
+
54
+ # Web Portal (Node.js build artifacts)
55
+ web/backend/node_modules/
56
+ web/frontend/node_modules/
57
+ web/frontend/dist/
58
+ web/backend/public/
59
+
60
+ # Prisma 项目根污染:schema.prisma 迁至 db/web/prisma/ 后,prisma generate 会把仓库根
61
+ # 推断为项目根并在此安装 @prisma/client/prisma(node_modules + package.json)。
62
+ # 这是 Prisma 的推断副作用,非本项目依赖,勿入库。详见 db/README.md。
63
+ /package.json
64
+ /package-lock.json
65
+ /node_modules/
66
+
67
+ # 可观测平台离线摄取队列(运行期产物)
68
+ .ingest_queue/
69
+
70
+ # llm_config.yaml 不落根目录(防明文 key 入库)
71
+ /llm_config.yaml
72
+ # evaluator 包内默认配置:仅 ${VAR} 引用、无明文 key,入库供 CI 构建使用(参考 .example.yaml)
73
+ !evaluator/agent_eval/assets/configs/llm_config.yaml
74
+ # 部分协作者 ~/.gitignore_global 含宽泛 `datasets`(数据科学习惯),会误伤包源码
75
+ # 目录 evaluator/agent_eval/datasets/(仓库规则优先级高于全局 excludesFile,重新包含)
76
+ !evaluator/agent_eval/datasets/
77
+ !evaluator/agent_eval/datasets/**
78
+ *.env.local
79
+
@@ -0,0 +1,443 @@
1
+ ## v0.1.5 (2026-09-01)
2
+
3
+ ### Fix
4
+
5
+ - **lint**: manager.py import 排序(I001)+ test_eval_flow 格式收编——Jenkins #7 UNSTABLE 根因
6
+
7
+ ## v0.1.4 (2026-09-01)
8
+
9
+ ### Fix
10
+
11
+ - **types**: 全量清偿 mypy 债——94 错/49 文件归零(真修,非 ignore)
12
+
13
+ ## v0.1.3 (2026-09-01)
14
+
15
+ ### Fix
16
+
17
+ - **test**: 桩掉 SDK 测试 LLM Judge——杜绝真实联网挂死(禁止联网红线)
18
+ - **test**: 陈旧断言修复——llm_provider→llm_role 改名 + SDK 1.0+ 采样参数门控
19
+
20
+ ### Perf
21
+
22
+ - **test**: 测试提速三件套——缓存共享 + xdist 并行 + 单测超时兜底
23
+
24
+ ## v0.1.2 (2026-09-01)
25
+
26
+ ### Fix
27
+
28
+ - **test**: 清理 tests/config 两处陈旧断言——发布流水线全量门禁暴露
29
+ - **ci**: tag 检出段补 git 凭证——裸 fetch 无认证致 128
30
+
31
+ ## v0.1.1 (2026-09-01)
32
+
33
+ ### Feat
34
+
35
+ - **cli**: 新增 --version 旗标(eager,发布冒烟口令)
36
+ - **eval**: sut_config 支持 ${VAR:-默认值} env 展开——内置包域名占位化
37
+ - **cli**: secrets 执行前缺失自动补录——交互引导落盘后继续执行
38
+ - **cli**: Sprint 11 auth 组——平台账号四命令 + whoami 身份端点
39
+ - **cli**: 工作台 SUT 凭证交互向导——查看/录入/删除全流程不再只有提示
40
+ - **cli**: Agent 生成包默认落 workspace/scenario-packages——不散落仓库目录
41
+ - **cli**: 场景包第三来源 project——Agent 生成的包归位即被发现可执行
42
+ - **cli**: scenario new --mode agent 包名后置——Agent 按需求拟定引用
43
+ - **cli**: PackageAgent 流式直播——工作过程 claude code 式实时可见
44
+ - **cli**: PackageAgent 场景包 REPL 改包——scenario new --mode agent / edit
45
+ - **cli**: Sprint 10 收尾——执行进度视图 + --json 覆盖 run/pipeline/eval
46
+ - **cli**: 查看类命令无参进入交互选择——scenario show / runs show / open report
47
+ - **cli**: Sprint 10 P0——CLI 工作台骨架与命令体系重构
48
+ - **executor**: 领取任务即重签输入下载 URL——修排队拖过期 presigned URL 403
49
+ - **web**: 新增 GET /api/v1/jobs/:jobId/input-url——executor 领取即重签输入下载 URL
50
+ - **evaluator**: Sprint 9 一体化——pipeline 命令、_stages 编排收敛与过程指标落地
51
+ - **web**: 配置中心与编辑器适配考卷/SUT 接入——tabs、树、SUT 表单与只读详情
52
+ - **web**: task-sets/sut-configs 资产端点——ASSET_KINDS 扩展、catalog 聚合与发布校验
53
+ - **cli**: --task 任务选择机制——glob / 逗号 / 范围 / 排除(pytest 风格)
54
+ - **chat**: 任务集扩充至 15 用例——基础能力 7 + 安全 8(教育场景)
55
+ - **chat**: expected.reference 答案语义一致性评估(ANS_CONSIST)
56
+ - **evaluator**: W8 执行包内容指纹 + workspace 分区收敛(arch/16 §六-P2)
57
+ - **evaluator**: W6 绑定显式化 + suite 声明式评测矩阵(arch/16 §五)
58
+ - **evaluator**: W7 执行包归位 run_id + 运行清单登记(arch/16 §三/§五)
59
+ - **evaluator**: W5 会话目录迁移 workspace——评测状态单一聚集(arch/16 §三)
60
+ - W3+W4 平台 Secrets(org 级 KV,GitHub Secrets 式)+ executor 启动注入
61
+ - W1 包资产合并——考卷与 SUT 接入内嵌场景包(arch/16 §2.1)
62
+ - **evaluator**: secrets 命令与本机密钥区文件源(W2,arch/16 §2.2)
63
+ - **web**: LlmModel 角色列 + /api/public/llm-config 执行面拉取,移除 export-yaml(LLM③)
64
+ - **evaluator**: LLM 消费点全量切换角色注册表,llm_config.yaml 链路一次性移除(LLM②)
65
+ - **evaluator**: agent-eval models 交互式配置与 llm.json 角色解析(LLM①,纯新增)
66
+ - **evaluator**: chat 场景内置包与专属评估器(对话型 SUT,arch/14)
67
+ - **evaluator**: 执行链对话型任务支撑——SUT 回答物化 answer.md 与 expected 进评估上下文
68
+ - **evaluator**: 语义工具面 tool_guard 护栏(通道异常不炸图)
69
+ - **evaluator**: Agent Protocol commands 形态通道(arch/03 §4.0.6-i v4.6.3)
70
+ - **evaluator**: ExecutionAgent 支持追加工具注册表并接通 CLI run(arch/03 Phase B)
71
+ - **evaluator**: AgentProtocolChannel 与语义工具面(arch/03 §4.0.6)
72
+ - **evaluator**: SUT 鉴权架构与 sut_config v2 多系统注册表(arch/03 §4.0)
73
+ - **evaluator**: ExecutionAgent 基于 DeepAgents 底座端到端装配(Phase A)
74
+ - **evaluator**: SessionLogger 结构化日志、LangGraph 回调与 WorkspaceCheckpointer
75
+ - **evaluator**: SUTToolServer 演进为工具注册表并实现七个 SUT 工具
76
+ - **evaluator**: AgentConfig v4.6 模型无关化与 llm_config 双协议桥接
77
+ - **web**: eval_jobs.rule_set_id 列默认与 MCP 描述对齐 coursework-vision
78
+ - **executor**: HTTP 缺省 rule_set_id 默认取包清单 default_rule_set(coursework-vision)
79
+ - **evaluator**: 新增 format.content_completeness 内容完整性硬门控
80
+ - **jobs**: add REST endpoint POST /api/v1/jobs/request-upload for large file presigned PUT
81
+ - **llm**: PromptStore 抽象 + FilePromptStore,JudgeOrchestrator 切换(Phase 1)
82
+ - **web**: overview 聚合 module_results(第三方速览看模块归因)
83
+ - **eval**: max_modules 保护(模块超限合并,防 LLM 调用爆炸)
84
+ - **eval**: 大单元按模块评估 + module_results 归因 + content_diversity 媒体 bug 修复
85
+ - **web**: Webhook 配置面板 + 投递历史 + 详情 Dialog
86
+ - **backend**: Webhook 回调机制 + 投递历史 + 项目级配置
87
+ - **mcp**: 新增 list_packages 工具并补全 submit 字段描述
88
+ - **web**: 场景包导入通用化 + 多场景 UI 适配
89
+ - **evaluator**: 新增 code-generation 场景(correctness + style LLM Judge)
90
+ - **web**: 场景化指标 dict 适配 + catalog 暴露 packages + packageRef 显式化
91
+ - **web**: S3-2 前端 defaults 编辑器接入 VersionTimeline(与其他资产一致)
92
+ - **web**: S3-2 场景级 defaults 版本化(不可变版本 + 草稿隔离)
93
+ - **evaluator**: HTTP 包拉取客户端 + 运行快照记录真实版本
94
+ - **executor**: 按 package_ref 解析规则集,历史任务拒绝,删除 _BUILTIN
95
+ - **web**: eval_jobs 携带 package_ref 并经 SCF 透传
96
+ - **web**: 配置中心权限控制 + 文档引用归并
97
+ - **web**: RunDetail 展示 LLM 摘要报告
98
+ - **backend**: 摄取并透出 summary_report 与 overview 速览
99
+ - **evaluator**: 评估完成后用 LLM 生成摘要报告
100
+ - **web**: LLM 配置管理页与配置资产 AI 生成接线
101
+ - **web**: 后台 LLM 模型配置与配置资产 AI 生成后端
102
+ - **web**: 配置完整度面板移入右侧时间线侧边栏并统一 sticky 滚动
103
+ - **web**: 统一场景包编辑器,收敛双编辑器并统一草稿/导航/新建语义
104
+ - **web**: 规则字段对齐持久化 schema 并补齐区块卡片内容区
105
+ - **evaluator**: 规则层引入 method 声明式评估方式与条件化绑定
106
+ - **web**: 场景包/资产编辑器画布与本地草稿管理
107
+ - **web**: 配置资产表单引导式重构(规则卡/提示词/数据集)
108
+ - **web**: 配置编辑器通用组件与输入控件视觉统一
109
+ - **design**: 编辑器原型表单引导式重构与字段说明优化
110
+ - **web**: 接入新表单组件并统一输入控件视觉层级
111
+ - **web**: 场景包编辑器表单重构与字段层级优化
112
+ - **backend**: 支持编辑场景默认指标定义与聚合策略
113
+ - **web**: 场景包创建向导实现(AI 占位 + 8 步向导)
114
+ - **web**: 场景包编辑器 — 统一树导航 + 编辑面板 + 版本时间线
115
+ - **web**: 配置中心表格行增加显式「编辑」按钮入口
116
+ - **web**: Phase 4 专用配置编辑器(RuleSet/Prompt/Dataset 表单 + 版本 diff)
117
+ - **web**: 评测规则浏览器 — 完整查看规则集/提示词/参考数据/聚合策略/指标定义
118
+ - 恢复指标 ? explain 提示(动态化、定义驱动,可选)
119
+ - **web**: Phase 5 Admin/Dashboard 指标从 metrics 读取(P5-5 推进)
120
+ - **evaluator**: eval 接入 --package 场景包解析 + upload 走 build_run_event
121
+ - **web**: Phase 5 ProjectDetail/DebugPage 指标动态化(P5-5 推进)
122
+ - **web**: Phase 5 项目级默认指标定义(COURSEWARE_DEFAULT_METRIC_DEFS)
123
+ - **web**: Phase 5 可观测指标动态化地基 + RunDetail 快照(P5-4/5/6/7)
124
+ - **web**: Phase 5 后端存储/服务 RunConfigSnapshot(P5-2/3)
125
+ - **evaluator**: Phase 5 运行期生成 RunConfigSnapshot(P5-1)
126
+ - **web**: Phase 4 资产编辑器 + 版本时间线(前端)
127
+ - **web**: Phase 4 asset 级发布端点 + 版本/标签晋升
128
+ - **web**: Phase 4 配置中心前端 — 场景 catalog 可视化 + 包发布
129
+ - **web**: Phase 3 第三方对接联动 rule_set_id→package_id 动态化
130
+ - **web**: Phase 3 课程场景包资产导入脚本(文件→DB)
131
+ - **web**: Phase 3 场景包发布 API(POST /scenarios/:id/packages,platform admin)
132
+ - **web**: Phase 3 一次性历史指标迁移脚本(无 fallback)
133
+ - **web**: Phase 3 动态 catalog API(/api/v1/scenarios/:id/catalog)
134
+ - **web**: Phase 3 配置数据层 — 场景包模型 + metrics JSONB + 摄取动态化
135
+ - **evaluator**: Phase 2 本地场景包结构与 package CLI
136
+ - **evaluator**: Phase 1 场景化聚合与指标数据化(等价复刻)
137
+ - **evaluator**: Phase 0 模型扩展与资产标记 scenario_id/package_id
138
+ - **web**: 速览 failures 加文件定位 + chip 体验打磨(docs/arch/15 P3)
139
+ - **evaluator**: logical/chronological 升级对象 schema 补全 C 档文件定位(docs/arch/15)
140
+ - **evaluator**: soft/pref LLM involved_files 标注定位文件(docs/arch/15 P2)
141
+ - **web**: 样本详情扣分项文件 chip 联动预览(docs/arch/15 P0)
142
+ - **evaluator**: 评估器产出 source_files 文件定位(docs/arch/15 P1)
143
+ - **web**: 文档页 TOC 支持三级标题 + 正文区加宽
144
+ - **web**: MCP 配置说明页 + .zip 文件类型校验
145
+ - **web**: MCP 接入(6 工具,同 Key 同功能,doc 12 §3.7 v4.0)
146
+ - **web**: 质量/速览展示逐维度扣分(DimensionBreakdown + top_issues)
147
+ - **eval**: 质量 LLM 判官逐维度扣分透传(dim_details)
148
+ - **web**: 限额错误码——POST /jobs 接入限流 + 429 规范体
149
+ - **web**: 评测速览端点 + 公开项目免登录/iframe 嵌入
150
+ - **executor**: 拆分评测执行为 SCF 事件函数镜像,gateway 合并至 web
151
+ - **web**: 调试台规则集下拉改为动态拉取 gateway 目录,展示派生能力徽标
152
+ - **gateway**: 规则集一等资源 + 提交时能力守卫与执行透明度(docs/arch/13)
153
+ - **evaluator**: 能力派生 CapabilityResolver,规则集自描述所需基础设施能力(docs/arch/13)
154
+ - **gateway**: 接入多模态视觉评估(opt-in EVALGATEWAY_ENABLE_VISION)
155
+ - **web**: 调试台归属改为由 API Key 决定,移除 project_id 入参
156
+ - **gateway**: 提交响应回传 project_id/org_id(由 API Key tenant 解析)
157
+ - **web/frontend**: 调试台移除 Demo 项目预置默认值
158
+ - **web**: 鉴权简化为单一长效 access token,移除 refresh 机制
159
+ - **web/backend**: 调试台移除 owner 守卫并改为必填 api_key
160
+ - **web/frontend**: 调试台对所有登录用户开放并预置 Demo 项目参数
161
+ - **web/frontend**: 落地页增加样本详情预览并同步五维指标
162
+ - **web/frontend**: 调试台日志补全请求结构明细
163
+ - **web**: 调试台展示 gateway 请求/响应明细
164
+ - **web**: 调试台支持指定 API Key 提交 gateway
165
+ - **gateway**: 评估结果按提交者 API Key 归属回传
166
+ - **web/frontend**: 新增产品落地页与第三方接入 API 文档页
167
+ - **web/frontend**: 新增 CRT 扫描线背景纹理
168
+ - **web/frontend**: 超管后台补齐删除/编辑与防抖过滤
169
+ - **web/frontend**: DataTable 行选择、Checkbox 半选态与 useDebounce hook
170
+ - **web/backend**: 超管跨租户删除用户/项目/运行/产出物与姓名编辑
171
+ - **web/frontend**: 侧边栏展示 Logo 与应用版本号
172
+ - **eval**: LLM 配置统一 KIMI_API_KEY,llm_config.yaml 入库供 CI 构建
173
+ - **web**: 平台超级管理员后台(前端)
174
+ - **web**: 平台超级管理员后台(后端)
175
+ - **web**: 调试台透传 task_id/task_title 至 gateway
176
+ - **gateway**: 任务字段透传 task_id/title/subject
177
+ - **web**: 新增 /debug 调试台经 gateway 代理提交评估
178
+ - **gateway**: 新增 eval-gateway 第三方对接服务
179
+ - **evaluator**: InfoAccuracy reason 列出经 LLM 确认的具体错误描述
180
+ - Reward 归一化到 [0,1] + avg_soft/avg_pref 独立指标(全栈)
181
+ - **web**: 样本级走势(项目样本清单 + 单样本跨 run 指标时序)
182
+ - 样本内容指纹(content_hash)+ 运行规则集版本溯源(全栈)
183
+ - **web/frontend**: Dashboard 创建者展示、指标文案优化、样本问题结构化展示
184
+ - **web**: 项目/运行永久删除(DB 级联 + 对象存储回收 + owner 审计)
185
+ - **evaluator**: pack 覆盖语义 + 孤儿文件检测,防评估数据污染
186
+ - **evaluator**: InfoAccuracy 规则误报经 LLM 二次确认(fact_verdict),降低正则误报
187
+ - **web/frontend**: 新增 Dropdown 通用组件
188
+ - **web**: 团队中心模型 — 注册不再自动建 Org,新增团队创建/加入申请/审批全链路
189
+ - **web**: 登录/注册页拆分 + SSO Tab + SquadSight 视觉复刻
190
+ - **auth**: 接入 SAML SSO 登录(光华 IdP)
191
+ - **web**: Logo 展示版本号,Jenkins 构建号注入(a.b.c.<BUILD>)
192
+ - **web**: 前端移除「组织」概念,简化为注册→建项目→评测流程
193
+ - **cicd**: 新增 Web 流水线(Jenkinsfile.web + Node.js/Docker 构建脚本)
194
+ - **knowledge**: 新增 misconception pattern 质量审计工具(audit CLI + 行级删除)
195
+ - **evaluation**: PR-3 后续 — 重试/熔断/llm_skipped 统计
196
+ - **evaluation**: LLM 异常分级与 SKIP 处理
197
+ - **cli**: eval 增加 --require-llm 与 LLM 可用性预检
198
+ - **knowledge**: morality 知识点补充(misconceptions +920,domain_facts +23)
199
+ - **knowledge**: history misconceptions 补充(cmmlu +1367)
200
+ - **knowledge**: geography misconceptions 补充(cmmlu high_school_geography +334)
201
+ - **knowledge**: chinese 知识点补充(misconceptions +1503,domain_facts +28+14)
202
+ - **knowledge**: math 单位换算补充(constants +22)
203
+ - **knowledge**: math 公式与常数补充(math_formulas +17,constants +3)
204
+ - **knowledge**: biology 知识点补充(misconceptions +397,domain_facts +25)
205
+ - **knowledge**: physics 知识点补充(constants +16,domain_facts +26)
206
+ - **knowledge**: physics misconceptions 全量增强(arc 59 + cmmlu 691 → 766 条)
207
+ - **knowledge**: chemistry 全量知识点增强(constants 119 + misconceptions 378 + domain_facts 30 元素)
208
+ - **knowledge**: chemistry constants 扩充至 119 条(周期表 116 条合并)
209
+ - **cli**: 新增 knowledge 子命令组(convert/extract/merge/list)
210
+ - **knowledge-pipeline**: 知识点完善管道系统(ABC+注册+CLI)
211
+ - **knowledge**: cmmlu adapter + constants 提取通用化 + constants prompt
212
+ - **knowledge**: 知识点提取试点(arc 解析 + LLM misconceptions 提取)
213
+ - **datasets**: 索引补充 openbookqa + knowledge_mapping 字段(供知识点提取)
214
+ - **datasets**: 新增数据集索引与 `agent-eval dataset list` 子命令
215
+ - **datasets**: 新增评测数据集下载能力(HuggingFace/ModelScope)
216
+ - **observability**: 对象存储 presigned URL 支持对外端点
217
+ - **web**: 样本详情页支持源文件在线预览与约束详情展开
218
+ - **observability**: 上传源文件并新增制品预览端点
219
+ - **web**: rebuild React frontend for observability platform (Sprint 7f frontend)
220
+ - **web**: add Query API with runs list, trends, dashboard and artifact download (Sprint 7f backend)
221
+ - **observability**: add Python ResultSink for evaluation result upload (Sprint 7e)
222
+ - **web**: add Ingest API for evaluation result ingestion (Sprint 7d)
223
+ - **web**: restructure backend to TypeScript layered architecture with Prisma ORM
224
+ - **web**: React frontend for Web Portal
225
+ - **web**: Express backend API for Web Portal
226
+ - **reporting**: parse formula/arithmetic error items into structured markdown
227
+ - **web**: Python Web Portal integration with workspace indexer and CLI commands
228
+ - **evaluators+sdk**: 插件评估器自动发现机制与 Python SDK 公共接口
229
+ - **knowledge**: 知识库管理器 — KnowledgeBaseManager 与事实验证评估器重构
230
+ - **execution**: 任务集构建器 — TaskSetBuilder 模板批量生成
231
+ - **rules**: 规则集版本管理与 CLI 命令 — RuleSetManager + agent-eval rule 子命令
232
+ - **rules**: 规则模板系统 — RuleTemplate 模型、TemplateResolver、语义校验器
233
+ - **judge,evaluators**: JudgeOrchestrator 与评估器透传运行 trace_id
234
+ - **orchestrator**: eval_only 创建运行级 Langfuse trace
235
+ - **tracing**: create_trace 使用 UUID,新增 create_span 支持子 trace
236
+ - **vision**: VisionEvaluator 改为逐文档评分,JudgeOrchestrator 支持 judge_id_suffix
237
+ - **vision**: VisionEvaluator 改为逐文档评分,JudgeOrchestrator 支持 judge_id_suffix
238
+ - **evaluation**: Sprint 6 多模态视觉评估(VisionEvaluator + 截图渲染)
239
+ - **llm**: 正名 OpenAI 兼容客户端,新增 Anthropic Provider
240
+ - **engine**: PipelineEngine 支持 RuleSet 参数覆盖评估器默认配置
241
+ - **cli**: 新增 pack 命令,替代 scripts/eval_sample.py 脚本
242
+ - **llm**: LLM Judge 可解释性增强(维度详情、评价总结、报告渲染)
243
+ - **evaluators**: 逻辑一致性重构为具名变量检查,新增公式规范化器
244
+ - **reporting**: 报告渲染新增 details 展开块与 reason 截断放宽
245
+ - **evaluators**: 知识准确性三层检查架构与学科知识库
246
+ - **llm**: 集成 Langfuse LLM 调用追踪与可观测性
247
+ - **prompts**: Prompt 模板新增 JSON 格式约束指令,提升结构化输出稳定性
248
+ - **config**: 集成 python-dotenv 自动加载 .env 环境变量
249
+ - **config**: 新增评估配置模板与验收脚本
250
+ - Sprint 5 编排调度与报告(eval-only 模式端到端贯通)
251
+ - Sprint 4 评估引擎 LLM Judge 实现(17 项评估器全部就绪)
252
+ - Sprint 3 LLM 模块实现(Provider 抽象层 + LLM Judge 基础设施)
253
+ - Sprint 2 评估引擎 Rule-based 实现(10 项评估器 + 聚合 + 测试)
254
+ - 完成首批代码实现(Agent/Storage/CLI/Config/Tests)
255
+ - **data**: 数据模型层(执行/评估/规则)
256
+ - **core**: 项目脚手架与核心模块
257
+
258
+ ### Fix
259
+
260
+ - **cli**: 补录提示被进度转轮刷掉——挂点移至命令层进度启动前
261
+ - **cli**: auth 粘贴空回车不再 traceback——空输入即取消 + 非 2xx 统一归类
262
+ - **cli**: 执行凭证预检 fail fast + runs 失败诊断 + workspace 测试隔离
263
+ - **cli**: PackageAgent 验收反馈修复——流式观感 + 参照通道 + YAML 资产门禁
264
+ - **cli**: scenario show tree 对齐 F-C-SCN-VIEW-01——按目录分组树形 + 行数统计
265
+ - **cli**: 向导直调执行动作泄漏 OptionInfo 致「配置加载失败」——命令体下沉纯函数动作
266
+ - **executor**: 解密失败日志补 error_type,空串异常可定位
267
+ - **executor**: worker 循环改真并发——Semaphore 形同虚设致队头阻塞
268
+ - **evaluator**: EvalResult 补声明 sut_name/sut_version——修 eval-only 路径 flush AttributeError
269
+ - **web**: 调试台 api_key 验签失败改 403 API_KEY_INVALID——不再误触前端登出
270
+ - **evaluator**: trace/metrics 改 merge 语义——过程指标在 LLM 写包路径取到真实值
271
+ - **web**: 速览跳过约束不计入问题 + ingest 运行模式枚举补 agent(mode 语义端到端收尾)
272
+ - **web**: 样本摘要条补齐 skippedCount 展示——修复前端 ESLint no-unused-vars
273
+ - **executor**: 清理 runner.py 未使用 import(F401),消除 CI UNSTABLE
274
+ - **web**: DB 依赖测试改名 .integration.test.ts——修复 CI test:unit 误跑致构建失败
275
+ - **executor**: 任务提示词增加确定性转发指令段——修复 agent_run input 格式不一致
276
+ - **web**: 样本详情 SKIP 状态灰色化——不再误显示为失败
277
+ - **artifacts**: object_key 加 sample 维度——多样本同名制品不再冲突
278
+ - **artifacts**: 制品按样本归属 + kind 分类,前端多样本适配与渲染增强
279
+ - **db**: SutConfigAsset 与方案对齐——正名并修正文档歧义
280
+ - **llm**: anthropic SDK 1.0 兼容——Messages.create 移除采样参数时不再传 temperature
281
+ - **evaluator**: trace.json 回填 SUT 最终回答(response.sut,arch/03 v4.6.4)
282
+ - **evaluator**: run.start 输入契约修正——消息置于 params.input.messages 且为 LangGraph type 格式(arch/03 v4.6.4)
283
+ - **evaluator**: 执行链 v4.6.3 修复——workspace 目的地服务端持有/摘除 checkpointer/回调挂真基类/CLI 通道同 loop 关闭
284
+ - **evaluator**: 打破 config.loader 与 execution.models 的循环导入
285
+ - **evaluator**: InfoAccuracy reason 不暴露 LLM 内部维度分数细节
286
+ - **evaluator**: reward计算仅计入实际参与阶段 + 预填表达式变量
287
+ - **evaluator**: reward计算时仅计入实际参与的阶段
288
+ - scenario score aggregator only counts stages that actually participated
289
+ - **db**: 将 importAssetsToDb.ts 延迟到全部迁移完成后执行
290
+ - **logging**: 强制 stdout/stderr 为 UTF-8 规避中文日志编码错误
291
+ - **web**: deleteRun 加租户隔离(orgId 过滤,修 AI 审查 Critical)
292
+ - **web**: deleteRun 支持 externalRunId(修删除运行 500)
293
+ - **debug**: 文件选择器始终允许上传 zip
294
+ - **collector**: 收紧降层条件,避免单顶层套文件误降层
295
+ - **collector**: 顶层单目录时降一层切分模块
296
+ - **web**: 删除 useEditorStore unused import SPECIAL_SELECTIONS
297
+ - **web**: S3-3 RunDetail 用 run.scenarioId 替换硬编码 courseware
298
+ - **web**: defaults 发布同版本冲突对齐提示词(同 version 一律 409)
299
+ - **web**: 版本不可变 + 统一 semver + 标签互斥 + 包内容读端点
300
+ - **web**: RunDetail 指标改用最新场景默认(旧 run 不再显示旧指标名)
301
+ - **web**: DynamicMetricGrid 卡片自适应(少撑满/多换行/末行不留空)
302
+ - **cicd**: setup-nodejs.sh 加 Node 版本校验(根治 #113 起连续失败)
303
+ - **cicd**: CI Node 升至 22.15.0(vitest 4 的 std-env ESM 需 Node 22.12+)
304
+ - **cicd**: setup-nodejs.sh 加 npm 健康检查 + 清理重装
305
+ - **cicd**: 降 vite 到 6 修复 web CI(不升 Node,保留单测)
306
+ - **cicd**: 修复 web CI 因 Jenkins agent Node 版本漂移导致 vitest 崩溃
307
+ - **backend**: overview 速览从 metrics JSONB 读取指标(非已删除的遗留列)
308
+ - **backend**: 修复 LLM 配置错误处理并提取公共工具
309
+ - **web**: 修复前端 lint 错误与类型收紧
310
+ - **web**: 提示词表单防御式渲染,修复字段缺失白屏崩溃
311
+ - **web**: 3 项场景包编辑器深度优化
312
+ - **web**: 4 项场景包编辑器优化
313
+ - **design**: package-wizard 改为选择→进入两阶段流程(非 Tab 并存)
314
+ - **web**: DatasetForm 默认 role=reference(content 无 role 字段)
315
+ - **test**: 需要 DB 的测试重命名为 .integration.test.ts
316
+ - 分离 .env / .env.local 解决 executor presigned URL 网络隔离
317
+ - **web**: 参考数据用 max-h-[50vh] 视口自适应限高(常量+误区均可见)
318
+ - **web**: 参考数据区去掉固定高度限制,内容自适应全展示
319
+ - **web**: 参考数据滚动区加 bg-muted/20 背景与其他模块一致
320
+ - **web**: RuleExplorer 滚动条深色模式优化(8px 宽 + track 背景 + 高对比)
321
+ - **evaluator**: upload 回填命令增加 artifact 上传(截图/judge记录/原始文件)
322
+ - defaults.py YAML 路径改为 paths 动态解析(不硬编码版本号)
323
+ - **web**: RunDetail useScenarioDefaults 移到 early return 前(修复 React #310)
324
+ - **web**: Prisma schema 迁回 web/backend 修复 CI 构建失败
325
+ - **web**: /debug 结果区 UI 优化 + /jobs/:id 响应对齐 snake_case 契约
326
+ - **vision**: 截图渲染容器硬化,降低 SCF 超时风险
327
+ - **web**: vitest 默认 MinIO 端点改为 9100
328
+ - **web**: debug/jobs 响应字段改下划线对齐前端,GET 直接返回 job
329
+ - **web**: 修复 rule-sets.json 未打包导致 /api/v1/rule-sets 500
330
+ - **cicd**: gateway 镜像改用预烘焙 Chromium 基础镜像,修复 Jenkins 构建下载失败
331
+ - **evaluator**: InfoAccuracyEvaluator 改 MATH_VERIFY,避免误派生 KNOWLEDGE_BASE 能力
332
+ - **evaluator**: observability 可重试错误补全上游响应体日志
333
+ - **web/backend**: ensureBucket 跳过 cos/s3,仅本地 MinIO 懒建桶
334
+ - **gateway**: per-job token 回传时重算 enabled 并补充日志
335
+ - **web/frontend**: 调试台错误提示兼容后端 error 字段
336
+ - **web/frontend**: 登录注册表单补充 autocomplete 属性
337
+ - **web/backend**: presigned PUT 改用对外端点签名
338
+ - **eval-gateway**: 修正 zip 解压中文文件名乱码(CP437→UTF-8/GBK)
339
+ - **gateway**: Jenkinsfile 单测去掉 --cov(gateway 未装 pytest-cov)
340
+ - **gateway**: 打通 eval-gateway 与 web 平台端到端对接
341
+ - **evaluator**: 恢复误删的 README.md,修复 python-check CI 构建失败
342
+ - **samples**: 修正样本课件多余 </div> 闭合标签
343
+ - **evaluator**: fact_verdict 分批调用避免大候选集失败;HTML 校验错误补文件名
344
+ - **evaluator**: InfoAccuracy LLM 解耦,不注入规则可疑条目,避免误报污染评分
345
+ - **evaluator**: HTML 有效性校验改用解析器标签栈,修复文本引号误报
346
+ - **auth**: SSO-only 用户禁止密码登录,补充 SSO 路由/服务单测
347
+ - **artifacts**: 预览强制 inline,规避 COS 默认 attachment 触发下载
348
+ - **evaluation**: misconception 误报优化—降 warning 不参与 pass/fail
349
+ - 渲染截图—非多模态隐藏 tab + 多模态截图上传修复
350
+ - **web**: 渲染截图 tab 区分多模态/非多模态评估
351
+ - **evaluation**: 评估缓存纳入 LLM 指纹 + --no-cache 选项
352
+ - **knowledge-pipeline**: pipeline kwargs 分离(source/extractor 参数不再串扰)
353
+ - **ci**: 补提 dataset_index.yaml(被全局 gitignore 忽略致 registry 加载失败)
354
+ - **ci**: 修正 agent_eval/datasets 被全局 gitignore 忽略致 CI import 失败
355
+ - **evaluator**: 修复 ruff 既有错误(F821 undefined name 与 import 排序)
356
+ - **design**: 指标说明 popover 改用 fixed 定位规避祖先裁切
357
+ - **storage**: 打包排除隐藏/系统文件,统一 workspace 路径
358
+ - **engine**: HARD_SCORE 阶段失败不再阻塞后续阶段,优化级联短路策略
359
+ - **evaluators**: 时序正确性评估器排除持续时间模式误提取,补充 12 个测试
360
+
361
+ ### Refactor
362
+
363
+ - **cli**: auth 身份迁密钥区 platform.json——env 直供优先,.env 手工管理仅提示
364
+ - **exec**: 凭证链路 KV 化——字段集由配置声明非代码枚举
365
+ - **cli**: main.py 模块化拆分——889 行收敛为 88 行引导层
366
+ - **chat**: answer_exact 两阶段——LLM 提取 + 规则比对(去 hardcode)
367
+ - **web**: /api/v1/ai 四端点提示词抽离为 YAML 资产
368
+ - **evaluator**: 执行 Agent 提示词抽离为 YAML 资产(arch/03 v4.6.5)
369
+ - **evaluator**: 抽取 ToolExporterMixin 工具导出基座与共享点分路径工具
370
+ - Phase 5 收尾——drop samples s_* 遗留列 + 删 legacy aggregator/metrics
371
+ - **web**: 清理陈旧 courseware 类型/注释
372
+ - 去 courseware 硬编码(默认值/兼容桥/快照/上传 数据驱动化)
373
+ - **executor**: 文件收集类型按规则集 format 门控推导(去 courseware 硬编码)
374
+ - **evaluator**: 样本/报告指标 dict 化(场景化,去 s_*/dr/cpr 硬编码标量)
375
+ - **evaluator**: 删 conditional_reward + events metrics 键多场景化(S2-E)
376
+ - **courseware**: 指标定义通俗化 + 指标说明编辑入口
377
+ - **web**: RunDetail 页面布局优化 + DebugPage 指标映射
378
+ - **web**: 提取 AI/YAML Hooks 并统一错误处理
379
+ - **web**: 规则资产引用校验按 method 收敛并调整策略树顺序
380
+ - **web**: 指标硬编码全面场景化并删除 lib/eval
381
+ - **web**: ExplainContent 类型收敛至 ExplainTooltip,新增指标动态助手
382
+ - **web**: 拆分非组件导出以消除 react-refresh 警告
383
+ - #60 收敛指标定义到包内 metrics/policy.yaml(跨语言单一源)
384
+ - #65 跨场景参数化 — Dashboard/AdminRuns/adminStats 零 courseware 硬编码
385
+ - P5-8 阶段C 删除 Run 遗留指标列(dr/cpr/avgReward 等 7 列)
386
+ - **web**: RunDetail 报告/叙述改为 metrics 驱动(移除 THRESHOLDS)
387
+ - **web**: 趋势图 + 运行列表表动态化(defaultDefs 驱动,零 hardcode)
388
+ - 指标定义收归后端单一源,前端零 hardcode(方案 A)
389
+ - **web**: P5-8 阶段1 — 移除 RunDetail/ProjectDetail 硬编码指标卡
390
+ - **eval**: 质量判官提示词结构化重构 + 分档标准细化
391
+ - **eval**: _coerce_score 改严格解析,去掉向后兼容兜底
392
+ - **eval**: 质量判官提示词细化评分标准 + 结构化输出
393
+ - **web**: Ingestion 端点与文档中 HMAC 改为 Bearer API Key
394
+ - **evaluator**: 可观测模块注释中 HMAC 改为 Bearer API Key
395
+ - **executor**: 注释与规则描述中 gateway 术语改为 executor
396
+ - **web**: gateway 术语统一改为 Web 后端 / executor
397
+ - **web**: SCF 环境变量统一加 TENCENT_ 前缀规避云函数保留字
398
+ - **gateway**: 清理 docs/arch/13 过渡文档引用
399
+ - **evaluator**: 移除未使用的 penalty_on_fail 并清理 docs/arch/13 引用
400
+ - **web**: 调试台默认规则集对齐 coursework-quality,下拉展示规则集文件 id
401
+ - **gateway**: 规则集默认与注册表对齐新的 gate/quality/vision 三档
402
+ - **evaluator**: 课件规则集按能力递进拆为 gate/quality/vision 三档
403
+ - **evaluator**: 规则集成为管线评估器集合的单一事实源(docs/arch/13)
404
+ - **gateway**: 移除冗余 EVALGATEWAY_ENABLE_VISION,视觉能力统一由规则集派生
405
+ - **web/frontend**: 设计令牌与页面容器对齐原型 theme.css
406
+ - **evaluator**: 摄取客户端改用单一 Bearer API Key
407
+ - **gateway**: 鉴权由 HMAC 签名改为单一 Bearer token
408
+ - **web**: API Key 鉴权由双 Key HMAC 改为单一 Bearer token
409
+ - **web/frontend**: ProjectDetail 适配 MetricCard recentRunTime 属性
410
+ - **web/frontend**: 登录页与项目详情页适配 MetricCard/ExplainTooltip
411
+ - **web/frontend**: 补充迁移 ExplainTooltip 与 MetricCard 共享组件
412
+ - **web/frontend**: 页面与路由入口适配 shadcn/ui 设计系统
413
+ - **web/frontend**: UI 组件层迁移至 shadcn/ui
414
+ - **db**: 统一数据库建库/迁移到 db/ 目录
415
+ - **web**: 统一指标文案到 METRIC_LABEL 常量
416
+ - **evaluator**: 常识评估器瘦身、ChronologicalOrder 改 LLM-as-judge、RuleSet enabled 过滤
417
+ - **docker**: 废弃 schema.sql 自动建表,改为 make db-init 手动应用 prisma migrations
418
+ - **artifacts**: 预览改为同源 raw 代理 + 专用短期 token
419
+ - **scripts**: seed_demo 精简为仅注册默认演示账户
420
+ - **docker**: DB 初始化改用 postgres initdb 自动建表,容器不再跑 migrate deploy
421
+ - **docker**: 统一 web 容器命名(platform→web)与默认端口(3000→9000)
422
+ - **web/backend**: 移除腾讯云 SCF serverless 入口,统一容器化部署
423
+ - **knowledge**: 删除无有效锚定 misconception pattern 治理误报
424
+ - **evaluation**: LLM 降级统一为 SKIP 不计入得分
425
+ - **evaluation**: 移除 format.structure_compliance 结构规范性评估器
426
+ - **evaluation**: 移除 format.document_count 文档数量检查评估器
427
+ - **cli**: CLI 拆分为子包并移除 serve 命令
428
+ - **rules**: 移除规则集版本管理,改由 git 承担
429
+ - 删除废弃的 agent_eval/web/(Sprint 7a 旧 MVP 索引,已被 09 平台取代)
430
+ - **knowledge**: 合并 knowledge_pipeline 到 knowledge(统一目录结构)
431
+ - **knowledge-pipeline**: 删除已迁移的旧脚本 + 清理 pycache
432
+ - **web**: 前端设计系统重构,移除 AntD/echarts 改用自研组件层
433
+ - **evaluator**: 将 assets 移入包内并适配 pip-installable 路径设计
434
+ - **web**: remove Sprint 7a MVP frontend and legacy backend routes/services
435
+ - **evaluators**: 将 LLM Judge 内容截断长度统一接入 EVALUATOR_DEFAULTS
436
+ - **config**: 将 LLM 配置与评估默认值统一迁移到 agent_eval.config
437
+ - **llm**: 集中管理 LLM 模块默认参数,消除 hardcode
438
+ - **evaluation**: 新增 text_utils 干净提取 HTML 文本,消除评估器重复代码
439
+ - **storage,evaluators**: 存储层格式统一,常识评估器表达式简化
440
+ - **docs**: 移除 3 项评估器,评估器体系从 17 项精简为 14 项
441
+ - **evaluators**: 移除 Rule-based 软约束评估器,质量阶段精简为纯 LLM Judge
442
+ - **evaluators**: 移除 format.directory_structure 评估器(17→16 项)
443
+ - **config**: 新增 ProjectPaths 路径集中管理,消除散落的路径拼接
@@ -0,0 +1,58 @@
1
+ # 评估器开发规范(Python)
2
+
3
+ 本目录是自包含、pip-installable 的评估器(`agent-eval` CLI),对称于 `web/` 可观测平台。
4
+
5
+ ## 环境
6
+
7
+ - Python 3.11+,依赖用 `uv` 管理(`uv.lock`)。
8
+ - 安装:`uv sync --group dev`(开发,PEP 735 依赖组——dev 工具链不入发布元数据);`uv sync --extra llm`(LLM Judge 依赖,可选);`uv sync --extra agent`(ExecutionAgent DeepAgents 底座,可选,见 arch/03 v4.6)。
9
+ - CLI:`uv run agent-eval --help`。所有 `uv run` / `agent-eval` 命令从 `evaluator/` 执行,或用根 `make` 目标自动切换。
10
+
11
+ ## 配置
12
+
13
+ - 环境变量从仓库根 `.env` 读取(`load_dotenv()` 自动向上查找)。
14
+ - LLM 配置走双形态(arch/06 §4.6):`agent-eval models set` 交互配置 → `~/.agent_eval/llm.json`(0600);云端经 `AGENT_EVAL_HOST/API_KEY` 拉 `/api/public/llm-config`。固定三角色 text/vision/agent(`config/llm_resolution.py` 解析)。
15
+
16
+ ## 代码风格(强制)
17
+
18
+ - **ruff**:`line-length=100`,`select = ["E","F","I","N","W","UP"]`(见 `pyproject.toml [tool.ruff]`)。提交前 `uv run ruff format && uv run ruff check --fix`。
19
+ - **类型提示必需**:函数参数与返回值标注;文件首行 `from __future__ import annotations`;优先 `X | Y` 而非 `Optional[X]`。
20
+ - **命名**:类 `UpperCamelCase`;函数/变量 `snake_case`;常量 `UPPER_SNAKE`;枚举成员 `UPPER_SNAKE`、值为 `kebab-case` 或 `snake_case`。
21
+ - **数据模型**:需要序列化用 Pydantic v2 `BaseModel`(带 `save()/load()`);纯内存结构用 `@dataclass`。
22
+ - **枚举**:定义在 `core/types.py`,统一 `(str, Enum)` 基类 + 中文 docstring。
23
+ - **异常**:继承 `AgentEvalError`(`core/exceptions.py`),按模块分组(`XxxError` / `XxxNotFoundError` / `XxxValidationError`),带额外字段的子类在 `__init__` 设同名属性。
24
+
25
+ ## 目录约定
26
+
27
+ - `agent_eval/` 自包含、pip-installable;随包资源在 `agent_eval/assets/`(经 `PACKAGE_ROOT` 定位,不硬编码绝对路径)。
28
+ - 运行产物落 `workspace/`,按 `WORKSPACE_DIR`(或 `CWD/workspace`)定位。
29
+ - 可选第三方依赖(huggingface_hub / modelscope / playwright)放 `[project.optional-dependencies]`,代码内**惰性导入** + 友好错误提示(仿 `observability/render.py` 的 Playwright 范式)。
30
+
31
+ ## 测试(强制)
32
+
33
+ - 每个模块对应 `tests/unit/test_*.py`;黄金样本在 `tests/fixtures/golden/`。
34
+ - **禁止联网测试**:第三方库(huggingface_hub / modelscope / langfuse 等)用 `monkeypatch` / `MagicMock` mock;真实下载验证放 `tests/integration/` 且默认 skip。
35
+ - 文件系统用 `tmp_path` fixture 隔离。
36
+ - 断言用 `assert` / `pytest.raises(XxxError)`;测试命名 `test_<行为>[_<条件>]`。
37
+ - CLI 测试用 `typer.testing.CliRunner` + `monkeypatch` mock 内部函数。
38
+ - 可选依赖在 `tests/conftest.py` 顶部 `sys.modules.setdefault(...)` mock(仿 langfuse 范式)。
39
+ - **删符号同步清测试**:删除/重命名公共符号(含 `__init__` 重导出)时,同步 `grep -rn "<符号>" tests/` 清理**全目录**引用——`make check` 只收集 `tests/unit`,`tests/config`、`tests/evaluation` 等其余目录仅全量收集(曾因漏删 `resolve_api_key` 测试 import 导致发布流水线红,2026-09)。
40
+
41
+ ## 质量检查(提交前)
42
+
43
+ ```bash
44
+ uv run ruff check agent_eval tests
45
+ uv run ruff format --check agent_eval tests
46
+ uv run pytest tests/unit -q
47
+ ```
48
+
49
+ > 上述为快门禁(仅 `tests/unit`)。功能分支**合入前 / 发布前**跑全量 `make test`(`pytest tests/`,与 Jenkins 质量门禁同口径,含 e2e/golden 慢测试)。
50
+
51
+ ## 版本发布(PyPI,distribution 名 ai-eval-scope)
52
+
53
+ - **版本单源**:`uv run cz bump --dry-run --increment PATCH --yes` 先核对,去掉 `--dry-run` 实跑——一次改 `pyproject.toml` + `agent_eval/__init__.py::__version__` + CHANGELOG 并打 annotated tag。**禁止手改版本号**。
54
+ - **发布**:`git push --tags` 后 Jenkins Job `sasan-evalscope-pypi` → Build with Parameters(`TAG=vX.Y.Z`;`TEST_PYPI=true` 先演练 test.pypi.org,验收通过后 `false` 转正式)。流水线自带质量门禁、tag==`__version__` 断言、wheel/sdist 隔离冒烟。
55
+ - **纪律**:PyPI 同版本号**不可重传**——发布失败修复后必须 bump 新版本;正式发布前必先 TestPyPI 演练。
56
+ - 详见 [`cicd/README.md`](../cicd/README.md)(阶段表/凭证/本地验证)与 [arch/17](../docs/arch/17Python包发布方案.md)(方案与决策)。
57
+
58
+ 详见根 [`CLAUDE.md`](../CLAUDE.md) 与 [规范索引](../docs/standard/README.md)。
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Agent Eval Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.