@huicai/cli 2026.814.0 → 2026.1019.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/LICENSE +391 -32
- package/README.md +137 -8
- package/bin/huicai.js +146 -73
- package/package.json +27 -8
- package/skills/ab-testing/trigger-cases.json +30 -0
- package/skills/academic-writing/trigger-cases.json +30 -0
- package/skills/accounting-ops/trigger-cases.json +30 -0
- package/skills/ai-agent/trigger-cases.json +30 -0
- package/skills/ai-aiops/trigger-cases.json +30 -0
- package/skills/ai-coding/trigger-cases.json +30 -0
- package/skills/ai-compliance/trigger-cases.json +30 -0
- package/skills/ai-eval/trigger-cases.json +30 -0
- package/skills/ai-llm-app/trigger-cases.json +30 -0
- package/skills/ai-mlops/trigger-cases.json +30 -0
- package/skills/ai-multimodal/trigger-cases.json +30 -0
- package/skills/ai-prompt/trigger-cases.json +30 -0
- package/skills/ai-rag/trigger-cases.json +30 -0
- package/skills/anomaly-detection/trigger-cases.json +30 -0
- package/skills/api-design/trigger-cases.json +31 -0
- package/skills/api-integration/trigger-cases.json +31 -0
- package/skills/arch-design/trigger-cases.json +12 -0
- package/skills/arch-diagram/SKILL.md +118 -0
- package/skills/arch-diagram/trigger-cases.json +30 -0
- package/skills/arch-distributed/trigger-cases.json +30 -0
- package/skills/arch-multitenant/trigger-cases.json +30 -0
- package/skills/audio-brief/SKILL.md +65 -0
- package/skills/audio-brief/trigger-cases.json +30 -0
- package/skills/audit-assist/trigger-cases.json +30 -0
- package/skills/audit-chain/trigger-cases.json +31 -0
- package/skills/banking-credit/trigger-cases.json +30 -0
- package/skills/brand-design/trigger-cases.json +30 -0
- package/skills/business-plan/trigger-cases.json +30 -0
- package/skills/capital-ops/trigger-cases.json +30 -0
- package/skills/cicd-pipeline/trigger-cases.json +31 -0
- package/skills/code-archaeology/SKILL.md +55 -0
- package/skills/code-archaeology/trigger-cases.json +9 -0
- package/skills/code-quality/SKILL.md +138 -0
- package/skills/code-quality/references/languages.md +107 -0
- package/skills/code-quality/scripts/__pycache__/code_battery.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_check.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_check.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_csharp.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_csharp.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_fix.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_fix.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_java.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_java.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_jsts.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_jsts.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_lens.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_lens.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_python.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_python.cpython-313.pyc +0 -0
- package/skills/code-quality/scripts/__pycache__/code_testplan.cpython-312.pyc +0 -0
- package/skills/code-quality/scripts/code_battery.py +1072 -0
- package/skills/code-quality/scripts/code_check.py +1269 -0
- package/skills/code-quality/scripts/code_csharp.py +371 -0
- package/skills/code-quality/scripts/code_fix.py +201 -0
- package/skills/code-quality/scripts/code_java.py +695 -0
- package/skills/code-quality/scripts/code_jsts.py +313 -0
- package/skills/code-quality/scripts/code_lens.py +1079 -0
- package/skills/code-quality/scripts/code_python.py +536 -0
- package/skills/code-quality/scripts/code_testplan.py +239 -0
- package/skills/code-quality/trigger-cases.json +45 -0
- package/skills/code-review/SKILL.md +24 -0
- package/skills/code-review/trigger-cases.json +35 -0
- package/skills/commit-and-pr/trigger-cases.json +31 -0
- package/skills/content-creation/trigger-cases.json +30 -0
- package/skills/corporate-governance/trigger-cases.json +30 -0
- package/skills/crawl-chain/trigger-cases.json +31 -0
- package/skills/customer-service/trigger-cases.json +30 -0
- package/skills/data-analysis/trigger-cases.json +30 -0
- package/skills/data-chain/SKILL.md +1 -1
- package/skills/data-chain/trigger-cases.json +31 -0
- package/skills/data-governance/trigger-cases.json +30 -0
- package/skills/data-report-pro/trigger-cases.json +30 -0
- package/skills/data-streaming/trigger-cases.json +30 -0
- package/skills/data-wrangling/SKILL.md +1 -1
- package/skills/data-wrangling/trigger-cases.json +30 -0
- package/skills/db-es/trigger-cases.json +30 -0
- package/skills/db-migration/trigger-cases.json +30 -0
- package/skills/db-mysql/trigger-cases.json +30 -0
- package/skills/db-postgres/trigger-cases.json +30 -0
- package/skills/db-redis/trigger-cases.json +30 -0
- package/skills/debug-root-cause/trigger-cases.json +30 -0
- package/skills/dependency-audit/SKILL.md +56 -0
- package/skills/dependency-audit/trigger-cases.json +7 -0
- package/skills/dependency-upgrade/trigger-cases.json +31 -0
- package/skills/dev-cpp/trigger-cases.json +30 -0
- package/skills/dev-cross-platform/trigger-cases.json +30 -0
- package/skills/dev-csharp/SKILL.md +23 -0
- package/skills/dev-csharp/trigger-cases.json +30 -0
- package/skills/dev-frontend/SKILL.md +19 -0
- package/skills/dev-frontend/trigger-cases.json +30 -0
- package/skills/dev-go/trigger-cases.json +30 -0
- package/skills/dev-harmony/trigger-cases.json +30 -0
- package/skills/dev-java/SKILL.md +20 -0
- package/skills/dev-java/trigger-cases.json +30 -0
- package/skills/dev-mobile/trigger-cases.json +30 -0
- package/skills/dev-node/trigger-cases.json +30 -0
- package/skills/dev-php/trigger-cases.json +30 -0
- package/skills/dev-python/SKILL.md +21 -0
- package/skills/dev-python/trigger-cases.json +30 -0
- package/skills/dev-rust/trigger-cases.json +30 -0
- package/skills/dev-toolchain/trigger-cases.json +31 -0
- package/skills/doc-chain/trigger-cases.json +31 -0
- package/skills/doc-compare/trigger-cases.json +30 -0
- package/skills/docx-author/SKILL.md +127 -25
- package/skills/docx-author/scripts/__pycache__/docx_battery.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/__pycache__/docx_build.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/__pycache__/docx_check.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/__pycache__/docx_layout.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/__pycache__/zh_prose.cpython-312.pyc +0 -0
- package/skills/docx-author/scripts/docx_battery.py +586 -0
- package/skills/docx-author/scripts/docx_build.py +995 -0
- package/skills/docx-author/scripts/docx_check.py +1306 -0
- package/skills/docx-author/scripts/docx_doc.py +14 -154
- package/skills/docx-author/scripts/docx_layout.py +490 -0
- package/skills/docx-author/scripts/zh_prose.py +639 -0
- package/skills/docx-author/trigger-cases.json +58 -0
- package/skills/echo-brief/SKILL.md +84 -0
- package/skills/echo-brief/references/echo-format.md +68 -0
- package/skills/echo-brief/trigger-cases.json +40 -0
- package/skills/ecommerce-ops/trigger-cases.json +30 -0
- package/skills/education-training/trigger-cases.json +30 -0
- package/skills/ehs-safety/trigger-cases.json +30 -0
- package/skills/email-writing/trigger-cases.json +30 -0
- package/skills/eng-ai/trigger-cases.json +30 -0
- package/skills/eng-architecture/trigger-cases.json +31 -0
- package/skills/eng-automation/trigger-cases.json +31 -0
- package/skills/eng-collaboration/trigger-cases.json +30 -0
- package/skills/eng-complex-env/trigger-cases.json +30 -0
- package/skills/eng-data-platform/trigger-cases.json +31 -0
- package/skills/eng-database/trigger-cases.json +31 -0
- package/skills/eng-develop/trigger-cases.json +30 -0
- package/skills/eng-docs/SKILL.md +24 -0
- package/skills/eng-docs/trigger-cases.json +30 -0
- package/skills/eng-efficiency/trigger-cases.json +30 -0
- package/skills/eng-infra/trigger-cases.json +30 -0
- package/skills/eng-integration/trigger-cases.json +31 -0
- package/skills/eng-legacy/trigger-cases.json +31 -0
- package/skills/eng-observability/trigger-cases.json +31 -0
- package/skills/eng-ops/trigger-cases.json +31 -0
- package/skills/eng-performance/trigger-cases.json +31 -0
- package/skills/eng-planning/trigger-cases.json +31 -0
- package/skills/eng-quality/SKILL.md +8 -0
- package/skills/eng-quality/trigger-cases.json +31 -0
- package/skills/eng-release/trigger-cases.json +31 -0
- package/skills/eng-reliability/trigger-cases.json +31 -0
- package/skills/eng-requirements/trigger-cases.json +12 -0
- package/skills/eng-research/trigger-cases.json +30 -0
- package/skills/eng-security/trigger-cases.json +31 -0
- package/skills/eng-ux/trigger-cases.json +30 -0
- package/skills/engineering-chain/trigger-cases.json +30 -0
- package/skills/env-offline/trigger-cases.json +31 -0
- package/skills/env-private-deploy/trigger-cases.json +31 -0
- package/skills/env-xinchuang/trigger-cases.json +31 -0
- package/skills/equipment-tpm/trigger-cases.json +30 -0
- package/skills/esg-report/trigger-cases.json +30 -0
- package/skills/event-management/trigger-cases.json +30 -0
- package/skills/excel-analysis-chain/SKILL.md +17 -4
- package/skills/excel-analysis-chain/trigger-cases.json +31 -0
- package/skills/explain-codebase/trigger-cases.json +11 -0
- package/skills/file-ingest/trigger-cases.json +30 -0
- package/skills/finance-analysis/trigger-cases.json +31 -0
- package/skills/finance-chain/trigger-cases.json +31 -0
- package/skills/financial-modeling/trigger-cases.json +31 -0
- package/skills/find-simplifications/SKILL.md +43 -0
- package/skills/find-simplifications/trigger-cases.json +23 -0
- package/skills/foreign-trade/trigger-cases.json +30 -0
- package/skills/funnel-cohort/trigger-cases.json +30 -0
- package/skills/gov-document/trigger-cases.json +30 -0
- package/skills/gui-change-evidence/SKILL.md +47 -0
- package/skills/gui-change-evidence/trigger-cases.json +23 -0
- package/skills/hr-chain/trigger-cases.json +31 -0
- package/skills/hr-operations/trigger-cases.json +30 -0
- package/skills/info-disclosure/trigger-cases.json +31 -0
- package/skills/infra-gateway/trigger-cases.json +31 -0
- package/skills/infra-k8s/trigger-cases.json +31 -0
- package/skills/infra-mq/trigger-cases.json +30 -0
- package/skills/insurance-advisory/trigger-cases.json +30 -0
- package/skills/internal-audit/trigger-cases.json +30 -0
- package/skills/ip-management/trigger-cases.json +31 -0
- package/skills/ipo-listing/trigger-cases.json +31 -0
- package/skills/it-audit/trigger-cases.json +31 -0
- package/skills/itsm-ops/trigger-cases.json +31 -0
- package/skills/knowledge-sop/trigger-cases.json +31 -0
- package/skills/legal-chain/trigger-cases.json +31 -0
- package/skills/legal-contract/trigger-cases.json +30 -0
- package/skills/litigation-support/trigger-cases.json +31 -0
- package/skills/logistics-warehouse/trigger-cases.json +30 -0
- package/skills/long-doc-analysis/trigger-cases.json +31 -0
- package/skills/management-accounting/trigger-cases.json +30 -0
- package/skills/manufacturing-chain/trigger-cases.json +31 -0
- package/skills/manufacturing-quality/trigger-cases.json +30 -0
- package/skills/marketing-analytics/trigger-cases.json +31 -0
- package/skills/marketing-chain/trigger-cases.json +31 -0
- package/skills/meeting-minutes/trigger-cases.json +30 -0
- package/skills/metrics-system/trigger-cases.json +31 -0
- package/skills/negotiation-prep/trigger-cases.json +30 -0
- package/skills/obs-prometheus/trigger-cases.json +31 -0
- package/skills/office-automation/trigger-cases.json +31 -0
- package/skills/okr-review/trigger-cases.json +30 -0
- package/skills/ops-fleet/trigger-cases.json +31 -0
- package/skills/ops-linux/trigger-cases.json +31 -0
- package/skills/optimization-solver/trigger-cases.json +30 -0
- package/skills/patent-disclosure/SKILL.md +105 -0
- package/skills/patent-disclosure/references/figures.md +110 -0
- package/skills/patent-disclosure/references/outline.md +162 -0
- package/skills/patent-disclosure/scripts/patent_docx.py +230 -0
- package/skills/patent-disclosure/trigger-cases.json +31 -0
- package/skills/patent-drafting/SKILL.md +108 -0
- package/skills/patent-drafting/trigger-cases.json +31 -0
- package/skills/patent-portfolio/SKILL.md +81 -0
- package/skills/patent-portfolio/trigger-cases.json +31 -0
- package/skills/pdf-toolkit/trigger-cases.json +31 -0
- package/skills/perf-optimize/trigger-cases.json +31 -0
- package/skills/pivot-crosstab/trigger-cases.json +30 -0
- package/skills/policy-analysis/trigger-cases.json +31 -0
- package/skills/portfolio-analysis/trigger-cases.json +31 -0
- package/skills/ppt-chain/SKILL.md +14 -6
- package/skills/ppt-chain/trigger-cases.json +31 -0
- package/skills/pptx-author/SKILL.md +86 -33
- package/skills/pptx-author/scripts/__pycache__/pptx_check.cpython-312.pyc +0 -0
- package/skills/pptx-author/scripts/__pycache__/pptx_deck.cpython-312.pyc +0 -0
- package/skills/pptx-author/scripts/__pycache__/pptx_layout.cpython-312.pyc +0 -0
- package/skills/pptx-author/scripts/pptx_battery.py +178 -0
- package/skills/pptx-author/scripts/pptx_build.py +119 -0
- package/skills/pptx-author/scripts/pptx_check.py +1182 -0
- package/skills/pptx-author/scripts/pptx_deck.py +736 -145
- package/skills/pptx-author/scripts/pptx_layout.py +384 -0
- package/skills/pptx-author/trigger-cases.json +15 -0
- package/skills/pr-comms/trigger-cases.json +30 -0
- package/skills/procurement-supply/trigger-cases.json +31 -0
- package/skills/product-design/trigger-cases.json +31 -0
- package/skills/production-planning/trigger-cases.json +31 -0
- package/skills/project-management/trigger-cases.json +31 -0
- package/skills/project-proposal/trigger-cases.json +31 -0
- package/skills/prose-standard/SKILL.md +53 -0
- package/skills/prose-standard/trigger-cases.json +23 -0
- package/skills/qa-api-automation/trigger-cases.json +31 -0
- package/skills/qa-mobile-automation/trigger-cases.json +31 -0
- package/skills/qa-ui-automation/trigger-cases.json +31 -0
- package/skills/quant-analysis/trigger-cases.json +31 -0
- package/skills/rag-triage/SKILL.md +64 -0
- package/skills/rag-triage/evals.json +57 -0
- package/skills/rag-triage/references/triage-playbook.md +75 -0
- package/skills/rag-triage/trigger-cases.json +31 -0
- package/skills/real-estate-property/trigger-cases.json +30 -0
- package/skills/refactor-safely/SKILL.md +1 -1
- package/skills/refactor-safely/trigger-cases.json +30 -0
- package/skills/regression-forecast/trigger-cases.json +31 -0
- package/skills/release-checklist/trigger-cases.json +31 -0
- package/skills/report-craft/SKILL.md +76 -0
- package/skills/report-craft/references/feasibility.md +118 -0
- package/skills/report-craft/references/review-checklist.md +51 -0
- package/skills/report-craft/references/visuals.md +114 -0
- package/skills/report-craft/references/writing.md +80 -0
- package/skills/report-craft/scripts/__pycache__/chart_render.cpython-312.pyc +0 -0
- package/skills/report-craft/scripts/__pycache__/fin_model.cpython-312.pyc +0 -0
- package/skills/report-craft/scripts/__pycache__/project_facts.cpython-312.pyc +0 -0
- package/skills/report-craft/scripts/chart_render.py +1222 -0
- package/skills/report-craft/scripts/fin_model.py +602 -0
- package/skills/report-craft/scripts/project_facts.py +580 -0
- package/skills/report-craft/scripts/report_battery.py +349 -0
- package/skills/report-craft/trigger-cases.json +15 -0
- package/skills/retail-store-ops/trigger-cases.json +30 -0
- package/skills/risk-compliance/trigger-cases.json +31 -0
- package/skills/scope-creep/SKILL.md +45 -0
- package/skills/scope-creep/trigger-cases.json +7 -0
- package/skills/sec-auth/trigger-cases.json +31 -0
- package/skills/sec-compliance/trigger-cases.json +31 -0
- package/skills/securities-chain/trigger-cases.json +31 -0
- package/skills/securities-research/trigger-cases.json +31 -0
- package/skills/security-audit/trigger-cases.json +31 -0
- package/skills/slides-html/SKILL.md +25 -10
- package/skills/slides-html/trigger-cases.json +11 -0
- package/skills/sql-analysis/SKILL.md +110 -0
- package/skills/sql-analysis/trigger-cases.json +34 -0
- package/skills/sql-tuning/trigger-cases.json +31 -0
- package/skills/statistical-testing/trigger-cases.json +31 -0
- package/skills/strategy-planning/trigger-cases.json +30 -0
- package/skills/supply-chain/trigger-cases.json +31 -0
- package/skills/tax-compliance/trigger-cases.json +30 -0
- package/skills/tech-doc/SKILL.md +262 -0
- package/skills/tech-doc/scripts/__pycache__/archive_battery.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/__pycache__/archive_build.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/__pycache__/archive_check.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/__pycache__/archive_spec.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/__pycache__/doc_templates.cpython-312.pyc +0 -0
- package/skills/tech-doc/scripts/archive_battery.py +860 -0
- package/skills/tech-doc/scripts/archive_build.py +599 -0
- package/skills/tech-doc/scripts/archive_check.py +1307 -0
- package/skills/tech-doc/scripts/archive_spec.py +499 -0
- package/skills/tech-doc/scripts/doc_templates.py +624 -0
- package/skills/tech-doc/trigger-cases.json +57 -0
- package/skills/tech-research/trigger-cases.json +31 -0
- package/skills/tender-bidding/trigger-cases.json +31 -0
- package/skills/translation-pro/trigger-cases.json +30 -0
- package/skills/treasury-mgmt/trigger-cases.json +31 -0
- package/skills/trim-cot-leakage/SKILL.md +58 -0
- package/skills/trim-cot-leakage/trigger-cases.json +23 -0
- package/skills/web-craft/SKILL.md +103 -0
- package/skills/web-craft/references/craft-checklist.md +75 -0
- package/skills/web-craft/references/design-direction.md +122 -0
- package/skills/web-craft/references/h5-mobile.md +100 -0
- package/skills/web-craft/references/motion.md +136 -0
- package/skills/web-craft/references/recipes.md +74 -0
- package/skills/web-craft/templates/wedding-invitation.html +1180 -0
- package/skills/web-craft/trigger-cases.json +14 -0
- package/skills/web-scraping/trigger-cases.json +34 -0
- package/skills/web-search/SKILL.md +11 -10
- package/skills/web-search/trigger-cases.json +31 -0
- package/skills/weekly-report/SKILL.md +134 -0
- package/skills/weekly-report/trigger-cases.json +11 -0
- package/skills/write-tests/trigger-cases.json +31 -0
- package/skills/xlsx-analysis/SKILL.md +143 -77
- package/skills/xlsx-analysis/scripts/__pycache__/data_profile.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_build.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_check.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_layout.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/__pycache__/xlsx_toolkit.cpython-312.pyc +0 -0
- package/skills/xlsx-analysis/scripts/data_profile.py +391 -0
- package/skills/xlsx-analysis/scripts/xlsx_battery.py +389 -0
- package/skills/xlsx-analysis/scripts/xlsx_build.py +522 -0
- package/skills/xlsx-analysis/scripts/xlsx_check.py +924 -0
- package/skills/xlsx-analysis/scripts/xlsx_layout.py +235 -0
- package/skills/xlsx-analysis/scripts/xlsx_style.py +28 -66
- package/skills/xlsx-analysis/scripts/xlsx_toolkit.py +61 -5
- package/skills/xlsx-analysis/trigger-cases.json +59 -0
- package/squads/hc-defense.md +47 -0
- package/squads/hc-rdarchive.md +110 -0
- package/squads/hc-redteam.md +50 -0
- package/squads/hc-weekly.md +125 -0
- package/src/account.js +1 -1
- package/src/acp.js +1 -0
- package/src/advisor.js +1 -1
- package/src/agent.js +1 -1
- package/src/api.js +1 -1
- package/src/archaeology.js +1 -0
- package/src/ask-ui.js +1 -0
- package/src/assets-import.js +1 -1
- package/src/autofix.js +1 -1
- package/src/automation-tools.js +1 -1
- package/src/automation.js +1 -1
- package/src/autorun.js +1 -1
- package/src/banner.js +1 -1
- package/src/capability-probe.js +1 -0
- package/src/checkpoints.js +1 -1
- package/src/code-tools.js +1 -0
- package/src/codeindex.js +1 -1
- package/src/codemode.js +1 -0
- package/src/command-bridge.js +1 -0
- package/src/command-ui.js +1 -0
- package/src/commands.js +1 -1
- package/src/compaction.js +1 -1
- package/src/computer.js +1 -1
- package/src/config.js +1 -1
- package/src/consult.js +1 -1
- package/src/context-report.js +1 -1
- package/src/context-window.js +1 -0
- package/src/context.js +1 -1
- package/src/crew.js +1 -0
- package/src/crush.js +1 -0
- package/src/daemon.js +1 -1
- package/src/decisions.js +1 -1
- package/src/depaudit.js +1 -0
- package/src/device.js +1 -1
- package/src/diagram-draw.js +1 -0
- package/src/diagram-layouts.js +1 -0
- package/src/diagram-raster.js +1 -0
- package/src/diagram.js +1 -0
- package/src/dictation.js +1 -0
- package/src/diffview.js +1 -1
- package/src/doctor.js +1 -1
- package/src/docx-tools.js +1 -0
- package/src/errkind.js +1 -1
- package/src/evidence.js +1 -0
- package/src/executors.js +1 -1
- package/src/expert-catalog.js +1 -1
- package/src/experts-store.js +1 -1
- package/src/experts.js +1 -1
- package/src/external-agents.js +1 -0
- package/src/forks.js +1 -1
- package/src/fs-observe.js +1 -0
- package/src/gitflow.js +1 -1
- package/src/goalround.js +1 -0
- package/src/hooks.js +1 -1
- package/src/input.js +1 -1
- package/src/insights.js +1 -1
- package/src/jobs.js +1 -0
- package/src/kbsync.js +1 -1
- package/src/lsp.js +1 -0
- package/src/mcp-apps.js +1 -0
- package/src/mcp.js +1 -1
- package/src/memory.js +1 -1
- package/src/notify.js +1 -1
- package/src/permissions.js +1 -1
- package/src/plan-limits.js +1 -0
- package/src/policy.js +1 -0
- package/src/pptx-tools.js +1 -0
- package/src/presence.js +1 -1
- package/src/privatedir.js +1 -0
- package/src/pyruntime.js +1 -1
- package/src/radar.js +1 -0
- package/src/render.js +1 -1
- package/src/repl.js +1 -1
- package/src/report-tools.js +1 -0
- package/src/routing.js +1 -0
- package/src/sandbox-probe.js +1 -0
- package/src/sandbox-win-launcher.mjs +156 -0
- package/src/sandbox.js +1 -0
- package/src/scan.js +1 -1
- package/src/schedule.js +1 -1
- package/src/scopecreep.js +1 -0
- package/src/sdk.js +1 -0
- package/src/selection.js +1 -0
- package/src/session-events.js +1 -0
- package/src/session.js +1 -1
- package/src/sessionindex.js +1 -0
- package/src/sessionlog.js +1 -0
- package/src/skill-catalog.js +1 -0
- package/src/skill-lint.js +1 -0
- package/src/skill-optimize.js +1 -0
- package/src/skill-scan.js +1 -0
- package/src/skills.js +1 -1
- package/src/spill.js +1 -0
- package/src/squad.js +1 -1
- package/src/subagent.js +1 -1
- package/src/surface-state.js +1 -0
- package/src/tapd.js +1 -0
- package/src/terminal-select.js +1 -0
- package/src/terminal.js +1 -0
- package/src/test-runner.js +1 -0
- package/src/todo.js +1 -1
- package/src/toolpipe.js +1 -0
- package/src/tools.js +1 -1
- package/src/toon.js +1 -0
- package/src/transcript.js +1 -1
- package/src/tui/app.js +1 -1
- package/src/tui/command-menu.js +1 -0
- package/src/tui/progress.js +1 -0
- package/src/tui/scroll.js +1 -0
- package/src/tui/welcome.js +1 -0
- package/src/tui/workbench.js +1 -0
- package/src/ui-spec.js +1 -0
- package/src/uitree.js +1 -0
- package/src/uninstall.js +1 -1
- package/src/visual.js +1 -1
- package/src/voice-form.js +1 -0
- package/src/voice.js +1 -0
- package/src/watch.js +1 -1
- package/src/web-audit.js +1 -0
- package/src/web-cdp.js +1 -0
- package/src/web-inspect.js +1 -0
- package/src/websearch.js +1 -0
- package/src/weekly.js +1 -0
- package/src/workflow.js +1 -0
- package/src/worklog.js +1 -0
- package/src/xlsx-tools.js +1 -0
- package/ui/command-picker.js +79 -0
- package/skills/ab-testing/scripts/__pycache__/ab_test.cpython-312.pyc +0 -0
- package/skills/accounting-ops/scripts/__pycache__/acct_tools.cpython-312.pyc +0 -0
- package/skills/anomaly-detection/scripts/__pycache__/anomaly.cpython-312.pyc +0 -0
- package/skills/audit-assist/scripts/__pycache__/audit_sampling.cpython-312.pyc +0 -0
- package/skills/banking-credit/scripts/__pycache__/credit_metrics.cpython-312.pyc +0 -0
- package/skills/data-report-pro/scripts/__pycache__/bigdata.cpython-312.pyc +0 -0
- package/skills/data-wrangling/scripts/__pycache__/join_tools.cpython-312.pyc +0 -0
- package/skills/ecommerce-ops/scripts/__pycache__/gmv_decompose.cpython-312.pyc +0 -0
- package/skills/funnel-cohort/scripts/__pycache__/funnel.cpython-312.pyc +0 -0
- package/skills/management-accounting/scripts/__pycache__/costing.cpython-312.pyc +0 -0
- package/skills/manufacturing-quality/scripts/__pycache__/spc.cpython-312.pyc +0 -0
- package/skills/marketing-analytics/scripts/__pycache__/rfm.cpython-312.pyc +0 -0
- package/skills/optimization-solver/scripts/__pycache__/solver.cpython-312.pyc +0 -0
- package/skills/pivot-crosstab/scripts/__pycache__/pivot_tools.cpython-312.pyc +0 -0
- package/skills/portfolio-analysis/scripts/__pycache__/portfolio.cpython-312.pyc +0 -0
- package/skills/procurement-supply/scripts/__pycache__/supply.cpython-312.pyc +0 -0
- package/skills/production-planning/scripts/__pycache__/mrp_capacity.cpython-312.pyc +0 -0
- package/skills/project-management/scripts/__pycache__/cpm.cpython-312.pyc +0 -0
- package/skills/quant-analysis/scripts/__pycache__/quant.cpython-312.pyc +0 -0
- package/skills/real-estate-property/scripts/__pycache__/property_calc.cpython-312.pyc +0 -0
- package/skills/regression-forecast/scripts/__pycache__/regress.cpython-312.pyc +0 -0
- package/skills/securities-research/scripts/__pycache__/valuation.cpython-312.pyc +0 -0
- package/skills/statistical-testing/scripts/__pycache__/stat_tests.cpython-312.pyc +0 -0
- package/skills/treasury-mgmt/scripts/__pycache__/cashflow_forecast.cpython-312.pyc +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "qa-api-automation",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "搭接口自动化框架,断言分几层",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "回归全靠手点,接口用例怎么设计",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "用例老误报,脆弱率怎么治",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一次 UI 端到端自动化的选择器策略",
|
|
22
|
+
"shouldTrigger": false,
|
|
23
|
+
"lexical": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "neg-2",
|
|
27
|
+
"prompt": "写一份测试方案的分层策略",
|
|
28
|
+
"shouldTrigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "qa-mobile-automation",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "搭移动端自动化,Appium 还是原生框架",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "云真机机型矩阵怎么选,弹窗打断怎么办",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "厂商 ROM 差异和弱网注入怎么做",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一次 Web 端 E2E 的并行分片",
|
|
22
|
+
"shouldTrigger": false,
|
|
23
|
+
"lexical": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "neg-2",
|
|
27
|
+
"prompt": "写一段 App 的启动优化",
|
|
28
|
+
"shouldTrigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "qa-ui-automation",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "搭 Web UI 自动化,选择器策略怎么定",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "E2E 老是挂,跑一轮要两小时",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "显式等待和页面对象怎么组织",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一次接口自动化的断言分层",
|
|
22
|
+
"shouldTrigger": false,
|
|
23
|
+
"lexical": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "neg-2",
|
|
27
|
+
"prompt": "写一份移动端云真机方案",
|
|
28
|
+
"shouldTrigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "quant-analysis",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "分析这只股票的收益回撤和夏普",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "算一下 MACD RSI 技术指标",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "策略回测怎么防过拟合",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一次投资组合的业绩归因",
|
|
22
|
+
"shouldTrigger": false,
|
|
23
|
+
"lexical": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "neg-2",
|
|
27
|
+
"prompt": "写一份行业研究报告",
|
|
28
|
+
"shouldTrigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rag-triage
|
|
3
|
+
description: RAG 检索问题分诊(12 类失败模式 P01–P12:接地漂移/分块边界/嵌入不匹配/索引陈旧/路由错配/长链漂移/工具未接地/记忆缺失/评测盲区/启动顺序/配置漂移/多租户干扰)。当用户说"知识库答非所问/检索不准/引用的不是原文/明明有资料却说没有/RAG 效果差/换了模型就不对了"时使用,先归类再动手。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# RAG 检索问题分诊
|
|
8
|
+
|
|
9
|
+
RAG 出问题时最常见的处置是「加更多上下文」「换个更好的模型」——这两句话对任何症状都成立,
|
|
10
|
+
因此对任何症状都没用。本技能的作用是**先把症状归到一类失败模式上,再谈修法**:
|
|
11
|
+
归错类的修补不但白做,还会掩盖真正的原因。
|
|
12
|
+
|
|
13
|
+
## 何时使用
|
|
14
|
+
|
|
15
|
+
- 用户抱怨知识库答非所问、检索不准、引用对不上原文
|
|
16
|
+
- 明明资料在库里却回答「没有依据」
|
|
17
|
+
- 换了嵌入模型/换了库/重新导入之后效果突变
|
|
18
|
+
- 本地好用、线上不准;或某个租户不准、别的租户正常
|
|
19
|
+
|
|
20
|
+
## 怎么用
|
|
21
|
+
|
|
22
|
+
1. 先问清三件事,缺一件都容易归错类:
|
|
23
|
+
- **具体问句**与**期望命中的原文**(不要只说"检索不准");
|
|
24
|
+
- 这批资料是**什么时候、用什么模型**建的库;检索时用的又是**哪个模型**;
|
|
25
|
+
- 是**一直不准**,还是**某次变更之后**才不准(变更是最强的线索)。
|
|
26
|
+
2. 按下表归到**一个主类**,最多再列两个候选,不要罗列全部十二类。
|
|
27
|
+
3. 每一类都给出**最小结构性修复**——改检索、改索引、改路由、改评测或改基建,
|
|
28
|
+
而不是「加更多上下文」「用更强的模型」这类放之四海皆准的空话。
|
|
29
|
+
4. 手上有平台权限时,用检索测试接口看一轮真实 `topScore` 分布再下结论;
|
|
30
|
+
分数分布比任何主观判断都可靠。
|
|
31
|
+
|
|
32
|
+
## 12 类失败模式
|
|
33
|
+
|
|
34
|
+
| 编号 | 失败模式 | 典型症状 | 最小结构性修复方向 |
|
|
35
|
+
|---|---|---|---|
|
|
36
|
+
| P01 | 检索幻觉 / 接地漂移 | 答案自信地与检索到的文档相矛盾 | 引文逐字校验 + 拒答闸(本平台见 `CitationGuard`) |
|
|
37
|
+
| P02 | 分块边界或切分缺陷 | 相关事实被切散或截断在不同块里 | 调分块粒度与重叠;开上下文邻块扩展 |
|
|
38
|
+
| P03 | 嵌入不匹配 / 语义与向量距离脱节 | 余弦相似度与真实相关性对不上 | **核对建库与检索用的是不是同一模型同一维度**;各向异性做中心化 |
|
|
39
|
+
| P04 | 索引偏斜或陈旧 | 源数据已更新,索引仍返回旧数据或缺数据 | 增量同步与保鲜;重建索引;核对入库是否静默失败 |
|
|
40
|
+
| P05 | 查询改写或路由错配 | 路由把问题发到了错误的工具或数据集 | 路由判据显式化;低置信回退;本平台见 `QueryRewriter` |
|
|
41
|
+
| P06 | 长链推理漂移 | 多步任务逐渐丢失早先的约束 | 阶段化 + 中间结论落盘;压缩时保住约束条款 |
|
|
42
|
+
| P07 | 工具误用 / 工具未接地 | 工具被以错误参数调用,或调用时无依据 | 工具入参校验;工具结果回填后再要求引用 |
|
|
43
|
+
| P08 | 会话记忆泄漏 / 上下文缺失 | 对话在轮次或会话之间丢失重要事实 | 检查压缩切点是否切断了 tool 配对;长期记忆写入时机 |
|
|
44
|
+
| P09 | 评测盲区 | 系统通过测试但在真实事故上失败 | 用真实坏例建回归集;检索与生成指标**分开测** |
|
|
45
|
+
| P10 | 启动顺序 / 依赖未就绪 | 部署后最初几分钟大量失败 | 就绪探针 + 重试退避;把「向量库未就绪」与「无结果」分开报 |
|
|
46
|
+
| P11 | 配置或密钥跨环境漂移 | 本地能跑,预发/生产不准 | 配置项纳入发布清单;启动时打印生效的检索配置 |
|
|
47
|
+
| P12 | 多租户 / 多智能体互相干扰 | 某个租户不准,或并发时互相串 | 检查库归属过滤是否在**检索层**;缓存键是否带租户维度 |
|
|
48
|
+
|
|
49
|
+
## 归类要点(最容易归错的三组)
|
|
50
|
+
|
|
51
|
+
- **P01 与 P03 的区别**:资料检对了但答案跑偏是 P01(下游接地问题);
|
|
52
|
+
资料压根没检对是 P03/P02(上游检索问题)。先看检索返回的块**对不对**,再看答案。
|
|
53
|
+
- **P03 与 P04 的区别**:P03 是「分数算得不对」,P04 是「东西根本不在索引里」。
|
|
54
|
+
拿一段原文**原句**去检索:检得到说明索引没问题(指向 P03),检不到就是 P04。
|
|
55
|
+
- **P05 与 P02 的区别**:换个说法就能检到是 P05(措辞失配);
|
|
56
|
+
换任何说法都只能检到半句是 P02(切分把事实切散了)。
|
|
57
|
+
|
|
58
|
+
详细排查步骤见 [references/triage-playbook.md](references/triage-playbook.md)。
|
|
59
|
+
|
|
60
|
+
## 边界
|
|
61
|
+
|
|
62
|
+
- 本技能只做**归类与修复方向**,不替代真实数据上的验证:任何结论都应当用
|
|
63
|
+
「拿原句去检索」「看 topScore 分布」「对比建库与检索模型」这类可验证的动作确认。
|
|
64
|
+
- 不要一次给出多于三类的判断。归类的价值在于收敛,列满十二类等于没归类。
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_note": "行为层评测集(第 3 层)。跑法:node scripts/skill-optimize.cjs skills/rag-triage --score-only。这份是**人工撰写**的样板——skill-optimize 首次运行会自动生成一份,但生成的那份务必人工审一遍再用:模型很容易写出「是否专业」这类无法客观判定的标准。",
|
|
3
|
+
"scenarios": [
|
|
4
|
+
{
|
|
5
|
+
"id": 1,
|
|
6
|
+
"name": "典型:引用了不存在的原文",
|
|
7
|
+
"input": "知识库问答里,模型给的回答带了引用,但我去原文里搜根本搜不到那句话。怎么查?"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": 2,
|
|
11
|
+
"name": "边界:换模型后才不对",
|
|
12
|
+
"input": "之前 RAG 效果挺好的,换了个 embedding 模型之后就开始答非所问了,检索代码一行没动。"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": 3,
|
|
16
|
+
"name": "干扰项:症状描述含糊",
|
|
17
|
+
"input": "我们的 RAG 效果不太好,你看看怎么优化一下。"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": 4,
|
|
21
|
+
"name": "边界:明明有资料却说没有",
|
|
22
|
+
"input": "文档里明明写了这个流程,问它却说知识库里没有相关内容。"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"evals": [
|
|
26
|
+
{
|
|
27
|
+
"id": 1,
|
|
28
|
+
"name": "先归类再动手",
|
|
29
|
+
"question": "输出是否先给出了一个 P01–P12 中的具体failure 模式编号,而不是直接开始给建议?",
|
|
30
|
+
"pass": "明确点名了某个 Pxx 分类(可以给出候选,但必须有编号)"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": 2,
|
|
34
|
+
"name": "结构性修复而非空话",
|
|
35
|
+
"question": "给出的修复建议是否是结构性的改动(改分块/改检索/改嵌入/加引文核对等),而不是「加更多上下文」「换个更好的模型」这类空话?",
|
|
36
|
+
"pass": "至少一条建议指向了管道里的某个具体环节"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": 3,
|
|
40
|
+
"name": "先要证据再下结论",
|
|
41
|
+
"question": "在症状描述不足以定位时,输出是否先要求补充具体信息(检索命中分、分块大小、嵌入模型等),而不是凭空断言根因?",
|
|
42
|
+
"pass": "对含糊的描述会先提问或列出需要确认的事实"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": 4,
|
|
46
|
+
"name": "嵌入不一致要被识别",
|
|
47
|
+
"question": "对「换了 embedding 模型后变差」这类描述,输出是否指向了建库与检索的嵌入不一致(P03 类)?",
|
|
48
|
+
"pass": "点出了「入库用的模型/维度与检索时不一致」这条线索"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": 5,
|
|
52
|
+
"name": "不编造平台组件",
|
|
53
|
+
"question": "输出提到的平台组件(如引文守卫、查询改写)是否都是真实存在的,没有编造不存在的功能开关?",
|
|
54
|
+
"pass": "只提到技能正文里出现过的组件名"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# RAG 分诊排查手册
|
|
2
|
+
|
|
3
|
+
按顺序做,每一步都产出可判定的结论,不要跳步。
|
|
4
|
+
|
|
5
|
+
## 第 0 步:把症状变成可复现的一条用例
|
|
6
|
+
|
|
7
|
+
拿到「检索不准」这种描述先别动手,问出三样东西:
|
|
8
|
+
|
|
9
|
+
- 具体问句(原话,不要转述)
|
|
10
|
+
- 期望命中的原文片段(用户认为答案应该在哪一段)
|
|
11
|
+
- 是一直如此还是某次变更之后
|
|
12
|
+
|
|
13
|
+
没有这三样,后面每一步都是猜。
|
|
14
|
+
|
|
15
|
+
## 第 1 步:原句召回测试(分开 P04 与 P03)
|
|
16
|
+
|
|
17
|
+
把**期望命中的那段原文的一整句**当作查询去检索。
|
|
18
|
+
|
|
19
|
+
- 检得到,且排第一 → 索引没问题,问题在措辞失配或分数计算 → 转第 2 步
|
|
20
|
+
- 检不到 → 东西不在索引里或索引坏了 → **P04**,去查入库流程是否静默失败、
|
|
21
|
+
文档是否真的完成了向量化、是否被归属过滤挡掉(后者是 **P12**)
|
|
22
|
+
|
|
23
|
+
## 第 2 步:措辞替换测试(分开 P05 与 P02)
|
|
24
|
+
|
|
25
|
+
把用户原问句换成资料里的正式措辞再检一次。
|
|
26
|
+
|
|
27
|
+
- 换了说法就检到了 → **P05**,措辞失配。修法是查询改写(同义扩展/术语归一/去噪),
|
|
28
|
+
而不是调阈值
|
|
29
|
+
- 换任何说法都只能检到半句、上下文断在关键处 → **P02**,切分把事实切散了。
|
|
30
|
+
修法是调分块粒度与重叠,或开上下文邻块扩展
|
|
31
|
+
|
|
32
|
+
## 第 3 步:模型一致性核对(确认 P03)
|
|
33
|
+
|
|
34
|
+
这一步经常被跳过,而它是「代码全对但就是不准」的头号原因。
|
|
35
|
+
|
|
36
|
+
- 建库时用的嵌入模型 / 维度,与检索时用的**是不是同一个**
|
|
37
|
+
- 中途换过模型吗?换了之后**有没有重建索引**(老向量与新查询向量不在同一空间,
|
|
38
|
+
余弦值毫无意义,但不会报任何错)
|
|
39
|
+
- 维度对不上通常会报错,**同维度不同模型则完全静默**——这是最难发现的一种
|
|
40
|
+
|
|
41
|
+
确认不一致即 **P03**,修法是统一模型并重建索引,而不是调阈值或换更强的生成模型。
|
|
42
|
+
|
|
43
|
+
## 第 4 步:分数分布体检
|
|
44
|
+
|
|
45
|
+
看一轮真实查询的 `topScore` 分布(本平台的检索接口回传该值)。
|
|
46
|
+
|
|
47
|
+
- 分数普遍很低(如都在 0.3 以下)→ 多半仍是 P03,或语料与提问域根本不匹配
|
|
48
|
+
- 分数分化明显(好的很高、坏的很低)→ 检索是健康的,问题在下游 → 转第 5 步
|
|
49
|
+
- 分数普遍很高但答案不对 → **P01**,接地问题
|
|
50
|
+
|
|
51
|
+
## 第 5 步:下游接地检查(确认 P01)
|
|
52
|
+
|
|
53
|
+
检索返回的块**是对的**,但答案不对:
|
|
54
|
+
|
|
55
|
+
- 答案里的引用能不能逐字回到原文?不能 → 引文校验没开或没生效
|
|
56
|
+
- 提示词里有没有「资料不足时可以用你自己的知识」这类口子?有就是 P01 的源头
|
|
57
|
+
- 证据不足时系统会拒答吗?不会 → 补前置检索闸
|
|
58
|
+
|
|
59
|
+
## 第 6 步:环境与并发(P10 / P11 / P12)
|
|
60
|
+
|
|
61
|
+
前五步都正常,问题却只在特定环境或特定租户出现:
|
|
62
|
+
|
|
63
|
+
- 只在部署后头几分钟 → **P10**,就绪探针与重试
|
|
64
|
+
- 本地好、线上不好 → **P11**,对比两边**生效的**检索配置(启动时打印出来对,
|
|
65
|
+
不要对配置文件——配置文件不等于生效值)
|
|
66
|
+
- 只有某个租户/某个并发场景 → **P12**,检查归属过滤是否在检索层、缓存键是否带租户维度
|
|
67
|
+
|
|
68
|
+
## 常见误诊
|
|
69
|
+
|
|
70
|
+
| 现象 | 容易误判为 | 实际多半是 |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| 换了嵌入模型后突然不准 | 新模型不好 | P03,老向量没重建 |
|
|
73
|
+
| 明明有资料却说没有 | 阈值太高 | P04 入库失败,或 P12 被归属过滤挡掉 |
|
|
74
|
+
| 答案有细节但都是错的 | 模型能力不够 | P01 接地漂移 |
|
|
75
|
+
| 长文档问答开头准结尾乱 | 上下文不够长 | P06 长链漂移,或 P02 切分问题 |
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "rag-triage",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "知识库答非所问,检索不准怎么查",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "明明有资料却说没有,引用的不是原文",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "换了模型 RAG 效果就不对了",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "搭一套检索增强的数据管道",
|
|
22
|
+
"shouldTrigger": false,
|
|
23
|
+
"lexical": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "neg-2",
|
|
27
|
+
"prompt": "写一段向量库的查询代码",
|
|
28
|
+
"shouldTrigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "real-estate-property",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "测算这个物业的 IRR 和租金回报",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "出租率和租约到期怎么管",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "物业收缴率和资产台账怎么盘",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一次门店选址评分",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "写一份投资组合分析",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "refactor-safely",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "帮我重构一下这段代码",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "消除重复,降复杂度",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "拆函数解耦,不要改外部行为",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "评审这段代码有没有安全漏洞",
|
|
22
|
+
"shouldTrigger": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "neg-2",
|
|
26
|
+
"prompt": "优化一下这个接口的性能",
|
|
27
|
+
"shouldTrigger": false
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "regression-forecast",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "预测一下未来几个月的走势",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "做个回归看什么因素影响它",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "相关还是因果,预测区间怎么给",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "做一次假设检验看有没有显著差异",
|
|
22
|
+
"shouldTrigger": false,
|
|
23
|
+
"lexical": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "neg-2",
|
|
27
|
+
"prompt": "写一份运筹优化的求解模型",
|
|
28
|
+
"shouldTrigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "release-checklist",
|
|
3
|
+
"cases": [
|
|
4
|
+
{
|
|
5
|
+
"id": "pos-1",
|
|
6
|
+
"prompt": "要发版了,上线前检查一遍",
|
|
7
|
+
"shouldTrigger": true
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "pos-2",
|
|
11
|
+
"prompt": "发布准备和打包发布要注意什么",
|
|
12
|
+
"shouldTrigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "pos-3",
|
|
16
|
+
"prompt": "release 前的系统化检查清单",
|
|
17
|
+
"shouldTrigger": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "neg-1",
|
|
21
|
+
"prompt": "定一套发布流程和灰度模式",
|
|
22
|
+
"shouldTrigger": false,
|
|
23
|
+
"lexical": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "neg-2",
|
|
27
|
+
"prompt": "写一段流水线的门禁配置",
|
|
28
|
+
"shouldTrigger": false
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: report-craft
|
|
3
|
+
description: 写要过评审的报告时载入——可研报告的财务测算(NPV/IRR/投资回收期/敏感性分析)、投资估算表与现金流量表、配数据图表(甘特图/投资构成/累计现金流/龙卷风/风险矩阵)和架构图、功能模块图,从代码库取证项目规模;让可行性研究、立项、结题、技术方案、商业计划书写得专业有说服力:先取证、再测算、再配图、最后成文与自审。
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 报告写作:让评审信服
|
|
8
|
+
|
|
9
|
+
一句话:**先取证、再测算、再配图、最后成文;每个数有出处,每张图有用处,每个结论有依据。**
|
|
10
|
+
|
|
11
|
+
报告写不好,很少是文笔的事。可研基线里的真实翻车:回收期拿收入除总投资(没扣经营成本)、
|
|
12
|
+
「节约 60 万元/年」而被节约的那项支出总共才 22 万元、进度计划整体落在编制日期之前、
|
|
13
|
+
同一份文件里「七个维度」和「五个维度」各说各的、四张图全是流程图而没有一张数据图、
|
|
14
|
+
财务评价没有 NPV 和敏感性。这些都是**流程**出的错:没取证就写、没算就报、没规划图表就动笔。
|
|
15
|
+
|
|
16
|
+
## 一、流程(顺序不能乱)
|
|
17
|
+
|
|
18
|
+
| 步骤 | 做什么 | 用什么 |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| 1 定体例 | 这类文档有哪些必备章节、每节评审看什么 | tech-doc 技能;可研逐章要点见 [references/feasibility.md](references/feasibility.md) |
|
|
21
|
+
| 2 取证 | 列事实清单,分清**已建成(现状)/ 在建 / 计划**三种时态,每条带来源 | `project_facts`(代码库)、`read_file` / `read_document`(已有的需求、设计、方案文档)、用户材料 |
|
|
22
|
+
| 3 测算 | 投资、收入、经营成本、成本节约 → 表、指标、结论句、图表 spec | `fin_model` |
|
|
23
|
+
| 4 图表计划 | 动笔前先列「这份报告要哪些图、哪些表、各放哪一节」 | 第三节 |
|
|
24
|
+
| 5 出图 | 结构图与数据图,同一轮并行调用 | `render_diagram` / `render_chart` |
|
|
25
|
+
| 6 成文 | 按章写 Markdown 草稿(`write_file`);图写 ``,表前一行写 `表:表题` | [references/writing.md](references/writing.md) |
|
|
26
|
+
| 7 成稿与自审 | `create_doc`(`markdown_path` + `template`)→ `docx_inspect` → 必修清零、建议逐条过 | [references/review-checklist.md](references/review-checklist.md) |
|
|
27
|
+
|
|
28
|
+
长报告按章写进**同一份草稿**:第一章 `write_file`,之后每章(或每 3000 字左右)`append=true` 追加。一次塞进上万字会被单次输出上限截断,后半截也必然潦草。
|
|
29
|
+
|
|
30
|
+
## 二、三条红线(评审一票否决)
|
|
31
|
+
|
|
32
|
+
1. **时态**。编制日期之后才发生的才叫计划。已经做完的写进「现有工作基础 / 项目进展」,
|
|
33
|
+
计划从编制之后排。项目已经做了一部分(代码库里有东西)时尤其要分清:
|
|
34
|
+
可研论证的是「接下来还要投入什么、做成什么、值不值」。`docx_inspect` 会报「进度计划整体早于编制时间」。
|
|
35
|
+
2. **数字同源**。同一个数全文只有一个值:规模数字取自 `project_facts`,财务数字取自 `fin_model`
|
|
36
|
+
的同一次结果,正文、表、图、摘要一字不差。成稿前 `grep` 关键数(总投资、工期、人数、模块数)核一遍。
|
|
37
|
+
3. **财务口径**。回收期基于净现金流且含建设期;节约额不超过被节约的支出;NPV、IRR、回收期、
|
|
38
|
+
敏感性四样齐全;悲观情景 NPV 转负就不能写「完全可行」,要写「有条件可行」并写清条件。
|
|
39
|
+
不心算:`fin_model` 给的结论句和表直接用,改假设就重算,不要手改结果。
|
|
40
|
+
|
|
41
|
+
## 三、图表计划(可研基线,按项目增减)
|
|
42
|
+
|
|
43
|
+
**结构图(render_diagram)**:总体架构(layered)、技术架构(layered)、功能模块(tree,`project_facts`
|
|
44
|
+
已给出模块树 spec)、部署架构(layered)、核心业务流程(flow)、关键技术原理(flow / sequence)、
|
|
45
|
+
组织结构(tree)。
|
|
46
|
+
|
|
47
|
+
**数据图(render_chart)**:投资构成(pie / waterfall)、累计现金流量(line,看回收期)、
|
|
48
|
+
敏感性(tornado)、实施进度(gantt,`today` 填编制日期)、风险矩阵(matrix)、
|
|
49
|
+
市场规模与增长(bar / line,**必须注明数据来源**,没有来源就不画)。
|
|
50
|
+
|
|
51
|
+
**表**:投资估算表、分年度投资计划、项目投资现金流量表、财务评价指标表、敏感性分析表、
|
|
52
|
+
方案比选表、进度计划与里程碑表、风险登记表、人员分工表、技术指标表(指标 / 现状值 / 目标值 / 测试方法)。
|
|
53
|
+
|
|
54
|
+
规则:每张图都有一句引出它的正文(「如@fig:arch 所示,……」并说出它说明了什么);图题用名词短语;
|
|
55
|
+
一张图只讲一件事;数据图不用 `run_python` 手写 matplotlib。结构图**为纸面画**:插进文档的加 `header:false`,
|
|
56
|
+
`render_diagram` 报「打印看不清」就精简节点、拆图,或横排插入(`{#fig:x .landscape}`)。各类 spec 的现成写法见
|
|
57
|
+
[references/visuals.md](references/visuals.md)。
|
|
58
|
+
|
|
59
|
+
## 四、写得像行家
|
|
60
|
+
|
|
61
|
+
- 每节第一句就是本节结论;段落按「主张—依据—含义」走。
|
|
62
|
+
- 用数字和对象代替形容词:✗「显著提升对账效率」→ ✓「单次对账从 40 分钟降到 6 分钟(2026 年 7 月 3 家门店试点实测)」。
|
|
63
|
+
- 依据写出来源:「据 backend/pom.xml,后端由 9 个模块组成」「经 fin_model 测算」。
|
|
64
|
+
- **不编造**:人名、职称、客户名单、合同额、市场数据,拿不到就写「[待补:……]」并在交付时列出待补清单。
|
|
65
|
+
编一个像样的数比留空危险得多——评审一问来源就全盘失信。
|
|
66
|
+
- 一句只讲一件事:超过 60 字、或连着三个以上逗号就拆开(`docx_inspect` 会标长句)。
|
|
67
|
+
- 同一事物全文一个叫法,缩略语首次出现给全称。
|
|
68
|
+
- 不写空话:赋能、助力、打造、全方位、深度融合、显著提升……(`docx_inspect` 的 AI 味会标出来)。
|
|
69
|
+
|
|
70
|
+
好坏对照与段落范例见 [references/writing.md](references/writing.md)。
|
|
71
|
+
|
|
72
|
+
## 五、交付说明
|
|
73
|
+
|
|
74
|
+
交付时说清五件事:文档路径;图表清单(几张结构图、几张数据图、几张表);测算关键数(总投资、NPV、
|
|
75
|
+
IRR、回收期、最敏感因素);**待补信息清单**(哪些必须由用户补,如人员、单位资质、合同);
|
|
76
|
+
`docx_inspect` 的结论(必修几项、建议几项、哪些建议有意保留及理由)。
|