@archsight/aios 1.3.1 → 1.4.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.
Files changed (80) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +44 -0
  3. package/README.md +38 -0
  4. package/RELEASE_NOTES.md +49 -0
  5. package/bin/archsight-aios.mjs +253 -8
  6. package/delivery/README.md +1 -0
  7. package/delivery/v1.4.0-release-readiness.md +64 -0
  8. package/docs/quickstart.md +8 -0
  9. package/docs/v1.4.0-writing-boundary.md +42 -0
  10. package/docs/v1.4.0-writing-workflow-quickstart.md +83 -0
  11. package/gemini-extension.json +1 -1
  12. package/package.json +5 -1
  13. package/prompts/README.md +3 -0
  14. package/prompts/evaluation-policy.md +68 -0
  15. package/prompts/evaluations/engineering-document-writing-fixtures.json +129 -0
  16. package/prompts/evaluations/engineering-document-writing-scorecard.json +108 -0
  17. package/prompts/evaluations/skill-runtime/README.md +15 -0
  18. package/prompts/evaluations/skill-runtime/raw/codex-scheme-writing-sample.md +111 -0
  19. package/prompts/evaluations/skill-runtime/raw/codex-tender-writing-sample.md +108 -0
  20. package/prompts/evaluations/skill-runtime/raw/workbuddy-scheme-writing-sample.md +228 -0
  21. package/prompts/evaluations/skill-runtime/raw/workbuddy-tender-writing-sample.md +143 -0
  22. package/prompts/evaluations/skill-runtime/v1.4.0-writing-host-scorecard-review.md +29 -0
  23. package/prompts/evaluations/skill-runtime/v1.4.0-writing-host-validation.json +112 -0
  24. package/prompts/evaluations/skill-runtime/v1.4.0-writing-host-validation.md +43 -0
  25. package/prompts/prompt-registry.md +2 -0
  26. package/runtime/archsight-aios.manifest.json +70 -8
  27. package/runtime/skill-routing.md +4 -1
  28. package/scripts/build-prompt-run-pack.mjs +27 -9
  29. package/scripts/validate-prompt-fixtures.mjs +31 -10
  30. package/scripts/validate-prompt-scorecard.mjs +22 -6
  31. package/scripts/validate-skill-runtime-evidence.mjs +125 -0
  32. package/skills/README.md +5 -1
  33. package/skills/aios/SKILL.md +15 -3
  34. package/skills/aios/agents/openai.yaml +1 -1
  35. package/skills/aios-commercial-contract/SKILL.md +10 -0
  36. package/skills/aios-commercial-contract/agents/openai.yaml +1 -1
  37. package/skills/aios-commercial-tender/SKILL.md +10 -0
  38. package/skills/aios-commercial-tender/agents/openai.yaml +1 -1
  39. package/skills/aios-commercial-variation/SKILL.md +10 -0
  40. package/skills/aios-commercial-variation/agents/openai.yaml +1 -1
  41. package/skills/aios-construction-daily/SKILL.md +10 -0
  42. package/skills/aios-construction-daily/agents/openai.yaml +1 -1
  43. package/skills/aios-construction-meeting/SKILL.md +10 -0
  44. package/skills/aios-construction-meeting/agents/openai.yaml +1 -1
  45. package/skills/aios-construction-scheme/SKILL.md +10 -0
  46. package/skills/aios-construction-scheme/agents/openai.yaml +1 -1
  47. package/skills/aios-scheme-write/SKILL.md +132 -0
  48. package/skills/aios-scheme-write/agents/openai.yaml +4 -0
  49. package/skills/aios-scheme-write/prompts/basic-prompt.md +83 -0
  50. package/skills/aios-tender-write/SKILL.md +130 -0
  51. package/skills/aios-tender-write/agents/openai.yaml +4 -0
  52. package/skills/aios-tender-write/prompts/basic-prompt.md +82 -0
  53. package/skills/archsight-aios/SKILL.md +13 -0
  54. package/skills/archsight-aios/agents/openai.yaml +1 -1
  55. package/templates/README.md +35 -0
  56. package/templates/document-writing/draft.md +15 -0
  57. package/templates/document-writing/final.md +16 -0
  58. package/templates/document-writing/material-index.md +18 -0
  59. package/templates/document-writing/review-notes.md +18 -0
  60. package/templates/document-writing/source-normalized.md +20 -0
  61. package/templates/document-writing/writing-brief.md +23 -0
  62. package/templates/document-writing-samples/scheme/README.md +16 -0
  63. package/templates/document-writing-samples/scheme/draft.md +25 -0
  64. package/templates/document-writing-samples/scheme/final.md +20 -0
  65. package/templates/document-writing-samples/scheme/material-index.md +23 -0
  66. package/templates/document-writing-samples/scheme/review-notes.md +23 -0
  67. package/templates/document-writing-samples/scheme/source-normalized.md +35 -0
  68. package/templates/document-writing-samples/scheme/writing-brief.md +26 -0
  69. package/templates/document-writing-samples/tender/README.md +16 -0
  70. package/templates/document-writing-samples/tender/draft.md +27 -0
  71. package/templates/document-writing-samples/tender/final.md +20 -0
  72. package/templates/document-writing-samples/tender/material-index.md +23 -0
  73. package/templates/document-writing-samples/tender/review-notes.md +23 -0
  74. package/templates/document-writing-samples/tender/source-normalized.md +34 -0
  75. package/templates/document-writing-samples/tender/writing-brief.md +26 -0
  76. package/templates/project-ai/.ai/agent-routing.md +6 -2
  77. package/templates/project-ai/.ai/skills.md +6 -1
  78. package/vision/README.md +1 -0
  79. package/vision/roadmap.md +8 -0
  80. package/vision/v1.4.0-engineering-document-workflow.md +205 -0
@@ -27,8 +27,10 @@ Prompt 修改必须记录原因、预期行为变化和评估结果。
27
27
  | 名称 | 版本 | 适用场景 | 输入 | 输出 | 禁止场景 | 评估方式 | 路径 |
28
28
  |---|---|---|---|---|---|---|---|
29
29
  | 招标文件解析与技术标响应矩阵基础提示词 | 0.1 | 工程招投标、技术标响应、AI 标书工具复核问题整理 | 招标文件、评分办法、技术标要求、人工检查问题清单 | 资料来源清单、输入类型判断、问题回应矩阵、评分点响应矩阵、资料缺口 | 中标概率、评标结论、采购承诺、串标规避建议 | 是否先判断资料状态,是否避免编造废标项和评分点 | `skills/aios-commercial-tender/prompts/basic-prompt.md` |
30
+ | 工程技术标生成与改写基础提示词 | 0.1 | 工程标书、技术标、投标响应章节生成 / 改写和历史标书素材复用 | 招标文件、评分办法、技术标要求、历史标书素材、类似项目案例、用户初稿 | 资料来源清单、写作 brief、历史素材匹配表、评分点到章节映射、章节初稿、审核门禁交接 | 中标概率、评标结论、最终投标决策、旧项目事实套用 | 是否保留 Markdown 工作母版、素材复用判断、待补占位和 `aios-commercial-tender` 门禁 | `skills/aios-tender-write/prompts/basic-prompt.md` |
30
31
  | 合同条款与履约节点基础提示词 | 0.1 | 工程分包、采购、租赁和补充协议履约资料整理 | 合同条款、协议片段、合同摘要 | 资料来源清单、空白字段核对表、履约节点、付款结算条件、风险提示 | 法律意见、违约定性、索赔或结算金额结论 | 是否提取可执行节点,是否保留法务和商务复核边界 | `skills/aios-commercial-contract/prompts/basic-prompt.md` |
31
32
  | 项目日报问题跟踪基础提示词 | 0.1 | 施工日报、项目日报、周报素材和项目群日报整理 | 日报、周报、现场记录 | 资料来源清单、管理摘要、问题台账、模板质量诊断、需确认事项 | 工期偏差终局判断、质量安全验收结论、签证或索赔成立判断 | 是否区分现场事实和模板空白,是否避免把未提及写成不合格 | `skills/aios-construction-daily/prompts/basic-prompt.md` |
32
33
  | 会议纪要待办闭环基础提示词 | 0.1 | 工程会议、协调会、专题会、交底会记录整理 | 会议纪要、会议记录、录音转写摘要 | 资料来源清单、会议结论、待办闭环、责任线索、遗留问题 | 正式责任归属、合同通知效力、审批通过结论 | 是否区分发言人与最终责任人,是否标注未明确期限和责任人 | `skills/aios-construction-meeting/prompts/basic-prompt.md` |
33
34
  | 变更签证资料链基础提示词 | 0.1 | 工程变更、签证、联系单、会议纪要和合同条款链路整理 | 签证单、联系单、合同条款、现场记录、公开样表字段 | 资料来源清单、资料链完整度、字段结构、资料断点、复核分流 | 签证成立、索赔成立、责任归属、最终金额 | 是否区分过程线索和正式依据,是否避免金额和责任判断 | `skills/aios-commercial-variation/prompts/basic-prompt.md` |
34
35
  | 施工方案辅助复核基础提示词 | 0.1 | 专项施工方案、技术方案、专家修改说明和 AI 方案试用反馈整理 | 施工方案片段、工程概况、安全措施、专家修改说明、计算书目录 | 资料来源清单、失准复盘、关键工序、危险源、交底要点、回查清单 | 方案合格结论、计算正确结论、专家论证通过结论 | 是否使用辅助复核口径,是否保留总工 / 专家 / 计算书复核边界 | `skills/aios-construction-scheme/prompts/basic-prompt.md` |
36
+ | 专项施工方案生成与改写基础提示词 | 0.1 | 专项施工方案、施工技术措施、交底材料生成 / 改写和历史方案素材复用 | 方案初稿、工程概况、施工工艺、安全措施、历史方案素材、专家意见、计算书目录 | 资料来源清单、写作 brief、历史素材匹配表、方案章节结构、方案章节初稿、危险源占位表、审核门禁交接 | 方案合格、计算正确、专家论证通过、审批通过、旧项目参数套用 | 是否保留 Markdown 工作母版、素材复用判断、危险源占位、待补资料和 `aios-construction-scheme` 门禁 | `skills/aios-scheme-write/prompts/basic-prompt.md` |
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": 1,
3
3
  "name": "archsight-aios",
4
- "version": "1.3.1",
4
+ "version": "1.4.0",
5
5
  "description": "ArchSight AIOS 的 Agent、Skill、Workflow、Runtime 和项目模板注册表,面向建筑行业知识工作者与 AI 工程团队。",
6
6
  "agents": [
7
7
  {
@@ -195,6 +195,13 @@
195
195
  "path": "skills/aios-commercial-tender/SKILL.md",
196
196
  "openaiConfigPath": "skills/aios-commercial-tender/agents/openai.yaml"
197
197
  },
198
+ {
199
+ "id": "aios-tender-write",
200
+ "primaryAgent": "mason",
201
+ "defaultWorkflow": "feature-development",
202
+ "path": "skills/aios-tender-write/SKILL.md",
203
+ "openaiConfigPath": "skills/aios-tender-write/agents/openai.yaml"
204
+ },
198
205
  {
199
206
  "id": "aios-commercial-contract",
200
207
  "primaryAgent": "themis",
@@ -229,6 +236,13 @@
229
236
  "defaultWorkflow": "review",
230
237
  "path": "skills/aios-construction-scheme/SKILL.md",
231
238
  "openaiConfigPath": "skills/aios-construction-scheme/agents/openai.yaml"
239
+ },
240
+ {
241
+ "id": "aios-scheme-write",
242
+ "primaryAgent": "vitruvius",
243
+ "defaultWorkflow": "feature-development",
244
+ "path": "skills/aios-scheme-write/SKILL.md",
245
+ "openaiConfigPath": "skills/aios-scheme-write/agents/openai.yaml"
232
246
  }
233
247
  ],
234
248
  "workflows": [
@@ -374,6 +388,12 @@
374
388
  "agent": "mason",
375
389
  "workflow": "review"
376
390
  },
391
+ {
392
+ "taskType": "工程标书、技术标、投标响应章节生成、改写和历史素材复用",
393
+ "skill": "aios-tender-write",
394
+ "agent": "mason",
395
+ "workflow": "feature-development"
396
+ },
377
397
  {
378
398
  "taskType": "工程合同履约节点、付款条件、责任边界和资料缺口",
379
399
  "skill": "aios-commercial-contract",
@@ -403,6 +423,12 @@
403
423
  "skill": "aios-construction-scheme",
404
424
  "agent": "vitruvius",
405
425
  "workflow": "review"
426
+ },
427
+ {
428
+ "taskType": "专项施工方案、施工技术措施、交底材料生成、改写和历史方案复用",
429
+ "skill": "aios-scheme-write",
430
+ "agent": "vitruvius",
431
+ "workflow": "feature-development"
406
432
  }
407
433
  ],
408
434
  "projectTemplate": {
@@ -476,13 +502,16 @@
476
502
  "governance/ai-review-policy.md",
477
503
  "governance/security-policy.md",
478
504
  "governance/agent-boundary.md",
479
- "governance/context-policy.md",
480
- "governance/memory-policy.md",
481
- "governance/delivery-policy.md",
482
- "delivery/release-checklist.md",
483
- "delivery/ai-generated-code-checklist.md",
484
- "delivery/rollback-policy.md",
485
- "memory/decision-records.md",
505
+ "governance/context-policy.md",
506
+ "governance/memory-policy.md",
507
+ "governance/delivery-policy.md",
508
+ "delivery/release-checklist.md",
509
+ "delivery/v1.4.0-release-readiness.md",
510
+ "delivery/ai-generated-code-checklist.md",
511
+ "delivery/rollback-policy.md",
512
+ "docs/v1.4.0-writing-workflow-quickstart.md",
513
+ "docs/v1.4.0-writing-boundary.md",
514
+ "memory/decision-records.md",
486
515
  "memory/project-memory-policy.md",
487
516
  "memory/cleanup-policy.md",
488
517
  "knowledge/domain-taxonomy.md",
@@ -503,6 +532,16 @@
503
532
  "prompts/evaluations/engineering-business-basic-prompts-2026-06-16.md",
504
533
  "prompts/evaluations/engineering-business-basic-scorecard.json",
505
534
  "prompts/evaluations/engineering-business-public-advisory-fixtures.json",
535
+ "prompts/evaluations/engineering-document-writing-fixtures.json",
536
+ "prompts/evaluations/engineering-document-writing-scorecard.json",
537
+ "prompts/evaluations/skill-runtime/README.md",
538
+ "prompts/evaluations/skill-runtime/v1.4.0-writing-host-validation.json",
539
+ "prompts/evaluations/skill-runtime/v1.4.0-writing-host-validation.md",
540
+ "prompts/evaluations/skill-runtime/v1.4.0-writing-host-scorecard-review.md",
541
+ "prompts/evaluations/skill-runtime/raw/codex-tender-writing-sample.md",
542
+ "prompts/evaluations/skill-runtime/raw/codex-scheme-writing-sample.md",
543
+ "prompts/evaluations/skill-runtime/raw/workbuddy-tender-writing-sample.md",
544
+ "prompts/evaluations/skill-runtime/raw/workbuddy-scheme-writing-sample.md",
506
545
  "prompts/evaluations/public-advisory-md/01-technical-bid.md",
507
546
  "prompts/evaluations/public-advisory-md/02-contract.md",
508
547
  "prompts/evaluations/public-advisory-md/03-daily.md",
@@ -514,17 +553,40 @@
514
553
  "infra/service-boundaries.md",
515
554
  "skills/engineering-business-starter-kit.md",
516
555
  "skills/aios-commercial-tender/prompts/basic-prompt.md",
556
+ "skills/aios-tender-write/prompts/basic-prompt.md",
517
557
  "skills/aios-commercial-contract/prompts/basic-prompt.md",
518
558
  "skills/aios-construction-daily/prompts/basic-prompt.md",
519
559
  "skills/aios-construction-meeting/prompts/basic-prompt.md",
520
560
  "skills/aios-commercial-variation/prompts/basic-prompt.md",
521
561
  "skills/aios-construction-scheme/prompts/basic-prompt.md",
562
+ "skills/aios-scheme-write/prompts/basic-prompt.md",
563
+ "templates/document-writing/source-normalized.md",
564
+ "templates/document-writing/material-index.md",
565
+ "templates/document-writing/writing-brief.md",
566
+ "templates/document-writing/draft.md",
567
+ "templates/document-writing/review-notes.md",
568
+ "templates/document-writing/final.md",
569
+ "templates/document-writing-samples/tender/README.md",
570
+ "templates/document-writing-samples/tender/source-normalized.md",
571
+ "templates/document-writing-samples/tender/material-index.md",
572
+ "templates/document-writing-samples/tender/writing-brief.md",
573
+ "templates/document-writing-samples/tender/draft.md",
574
+ "templates/document-writing-samples/tender/review-notes.md",
575
+ "templates/document-writing-samples/tender/final.md",
576
+ "templates/document-writing-samples/scheme/README.md",
577
+ "templates/document-writing-samples/scheme/source-normalized.md",
578
+ "templates/document-writing-samples/scheme/material-index.md",
579
+ "templates/document-writing-samples/scheme/writing-brief.md",
580
+ "templates/document-writing-samples/scheme/draft.md",
581
+ "templates/document-writing-samples/scheme/review-notes.md",
582
+ "templates/document-writing-samples/scheme/final.md",
522
583
  "scripts/analyze-prompt-run-results.mjs",
523
584
  "scripts/build-prompt-run-pack.mjs",
524
585
  "scripts/validate-prompt-fixtures.mjs",
525
586
  "scripts/validate-prompt-model-outputs.mjs",
526
587
  "scripts/validate-prompt-run-results.mjs",
527
588
  "scripts/validate-prompt-scorecard.mjs",
589
+ "scripts/validate-skill-runtime-evidence.mjs",
528
590
  "runtime/hermes/sync-policy.md",
529
591
  "runtime/hermes/sync-record-template.md",
530
592
  "runtime/capability-adapters.json",
@@ -33,11 +33,13 @@
33
33
  | 用户明确调用 `aios-compare` 时,比较两份文档、两个版本或两个 AI 输出哪份更专业 | `aios-compare` | Daedalus | `review` |
34
34
  | 建筑行业项目中的受控代码修改、文档、脚本、测试 | `aios-exec` | Hephaestus | `feature-development` |
35
35
  | 工程招投标响应、评分点、废标风险和技术标资料矩阵 | `aios-commercial-tender` | Mason | `review` |
36
+ | 工程标书、技术标和投标响应章节生成 / 改写 / 历史素材复用 | `aios-tender-write` | Mason | `feature-development` |
36
37
  | 工程合同履约节点、付款条件、责任边界和资料缺口 | `aios-commercial-contract` | Themis | `review` |
37
38
  | 施工日报、现场异常、项目群记录和问题追踪台账 | `aios-construction-daily` | Mason | `site-daily-loop` |
38
39
  | 工程会议纪要、待办闭环、遗留争议和下次追踪 | `aios-construction-meeting` | Mason | `site-daily-loop` |
39
40
  | 工程变更签证资料链、联系单、图纸变更和索赔线索 | `aios-commercial-variation` | Plutus | `site-daily-loop` |
40
41
  | 专项施工方案、危险源、交底要点和规范 / 计算书复核清单 | `aios-construction-scheme` | Vitruvius | `review` |
42
+ | 专项施工方案、施工技术措施和交底材料生成 / 改写 / 历史方案复用 | `aios-scheme-write` | Vitruvius | `feature-development` |
41
43
 
42
44
  ## 路由原则
43
45
 
@@ -51,7 +53,8 @@
51
53
  - `aios-design` 用于实现前判断界面方案是否支撑建筑行业审查、定位、复核、追溯和交付;不替代 `frontend-generation` 的 UI 实现、布局验证和交互验证,也不替代通用 `frontend-design` 的视觉风格和前端代码美化评审。
52
54
  - `aios-arch` 应补足通用架构评审缺失的建筑行业平台视角,包括 BIM / IFC、规范知识链路、审图证据链、RAG / GraphRAG、任务编排、审计和后端运行可靠性。
53
55
  - `aios-structural` 用于结构力学、荷载、边界条件、FEM 和求解器接口评审;它不能替代结构工程师签审,关键数值必须来自 Capability 或项目已有求解器证据。
54
- - `aios-commercial-tender`、`aios-commercial-contract`、`aios-construction-daily`、`aios-construction-meeting`、`aios-commercial-variation` 和 `aios-construction-scheme` 属于工程业务管理增强;它们只处理建筑工程资料的抽取、证据链整理、风险提示和人工复核分流,不扩展为通用 HR、行政、财务 Skill。
56
+ - `aios-commercial-tender`、`aios-tender-write`、`aios-commercial-contract`、`aios-construction-daily`、`aios-construction-meeting`、`aios-commercial-variation`、`aios-construction-scheme` 和 `aios-scheme-write` 属于工程业务管理增强;它们只处理建筑工程资料的抽取、生成初稿、证据链整理、风险提示和人工复核分流,不扩展为通用 HR、行政、财务 Skill。
57
+ - `aios-tender-write` 和 `aios-scheme-write` 是写作型 Skill,默认使用 Markdown 工作母版;生成后必须分别交回 `aios-commercial-tender` 和 `aios-construction-scheme` 做审核门禁。
55
58
  - 工程业务 Agent 分工:技术标以 Mason 为主;合同法律边界以 Themis 为主;变更签证、工程款、结算和成本线索以 Plutus 为主;会议纪要中的行政、人事、证照和组织协同事项由 Hestia 辅助分流;施工方案以 Vitruvius 为主,涉及结构计算时升级给 Euclid,涉及现场组织和交付时由 Mason 协同。
56
59
  - 工程业务管理基础场景可先参考 `skills/engineering-business-starter-kit.md` 和各 Skill 目录下的 `prompts/basic-prompt.md`,形成矩阵、清单、台账和复核问题;涉及金额、工期、责任、合规、质量安全、结构计算或法律意见时,再按对应 Skill 的证据链和人工复核规则升级。
57
60
  - `aios-compare` 用于普通两份文档 / 两个版本 / 两个 AI 输出的专业度对比;不做 weak / portable / skill-runtime 提示词评测。
@@ -121,6 +121,31 @@ function runPackName() {
121
121
  return `${fixture?.name ?? "prompt-fixture"}-run-pack`;
122
122
  }
123
123
 
124
+ function runPackDataBoundary() {
125
+ if (fixture?.name === "engineering-document-writing-fixtures") {
126
+ return "De-identified engineering document writing run pack. Inputs are synthetic or abstracted writing-task shapes; do not add real customer names, contacts, project names, amounts, dates, locations, or raw source documents.";
127
+ }
128
+
129
+ return "De-identified weak/basic prompt run pack. Public advisory fixtures use Markdown-normalized synthetic inputs; do not add real customer names, contacts, project names, amounts, dates, locations, or raw source documents.";
130
+ }
131
+
132
+ function runPackInstructions() {
133
+ const instructions = [
134
+ "For each item, use prompt as the instruction and sampleInput as the user-provided material.",
135
+ "When inputFormat is markdown, pass the Markdown text as the material under review.",
136
+ "Run weak and basic variants separately for the same caseId.",
137
+ "Save model outputs into the model-output JSON schema and validate with validate-prompt-model-outputs.mjs."
138
+ ];
139
+
140
+ if (fixture?.name === "engineering-document-writing-fixtures") {
141
+ instructions.push("Compare weak and basic outputs against expectedStrongSections, bannedClaims, source provenance, material reuse judgment, and review-gate handoff.");
142
+ } else {
143
+ instructions.push("Compare weak and basic outputs using engineering-business-basic-scorecard.json.");
144
+ }
145
+
146
+ return instructions;
147
+ }
148
+
124
149
  function buildRunPack() {
125
150
  if (!fixture) return undefined;
126
151
 
@@ -163,15 +188,8 @@ function buildRunPack() {
163
188
  name: runPackName(),
164
189
  version: fixture.version,
165
190
  fixture: args.fixture,
166
- dataBoundary:
167
- "De-identified weak/basic prompt run pack. Public advisory fixtures use Markdown-normalized synthetic inputs; do not add real customer names, contacts, project names, amounts, dates, locations, or raw source documents.",
168
- runInstructions: [
169
- "For each item, use prompt as the instruction and sampleInput as the user-provided material.",
170
- "When inputFormat is markdown, pass the Markdown text as the material under review.",
171
- "Run weak and basic variants separately for the same caseId.",
172
- "Save model outputs into the model-output JSON schema and validate with validate-prompt-model-outputs.mjs.",
173
- "Compare weak and basic outputs using engineering-business-basic-scorecard.json."
174
- ],
191
+ dataBoundary: runPackDataBoundary(),
192
+ runInstructions: runPackInstructions(),
175
193
  runs
176
194
  };
177
195
  }
@@ -8,7 +8,8 @@ const errors = [];
8
8
 
9
9
  const fixturePaths = [
10
10
  "prompts/evaluations/engineering-business-basic-fixtures.json",
11
- "prompts/evaluations/engineering-business-public-advisory-fixtures.json"
11
+ "prompts/evaluations/engineering-business-public-advisory-fixtures.json",
12
+ "prompts/evaluations/engineering-document-writing-fixtures.json"
12
13
  ];
13
14
  const fixtures = fixturePaths.map((fixturePath) => ({
14
15
  path: fixturePath,
@@ -143,9 +144,10 @@ function validateFixture(fixturePath, fixture) {
143
144
  return;
144
145
  }
145
146
 
147
+ const expectations = fixtureExpectations(fixturePath, fixture);
146
148
  check(fixture.schema === 1, `${fixturePath}: schema must be 1`);
147
149
  check(Array.isArray(fixture.cases), `${fixturePath}: cases must be an array`);
148
- check(fixture.cases?.length === 6, `${fixturePath}: must cover 6 engineering-business cases`);
150
+ check(fixture.cases?.length === expectations.caseCount, `${fixturePath}: must cover ${expectations.caseCount} ${expectations.label} cases`);
149
151
 
150
152
  const seenIds = new Set();
151
153
  const seenSkills = new Set();
@@ -201,17 +203,36 @@ function validateFixture(fixturePath, fixture) {
201
203
  }
202
204
  }
203
205
 
204
- const expectedSkills = [
205
- "aios-commercial-tender",
206
- "aios-commercial-contract",
207
- "aios-construction-daily",
208
- "aios-construction-meeting",
209
- "aios-commercial-variation",
210
- "aios-construction-scheme"
211
- ].sort();
206
+ const expectedSkills = expectations.skillIds.sort();
212
207
  check(JSON.stringify([...seenSkills].sort()) === JSON.stringify(expectedSkills), `${fixturePath}: skill coverage mismatch`);
213
208
  }
214
209
 
210
+ function fixtureExpectations(fixturePath, fixture) {
211
+ if (fixture.name === "engineering-document-writing-fixtures") {
212
+ return {
213
+ label: "engineering-document-writing",
214
+ caseCount: 2,
215
+ skillIds: [
216
+ "aios-tender-write",
217
+ "aios-scheme-write"
218
+ ]
219
+ };
220
+ }
221
+
222
+ return {
223
+ label: "engineering-business",
224
+ caseCount: 6,
225
+ skillIds: [
226
+ "aios-commercial-tender",
227
+ "aios-commercial-contract",
228
+ "aios-construction-daily",
229
+ "aios-construction-meeting",
230
+ "aios-commercial-variation",
231
+ "aios-construction-scheme"
232
+ ]
233
+ };
234
+ }
235
+
215
236
  for (const fixture of fixtures) {
216
237
  validateFixture(fixture.path, fixture.data);
217
238
  }
@@ -6,10 +6,16 @@ import path from "node:path";
6
6
  const root = fs.realpathSync(process.cwd());
7
7
  const errors = [];
8
8
 
9
- const fixturePath = repoPath("prompts/evaluations/engineering-business-basic-fixtures.json");
10
- const scorecardPath = repoPath("prompts/evaluations/engineering-business-basic-scorecard.json");
11
- const fixture = readJson(fixturePath);
12
- const scorecard = readJson(scorecardPath);
9
+ const scorecardSpecs = [
10
+ {
11
+ fixturePath: "prompts/evaluations/engineering-business-basic-fixtures.json",
12
+ scorecardPath: "prompts/evaluations/engineering-business-basic-scorecard.json"
13
+ },
14
+ {
15
+ fixturePath: "prompts/evaluations/engineering-document-writing-fixtures.json",
16
+ scorecardPath: "prompts/evaluations/engineering-document-writing-scorecard.json"
17
+ }
18
+ ];
13
19
 
14
20
  const sensitiveTerms = [
15
21
  "立信",
@@ -64,10 +70,16 @@ function weightedScore(scores, criteria) {
64
70
  );
65
71
  }
66
72
 
67
- if (fixture && scorecard) {
73
+ function validateScorecard(fixturePathValue, scorecardPathValue) {
74
+ const fixture = readJson(repoPath(fixturePathValue));
75
+ const scorecard = readJson(repoPath(scorecardPathValue));
76
+ if (!fixture || !scorecard) {
77
+ return;
78
+ }
79
+
68
80
  check(scorecard.schema === 1, "scorecard: schema must be 1");
69
81
  check(scorecard.version === fixture.version, `scorecard: version must match fixture version ${fixture.version}`);
70
- check(scorecard.fixture === "prompts/evaluations/engineering-business-basic-fixtures.json", "scorecard: fixture path mismatch");
82
+ check(scorecard.fixture === fixturePathValue, `${scorecardPathValue}: fixture path mismatch`);
71
83
  check(Array.isArray(scorecard.criteria) && scorecard.criteria.length > 0, "scorecard: criteria must be a non-empty array");
72
84
  check(Array.isArray(scorecard.cases) && scorecard.cases.length === fixture.cases.length, "scorecard: case count mismatch");
73
85
 
@@ -124,6 +136,10 @@ if (fixture && scorecard) {
124
136
  check(typeof scorecard.overallDecision?.notAClaim === "string", "scorecard: overallDecision.notAClaim is required");
125
137
  }
126
138
 
139
+ for (const spec of scorecardSpecs) {
140
+ validateScorecard(spec.fixturePath, spec.scorecardPath);
141
+ }
142
+
127
143
  if (errors.length > 0) {
128
144
  console.error(`Prompt scorecard validation failed with ${errors.length} error(s):`);
129
145
  for (const error of errors) console.error(`- ${error}`);
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env node
2
+
3
+ import fs from "node:fs";
4
+ import path from "node:path";
5
+
6
+ const root = fs.realpathSync(process.cwd());
7
+ const errors = [];
8
+ const evidencePath = "prompts/evaluations/skill-runtime/v1.4.0-writing-host-validation.json";
9
+ const reportPath = "prompts/evaluations/skill-runtime/v1.4.0-writing-host-validation.md";
10
+
11
+ const sensitiveTerms = [
12
+ "立信",
13
+ "费敏",
14
+ "闻总",
15
+ "谭总",
16
+ "客户内部",
17
+ "培训演示",
18
+ "基础内测",
19
+ "内测模式",
20
+ "内测包"
21
+ ];
22
+
23
+ function repoPath(...parts) {
24
+ const target = path.join(root, ...parts);
25
+ const relative = path.relative(root, target);
26
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
27
+ throw new Error(`Path traversal detected: ${target}`);
28
+ }
29
+ return target;
30
+ }
31
+
32
+ function readJson(relativePath) {
33
+ try {
34
+ return JSON.parse(fs.readFileSync(repoPath(relativePath), "utf8"));
35
+ } catch (error) {
36
+ errors.push(`${relativePath}: invalid JSON (${error.message})`);
37
+ return undefined;
38
+ }
39
+ }
40
+
41
+ function readText(relativePath) {
42
+ try {
43
+ return fs.readFileSync(repoPath(relativePath), "utf8");
44
+ } catch (error) {
45
+ errors.push(`${relativePath}: ${error.message}`);
46
+ return "";
47
+ }
48
+ }
49
+
50
+ function exists(relativePath) {
51
+ return fs.existsSync(repoPath(relativePath));
52
+ }
53
+
54
+ function check(condition, message) {
55
+ if (!condition) errors.push(message);
56
+ }
57
+
58
+ function includesSensitiveTerm(value) {
59
+ const raw = typeof value === "string" ? value : JSON.stringify(value);
60
+ return sensitiveTerms.filter((term) => raw.includes(term));
61
+ }
62
+
63
+ const evidence = readJson(evidencePath);
64
+ const report = readText(reportPath);
65
+
66
+ if (evidence) {
67
+ check(evidence.schema === 1, "evidence: schema must be 1");
68
+ check(evidence.name === "v1.4.0-writing-host-validation", "evidence: unexpected name");
69
+ check(typeof evidence.aiosVersion === "string" && evidence.aiosVersion.length > 0, "evidence: aiosVersion is required");
70
+ check(Array.isArray(evidence.hostChecks) && evidence.hostChecks.length >= 2, "evidence: hostChecks must cover at least two hosts");
71
+ check(Array.isArray(evidence.cases) && evidence.cases.length >= 4, "evidence: cases must cover host x writing skill matrix");
72
+ check(typeof evidence.scorecardReview?.reviewPath === "string", "evidence: scorecardReview.reviewPath is required");
73
+ check(exists(evidence.scorecardReview?.scorecardPath ?? ""), "evidence: scorecardReview.scorecardPath missing");
74
+ check(exists(evidence.scorecardReview?.reviewPath ?? ""), "evidence: scorecardReview.reviewPath missing");
75
+ check(typeof evidence.releaseGate?.notReadyUntil === "string", "evidence: releaseGate.notReadyUntil is required");
76
+ check(report.includes(evidence.name), "report: must reference evidence name");
77
+ const scorecardReview = evidence.scorecardReview?.reviewPath ? readText(evidence.scorecardReview.reviewPath) : "";
78
+
79
+ const sensitiveHits = includesSensitiveTerm(evidence);
80
+ check(sensitiveHits.length === 0, `evidence: sensitive terms leaked (${sensitiveHits.join(", ")})`);
81
+
82
+ const expectedPairs = new Set([
83
+ "codex::aios-tender-write",
84
+ "codex::aios-scheme-write",
85
+ "workbuddy::aios-tender-write",
86
+ "workbuddy::aios-scheme-write"
87
+ ]);
88
+ const actualPairs = new Set();
89
+ const allowedStatuses = new Set(["yes", "no", "blocked", "uncertain"]);
90
+
91
+ for (const item of evidence.cases ?? []) {
92
+ check(typeof item.caseId === "string" && item.caseId.length > 0, "case: caseId is required");
93
+ check(typeof item.host === "string" && item.host.length > 0, `${item.caseId}: host is required`);
94
+ check(typeof item.skillId === "string" && item.skillId.startsWith("aios-"), `${item.caseId}: skillId is invalid`);
95
+ check(typeof item.expectedGateSkill === "string" && item.expectedGateSkill.startsWith("aios-"), `${item.caseId}: expectedGateSkill is invalid`);
96
+ check(typeof item.sampleWorkspacePath === "string" && exists(item.sampleWorkspacePath), `${item.caseId}: sampleWorkspacePath missing`);
97
+ check(typeof item.triggerPrompt === "string" && item.triggerPrompt.includes(item.skillId), `${item.caseId}: triggerPrompt must mention skillId`);
98
+ check(allowedStatuses.has(item.skillRuntimeConfirmed), `${item.caseId}: invalid skillRuntimeConfirmed`);
99
+ check(Array.isArray(item.evidence) && item.evidence.length > 0, `${item.caseId}: evidence must be non-empty`);
100
+ actualPairs.add(`${item.host}::${item.skillId}`);
101
+
102
+ if (item.skillRuntimeConfirmed === "yes") {
103
+ check(typeof item.rawOutputPath === "string" && exists(item.rawOutputPath), `${item.caseId}: confirmed runtime needs rawOutputPath`);
104
+ const raw = readText(item.rawOutputPath);
105
+ check(raw.includes(item.skillId), `${item.caseId}: raw output must include skillId`);
106
+ check(raw.includes(item.expectedGateSkill), `${item.caseId}: raw output must include expected gate skill`);
107
+ check(scorecardReview.includes(item.caseId), `${item.caseId}: scorecard review must mention caseId`);
108
+ } else {
109
+ check(item.rawOutputPath === null, `${item.caseId}: non-confirmed runtime must not point to raw output`);
110
+ check(typeof item.blocker === "string" && item.blocker.length > 0, `${item.caseId}: blocker is required when runtime is not confirmed`);
111
+ }
112
+ }
113
+
114
+ for (const expected of expectedPairs) {
115
+ check(actualPairs.has(expected), `evidence: missing case ${expected}`);
116
+ }
117
+ }
118
+
119
+ if (errors.length > 0) {
120
+ console.error(`Skill runtime evidence validation failed with ${errors.length} error(s):`);
121
+ for (const error of errors) console.error(`- ${error}`);
122
+ process.exit(1);
123
+ }
124
+
125
+ console.log("Skill runtime evidence validation passed.");
package/skills/README.md CHANGED
@@ -64,6 +64,8 @@ Skill 可以继续用 `SKILL.md` 表达操作方法,但涉及确定性工具
64
64
  | `aios-runtime` | Prompt、Context、Memory、MCP/Tool、RAG/GraphRAG 和多 Agent Runtime 设计。 |
65
65
  | `aios-compare` | 文档专业度对比:比较两份文档、两个版本或两个 AI 输出哪份更专业、更可复核、更适合交付。 |
66
66
  | `aios-prompt-compare` | 内部 Prompt / Skill 测试工具:仅开发者明确调用时,对同一输入分别评估弱提示词、便携强提示词和真实 Skill 触发结果,判断是否应沉淀为 Skill。 |
67
+ | `aios-tender-write` | 工程标书 / 技术标生成与改写:基于招标要求、历史标书素材和用户初稿生成 Markdown 工作母版,并交回 `aios-commercial-tender` 复核。 |
68
+ | `aios-scheme-write` | 专项施工方案生成与改写:基于方案初稿、历史方案素材、工程概况和专家意见生成 Markdown 工作母版,并交回 `aios-construction-scheme` 复核。 |
67
69
 
68
70
  工程业务管理技能包 (Engineering Project Management):
69
71
 
@@ -72,10 +74,12 @@ Skill 可以继续用 `SKILL.md` 表达操作方法,但涉及确定性工具
72
74
  | Skill | 用途 |
73
75
  | --- | --- |
74
76
  | `aios-commercial-tender` | 工程招投标响应证据链,用于提取评分点、资格条件、废标风险、资料缺口和人工复核事项。 |
77
+ | `aios-tender-write` | 工程标书 / 技术标生成与改写,用于生成目录、章节初稿、评分点响应内容和历史素材复用表。 |
75
78
  | `aios-commercial-contract` | 工程分包、采购和补充协议履约证据链,用于提取节点、责任边界、付款条件和合同资料缺口。 |
76
79
  | `aios-construction-daily` | 现场施工日报证据链,用于提取管理摘要、异常、问题台账、计划偏差和需补充确认事项。 |
77
80
  | `aios-construction-meeting` | 工程现场会议待办闭环,用于将会议讨论转化为责任人、期限、争议点和下次追踪清单。 |
78
81
  | `aios-commercial-variation` | 工程变更签证资料链审查,用于梳理联系单、纪要、图纸变更、合同流程和资料断点。 |
79
82
  | `aios-construction-scheme` | 专项施工方案证据链辅审,用于提取危险源、交底要点、规范核验点、计算书缺口和专家复核事项。 |
83
+ | `aios-scheme-write` | 专项施工方案生成与改写,用于生成方案章节、工艺流程、危险源控制措施和交底材料初稿。 |
80
84
 
81
- 工程业务管理 Skill 只处理建筑工程资料抽取、证据链整理、风险提示和人工复核分流,不替代法务、造价、监理、安全、项目经理、总工或专家签审。涉及规范、制度、结构计算、质量安全、金额、工期索赔或责任归属时,必须输出中文化的 `判断事项 / 证据 / 工具结果 / 处理建议`;没有工具或人工证据时只能标注 `需核验` 或 `转人工复核`。
85
+ 工程业务管理 Skill 只处理建筑工程资料抽取、生成初稿、证据链整理、风险提示和人工复核分流,不替代法务、造价、监理、安全、项目经理、总工或专家签审。涉及规范、制度、结构计算、质量安全、金额、工期索赔或责任归属时,必须输出中文化的 `判断事项 / 证据 / 工具结果 / 处理建议`;没有工具或人工证据时只能标注 `需核验` 或 `转人工复核`。写作型 Skill 必须使用 Markdown 工作母版,保留素材来源、复用判断、待补占位和审核门禁,不得把历史项目事实直接套入当前项目。
@@ -31,11 +31,13 @@ description: ArchSight AIOS 总路由入口。用户只说“请用 AIOS 技能
31
31
  | 资料 / 任务线索 | 路由到 | 默认输出方向 |
32
32
  |---|---|---|
33
33
  | 招标文件、评分办法、技术标、商务标、资格条件、AI 技术标问题、废标风险 | `aios-commercial-tender` | 响应矩阵、评分点、资料清单、风险提示、人工复核事项 |
34
+ | 标书编写、技术标生成、投标响应章节改写、历史标书素材复用、用户提供技术标初稿 | `aios-tender-write` | Markdown 工作母版、写作 brief、素材匹配表、章节初稿、审核门禁 |
34
35
  | 合同、协议、分包、采购、租赁、付款、结算、履约、违约、争议解决 | `aios-commercial-contract` | 合同基本事实、空白字段、履约节点、付款结算、责任边界、资料缺口 |
35
36
  | 项目日报、施工日报、周报素材、现场记录、材料进场、机械、劳务、进度 | `aios-construction-daily` | 管理摘要、问题台账、异常事项、模板质量诊断、待追踪事项 |
36
37
  | 会议纪要、例会、协调会、专题会、交底会、待办、责任人、截止时间 | `aios-construction-meeting` | 会议结论、待办闭环、责任线索、遗留问题、下次追踪 |
37
38
  | 变更、签证、联系单、洽商、索赔、停工窝工、图纸变更、工程量变化 | `aios-commercial-variation` | 资料链、断点、流程依据、疑点、复核分流 |
38
39
  | 专项施工方案、施工组织、危大工程、深基坑、高支模、脚手架、吊装、危险源、交底、专家论证、计算书 | `aios-construction-scheme` | 工程概况、关键工序、危险源、交底要点、规范 / 计算书 / 专家复核清单 |
40
+ | 方案编写、方案生成、方案改写、历史方案素材复用、专家意见回写、施工方案初稿优化 | `aios-scheme-write` | Markdown 工作母版、写作 brief、素材匹配表、方案章节初稿、审核门禁 |
39
41
  | 结构计算、荷载、边界条件、挠度、稳定、FEM、结构求解器 | `aios-structural` | 结构力学输入检查、求解链路、转 Euclid 结构复核、人工签审边界 |
40
42
  | BIM、IFC、Revit、CAD、建筑规范、审图规则、知识结构化 | `aios-knowledge` | 行业语义、规范知识、资料来源、知识结构化边界 |
41
43
  | 用户明确调用 `aios-compare`,或明确要求用 AIOS 判断两份文档 / 两个版本 / 两个 AI 输出哪份更专业 | `aios-compare` | 对比范围、可比性判断、结构差异、内容差异、专业度评分、边界风险、合并建议 |
@@ -54,12 +56,15 @@ description: ArchSight AIOS 总路由入口。用户只说“请用 AIOS 技能
54
56
  2. 未指定时,根据文件名、标题、正文高频词、表格字段和用户任务判断资料类型。
55
57
  3. 命中单一高置信场景时,按对应 Skill 的 `SKILL.md` 工作流执行。
56
58
  4. 同一资料包含多个场景时,先输出资料类型判断,再按主任务路由;必要时列出次级 Skill 作为后续复核建议。
57
- 5. 类型不清时,不要泛泛总结;先输出“资料状态判断”和“需要用户补充的资料类型 / 目标”。
58
- 6. 不因为用户说“AIOS”就强行套建筑行业规则;非建筑任务优先说明 AIOS 不适用,并建议使用宿主工具通用能力。
59
+ 5. 当用户动词是“生成、编写、改写、优化初稿、套用历史素材”时,优先选择写作型 Skill;当用户动词是“审核、复核、检查、抽取风险、列缺口”时,优先选择审核型 Skill。
60
+ 6. 类型不清时,不要泛泛总结;先输出“资料状态判断”和“需要用户补充的资料类型 / 目标”。
61
+ 7. 不因为用户说“AIOS”就强行套建筑行业规则;非建筑任务优先说明 AIOS 不适用,并建议使用宿主工具通用能力。
59
62
 
60
63
  ## 输出要求
61
64
 
62
- 默认输出应包括:
65
+ 当用户只说“用 AIOS 分析该文档 / 用 AIOS 技能包看一下”且没有明确要求摘要时,默认输出“标准详版报告”,不是短摘要。路由判断可以简短,但专项分析必须展开到可复核的表格、清单或台账。
66
+
67
+ 标准详版报告必须包括:
63
68
 
64
69
  1. 资料类型和路由判断。
65
70
  2. 资料来源清单或资料来源说明。
@@ -67,9 +72,16 @@ description: ArchSight AIOS 总路由入口。用户只说“请用 AIOS 技能
67
72
  4. 资料缺口和需补充确认事项。
68
73
  5. 人工复核岗位。
69
74
  6. 不能由 AI 直接下结论的事项。
75
+ 7. 输出自检。
70
76
 
71
77
  如果已路由到专项 Skill,应遵守该 Skill 的输出格式;本 Skill 不要求额外生成一份冗长的路由报告。
72
78
 
79
+ 最小详度要求:
80
+
81
+ - 资料足够时,主输出表 / 清单 / 台账不应少于 3 条可定位事项;资料不足时,列出全部可定位事项,并说明不足原因。
82
+ - 不得只输出几段概括性文字;必须把关键事项拆成表格、清单或台账字段。
83
+ - 输出自检必须逐项确认是否包含资料来源、主分析表 / 清单 / 台账、资料缺口、人工复核岗位、AI 不应下结论事项;缺一项时先补齐再结束。
84
+
73
85
  ## 约束
74
86
 
75
87
  - 不输出最终法律意见、合规结论、安全结论、结构计算结论、结算金额或责任归属。
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "AIOS Router"
3
3
  short_description: "按资料类型自动路由到对应 ArchSight AIOS 技能"
4
- default_prompt: "当用户只说使用 AIOS 或 AIOS 技能包分析文档时,先识别资料类型,再路由到合适的 aios-* 技能;不确定时先做资料状态判断,保留证据链、人工复核和不能下结论的边界。"
4
+ default_prompt: "当用户只说使用 AIOS 或 AIOS 技能包分析文档时,先识别资料类型,再路由到合适的 aios-* 技能;默认输出标准详版报告,不要压缩成摘要;必须保留资料来源、主分析表或台账、资料缺口、人工复核、AI 不应下结论事项和输出自检。"
@@ -46,6 +46,16 @@ description: 工程合同履约证据链工作流。用于从工程分包、采
46
46
  3. 所有金额、期限、责任方、验收、付款、违约条款必须带原文依据位置或原文关键词。
47
47
  4. 输出只作为履约管理辅助,不构成法律意见、违约定性、索赔或结算结论。
48
48
 
49
+ ## 标准详版报告与输出自检
50
+
51
+ 短指令触发本 Skill 时,默认输出标准详版报告,不要压缩成摘要。标准详版报告必须包含:资料来源清单、主分析表 / 清单 / 台账、资料缺口、人工复核岗位、AI 不应下结论事项、输出自检。
52
+
53
+ 最小详度要求:
54
+
55
+ - 资料足够时,履约节点表、付款与结算条件或责任边界风险提示至少展开 3 条可定位事项;资料不足时,列出全部可定位事项并说明不足原因。
56
+ - 主分析表必须保留“节点 / 条款或事项 / 证据 / 缺口 / 处理建议 / 人工复核岗位”等字段,不得只写概括段落。
57
+ - 输出自检必须逐项确认是否包含资料来源、主分析表 / 清单 / 台账、资料缺口、人工复核岗位、AI 不应下结论事项;缺一项时先补齐再结束。
58
+
49
59
  ## Capability 与证据
50
60
 
51
61
  - 所有抽取结论必须带 `证据`,至少包括来源文件、页码/章节/行号或原文短摘。
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "AIOS Contract"
3
3
  short_description: "整理工程合同履约节点、责任边界和证据链风险"
4
- default_prompt: "当任务涉及建筑工程合同、分包、采购、租赁或补充协议履约资料时,使用该技能抽取履约节点、付款条件、责任边界、原文证据和人工复核事项;不得输出最终法律或结算结论。"
4
+ default_prompt: "当任务涉及建筑工程合同、分包、采购、租赁或补充协议履约资料时,使用该技能抽取履约节点、付款条件、责任边界、原文证据和人工复核事项;默认输出标准详版报告,不要压缩成摘要;必须包含资料来源、主分析表或台账、资料缺口、人工复核、AI 不应下结论事项和输出自检;不得输出最终法律或结算结论。"
@@ -46,6 +46,16 @@ description: 工程招投标响应证据链工作流。用于从招标文件、
46
46
  3. 输出 AI 技术标复核问题回应矩阵、评分点响应矩阵、资料缺口和人工复核事项。
47
47
  4. 废标、资格条件和评分分值缺证据时标为 `需核验`,不得补猜。
48
48
 
49
+ ## 标准详版报告与输出自检
50
+
51
+ 短指令触发本 Skill 时,默认输出标准详版报告,不要压缩成摘要。标准详版报告必须包含:资料来源清单、主分析表 / 清单 / 台账、资料缺口、人工复核岗位、AI 不应下结论事项、输出自检。
52
+
53
+ 最小详度要求:
54
+
55
+ - 资料足够时,废标 / 否决风险清单、资格条件清单或评分点响应矩阵至少展开 3 条可定位事项;资料不足时,列出全部可定位事项并说明不足原因。
56
+ - 主分析表必须保留“事项 / 要求 / 证据 / 缺口 / 处理建议 / 人工复核岗位”等字段,不得只写概括段落。
57
+ - 输出自检必须逐项确认是否包含资料来源、主分析表 / 清单 / 台账、资料缺口、人工复核岗位、AI 不应下结论事项;缺一项时先补齐再结束。
58
+
49
59
  ## Capability 与证据
50
60
 
51
61
  - 每个废标风险、评分点和资格条件必须带原文定位。
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "AIOS Tender"
3
3
  short_description: "解析工程招投标文件、评分点和响应矩阵"
4
- default_prompt: "当任务涉及建筑工程招标文件、评分办法或投标响应准备时,使用该技能抽取废标风险、资格条件、评分点、资料缺口和人工复核事项;不得输出中标概率或最终投标决策。"
4
+ default_prompt: "当任务涉及建筑工程招标文件、评分办法或投标响应准备时,使用该技能抽取废标风险、资格条件、评分点、资料缺口和人工复核事项;默认输出标准详版报告,不要压缩成摘要;必须包含资料来源、主分析表或台账、资料缺口、人工复核、AI 不应下结论事项和输出自检;不得输出中标概率或最终投标决策。"
@@ -45,6 +45,16 @@ description: 工程变更签证证据链审查工作流。用于整理联系单
45
45
  3. 公开样表只能提供字段结构,不代表项目事实。
46
46
  4. 不判断最终金额、责任归属、签证成立或索赔成立。
47
47
 
48
+ ## 标准详版报告与输出自检
49
+
50
+ 短指令触发本 Skill 时,默认输出标准详版报告,不要压缩成摘要。标准详版报告必须包含:资料来源清单、主分析表 / 清单 / 台账、资料缺口、人工复核岗位、AI 不应下结论事项、输出自检。
51
+
52
+ 最小详度要求:
53
+
54
+ - 资料足够时,资料链完整性清单、合同和流程依据对照或资料断点清单至少展开 3 条可定位事项;资料不足时,列出全部可定位事项并说明不足原因。
55
+ - 主分析表必须保留“节点 / 资料 / 签发或签收 / 状态 / 证据 / 缺口 / 处理建议 / 人工复核岗位”等字段,不得只写概括段落。
56
+ - 输出自检必须逐项确认是否包含资料来源、主分析表 / 清单 / 台账、资料缺口、人工复核岗位、AI 不应下结论事项;缺一项时先补齐再结束。
57
+
48
58
  ## Capability 与证据
49
59
 
50
60
  - 每个事实链节点必须带 `证据`:来源文件、日期、编号、页码/章节/行号和签认状态。