@huicai/cli 2026.714.0 → 2026.721.0
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/README.md +2 -1
- package/bin/huicai.js +83 -0
- package/package.json +2 -2
- package/skills/ab-testing/SKILL.md +58 -0
- package/skills/ab-testing/scripts/__pycache__/ab_test.cpython-312.pyc +0 -0
- package/skills/ab-testing/scripts/ab_test.py +71 -0
- package/skills/academic-writing/SKILL.md +54 -0
- package/skills/accounting-ops/SKILL.md +68 -0
- package/skills/accounting-ops/scripts/__pycache__/acct_tools.cpython-312.pyc +0 -0
- package/skills/accounting-ops/scripts/acct_tools.py +89 -0
- package/skills/ai-agent/SKILL.md +85 -0
- package/skills/ai-agent/references/tool-design-checklist.md +51 -0
- package/skills/ai-aiops/SKILL.md +73 -0
- package/skills/ai-aiops/references/aiops-rollout-checklist.md +36 -0
- package/skills/ai-coding/SKILL.md +89 -0
- package/skills/ai-coding/references/task-brief-template.md +48 -0
- package/skills/ai-compliance/SKILL.md +74 -0
- package/skills/ai-compliance/references/genai-compliance-checklist.md +40 -0
- package/skills/ai-eval/SKILL.md +80 -0
- package/skills/ai-eval/scripts/eval-runner.py +150 -0
- package/skills/ai-llm-app/SKILL.md +90 -0
- package/skills/ai-llm-app/references/llm-integration-checklist.md +39 -0
- package/skills/ai-mlops/SKILL.md +72 -0
- package/skills/ai-mlops/scripts/token-cost-calc.py +108 -0
- package/skills/ai-multimodal/SKILL.md +86 -0
- package/skills/ai-multimodal/scripts/field-validate.py +182 -0
- package/skills/ai-prompt/SKILL.md +75 -0
- package/skills/ai-prompt/references/prompt-template.md +46 -0
- package/skills/ai-rag/SKILL.md +76 -0
- package/skills/ai-rag/scripts/chunk-inspect.py +129 -0
- package/skills/anomaly-detection/SKILL.md +54 -0
- package/skills/anomaly-detection/scripts/__pycache__/anomaly.cpython-312.pyc +0 -0
- package/skills/anomaly-detection/scripts/anomaly.py +99 -0
- package/skills/api-integration/SKILL.md +74 -0
- package/skills/api-integration/references/signing-recipes.md +141 -0
- package/skills/arch-design/SKILL.md +57 -0
- package/skills/arch-distributed/SKILL.md +81 -0
- package/skills/arch-distributed/references/idempotency-review.md +43 -0
- package/skills/arch-multitenant/SKILL.md +73 -0
- package/skills/arch-multitenant/references/tenant-isolation-checklist.md +34 -0
- package/skills/audit-assist/SKILL.md +63 -0
- package/skills/audit-assist/scripts/__pycache__/audit_sampling.cpython-312.pyc +0 -0
- package/skills/audit-assist/scripts/audit_sampling.py +93 -0
- package/skills/audit-chain/SKILL.md +60 -0
- package/skills/banking-credit/SKILL.md +59 -0
- package/skills/banking-credit/scripts/__pycache__/credit_metrics.cpython-312.pyc +0 -0
- package/skills/banking-credit/scripts/credit_metrics.py +53 -0
- package/skills/brand-design/SKILL.md +56 -0
- package/skills/business-plan/SKILL.md +56 -0
- package/skills/capital-ops/SKILL.md +52 -0
- package/skills/cicd-pipeline/SKILL.md +85 -0
- package/skills/cicd-pipeline/references/pipeline-review-checklist.md +39 -0
- package/skills/content-creation/SKILL.md +56 -0
- package/skills/corporate-governance/SKILL.md +56 -0
- package/skills/crawl-chain/SKILL.md +61 -0
- package/skills/customer-service/SKILL.md +51 -0
- package/skills/data-analysis/SKILL.md +46 -0
- package/skills/data-analysis/scripts/cjk_font.py +56 -0
- package/skills/data-chain/SKILL.md +54 -0
- package/skills/data-governance/SKILL.md +54 -0
- package/skills/data-report-pro/SKILL.md +65 -0
- package/skills/data-report-pro/scripts/__pycache__/bigdata.cpython-312.pyc +0 -0
- package/skills/data-report-pro/scripts/bigdata.py +79 -0
- package/skills/data-streaming/SKILL.md +87 -0
- package/skills/data-streaming/references/job-checklist.md +36 -0
- package/skills/data-wrangling/SKILL.md +52 -0
- package/skills/data-wrangling/scripts/__pycache__/join_tools.cpython-312.pyc +0 -0
- package/skills/data-wrangling/scripts/join_tools.py +99 -0
- package/skills/db-es/SKILL.md +68 -0
- package/skills/db-es/scripts/es-health.sh +72 -0
- package/skills/db-migration/SKILL.md +72 -0
- package/skills/db-migration/scripts/checksum-mysql.sql +46 -0
- package/skills/db-migration/scripts/checksum-postgres.sql +39 -0
- package/skills/db-migration/scripts/compare-reports.py +98 -0
- package/skills/db-mysql/SKILL.md +78 -0
- package/skills/db-mysql/scripts/mysql-health.sql +80 -0
- package/skills/db-postgres/SKILL.md +86 -0
- package/skills/db-postgres/scripts/pg-health.sql +67 -0
- package/skills/db-redis/SKILL.md +83 -0
- package/skills/db-redis/scripts/redis-health.sh +92 -0
- package/skills/dev-cpp/SKILL.md +94 -0
- package/skills/dev-cpp/references/cmake-sanitizer-snippets.md +56 -0
- package/skills/dev-cross-platform/SKILL.md +73 -0
- package/skills/dev-cross-platform/references/capability-matrix-template.md +39 -0
- package/skills/dev-csharp/SKILL.md +96 -0
- package/skills/dev-csharp/references/review-checklist.md +37 -0
- package/skills/dev-frontend/SKILL.md +91 -0
- package/skills/dev-frontend/scripts/bundle-budget.py +106 -0
- package/skills/dev-go/SKILL.md +88 -0
- package/skills/dev-go/scripts/go-triage.sh +54 -0
- package/skills/dev-harmony/SKILL.md +64 -0
- package/skills/dev-harmony/references/harmony-checklist.md +40 -0
- package/skills/dev-java/SKILL.md +77 -0
- package/skills/dev-java/scripts/jvm-triage.sh +84 -0
- package/skills/dev-mobile/SKILL.md +82 -0
- package/skills/dev-mobile/references/store-compliance-checklist.md +33 -0
- package/skills/dev-node/SKILL.md +82 -0
- package/skills/dev-node/scripts/node-triage.sh +78 -0
- package/skills/dev-php/SKILL.md +86 -0
- package/skills/dev-php/scripts/fpm-calc.py +48 -0
- package/skills/dev-python/SKILL.md +81 -0
- package/skills/dev-python/scripts/venv-doctor.sh +75 -0
- package/skills/dev-rust/SKILL.md +84 -0
- package/skills/dev-rust/references/cargo-ci-snippets.md +50 -0
- package/skills/dev-toolchain/SKILL.md +78 -0
- package/skills/dev-toolchain/scripts/secret-scan.sh +83 -0
- package/skills/doc-chain/SKILL.md +58 -0
- package/skills/doc-compare/SKILL.md +44 -0
- package/skills/doc-compare/scripts/compare.py +93 -0
- package/skills/docx-author/SKILL.md +39 -0
- package/skills/docx-author/scripts/docx_doc.py +161 -0
- package/skills/ecommerce-ops/SKILL.md +54 -0
- package/skills/ecommerce-ops/scripts/__pycache__/gmv_decompose.cpython-312.pyc +0 -0
- package/skills/ecommerce-ops/scripts/gmv_decompose.py +61 -0
- package/skills/education-training/SKILL.md +53 -0
- package/skills/ehs-safety/SKILL.md +63 -0
- package/skills/email-writing/SKILL.md +52 -0
- package/skills/eng-ai/SKILL.md +74 -0
- package/skills/eng-ai/references/ai-feature-checklist.md +36 -0
- package/skills/eng-architecture/SKILL.md +85 -0
- package/skills/eng-architecture/scripts/capacity-calc.py +100 -0
- package/skills/eng-automation/SKILL.md +84 -0
- package/skills/eng-automation/references/automation-inventory.md +38 -0
- package/skills/eng-automation/references/routine-presets.md +73 -0
- package/skills/eng-collaboration/SKILL.md +76 -0
- package/skills/eng-collaboration/references/collab-templates.md +43 -0
- package/skills/eng-complex-env/SKILL.md +84 -0
- package/skills/eng-complex-env/references/env-dossier-template.md +52 -0
- package/skills/eng-complex-env/scripts/env-recon.sh +152 -0
- package/skills/eng-data-platform/SKILL.md +81 -0
- package/skills/eng-data-platform/references/table-spec-template.md +39 -0
- package/skills/eng-database/SKILL.md +79 -0
- package/skills/eng-database/references/schema-review-checklist.md +37 -0
- package/skills/eng-develop/SKILL.md +76 -0
- package/skills/eng-develop/references/dod-checklist.md +43 -0
- package/skills/eng-docs/SKILL.md +71 -0
- package/skills/eng-docs/references/runbook-template.md +57 -0
- package/skills/eng-efficiency/SKILL.md +75 -0
- package/skills/eng-efficiency/scripts/dora-calc.py +104 -0
- package/skills/eng-infra/SKILL.md +81 -0
- package/skills/eng-infra/references/production-readiness.md +46 -0
- package/skills/eng-integration/SKILL.md +82 -0
- package/skills/eng-integration/references/integration-dossier-template.md +38 -0
- package/skills/eng-legacy/SKILL.md +81 -0
- package/skills/eng-legacy/references/modernization-workbook.md +46 -0
- package/skills/eng-observability/SKILL.md +78 -0
- package/skills/eng-observability/scripts/slo-calc.py +82 -0
- package/skills/eng-ops/SKILL.md +74 -0
- package/skills/eng-ops/references/postmortem-template.md +67 -0
- package/skills/eng-performance/SKILL.md +73 -0
- package/skills/eng-performance/scripts/perf-baseline.py +110 -0
- package/skills/eng-planning/SKILL.md +79 -0
- package/skills/eng-planning/scripts/schedule-calc.py +101 -0
- package/skills/eng-quality/SKILL.md +74 -0
- package/skills/eng-quality/references/test-plan-templates.md +46 -0
- package/skills/eng-release/SKILL.md +78 -0
- package/skills/eng-release/references/release-plan-template.md +36 -0
- package/skills/eng-reliability/SKILL.md +72 -0
- package/skills/eng-reliability/references/resilience-review.md +43 -0
- package/skills/eng-requirements/SKILL.md +86 -0
- package/skills/eng-requirements/references/story-templates.md +47 -0
- package/skills/eng-research/SKILL.md +73 -0
- package/skills/eng-research/references/research-templates.md +42 -0
- package/skills/eng-security/SKILL.md +73 -0
- package/skills/eng-security/references/security-review-checklist.md +33 -0
- package/skills/eng-ux/SKILL.md +85 -0
- package/skills/eng-ux/references/ux-review-checklist.md +36 -0
- package/skills/engineering-chain/SKILL.md +101 -0
- package/skills/engineering-chain/references/eng-health-review.md +37 -0
- package/skills/env-offline/SKILL.md +81 -0
- package/skills/env-offline/scripts/bundle-manifest.sh +94 -0
- package/skills/env-private-deploy/SKILL.md +72 -0
- package/skills/env-private-deploy/references/delivery-templates.md +35 -0
- package/skills/env-xinchuang/SKILL.md +73 -0
- package/skills/env-xinchuang/references/adaptation-matrix-template.md +41 -0
- package/skills/equipment-tpm/SKILL.md +56 -0
- package/skills/equipment-tpm/scripts/oee.py +58 -0
- package/skills/esg-report/SKILL.md +58 -0
- package/skills/esg-report/scripts/carbon_calc.py +61 -0
- package/skills/event-management/SKILL.md +51 -0
- package/skills/excel-analysis-chain/SKILL.md +73 -0
- package/skills/file-ingest/SKILL.md +51 -0
- package/skills/file-ingest/scripts/__pycache__/file_toolkit.cpython-312.pyc +0 -0
- package/skills/file-ingest/scripts/file_toolkit.py +404 -0
- package/skills/finance-analysis/SKILL.md +60 -0
- package/skills/finance-analysis/references/ratios.md +54 -0
- package/skills/finance-analysis/scripts/fin_ratios.py +132 -0
- package/skills/finance-chain/SKILL.md +59 -0
- package/skills/financial-modeling/SKILL.md +58 -0
- package/skills/financial-modeling/scripts/fin_model.py +123 -0
- package/skills/foreign-trade/SKILL.md +54 -0
- package/skills/funnel-cohort/SKILL.md +53 -0
- package/skills/funnel-cohort/scripts/__pycache__/funnel.cpython-312.pyc +0 -0
- package/skills/funnel-cohort/scripts/funnel.py +105 -0
- package/skills/gov-document/SKILL.md +57 -0
- package/skills/hr-chain/SKILL.md +51 -0
- package/skills/hr-operations/SKILL.md +53 -0
- package/skills/info-disclosure/SKILL.md +56 -0
- package/skills/infra-gateway/SKILL.md +85 -0
- package/skills/infra-gateway/references/golive-checklist.md +36 -0
- package/skills/infra-k8s/SKILL.md +78 -0
- package/skills/infra-k8s/scripts/k8s-triage.sh +84 -0
- package/skills/infra-mq/SKILL.md +87 -0
- package/skills/infra-mq/references/mq-review-checklist.md +36 -0
- package/skills/insurance-advisory/SKILL.md +57 -0
- package/skills/internal-audit/SKILL.md +66 -0
- package/skills/ip-management/SKILL.md +54 -0
- package/skills/ipo-listing/SKILL.md +60 -0
- package/skills/it-audit/SKILL.md +56 -0
- package/skills/itsm-ops/SKILL.md +55 -0
- package/skills/knowledge-sop/SKILL.md +51 -0
- package/skills/legal-chain/SKILL.md +55 -0
- package/skills/legal-contract/SKILL.md +58 -0
- package/skills/legal-contract/references/contract-checklists.md +59 -0
- package/skills/litigation-support/SKILL.md +53 -0
- package/skills/logistics-warehouse/SKILL.md +53 -0
- package/skills/logistics-warehouse/scripts/freight_check.py +71 -0
- package/skills/long-doc-analysis/SKILL.md +52 -0
- package/skills/management-accounting/SKILL.md +57 -0
- package/skills/management-accounting/scripts/__pycache__/costing.cpython-312.pyc +0 -0
- package/skills/management-accounting/scripts/costing.py +90 -0
- package/skills/manufacturing-chain/SKILL.md +57 -0
- package/skills/manufacturing-quality/SKILL.md +57 -0
- package/skills/manufacturing-quality/scripts/__pycache__/spc.cpython-312.pyc +0 -0
- package/skills/manufacturing-quality/scripts/spc.py +86 -0
- package/skills/marketing-analytics/SKILL.md +59 -0
- package/skills/marketing-analytics/scripts/__pycache__/rfm.cpython-312.pyc +0 -0
- package/skills/marketing-analytics/scripts/rfm.py +60 -0
- package/skills/marketing-chain/SKILL.md +57 -0
- package/skills/meeting-minutes/SKILL.md +55 -0
- package/skills/metrics-system/SKILL.md +55 -0
- package/skills/negotiation-prep/SKILL.md +56 -0
- package/skills/obs-prometheus/SKILL.md +74 -0
- package/skills/obs-prometheus/references/promql-cheatsheet.md +78 -0
- package/skills/office-automation/SKILL.md +54 -0
- package/skills/okr-review/SKILL.md +44 -0
- package/skills/ops-fleet/SKILL.md +69 -0
- package/skills/ops-fleet/scripts/batch-exec-guard.sh +119 -0
- package/skills/ops-linux/SKILL.md +69 -0
- package/skills/ops-linux/scripts/quick-triage.sh +138 -0
- package/skills/optimization-solver/SKILL.md +53 -0
- package/skills/optimization-solver/scripts/__pycache__/solver.cpython-312.pyc +0 -0
- package/skills/optimization-solver/scripts/solver.py +107 -0
- package/skills/pdf-toolkit/SKILL.md +43 -0
- package/skills/pdf-toolkit/scripts/pdf_ops.py +137 -0
- package/skills/pivot-crosstab/SKILL.md +44 -0
- package/skills/pivot-crosstab/scripts/__pycache__/pivot_tools.cpython-312.pyc +0 -0
- package/skills/pivot-crosstab/scripts/pivot_tools.py +90 -0
- package/skills/policy-analysis/SKILL.md +47 -0
- package/skills/portfolio-analysis/SKILL.md +56 -0
- package/skills/portfolio-analysis/scripts/__pycache__/portfolio.cpython-312.pyc +0 -0
- package/skills/portfolio-analysis/scripts/portfolio.py +78 -0
- package/skills/ppt-chain/SKILL.md +61 -0
- package/skills/pptx-author/SKILL.md +48 -0
- package/skills/pptx-author/scripts/pptx_deck.py +193 -0
- package/skills/pr-comms/SKILL.md +58 -0
- package/skills/pr-comms/references/pr-templates.md +54 -0
- package/skills/procurement-supply/SKILL.md +47 -0
- package/skills/procurement-supply/scripts/__pycache__/supply.cpython-312.pyc +0 -0
- package/skills/procurement-supply/scripts/supply.py +71 -0
- package/skills/product-design/SKILL.md +66 -0
- package/skills/product-design/references/prd-framework.md +60 -0
- package/skills/production-planning/SKILL.md +56 -0
- package/skills/production-planning/scripts/__pycache__/mrp_capacity.cpython-312.pyc +0 -0
- package/skills/production-planning/scripts/mrp_capacity.py +70 -0
- package/skills/project-management/SKILL.md +53 -0
- package/skills/project-management/scripts/__pycache__/cpm.cpython-312.pyc +0 -0
- package/skills/project-management/scripts/cpm.py +84 -0
- package/skills/project-proposal/SKILL.md +54 -0
- package/skills/project-proposal/scripts/budget_sheet.py +90 -0
- package/skills/qa-api-automation/SKILL.md +67 -0
- package/skills/qa-api-automation/references/three-layer-skeleton.md +61 -0
- package/skills/qa-mobile-automation/SKILL.md +70 -0
- package/skills/qa-mobile-automation/references/device-matrix-template.md +34 -0
- package/skills/qa-ui-automation/SKILL.md +80 -0
- package/skills/qa-ui-automation/references/stability-conventions.md +41 -0
- package/skills/quant-analysis/SKILL.md +60 -0
- package/skills/quant-analysis/scripts/__pycache__/quant.cpython-312.pyc +0 -0
- package/skills/quant-analysis/scripts/quant.py +102 -0
- package/skills/real-estate-property/SKILL.md +51 -0
- package/skills/real-estate-property/scripts/__pycache__/property_calc.cpython-312.pyc +0 -0
- package/skills/real-estate-property/scripts/property_calc.py +106 -0
- package/skills/regression-forecast/SKILL.md +52 -0
- package/skills/regression-forecast/scripts/__pycache__/regress.cpython-312.pyc +0 -0
- package/skills/regression-forecast/scripts/regress.py +106 -0
- package/skills/retail-store-ops/SKILL.md +57 -0
- package/skills/retail-store-ops/scripts/store_ops.py +57 -0
- package/skills/risk-compliance/SKILL.md +51 -0
- package/skills/sec-auth/SKILL.md +89 -0
- package/skills/sec-auth/references/auth-review-checklist.md +38 -0
- package/skills/sec-compliance/SKILL.md +74 -0
- package/skills/sec-compliance/references/dengbao-checklist.md +43 -0
- package/skills/securities-chain/SKILL.md +69 -0
- package/skills/securities-research/SKILL.md +58 -0
- package/skills/securities-research/scripts/__pycache__/valuation.cpython-312.pyc +0 -0
- package/skills/securities-research/scripts/valuation.py +93 -0
- package/skills/slides-html/SKILL.md +50 -0
- package/skills/slides-html/scripts/template.html +117 -0
- package/skills/statistical-testing/SKILL.md +51 -0
- package/skills/statistical-testing/scripts/__pycache__/stat_tests.cpython-312.pyc +0 -0
- package/skills/statistical-testing/scripts/stat_tests.py +131 -0
- package/skills/strategy-planning/SKILL.md +53 -0
- package/skills/supply-chain/SKILL.md +53 -0
- package/skills/tax-compliance/SKILL.md +57 -0
- package/skills/tax-compliance/scripts/tax_calc.py +90 -0
- package/skills/tech-research/SKILL.md +55 -0
- package/skills/tech-research/references/research-framework.md +50 -0
- package/skills/tender-bidding/SKILL.md +65 -0
- package/skills/tender-bidding/references/bid-checklist.md +44 -0
- package/skills/translation-pro/SKILL.md +44 -0
- package/skills/treasury-mgmt/SKILL.md +56 -0
- package/skills/treasury-mgmt/scripts/__pycache__/cashflow_forecast.cpython-312.pyc +0 -0
- package/skills/treasury-mgmt/scripts/cashflow_forecast.py +51 -0
- package/skills/web-scraping/SKILL.md +81 -0
- package/skills/web-search/SKILL.md +67 -0
- package/skills/xlsx-analysis/SKILL.md +96 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_toolkit.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/xlsx_style.py +71 -0
- package/skills/xlsx-analysis/scripts/xlsx_toolkit.py +335 -0
- package/src/agent.js +1 -1
- package/src/api.js +1 -1
- package/src/codeindex.js +1 -1
- package/src/commands.js +1 -1
- package/src/config.js +1 -1
- package/src/context.js +1 -1
- package/src/doccache.js +1 -0
- package/src/doctor.js +1 -1
- package/src/executors.js +1 -1
- package/src/input.js +1 -1
- package/src/permissions.js +1 -1
- package/src/pyruntime.js +1 -0
- package/src/repl.js +1 -1
- package/src/scan.js +1 -1
- package/src/tools.js +1 -1
- package/src/tui/app.js +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-aiops
|
|
3
|
+
description: 智能运维链 AIOps(建议权在 AI 决策权在人→场景成熟度判据表(告警聚类降噪/日志异常检测/根因推荐 top3/容量预测/Runbook RAG 问答)→排障 Copilot 纪律(只读自动/变更出建议单/结论附证据链)→数据地基=可观测质量→影子模式与信任分级推进→AI 判断也要评测集(历史事件回放)→P1 现场 AI 使用红线)。eng-ai 与 eng-ops 的智能运维孙链:告警风暴治理智能化、AI 辅助排障落地、值班 Copilot 建设、AIOps 立项评估时载入。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 智能运维链(AIOps)
|
|
8
|
+
|
|
9
|
+
eng-ai 与 eng-ops 共同的孙链。定位一句话:**AI 加持运维,不替代 oncall——建议权在 AI,决策权在人**
|
|
10
|
+
(eng-automation 自愈白名单四级与 ai-agent 沙箱分级在运维域的合体)。
|
|
11
|
+
|
|
12
|
+
## 场景成熟度判据表(按此排建设顺序,别一步登天)
|
|
13
|
+
|
|
14
|
+
| 场景 | 成熟度 | 要点 |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| **告警聚类降噪** | 高,先做 | 同源告警合并+摘要进值班群;原始告警可下钻(降噪不吞信息) |
|
|
17
|
+
| **Runbook 问答** | 高,先做 | Runbook/预案/档案 RAG 化(ai-rag)——"这个告警怎么处理"秒答,eng-docs 的 Runbook 质量决定上限 |
|
|
18
|
+
| 日志异常检测 | 中 | 模板化聚类+新异常模式发现(ERROR 零容忍治理的放大器,eng-observability) |
|
|
19
|
+
| 根因推荐 | 中 | **给 top3 嫌疑+证据,不给唯一结论**;变更关联第一权重(排障第一问的自动化) |
|
|
20
|
+
| 容量预测 | 中 | 时序预测+业务日历因子(大促/月结);输出进扩容立项(eng-ops 水位月报增强) |
|
|
21
|
+
| 自动修复 | 低,最后 | 严格走 eng-automation 白名单四级,只做演练过的预案触发建议 |
|
|
22
|
+
|
|
23
|
+
判据总纲:**先做"信息压缩与检索"类(错了无害),后做"判断与建议"类(要评测),不做"自主变更"类**(建议单+人确认是上限)。
|
|
24
|
+
|
|
25
|
+
## 排障 Copilot 纪律(AI 进值班室的规矩)
|
|
26
|
+
|
|
27
|
+
- 引导式采集:AI 按决策树(ops-linux/infra-k8s/db-* 各链)引导执行诊断——**只读诊断可自动执行**(体检快照/日志检索/指标查询),每步动作与输出留痕(eng-ops 时间线自动记录,复盘白捡);
|
|
28
|
+
- **变更类动作出建议单**:AI 产出"建议执行 X,依据 Y,风险 Z,回滚 W"格式的建议,人确认执行(eng-automation 有损级半自动);
|
|
29
|
+
- **结论必附证据链**:每个判断挂上哪条日志/哪个指标/哪次变更(可点开验证)——无证据的"我认为是数据库问题"=噪音;查证据比信结论重要,值班员用 Copilot 的姿势是"帮我把证据摆出来";
|
|
30
|
+
- 覆盖不了要明说:AI 明确说"超出已知模式,转人工"优于硬猜(ai-rag 无据说无据同源);
|
|
31
|
+
- traceId 贯通:Copilot 顺着 traceId 自动串日志-指标-链路(eng-observability 三支柱的自动化行走)。
|
|
32
|
+
|
|
33
|
+
## 数据地基(垃圾进垃圾出的运维版)
|
|
34
|
+
|
|
35
|
+
AIOps 的上限=可观测数据质量(eng-observability 是硬前置):
|
|
36
|
+
结构化日志与分级纪律(ERROR 刷屏的系统,异常检测全是噪音)/变更事件流完整(根因推荐吃变更关联,变更不打点=最大权重缺失)/
|
|
37
|
+
拓扑与依赖数据(传播分析靠它,eng-reliability 强弱依赖标注复用)/告警带 Runbook 链接(问答链路的锚点);
|
|
38
|
+
**先把 eng-observability 的纪律执行到位,再谈 AIOps**——观测烂而上 AI=给噪音配了个复读机。
|
|
39
|
+
|
|
40
|
+
## 信任分级推进(AI 判断的上岗流程)
|
|
41
|
+
|
|
42
|
+
**影子模式先行**:AI 判断只记录不推送,与人工处置对照跑 4–8 周→准确率达标(按场景定阈值)才进值班群;
|
|
43
|
+
分级推进:摘要类(直接上)→建议类(影子转正)→触发类(演练过的预案+人确认,永远到此为止);
|
|
44
|
+
**误报治理**:AI 建议也进疲劳度月检(eng-observability 告警三问适用于 AI 输出——值班员开始无视 Copilot=信任破产,先降频重校再谈恢复);
|
|
45
|
+
反馈闭环:值班员对建议标注采纳/无用(一键),标注回流评测与调优(ai-eval 在线信号)。
|
|
46
|
+
|
|
47
|
+
## 评测(AI 判断要考试,ai-eval 方法的运维卷)
|
|
48
|
+
|
|
49
|
+
**历史事件回放**:拿过去 N 个月真实事件(eng-ops Postmortem 库)喂给 AI:根因推荐命中率(top3 含真根因的比例)/告警聚类纯度/Runbook 问答准确率(值班员盲评);
|
|
50
|
+
评测集持续回流:每次新事件闭环后进回放集(复盘产出的新用途);
|
|
51
|
+
版本纪律:模型/提示/规则变更跑回放集(eng-ai 三元组);
|
|
52
|
+
指标对业务说人话:**"平均定位时长 MTTI 降了多少"是唯一有说服力的汇报口径**(eng-efficiency 度量精神,不是"我们上了大模型")。
|
|
53
|
+
|
|
54
|
+
## P1 现场 AI 使用红线
|
|
55
|
+
|
|
56
|
+
P1 战时 AI 建议**双人确认**再执行(恐慌时刻盲从 AI=新风险源,eng-ops 四眼在 AI 建议上加倍适用);
|
|
57
|
+
指挥官唯一(ai 不是指挥官,信息汇总给指挥官);
|
|
58
|
+
现场禁用未评测的新功能("死马当活马医"用实验性 AI=事故叠事故);
|
|
59
|
+
复盘时 AI 生成时间线初稿(留痕数据自动串)+人核对签发——**AI 写初稿,人签字,永远如此**。
|
|
60
|
+
|
|
61
|
+
## 落地路径
|
|
62
|
+
|
|
63
|
+
从最疼处起步(告警风暴→先聚类降噪;排障慢→先 Runbook 问答);
|
|
64
|
+
平台化衔接:告警->聚类摘要->Runbook 链接->一键诊断包(ops-linux)->建议单,一条流打通再谈第二条;
|
|
65
|
+
成本与效果季度复盘(ai-mlops 成本归因+MTTI/告警量趋势,eng-automation ROI 公式)。
|
|
66
|
+
|
|
67
|
+
**作业包**:`references/aiops-rollout-checklist.md`(场景成熟度评估表/Copilot 上岗纪律核查/影子转正记录/月检与回放评测登记)。
|
|
68
|
+
|
|
69
|
+
## 使用纪律
|
|
70
|
+
|
|
71
|
+
只读自动/建议确认/变更永不自主;结论必附证据链;影子转正凭数据;
|
|
72
|
+
AI 输出进疲劳度月检;每次误导性建议回写坏例集——
|
|
73
|
+
**AIOps 的成熟度=值班员的信任度×MTTI 降幅,两个数都要,只吹一个的都是 demo**。
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# AIOps 落地与上岗检查单(ai-aiops 落笔件:建议权在 AI,决策权在人)
|
|
2
|
+
|
|
3
|
+
## 1. 场景选择评估(按成熟度排,先做信息压缩类)
|
|
4
|
+
|
|
5
|
+
| 场景 | 成熟度 | 数据地基就绪?(可观测质量是前置) | 本期做? |
|
|
6
|
+
|---|---|---|---|
|
|
7
|
+
| 告警聚类降噪 | 高 | 告警结构化/分级规范: □ | |
|
|
8
|
+
| Runbook RAG 问答 | 高 | Runbook 覆盖率 __%(P1P2 目标 100%,eng-docs) | |
|
|
9
|
+
| 日志异常检测 | 中 | ERROR 零容忍治理过?(刷屏=复读机) □ | |
|
|
10
|
+
| 根因推荐 top3 | 中 | 变更事件流完整打点: □;拓扑/依赖数据: □ | |
|
|
11
|
+
| 容量预测 | 中 | 水位历史数据 ≥__ 月 | |
|
|
12
|
+
| 自动修复 | 低,最后 | eng-automation 白名单四级就绪: □ | 仅演练过的预案触发建议 |
|
|
13
|
+
|
|
14
|
+
## 2. Copilot 纪律核查(上值班室前)
|
|
15
|
+
|
|
16
|
+
- [ ] 只读诊断自动执行清单:__(体检/日志检索/指标查询);每步留痕进事件时间线
|
|
17
|
+
- [ ] **变更类动作只出建议单**:格式=建议 X/依据 Y/风险 Z/回滚 W,人确认执行
|
|
18
|
+
- [ ] **结论必附证据链**(哪条日志/哪个指标/哪次变更,可点开)——无证据判断=噪音
|
|
19
|
+
- [ ] 覆盖不了明说"超出已知模式转人工"(禁硬猜)
|
|
20
|
+
- [ ] P1 现场:AI 建议双人确认;AI 不是指挥官;复盘时间线 AI 起草人签发
|
|
21
|
+
|
|
22
|
+
## 3. 影子转正记录(信任分级推进)
|
|
23
|
+
|
|
24
|
+
| 场景 | 影子开始 | 对照周数(4–8) | 准确率(vs 人工处置) | 转正判定(阈值 __) | 转正日期 |
|
|
25
|
+
|---|---|---|---|---|---|
|
|
26
|
+
|
|
27
|
+
## 4. 上岗后月检(AI 输出也过告警三问)
|
|
28
|
+
|
|
29
|
+
- 建议采纳率 __%(值班员一键反馈回流评测);无用建议 TOP:__(降频/重校)
|
|
30
|
+
- 值班员开始无视 Copilot? □否 □是→信任破产处置:降频+重校准再恢复
|
|
31
|
+
- 历史事件回放评测:根因 top3 命中率 __%;Runbook 问答盲评 __ 分(ai-eval 方法)
|
|
32
|
+
- **对外汇报口径:MTTI/MTTR 降了多少**(不是"我们上了大模型")
|
|
33
|
+
|
|
34
|
+
## 5. 评测集维护
|
|
35
|
+
|
|
36
|
+
- [ ] 新闭环事件按月入回放集(Postmortem 库的新用途);裁判/提示变更重跑基线
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-coding
|
|
3
|
+
description: AI 研发提效链(任务适配判据表(高/中/低适配)→上下文工程(项目说明文件/示例引导/仓库导航)→三种工作模式判据(补全/对话/代理)与任务书质量→质量纪律(全套门禁无豁免/自证循环陷阱)→安全合规(敏感数据/许可证/数据出域)→AI 产出的评审策略→提效度量(接受率/返工率/DORA)→反模式→团队落地路径)。eng-ai 与 eng-develop 共同的 AI 提效孙链:团队引入 AI 编码、用好 AI 助手、AI 代码质量治理、提效说不清楚时载入。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI 研发提效链
|
|
8
|
+
|
|
9
|
+
eng-ai 与 eng-develop 共同的孙链:用 AI 加速**工程本身**。eng-develop 的 AI 结对纪律是红线总纲,本链是深耕:
|
|
10
|
+
怎么把 AI 用出真提效,而不是"演示很酷,合入很慌,半年后没人说得清赚没赚"。
|
|
11
|
+
|
|
12
|
+
## 任务适配判据表(把对的活派给 AI)
|
|
13
|
+
|
|
14
|
+
| 适配度 | 任务类型 | 用法 |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| **高** | 样板代码(CRUD/DTO/客户端)/单测补齐/迁移改写(API 升级/语法现代化)/正则与 SQL 起草/代码解释与注释/日志埋点铺设 | 放心委托,验收把关 |
|
|
17
|
+
| **中** | 业务逻辑实现/重构建议/排障分析/评审初筛 | 上下文喂足+小步验证,人主导方向 |
|
|
18
|
+
| **低** | 安全敏感(鉴权/加密/资金)/核心算法/性能关键路径/架构决策 | 人写 AI 辅(解释、找茬、对照),**不许整段托管** |
|
|
19
|
+
|
|
20
|
+
判据背后的逻辑:**错误好不好发现**——样板错了测试立刻红(可托管),鉴权错了半年后被入侵(人把关);
|
|
21
|
+
一次性脚本与原型是 AI 甜区(丢弃型代码,质量门槛低收益高,office-automation 脚本三次法则的加速器)。
|
|
22
|
+
|
|
23
|
+
## 上下文工程(垃圾进垃圾出的解法)
|
|
24
|
+
|
|
25
|
+
- **项目说明文件**:把团队惯例沉淀成 AI 可读文档(架构导读/命名与分层规范/常用命令/禁区清单)放仓库固定位置——**这是 eng-docs 的 AI 化投资,一次编写全员受益**;新人文档与 AI 说明高度重合,一起维护;
|
|
26
|
+
- 示例引导:给一个本仓库的好例子("参照 OrderService 的写法实现 RefundService")胜过十句抽象描述——**仓库里最好的代码就是最好的提示**;
|
|
27
|
+
- 仓库导航:让 AI 先读相关文件再动手(接口定义/被调用方/相邻实现),禁"凭空写一个"(与 explain-codebase 摸落点同构);
|
|
28
|
+
- 约束前置:验收标准/边界条件/禁改范围写进任务描述(eng-requirements 可判定性用在给 AI 派活上)。
|
|
29
|
+
|
|
30
|
+
## 工作模式判据
|
|
31
|
+
|
|
32
|
+
| 模式 | 适用 | 纪律 |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| 补全 | 顺手小段 | 读懂再采纳,连续盲按 Tab=债务打字机 |
|
|
35
|
+
| 对话 | 设计讨论/排障推演/学新库 | 当聪明同事不当权威:结论要验证(信息源三手,eng-research) |
|
|
36
|
+
| **代理(整任务委托)** | 边界清晰的完整任务 | **任务书质量决定产出**:目标+验收标准+约束+自验方式;小步交付(一次一个 PR 粒度);过程可中断可纠偏 |
|
|
37
|
+
|
|
38
|
+
代理模式的任务书=需求工程微缩(eng-requirements):写不出可判定验收标准的任务,AI 做完你也判不了对错——先把任务书写好,这本身逼出了好的任务拆解(eng-planning WBS 同构)。
|
|
39
|
+
|
|
40
|
+
## 质量纪律(AI 无豁免)
|
|
41
|
+
|
|
42
|
+
AI 产出过**全套门禁**:测试/lint/评审一视同仁(cicd-pipeline 不认作者是谁);
|
|
43
|
+
逐行读懂才提交(eng-develop 红线):署你名=你负责,"AI 写的"不是免责声明;
|
|
44
|
+
**测试先行防自证循环**:让 AI 按错误实现补的测试会"验证"错误——正路:人定验收用例(或人审 AI 起草的用例)→AI 补实现;AI 同时写实现和测试时,测试要单独严审;
|
|
45
|
+
边界亲自过(空/极值/并发/权限四件,eng-develop);
|
|
46
|
+
生成量控制:一次生成过大=评审失效(eng-collaboration 400 行纪律对 AI 产出同样生效,拆批提交)。
|
|
47
|
+
|
|
48
|
+
## 安全与合规
|
|
49
|
+
|
|
50
|
+
敏感数据不入提示:密钥/客户数据/未公开代码按数据分级走(eng-security;外部模型 API=数据出域,内网部署模型的边界也要声明);
|
|
51
|
+
生成代码的许可证意识:大段"看起来眼熟"的产出查重(开源代码许可证传染,eng-research 许可证关);
|
|
52
|
+
依赖幻觉防护:AI 推荐的包先验存在性与健康度(**投毒者会抢注 AI 常幻觉的包名**,eng-security 供应链+dev-toolchain 私服白名单);
|
|
53
|
+
AI 工具自身准入:公司审批的工具清单(影子 AI 治理),平台内置 AI 的数据边界文档化(arch-multitenant 租户数据不入他租户上下文)。
|
|
54
|
+
|
|
55
|
+
## 评审适配(AI 时代的 code-review 增补)
|
|
56
|
+
|
|
57
|
+
PR 标注 AI 参与度(评审人知情:重点抽查哪里);
|
|
58
|
+
AI 大产出的评审策略:结构与关键路径人细审+全量测试兜底+**抽查深度反比于任务适配度**(样板扫过,鉴权逐行);
|
|
59
|
+
用 AI 辅助评审:初筛(风格/明显 bug/遗漏用例提示)给人做减法,**批准权永远在人**(eng-automation 判定类只建议不决定);
|
|
60
|
+
评审人陷阱:AI 代码"看起来很对"的流畅感会麻痹评审——对 AI 产出保持"新人代码"的警觉标准。
|
|
61
|
+
|
|
62
|
+
## 提效度量(别靠体感吹提效)
|
|
63
|
+
|
|
64
|
+
工具层:建议接受率/生成代码存活率(合入后 30 天未被重写);
|
|
65
|
+
工程层:**返工率**(AI 参与 PR 的缺陷逃逸 vs 人写基线,eng-quality 逃逸分析加标签)/评审轮次;
|
|
66
|
+
组织层:DORA 前置时间与吞吐趋势(eng-efficiency,标注 AI 推广时间线做前后对照);
|
|
67
|
+
**度量纪律承 eng-efficiency**:不做个人排名(接受率 KPI 化=盲按 Tab 竞赛),看团队与趋势;
|
|
68
|
+
成本对照:工具费用 vs 节省工时(eng-automation ROI 公式),季度复盘。
|
|
69
|
+
|
|
70
|
+
## 反模式黑名单
|
|
71
|
+
|
|
72
|
+
全托不验(测试红了怪 AI)/上下文饥饿(不给约束要完美产出)/用 AI 掩盖不理解(读不懂也合入,债务转嫁给下一个读者)/
|
|
73
|
+
提示词囤积症(收藏一百个模板,不建团队评测与说明文件,ai-prompt 同病)/
|
|
74
|
+
AI 依赖萎缩(新人只会问 AI 不会读代码——带教要求"先自己定位再对 AI 求证",eng-collaboration 新人设计)/
|
|
75
|
+
一切任务 AI 化(低适配任务硬塞,返工吃掉提效)。
|
|
76
|
+
|
|
77
|
+
## 团队落地路径
|
|
78
|
+
|
|
79
|
+
试点(1–2 个组,选高适配任务场景,基线数据先采)→ 规范(项目说明文件+适配判据表本地化+安全清单)→
|
|
80
|
+
推广(经验分享会+好任务书模板入库,knowledge-sop/eng-collaboration 分享机制)→ 度量复盘(季度,eng-efficiency 循环);
|
|
81
|
+
经验库沉淀:好用的任务书/翻车案例/各模块适配度标注——**AI 提效的复利在团队知识库,不在个人手感**。
|
|
82
|
+
|
|
83
|
+
**作业包**:`references/task-brief-template.md`(适配度速判卡/代理模式任务书模板/产出验收单/项目说明文件骨架/翻车登记)。
|
|
84
|
+
|
|
85
|
+
## 使用纪律
|
|
86
|
+
|
|
87
|
+
AI 产出全套门禁无豁免;低适配任务不托管;任务书带可判定验收标准;
|
|
88
|
+
敏感数据与依赖幻觉双防;提效用数据说话;
|
|
89
|
+
每次 AI 相关翻车(幻觉包/自证循环/越权生成)回写反模式清单——**把 AI 当最有天赋也最需要流程约束的队友**。
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# AI 任务书模板与适配速判卡(ai-coding 落笔件:任务书质量决定产出质量)
|
|
2
|
+
|
|
3
|
+
## 1. 适配度速判(先派对活)
|
|
4
|
+
|
|
5
|
+
| 信号 | 判定 |
|
|
6
|
+
|---|---|
|
|
7
|
+
| 错了测试立刻红(样板/单测/迁移/正则/SQL 起草/解释注释) | **高适配**:放心委托,验收把关 |
|
|
8
|
+
| 业务逻辑,需上下文喂足 | 中适配:小步验证,人主导方向 |
|
|
9
|
+
| 错了半年后才炸(鉴权/加密/资金/核心算法/性能关键) | 低适配:人写 AI 辅,**不整段托管** |
|
|
10
|
+
|
|
11
|
+
## 2. 代理模式任务书(委托整任务前填;写不出验收标准=你也判不了对错)
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
【目标】<一句话,做成什么样>
|
|
15
|
+
【上下文】<相关文件: __;参照实现: 参照 __ 的写法(仓库里最好的代码=最好的提示);
|
|
16
|
+
项目约定: 见 <项目说明文件路径>>
|
|
17
|
+
【验收标准】<可判定,Gherkin 风格 2–5 条——与 eng-requirements 同构>
|
|
18
|
+
- 跑通 make test 且新增用例 __ 全绿
|
|
19
|
+
- __
|
|
20
|
+
【约束】<禁改范围: __;技术约束: __;禁引入新依赖(要引先报)>
|
|
21
|
+
【自验方式】<AI 自己怎么验证: 跑哪个命令/看什么输出>
|
|
22
|
+
【交付形态】<一个 PR 粒度;>400 行拆批>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 3. 产出验收单(AI 无豁免)
|
|
26
|
+
|
|
27
|
+
- [ ] 全套门禁过(测试/lint/评审);**逐行读懂才提交**(署你名你负责)
|
|
28
|
+
- [ ] 边界四件亲自过:空/极值/并发/权限
|
|
29
|
+
- [ ] 测试非自证循环:验收用例人定(或人审 AI 起草),再让 AI 补实现
|
|
30
|
+
- [ ] AI 推荐的新依赖已验存在性与健康度(幻觉包投毒防线)
|
|
31
|
+
- [ ] 大段"眼熟"产出查过许可证风险
|
|
32
|
+
- [ ] PR 标注 AI 参与度(评审人知情,抽查深度反比于适配度)
|
|
33
|
+
|
|
34
|
+
## 4. 项目说明文件骨架(AI 可读的团队惯例,与新人文档合并维护)
|
|
35
|
+
|
|
36
|
+
```markdown
|
|
37
|
+
# 项目速览(给 AI 与新人)
|
|
38
|
+
- 架构一句话与目录导读: __
|
|
39
|
+
- 命名与分层规范: __ ;错误处理惯例: __
|
|
40
|
+
- 常用命令: make setup/test/run
|
|
41
|
+
- 禁区: 禁改 __;禁引入 __;安全红线见 security-review-checklist
|
|
42
|
+
- 好例子索引: 新写 service 参照 __;新写用例参照 __
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 5. 翻车登记(团队经验库,knowledge-sop)
|
|
46
|
+
|
|
47
|
+
| 日期 | 翻车类型(幻觉包/自证循环/上下文饥饿/全托不验) | 案例 | 规避动作入模板? |
|
|
48
|
+
|---|---|---|---|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-compliance
|
|
3
|
+
description: 大模型合规链(toC/toB 义务分野→双备案判据(算法备案/生成式 AI 备案)→语料合规(来源/知产/个信授权链)→内容安全双审(机审+人审+举报响应)→AI 生成内容标识义务(显式+隐式)→上线安全评估与应急处置→对话数据用于训练的授权→义务到工程能力映射表)。eng-ai 的合规孙链:AI 功能要上线对外、备案材料准备、内容安全整改、"AI 生成要不要标"时载入。法规更新快,以当日文本为准,本链管工程落点。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 大模型合规链
|
|
8
|
+
|
|
9
|
+
eng-ai 的合规孙链。中国生成式 AI 的监管框架(生成式 AI 服务管理办法/算法推荐规定/深度合成规定/
|
|
10
|
+
AI 生成合成内容标识办法等)更新节奏快——**本链管"义务怎么变成系统能力",条文细节以当日法规文本与属地监管口径为准**(legal-chain/risk-compliance 衔接)。
|
|
11
|
+
|
|
12
|
+
## 第一判据:toC 还是 toB(义务分野)
|
|
13
|
+
|
|
14
|
+
**面向公众提供**生成式 AI 服务=义务全套(备案/标识/内容审核/举报通道);
|
|
15
|
+
企业内部使用、toB 交付给企业自用=义务显著减轻(但数据安全与个保义务不减,且**客户可能要求你提供备案证明**——私有化场景 env-private-deploy 常问);
|
|
16
|
+
边界情形要过法务:嵌在产品里的 AI 能力对外可用=大概率算"面向公众";
|
|
17
|
+
**先定性再立项**,定性决定合规成本量级(sec-compliance 定级判据同构)。
|
|
18
|
+
|
|
19
|
+
## 双备案判据(工程侧的配合面)
|
|
20
|
+
|
|
21
|
+
算法备案(具有舆论属性或社会动员能力的算法推荐/生成合成类)与生成式 AI 服务上线备案——是否触发、走哪条,法务定;
|
|
22
|
+
工程配合材料高频项:算法机制机理说明(模型来源/训练方式/干预策略,ai-mlops 三元组档案是底稿)/
|
|
23
|
+
安全评估报告(内容安全测试:ai-eval 对抗与拒答象限的成绩单)/
|
|
24
|
+
拦截与应急机制说明(见双审节)/数据来源说明(见语料节);
|
|
25
|
+
**材料与真实系统一致**:备案说明的审核流程、标识方式要与线上实现对得上(检查会核)。
|
|
26
|
+
|
|
27
|
+
## 语料与训练数据合规
|
|
28
|
+
|
|
29
|
+
来源合法性台账:每批语料记录来源/授权依据(采购协议/开源许可/自有数据)——**说不清来源的语料不入训练**;
|
|
30
|
+
知识产权:版权内容的授权范围(训练用途是否覆盖);
|
|
31
|
+
个人信息:授权链完整(收集时的用途声明是否覆盖训练,个保法);**对话数据用于训练/优化=需用户明示授权**(协议明示+可关闭开关,平台设置里给出口);
|
|
32
|
+
标注质量:标注规范与抽检记录(ai-eval 人工标注纪律的合规面);
|
|
33
|
+
微调场景同规(ai-mlops 数据回流管道的合规闸:回流→脱敏→授权核验→才入训练池)。
|
|
34
|
+
|
|
35
|
+
## 内容安全双审(机审+人审,工程主体)
|
|
36
|
+
|
|
37
|
+
- **机审**:输入侧(提示词敏感检测)+输出侧(生成内容审核:文本分类/敏感词/图像审核 ai-multimodal)——审核服务接入统一收口(ai-llm-app 抽象层的审核面),超时与降级策略(审不过来是放行还是拦截?**默认拦截,业务签认才放行**);
|
|
38
|
+
- **人审**:抽样复核(比例与记录)+机审边界样本转人审队列(ai-multimodal 置信度分级同构);
|
|
39
|
+
- 举报与申诉:用户举报通道(处置时限记录)+误拦申诉流程(eng-ux 报错三要素:告知拦了+为什么+怎么申诉);
|
|
40
|
+
- **留存与可追溯**:审核记录/生成记录留存(期限按法规)——traceId 贯穿生成与审核链路(eng-observability);
|
|
41
|
+
- 拦截策略分级:硬拦(违法违规)/软处理(改写引导/免责提示)/放行,策略表有 Owner 有版本(ai-prompt 资产纪律同构)。
|
|
42
|
+
|
|
43
|
+
## AI 生成内容标识(显式+隐式双标识)
|
|
44
|
+
|
|
45
|
+
**显式标识**:生成内容对用户可感知的提示(界面标注"AI 生成"/音视频起始提示)——产品设计项(eng-ux),截图留证;
|
|
46
|
+
**隐式标识**:文件元数据/水印按标识办法落(图片视频元数据写入服务商与内容编号类信息,以现行技术标准为准);
|
|
47
|
+
传播场景:内容可被下载/转发的,标识要随内容走(导出链路检查——**导出成 Word/图片后标识还在吗**,办公平台高频场景);
|
|
48
|
+
API 输出给第三方:协议中约定标识义务传导。
|
|
49
|
+
|
|
50
|
+
## 上线评估与应急
|
|
51
|
+
|
|
52
|
+
上线前安全评估:内容安全评测集全量跑(ai-eval 对抗/敏感/拒答象限=合规评测的家,**评测报告即备案材料底稿**);
|
|
53
|
+
应急处置:违规内容处置时限/一键下线能力(eng-release 开关)/舆情联动路径;
|
|
54
|
+
定期复评:模型/提示大改后重跑安全评测(eng-ai 三元组纪律的合规面);
|
|
55
|
+
未成年人保护:适用场景的防沉迷与内容分级(产品判定)。
|
|
56
|
+
|
|
57
|
+
## 义务→工程能力映射表(立项排期用,eng-planning 输入)
|
|
58
|
+
|
|
59
|
+
| 义务 | 系统能力 | 落点 |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| 内容审核 | 机审接入+人审队列+记录留存 | ai-llm-app 收口/ai-multimodal 复核界面 |
|
|
62
|
+
| 标识 | 显式 UI+隐式元数据+导出链路保持 | eng-ux/文件生成管线 |
|
|
63
|
+
| 可追溯 | 生成与审核日志留存+traceId | eng-observability |
|
|
64
|
+
| 备案材料 | 三元组档案/评测报告/机制说明 | ai-mlops/ai-eval |
|
|
65
|
+
| 用户权利 | 训练授权开关/举报申诉通道 | 产品设置/工单流 |
|
|
66
|
+
| 应急 | 一键下线开关/处置 SOP | eng-release/eng-ops |
|
|
67
|
+
|
|
68
|
+
## 使用纪律
|
|
69
|
+
|
|
70
|
+
合规义务进 AI 特性准入清单(ai-feature-checklist 的合规节引用本链);
|
|
71
|
+
审核策略与标识实现有版本有留证;备案说明与线上实现一致性季度核对;
|
|
72
|
+
**法规以当日文本为准,拿不准过法务**——本链的价值是让法务的要求"接得住、落得快"。
|
|
73
|
+
|
|
74
|
+
**作业包**:`references/genai-compliance-checklist.md`(定性判定卡/义务工程映射逐项勾/备案材料清单/双审与标识核查/上线合规单)。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 生成式 AI 合规检查单(ai-compliance 落笔件;法规更新快,以当日文本与法务口径为准)
|
|
2
|
+
|
|
3
|
+
## 1. 定性判定卡(先定性再排期)
|
|
4
|
+
|
|
5
|
+
- 服务形态:□toC 面向公众 □toB 企业自用 □内部工具 □嵌入产品对外可用(大概率按面向公众)
|
|
6
|
+
- 法务结论:算法备案 □需 □不需;生成式 AI 备案 □需 □不需(依据:__;日期:__)
|
|
7
|
+
- 客户侧要求(私有化):客户要备案证明? □是(材料:__) □否
|
|
8
|
+
|
|
9
|
+
## 2. 义务→工程能力逐项勾
|
|
10
|
+
|
|
11
|
+
| 义务 | 系统能力 | 落点/状态 |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| 输入侧审核 | 提示词敏感检测(超时策略:默认拦截) | □ |
|
|
14
|
+
| 输出侧机审 | 文本/图像审核接入(统一收口 ai-llm-app) | □ |
|
|
15
|
+
| 人审 | 抽样比例__%+边界样本转人审队列+记录 | □ |
|
|
16
|
+
| 举报与申诉 | 通道可用+处置时限__+记录留存 | □ |
|
|
17
|
+
| **显式标识** | 界面"AI 生成"标注(截图留证:__) | □ |
|
|
18
|
+
| **隐式标识** | 元数据/水印按现行标识办法(实现:__) | □ |
|
|
19
|
+
| 导出链路标识保持 | 导出 Word/图片/PDF 后标识仍在(办公场景高频!) | □ |
|
|
20
|
+
| 可追溯 | 生成+审核日志留存__天,traceId 贯穿 | □ |
|
|
21
|
+
| 训练数据授权 | 对话用于训练:协议明示+**可关闭开关** | □ |
|
|
22
|
+
| 一键下线 | 违规应急开关(eng-release)演练日期__ | □ |
|
|
23
|
+
| 未成年人保护 | 适用? □否 □是(措施:__) | □ |
|
|
24
|
+
|
|
25
|
+
## 3. 备案材料清单(工程侧供件)
|
|
26
|
+
|
|
27
|
+
- [ ] 算法机制机理说明底稿(模型来源/训练方式/干预策略——ai-mlops 三元组档案导出)
|
|
28
|
+
- [ ] 安全评估报告(ai-eval 对抗/敏感/拒答象限成绩+评测集说明)
|
|
29
|
+
- [ ] 语料来源台账(每批:来源/授权依据/个信处理说明)
|
|
30
|
+
- [ ] 审核机制说明(双审流程图+拦截策略版本)
|
|
31
|
+
- [ ] 应急处置 SOP(处置时限/下线能力/联系人)
|
|
32
|
+
- [ ] **一致性核对**:材料描述与线上实现一致(季度复核日期:__)
|
|
33
|
+
|
|
34
|
+
## 4. 上线合规单(AI 特性准入的合规节,配合 ai-feature-checklist)
|
|
35
|
+
|
|
36
|
+
- [ ] 定性结论与备案状态确认 - [ ] 双审接入且降级策略=默认拦截(放行需业务签认:__)
|
|
37
|
+
- [ ] 双标识落地且导出链路验证过 - [ ] 安全评测全量通过(报告:__)
|
|
38
|
+
- [ ] 训练授权开关可用 - [ ] 举报通道与应急开关演练过
|
|
39
|
+
|
|
40
|
+
> 结论: □可上线 □带条件 □阻断。法务会签:__ 日期:__
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-eval
|
|
3
|
+
description: AI 评测链(评测集三层建设(冒烟/回归/全量)与坏例回流→覆盖四象限(常态/边界/对抗/拒答)→指标设计(任务定制+幻觉率+拒答正确率+格式合规)→LLM-as-judge 校准纪律→人工标注一致性→变更回归防线与劣化阻断→在线信号回流→评测反模式)。eng-ai 的评测孙链:建评测体系、"感觉变笨了"定量化、模型/提示变更前把关、评测被质疑时载入。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI 评测链
|
|
8
|
+
|
|
9
|
+
eng-ai 的评测孙链——**AI 工程的地基**:没有评测,一切优化都是玄学,一切"变好了"都是错觉。
|
|
10
|
+
类比:评测集之于 AI 特性=测试用例之于代码(eng-quality 的 AI 对应物),同源、同权重、同纪律。
|
|
11
|
+
|
|
12
|
+
## 评测集三层建设
|
|
13
|
+
|
|
14
|
+
| 层 | 规模参考 | 用途 | 运行时机 |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
| 冒烟 | 20–50 条 | 核心场景快验 | 每次提示/参数改动,分钟级 |
|
|
17
|
+
| 回归 | 200–500 条 | 全场景覆盖 | 合入前/模型切换/每日 |
|
|
18
|
+
| 全量 | 1000+ 条(攒出来的) | 深度对比与选型 | 大版本/换模型评估 |
|
|
19
|
+
|
|
20
|
+
来源优先级:**真实数据脱敏 > 专家构造 > 模型合成**(合成例的分布偏差要认,只做补充;合成时用与被评不同的模型);
|
|
21
|
+
**坏例回流是评测集的生命线**:线上失败案例每周入集(脱敏+标注期望),评测集三个月不更新=评了个过去。
|
|
22
|
+
|
|
23
|
+
## 覆盖四象限(建集时对照,别只收"好答的题")
|
|
24
|
+
|
|
25
|
+
常态(高频典型问题)/边界(超长输入/多义/错别字/格式怪异/多语混杂)/
|
|
26
|
+
**对抗**(提示注入样本/诱导越界/敏感话题擦边,eng-security 对 AI 的延伸)/
|
|
27
|
+
**拒答**(就该说"不知道/不能做"的题:知识库外问题/越权请求/超能力任务)——
|
|
28
|
+
拒答象限最易漏:只测"答得对",不测"该拒不拒"=幻觉与越界全放行(ai-rag 无据说无据的验证面)。
|
|
29
|
+
|
|
30
|
+
## 指标设计(任务定制,拒绝单一总分)
|
|
31
|
+
|
|
32
|
+
- 客观可算的优先:分类/抽取类→准确率/F1;结构化输出→schema 合规率;RAG→检索命中率与生成忠实度分开(ai-rag 分段纪律);Agent→任务成功率+步数成本(ai-agent);
|
|
33
|
+
- 生成类维度化打分(1–5 分制):事实正确/相关完整/格式合规/语气得体——**维度分开报,总分掩盖"事实错了但文笔好"**;
|
|
34
|
+
- 负向指标必列:幻觉率(编造检出)/拒答错误两向(该拒不拒+不该拒瞎拒)/越界率(超出授权范围的输出);
|
|
35
|
+
- 每个指标钉口径与目标值(进验收标准,eng-requirements;"准确率高"不是目标,"≥92%"才是)。
|
|
36
|
+
|
|
37
|
+
## LLM-as-judge(规模化评测的主力,校准是前提)
|
|
38
|
+
|
|
39
|
+
- **先校准后信任**:抽 50–100 条人工标注,算裁判与人的一致率(≥85% 才可托管;不达标改评分提示再校准)——未校准的裁判分=另一种玄学;
|
|
40
|
+
- 评分提示设计:维度化+每档给判据描述与示例("5 分=所有事实可溯源;3 分=主体正确但有未溯源细节…")+要求先给理由再给分;
|
|
41
|
+
- 偏置防护:裁判模型≠被评模型(自评自恋);对比评测随机换位(A/B 位置偏好);长度偏好意识(裁判偏爱长答案,判据里写明"简洁不扣分");
|
|
42
|
+
- 裁判也要版本化:裁判模型/提示变了,历史分数不可直接对比(重跑基线,eng-efficiency 口径版本同则);
|
|
43
|
+
- 廉价优先:能用规则断言的(格式/必含字段/长度)不上裁判——**裁判是补充不是替代**。
|
|
44
|
+
|
|
45
|
+
## 人工评测
|
|
46
|
+
|
|
47
|
+
抽样策略:分层抽(按场景/难度),别全抽简单题;
|
|
48
|
+
标注规范先行:判据文档+边界案例讨论对齐,再开标;
|
|
49
|
+
一致性检验:重叠标注算一致率(Kappa 意识),一致率低=判据模糊,先修判据再扩量;
|
|
50
|
+
盲评纪律:标注人不知道答案来自哪个版本(防立场分);
|
|
51
|
+
人工评测贵,用在三处:裁判校准/关键版本决策/坏例深析。
|
|
52
|
+
|
|
53
|
+
## 回归防线(AI 的 CI)
|
|
54
|
+
|
|
55
|
+
**三元组任何变更必跑回归**:模型版本/提示/参数(温度、topK…)——变一个跑一遍(eng-ai 纪律的执行面);
|
|
56
|
+
**作业包**:`scripts/eval-runner.py`(离线评测执行器:jsonl 评测集+任意命令式被评对象,exact/contains/regex 判定、按 tag 分组统计短板象限、`--baseline` 输出新挂/修复对比,退出码即劣化阻断信号——评测集回归防线开箱即用);
|
|
57
|
+
劣化阻断:关键指标跌超阈值(如 -2pt)阻断合入(类比 eng-performance 性能基线门禁);
|
|
58
|
+
非确定性处理:固定采样参数评测(温度调低)或同题多跑取均值;波动带先测出来(基线的置信区间),别把噪声当劣化;
|
|
59
|
+
结果留档:每次评测的 三元组版本+分数+坏例清单 入库,趋势可查(ai-mlops 版本管理联动)。
|
|
60
|
+
|
|
61
|
+
## 在线评测(离线过关≠线上真行)
|
|
62
|
+
|
|
63
|
+
灰度对比:新旧版本按流量分桶,业务指标+质量抽评对照(eng-release 金丝雀的 AI 观察项);
|
|
64
|
+
**隐式信号采集**:用户重试/改写提问/中途放弃/复制采纳/点踩——比"满意度问卷"诚实;信号突变=质量告警(ai-mlops 监控);
|
|
65
|
+
抽样人审例程:线上真实请求周度抽检(合规脱敏后),分数入趋势;
|
|
66
|
+
在线坏例回流闭环(见三层建设)——**离线评测集与在线分布的偏差本身要监控**(评测集老化信号)。
|
|
67
|
+
|
|
68
|
+
## 评测反模式
|
|
69
|
+
|
|
70
|
+
用调优时看过的例子当评测集(既当教材又当考卷=过拟合自欺);
|
|
71
|
+
单一总分决策(维度劣化被平均掩盖);评测集常年不更新(评过去不评现在);
|
|
72
|
+
只测正确性不测安全性(对抗与拒答象限缺失);
|
|
73
|
+
拿裁判分当绝对真值(它是有偏估计,重要决策校验人工);
|
|
74
|
+
评测通过就不管线上(离线在线两张皮)。
|
|
75
|
+
|
|
76
|
+
## 使用纪律
|
|
77
|
+
|
|
78
|
+
无评测集不上线(eng-ai 红线);变更必回归、劣化必阻断;坏例周回流、裁判季校准;
|
|
79
|
+
评测数据含用户内容的按数据分级管理(eng-security);
|
|
80
|
+
**评测体系的成熟度=从"感觉变笨了"到"回归集第 47/52/61 题从 5 分掉到 2 分"的距离**。
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# 离线评测执行器(ai-eval 回归防线的可执行骨架)。python3 stdlib,零依赖,离线可用。
|
|
3
|
+
# 评测集格式 cases.jsonl,每行一个 JSON:
|
|
4
|
+
# {"id":"c1","input":"问题文本","expected":"期望","match":"exact|contains|regex","tags":["rag","边界"]}
|
|
5
|
+
# match 缺省=contains;expected 可为列表(命中其一即过=多参考答案)。
|
|
6
|
+
# 被评对象 = 任意命令(--cmd):用例 input 从 stdin 喂入,stdout 即回答——模型调用、RAG 管道、
|
|
7
|
+
# 规则脚本都能包成命令,评测器不关心里面是什么(三元组变更后重跑对比,ai-eval 纪律)。
|
|
8
|
+
# 用法:
|
|
9
|
+
# python3 eval-runner.py run --cases cases.jsonl --cmd "python3 my_predict.py" [--out results.jsonl]
|
|
10
|
+
# python3 eval-runner.py run --cases cases.jsonl --cmd ... --baseline prev.jsonl # 回归对比:新挂案例=劣化阻断依据
|
|
11
|
+
# python3 eval-runner.py --selftest
|
|
12
|
+
# 退出码: 0=通过(无新挂) 1=有失败/劣化 2=参数错。
|
|
13
|
+
import argparse
|
|
14
|
+
import json
|
|
15
|
+
import re
|
|
16
|
+
import subprocess
|
|
17
|
+
import sys
|
|
18
|
+
import time
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def load_jsonl(path):
|
|
22
|
+
out = []
|
|
23
|
+
with open(path, encoding="utf-8") as f:
|
|
24
|
+
for i, ln in enumerate(f, 1):
|
|
25
|
+
ln = ln.strip()
|
|
26
|
+
if not ln or ln.startswith("#"):
|
|
27
|
+
continue
|
|
28
|
+
try:
|
|
29
|
+
out.append(json.loads(ln))
|
|
30
|
+
except json.JSONDecodeError as e:
|
|
31
|
+
print(f"[错误] {path}:{i} 不是合法 JSON: {e}")
|
|
32
|
+
sys.exit(2)
|
|
33
|
+
return out
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def judge(expected, match, answer):
|
|
37
|
+
exps = expected if isinstance(expected, list) else [expected]
|
|
38
|
+
for e in exps:
|
|
39
|
+
e = str(e)
|
|
40
|
+
if match == "exact" and answer.strip() == e.strip():
|
|
41
|
+
return True
|
|
42
|
+
if match == "contains" and e in answer:
|
|
43
|
+
return True
|
|
44
|
+
if match == "regex" and re.search(e, answer):
|
|
45
|
+
return True
|
|
46
|
+
return False
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def run_case(cmd, case, timeout):
|
|
50
|
+
t0 = time.time()
|
|
51
|
+
try:
|
|
52
|
+
p = subprocess.run(cmd, shell=True, input=str(case.get("input", "")),
|
|
53
|
+
capture_output=True, text=True, timeout=timeout)
|
|
54
|
+
ans = p.stdout
|
|
55
|
+
err = "" if p.returncode == 0 else f"exit={p.returncode} {p.stderr[-200:]}"
|
|
56
|
+
except subprocess.TimeoutExpired:
|
|
57
|
+
ans, err = "", f"timeout>{timeout}s"
|
|
58
|
+
ms = int((time.time() - t0) * 1000)
|
|
59
|
+
ok = (not err) and judge(case.get("expected", ""), case.get("match", "contains"), ans)
|
|
60
|
+
return {"id": case.get("id"), "pass": ok, "ms": ms, "error": err or None,
|
|
61
|
+
"answer_head": ans[:200], "tags": case.get("tags", [])}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def summarize(results, baseline_path):
|
|
65
|
+
total = len(results)
|
|
66
|
+
passed = sum(1 for r in results if r["pass"])
|
|
67
|
+
print(f"== 评测汇总: {passed}/{total} 通过 ({passed * 100 // max(total, 1)}%) ==")
|
|
68
|
+
by_tag = {}
|
|
69
|
+
for r in results:
|
|
70
|
+
for t in (r["tags"] or ["无标签"]):
|
|
71
|
+
s = by_tag.setdefault(t, [0, 0])
|
|
72
|
+
s[1] += 1
|
|
73
|
+
s[0] += r["pass"]
|
|
74
|
+
for t, (p_, n) in sorted(by_tag.items()):
|
|
75
|
+
mark = " <== 短板象限" if n and p_ / n < 0.7 else ""
|
|
76
|
+
print(f" [{t}] {p_}/{n}{mark}")
|
|
77
|
+
fails = [r for r in results if not r["pass"]]
|
|
78
|
+
for r in fails[:10]:
|
|
79
|
+
why = r["error"] or f"未命中期望;回答头: {r['answer_head'][:80]!r}"
|
|
80
|
+
print(f" ✗ {r['id']}: {why}")
|
|
81
|
+
if len(fails) > 10:
|
|
82
|
+
print(f" ...(其余失败 {len(fails) - 10} 条见结果文件)")
|
|
83
|
+
rc = 0 if not fails else 1
|
|
84
|
+
if baseline_path:
|
|
85
|
+
base = {r["id"]: r["pass"] for r in load_jsonl(baseline_path)}
|
|
86
|
+
new_fail = [r["id"] for r in results if not r["pass"] and base.get(r["id"]) is True]
|
|
87
|
+
fixed = [r["id"] for r in results if r["pass"] and base.get(r["id"]) is False]
|
|
88
|
+
print(f"== 回归对比: 新挂 {len(new_fail)} / 修复 {len(fixed)} (基线 {len(base)} 条) ==")
|
|
89
|
+
if new_fail:
|
|
90
|
+
print(f" 新挂案例(劣化,阻断依据): {', '.join(map(str, new_fail[:20]))}")
|
|
91
|
+
rc = 1
|
|
92
|
+
if fixed:
|
|
93
|
+
print(f" 修复案例: {', '.join(map(str, fixed[:20]))}")
|
|
94
|
+
return rc
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def cmd_run(a):
|
|
98
|
+
cases = load_jsonl(a.cases)
|
|
99
|
+
if not cases:
|
|
100
|
+
print("[错误] 评测集为空")
|
|
101
|
+
return 2
|
|
102
|
+
results = []
|
|
103
|
+
for i, c in enumerate(cases, 1):
|
|
104
|
+
r = run_case(a.cmd, c, a.timeout)
|
|
105
|
+
results.append(r)
|
|
106
|
+
sys.stderr.write(f"\r 进度 {i}/{len(cases)} {'✔' if r['pass'] else '✗'} {c.get('id')} ")
|
|
107
|
+
sys.stderr.write("\n")
|
|
108
|
+
if a.out:
|
|
109
|
+
with open(a.out, "w", encoding="utf-8") as f:
|
|
110
|
+
for r in results:
|
|
111
|
+
f.write(json.dumps(r, ensure_ascii=False) + "\n")
|
|
112
|
+
print(f"(结果已写 {a.out} —— 留档做下次 --baseline,ai-eval 结果留档纪律)")
|
|
113
|
+
return summarize(results, a.baseline)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def selftest():
|
|
117
|
+
import tempfile, os
|
|
118
|
+
with tempfile.TemporaryDirectory() as d:
|
|
119
|
+
cases = os.path.join(d, "cases.jsonl")
|
|
120
|
+
with open(cases, "w", encoding="utf-8") as f:
|
|
121
|
+
f.write(json.dumps({"id": "t1", "input": "hello", "expected": "HELLO", "match": "contains", "tags": ["常态"]}) + "\n")
|
|
122
|
+
f.write(json.dumps({"id": "t2", "input": "abc", "expected": "^ABC$", "match": "regex", "tags": ["边界"]}) + "\n")
|
|
123
|
+
f.write(json.dumps({"id": "t3", "input": "x", "expected": "不可能命中", "tags": ["拒答"]}) + "\n")
|
|
124
|
+
ns = argparse.Namespace(cases=cases, cmd="tr a-z A-Z", timeout=10, out=os.path.join(d, "r.jsonl"), baseline=None)
|
|
125
|
+
rc = cmd_run(ns)
|
|
126
|
+
assert rc == 1, "t3 应失败"
|
|
127
|
+
ns2 = argparse.Namespace(cases=cases, cmd="tr a-z A-Z", timeout=10, out=None, baseline=ns.out)
|
|
128
|
+
rc2 = cmd_run(ns2)
|
|
129
|
+
assert rc2 == 1
|
|
130
|
+
print("selftest ok: 判定/回归对比/标签分组均正常")
|
|
131
|
+
return 0
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def main():
|
|
135
|
+
if "--selftest" in sys.argv:
|
|
136
|
+
sys.exit(selftest())
|
|
137
|
+
p = argparse.ArgumentParser(description="离线评测执行器(评测集先行,无评测集不上线)")
|
|
138
|
+
sub = p.add_subparsers(dest="cmd_name", required=True)
|
|
139
|
+
r = sub.add_parser("run")
|
|
140
|
+
r.add_argument("--cases", required=True, help="评测集 jsonl")
|
|
141
|
+
r.add_argument("--cmd", required=True, help="被评命令(stdin 进 stdout 出)")
|
|
142
|
+
r.add_argument("--timeout", type=int, default=60, help="单例超时秒(LLM 按载荷放宽)")
|
|
143
|
+
r.add_argument("--out", help="结果落盘 jsonl(下次做 baseline)")
|
|
144
|
+
r.add_argument("--baseline", help="上次结果 jsonl,输出新挂/修复对比")
|
|
145
|
+
a = p.parse_args()
|
|
146
|
+
sys.exit(cmd_run(a))
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
if __name__ == "__main__":
|
|
150
|
+
main()
|