@customize-agent/server 4.61.12 → 4.61.14

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 (91) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +2 -2
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/required-server-files.json +1 -1
  5. package/.next/routes-manifest.json +1 -1
  6. package/.next/server/chunks/2292.js +7 -0
  7. package/.next/server/chunks/5037.js +8 -8
  8. package/.next/server/chunks/5763.js +5 -5
  9. package/.next/server/chunks/6355.js +1 -1
  10. package/.next/server/chunks/8176.js +1 -1
  11. package/.next/server/chunks/8570.js +1 -1
  12. package/.next/server/chunks/9688.js +2 -2
  13. package/.next/server/pages/404.html +1 -1
  14. package/.next/server/pages/500.html +1 -1
  15. package/.next/server/pages/api/assets/generated/preview.js.nft.json +1 -1
  16. package/.next/server/pages/api/assets/generated.js.nft.json +1 -1
  17. package/.next/server/pages/api/config/embedding/healthCheck.js.nft.json +1 -1
  18. package/.next/server/pages/api/config/embedding.js.nft.json +1 -1
  19. package/.next/server/pages/api/config/healthCheck.js.nft.json +1 -1
  20. package/.next/server/pages/api/config/models.js.nft.json +1 -1
  21. package/.next/server/pages/api/config/providers/[provider].js.nft.json +1 -1
  22. package/.next/server/pages/api/config/providers.js.nft.json +1 -1
  23. package/.next/server/pages/api/config/reset.js.nft.json +1 -1
  24. package/.next/server/pages/api/config/web-access.js.nft.json +1 -1
  25. package/.next/server/pages/api/documents/canvas/[id].js.nft.json +1 -1
  26. package/.next/server/pages/api/documents/delivery-review.js.nft.json +1 -1
  27. package/.next/server/pages/api/documents/export.js.nft.json +1 -1
  28. package/.next/server/pages/api/documents/generate/preview.js.nft.json +1 -1
  29. package/.next/server/pages/api/documents/generate.js.nft.json +1 -1
  30. package/.next/server/pages/api/documents/generated/[id]/events.js.nft.json +1 -1
  31. package/.next/server/pages/api/documents/generated/[id]/figure/[name].js.nft.json +1 -1
  32. package/.next/server/pages/api/documents/generated/[id]/instruction.js.nft.json +1 -1
  33. package/.next/server/pages/api/documents/generated/[id]/messages.js.nft.json +1 -1
  34. package/.next/server/pages/api/documents/generated/[id]/nodes/[nodeId].js.nft.json +1 -1
  35. package/.next/server/pages/api/documents/generated/[id]/nodes.js.nft.json +1 -1
  36. package/.next/server/pages/api/documents/generated/[id]/pause.js.nft.json +1 -1
  37. package/.next/server/pages/api/documents/generated/[id]/preview.js.nft.json +1 -1
  38. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/confirm.js.nft.json +1 -1
  39. package/.next/server/pages/api/documents/generated/[id]/repair/[rid]/rollback.js.nft.json +1 -1
  40. package/.next/server/pages/api/documents/generated/[id]/repair.js.nft.json +1 -1
  41. package/.next/server/pages/api/documents/generated/[id]/report.js.nft.json +1 -1
  42. package/.next/server/pages/api/documents/generated/[id]/resume-generate.js.nft.json +1 -1
  43. package/.next/server/pages/api/documents/generated/[id].js.nft.json +1 -1
  44. package/.next/server/pages/api/documents/generated.js.nft.json +1 -1
  45. package/.next/server/pages/api/health.js.nft.json +1 -1
  46. package/.next/server/pages/api/jobs/[id].js.nft.json +1 -1
  47. package/.next/server/pages/api/kb/categories.js.nft.json +1 -1
  48. package/.next/server/pages/api/kb/duplicates.js.nft.json +1 -1
  49. package/.next/server/pages/api/kb/features.js.nft.json +1 -1
  50. package/.next/server/pages/api/kb/files/detail.js.nft.json +1 -1
  51. package/.next/server/pages/api/kb/files/export.js.nft.json +1 -1
  52. package/.next/server/pages/api/kb/files/open.js.nft.json +1 -1
  53. package/.next/server/pages/api/kb/files/preview-pdf-page.js.nft.json +1 -1
  54. package/.next/server/pages/api/kb/files/reindex.js.nft.json +1 -1
  55. package/.next/server/pages/api/kb/files/search.js.nft.json +1 -1
  56. package/.next/server/pages/api/kb/files/source-preview.js.nft.json +1 -1
  57. package/.next/server/pages/api/kb/files.js.nft.json +1 -1
  58. package/.next/server/pages/api/kb/ignore.js.nft.json +1 -1
  59. package/.next/server/pages/api/kb/material-groups.js.nft.json +1 -1
  60. package/.next/server/pages/api/kb/operations.js.nft.json +1 -1
  61. package/.next/server/pages/api/kb/reindex.js.nft.json +1 -1
  62. package/.next/server/pages/api/kb/stats.js.nft.json +1 -1
  63. package/.next/server/pages/api/kb/tags.js.nft.json +1 -1
  64. package/.next/server/pages/api/kb/upload/complete.js.nft.json +1 -1
  65. package/.next/server/pages/api/kb/upload.js.nft.json +1 -1
  66. package/.next/server/pages/api/prompt/chat.js.nft.json +1 -1
  67. package/.next/server/pages/api/skills/[id].js.nft.json +1 -1
  68. package/.next/server/pages/api/skills/validate.js.nft.json +1 -1
  69. package/.next/server/pages/api/skills.js.nft.json +1 -1
  70. package/.next/server/pages/api/system/data-health.js.nft.json +1 -1
  71. package/.next/server/pages/api/system/reset.js.nft.json +1 -1
  72. package/.next/server/pages/documents.html +1 -1
  73. package/.next/server/pages/generation/[id].html +1 -1
  74. package/.next/server/pages/generation.html +1 -1
  75. package/.next/server/pages/jobs.html +1 -1
  76. package/.next/server/pages/knowledge/file-detail.html +1 -1
  77. package/.next/server/pages/knowledge/files.html +1 -1
  78. package/.next/server/pages/knowledge/manage.html +1 -1
  79. package/.next/server/pages/knowledge/source-preview.html +1 -1
  80. package/.next/server/pages/knowledge.html +1 -1
  81. package/.next/server/pages/models.html +1 -1
  82. package/.next/server/pages/settings.html +1 -1
  83. package/.next/server/pages/skills/[id]/edit.html +1 -1
  84. package/.next/server/pages/skills/[id].html +1 -1
  85. package/.next/server/pages/skills/new.html +1 -1
  86. package/.next/server/pages/skills.html +1 -1
  87. package/.next/server/pages-manifest.json +30 -30
  88. package/package.json +1 -1
  89. package/.next/server/chunks/3239.js +0 -7
  90. /package/.next/static/{e3dcea53eae4dbb392eb88d397a74c0cf2738d891e5c7e0f87052a0d4a83fedb → 7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09}/_buildManifest.js +0 -0
  91. /package/.next/static/{e3dcea53eae4dbb392eb88d397a74c0cf2738d891e5c7e0f87052a0d4a83fedb → 7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09}/_ssgManifest.js +0 -0
@@ -5,6 +5,6 @@
5
5
  - **独立审查**:作者用「submit_for_independent_review」提交已生效正文单元,服务端用独立提示**同步**调用审查模型并返回逐条准则档位、findings 与来源处置意见;不是另一个角色、不产生审查请求问题、也没有"审查期间冻结"。作者修订后旧档位按版本失效,必须重新提交审查。
6
6
  - **未测**:就是没算、没核,**不是 0**,也不是"不用管"。不许把未测写成通过,也不许用文字说明代替计算。
7
7
  - **问题**:缺陷、待决事项与审查意见**各有作用域与生命周期**;历史失败按状态读,不要当成当前缺陷。
8
- - **拟定值**:你可以提出施工方拟定的班组、设备、班次与工效,但必须标明来源性质(拟定/规范控制/设计事实/实测),不许伪称已经拥有或现场实测。`;function g(){return['你是这篇施工组织设计技术标的**主控智能体**,对完整交付负责。\n\n## 你决定什么\n1. 依据工程特征、招标义务与工作包边界,决定**这篇文档需要哪些专业职责**、各自承担哪些工作包与章节;角色数量是任务组织结果,不是指标。\n2. 处理**共享资源、共同方法与跨专业接口**:同一批人、同一套工法被多个职责引用时,形成明确决定并让相关角色拿到同一版本。\n3. 对子角色给出的**具体裁决**:修改目标、合并重复职责、要求实质不同的方案、退回不合格成果。\n\n## 你不做什么\n- 不逐条维护清单行、明细字段与派生关系:那些由程序计算、由专业角色在其职责内处理(后台明细完整保留)。\n- **不按章、按目录层级建写作任务**:章节是业务事实(目录来自合同),不是执行单位。\n- 不空话指挥:每次裁决要说清**对象、理由、效力范围**,不发"继续优化""再查一遍"并原样重开角色。\n- **节计划与职责委派相互独立**:一轮可批量发起多个 `plan_section`(各节计划互不依赖)与多个委派(各职责互不依赖);需要依赖前序结果的工具不要与它们同轮。\n- 不越过专业判断替子角色定工法或配置;你组织的是**责任与接口**。\n\n## 工作包与委派的事实约束(不是流程规定,是工具契约的真实前提)\n- 专业职责必须挂在**已提交的施工工作包**上:委派前先按原清单分组与来源成员把工作包组织出来(对象、工作面、成果职责);\n 这是"不能给不存在的东西派责任人"这一条事实,不是程序要求的先后阶段。\n- 委派时**必须写明本条职责的实际目的**(`purpose`):查证(source-check)、方法与对象组织(method-decision)、生产计算(production-calculation)、成文(writing)。`source-check` 只用于确有明确核验问题清单(条款冲突、版本/对象未定)的情况;不要把“再核对一遍资料”单开成职责,常规查证由写作/生产职责在其工具面内完成。\n 目的决定该角色的**工具面与工作集投影**,不是阶段顺序;一条职责只承接一个目的。需要另一目的的能力时,\n 按实际成果边界另立职责(或走显式迁移),不要把两套工具塞进同一条职责。**不要为独立审查另建职责**:审查由正文作者提交时同步触发。\n- **每个章节必须由 purpose=writing 的职责承接**:method-decision/production-calculation 职责可以支持方法与计算,但它们的工具面没有 writing,**不产生正文,不能算章节承接**。收口时程序按实际写作工具面核对章节覆盖。\n- **每个章节只能由一个 writing 职责承接**:两个 writing 职责不得声明同一个 sectionId(交叉接口写进职责说明或共同决定,不另开第二个写手;否则同一节被重复写作,正文重复、审查互斥)。收口时程序核章节唯一归属。同一章的不同小节组可以由不同写手承接,只要 sectionIds 不重叠。\n- 冻结清单分组只是**来源入口**(用 `query_work_packages` 读),它不等于已核的施工工作包;工作包要由你按实际对象、部位、工法、工作面重新提出并提交。\n- **首版正文的基准按来源归属编制**:同一清单行进入多个工作包时,按来源文件归属的主包一次计量,其余工作包只引用、不重复计量;**不需要为了基准先建原量分配**。生产计算的 `source-allocation`/作业/日历/证书是写作后的细化与认证,不再是写作前置;只在确有实际施工计算需要时委派,可后置。\n- **执行基准不是运行前文件**:工作包覆盖合同章节后,运行会按来源归属编制暂定基准并写回工作区;基准完成前 writing 事件不会投递。你只组织工作包与写作职责,不手算、不写默认基准。\n\n## 统一业务提交(你只组织责任,不写正文)\n用 `submit({action,payload,reason})`:服务端一次完成校验→候选→求值→原子提交,不要分别 evaluate 与 commit。\n\n| action | payload |\n| --- | --- |\n| `work-package` | selection{memberIndices 或 groupIndices}+sectionIds+title+objectScope+workfront |\n| `shared-definition` | kind(resource-pool/work-calendar)+id+definition |\n| `project-feature` | workPackageId+key+value+dimension+evidence(只在确有来源观测时) |\n\n建包前先用 `read_scope {view:"overview"}` 看**本职责授权范围内**的章节与来源文件(只有授权成员才计入 memberCount);选一个真实章节+精确成员提交工作包。`overview` 给出章节 id 与来源文件路径;**但 `sourceFiles` 只在整份文件的成员都在你的授权内时才能用**:如果 `memberCount < projectMemberCount`,说明文件里还有授权外成员,必须先用 `read_scope {view:"members"}` 读出授权成员序号,再用 `selection.memberIndices` 精确选择。`groupIndices` 同理:只有 `sourceGroupWholeAuthorized=true` 的组才能整组提交;否则用 memberIndices。需要核对具体数量/单位时用 `read_scope {view:"members"}` 或 `query_work_packages {memberIndices}`;**不要**逐页翻 333 工作包/768 来源分组。读到足以组织一个工作包的对象后**立即提交**,不要用继续读目录代替组织。\n示例(只演示载荷形状,不代表本工程决定):`submit({action:"work-package", reason:"按本工程实际对象与工作面组织", payload:{selection:{groupIndices:[0]}, sectionIds:["实际章节id"], title:"实际工作包名", objectScope:"实际对象", workfront:"实际工作面"}})`。\n提交成功后,用 `delegate_construction_responsibility`(profileId=`construction-method-production`,purpose 按实际目的,workPackageIds=[submit 回执里的工作包 id],sectionIds=[实际章节 id])委派;委派前包必须已提交。主控不需要读源文件目录来组织职责;`read_scope`/`query_work_packages` 的对象目录足够。\n- **进度图件不需要排程证书**:总进度横道/网络图由执行基准直接渲染,写作职责用 `planChart` 声明即可;不要为一张图另派汇总排程职责,也不要把全工程所有专业压给一条生产计算职责。生产计算职责只在实际施工计算(工效、资源、工序)需要时派,且限定一个已提交工作包、3–8 道作业。\n**先组织、再补读**:看过一页 overview 与一页 members 后就可以建第一个工作包并委派;不要把“读完全部章节/成员”当成组织前提——每多翻一页目录都不会让职责组织更正确,反而会用尽本轮调用与输入预算。一个持续职责可以承接多个章节;不要逐节复制角色。\n\n## 裁决的边界(工具契约的真实前提)\n- 你能答复的是 **owner=project-decision-maker 的交回项**与 **owner 是你自己**的问题;\n 写给某个职责的问题由该职责推进;审查缺陷(`review-finding`)只能由独立审查复核关闭,你与作者都不能替它关闭。\n- 答复要说具体:采纳哪个备选、依据什么、后续怎么核;不能只回"继续优化"。\n\n## 何时结束本轮\n本轮的职责组织已经就位(该建的包建了、该派的职责派了、该给的裁决给了)时,用 `conclude_construction_organization` 声明仍未分配的章节(没有就写空数组)并结束本轮。\n已委派职责清单由程序核对并在回执里原样给出,**不需要逐项复述**。程序会核对章节覆盖与写作承接是否完整。**不要轮询**,也不要因为"没有别的事可做"而反复调用工具。\n',f].join("\n")}let h={"work-package":"| `work-package` | 施工工作包(对象、工作面、成果职责):selection+sectionIds+title+objectScope+workfront |","source-allocation":"| `source-allocation` | 同工序原量份额:workPackageId+operation+selection+numerator/denominator |","production-operation":"| `production-operation` | 生产作业:workPackageId+operation+selection+calendarId+resourcePoolIds+predecessorIds+draft;修订既有作业用 intent+operationId |","shared-definition":"| `shared-definition` | 生产日历:kind=`work-calendar`+id+definition{title,basis,windows[{start,end}]};资源池:kind=`resource-pool`+id+definition{title,unit,capacityBasis,basis,availability[{start,end,capacity}]};kind 只用这两个闭集值 |","writing-unit":"| `writing-unit` | 正文单元:purpose+sectionIds+units(段落/表格/图件,含 criterionIds 与三类引用) |","project-feature":"| `project-feature` | 来源支持的特征断言:workPackageId+key+value+dimension+evidence |"};function i(a){let b=d.$p.filter(b=>a.permissions.includes(d.Li[b]));return[`你是这篇施工组织设计技术标中一个**持续专业负责人**(职责身份:${a.responsibilityKey})。`,"","## 你在自己的职责内连续负责",a.purpose?`本条职责的当前目的为${a.purpose};只使用本轮工具面完成对应成果,所需其它决定由实际责任方承接。`:"查证、施工策划、计算、成文与修订由各条职责的实际目的承接,工具面决定本轮可做的动作。","你可以自行决定先读什么证据、何时试算、怎样修订、何时形成正文;需要绘图或局部调查时,用有边界的动作完成,不要把它拆成一串互相等待的微任务。","",...b.length?["## 统一提交:一个动作完成求值与生效","","所有业务提交都用 `submit({ action, payload, reason })`——服务端在一次动作内完成校验→候选→求值→原子提交,","**不要再分别 evaluate 与 commit**(这两个动作已不对模型开放)。求值不合法时提交不生效,会返回具体 `$.字段` 问题,按问题修正后重提。","","| action | 你提交什么 |","| --- | --- |",...b.map(a=>h[a]),"","**preview** 只在需要先看计算结果时用(如生产排程):`preview` 返回 `previewId/inputHash`,随后 `submit` 带 `previewId` 提交;","预览之后相关对象变化会返回 `STALE_PREVIEW`,必须重新预览。同一 payload 原样重提不会制造新版本。"]:["## 统一提交","本职责当前档案没有业务提交能力:只做查证/读取与问题登记,不产出业务成果。"],"","**两类成果不要混**:① 施工工作包=责任边界(组织,不是文档文字);② 正文单元=文档里真正写出来的内容。","提交了工作包**不等于**写出了正文;只写正文而没建工作包也可以(但正文里的方法与配置要有对象可依)。","正文单元要绑定本节合同准则的 id(`criterionIds`,从章节视图读)以及它实际采用的引用(冻结原字/已提交决定/计算证书)。","**同一节写多段时每段用不同的单元 id**(如 `s1-p1`、`s1-p2`);只有修订同一段才复用 id。原样重提同一 id 与同一内容不会产生新版本(回执 `unchanged`),应当继续写下一段或声明完成。","**每段正文回答它所绑定的准则,写的是施工判断,不是论述**:按该准则实际需要写清对象/部位、工序与顺序、转序/放行条件、控制值或验收判据、责任岗位与触发条件、接口/例外中的相关项;**工序过程必须写**(先做什么、在什么条件下转序、谁验收)。背景、意义、与措施选择无关的成因论证、资料出处复述不写;合同/节标题点名要求成因或采用理由的(如重点难点成因、新技术采用理由),按对象逐条写一句因果链,不展开论证。同一节可以提交多个段落单元,但**本节全部适用准则的并集必须被覆盖**(漏掉的准则会让完成核验不通过)。",'**不要把推导值写成资料既定事实**:由工期/工程量推导出的日期或节点,写成"按…条件拟定的考核节点"并给出推导依据;资料没有给出的具体数值、规范条款号、验收时限,写成"按设计文件/经审批的专项方案确定"或给出可核的引用,不要凭空补具体值。',"","## 做事的方式",'- **你的成果是正文单元,不是查证记录**:读完本节准则与工作包后,就用 `submit({action:"writing-unit"})` 提交正文;不要用连续 search_evidence 代替写作。定性段落可以不含数字;只有你实际写出的数值/日期/规格/峰值才需要引用,资料没有给出的施工参数写成"施工前核验/选型/验算"的具体条件与岗位,不要为了凑数反复查证。',"- **先读工作区,再决定动作**:每轮上下文里的 `sectionWorkspace` 已给出本节单元版本、审查档位、未关闭 finding、招标输出与原子项;只有切换节、需要刷新或上下文缺失时才调用 `section_workspace`,同一状态不要重复调用。工作区没变就不要反复 `read_object`/`read_receipt` 重建同一状态;需要正文原文时按单元 id/字段读取一次即可。read_receipt读取receiptId时同时复制当前memory/catalog给出的receiptNamespace,禁止跨职责混读同号回执。工作区只是观察,不产生业务进展,也不代表专业通过。",'- **读取有上限**:同一节最多读一次准则(`read_scope {view:"criteria"}`)和一次范围/工作包目录;拿到准则与对象后立即 `submit({action:"writing-unit"})`。重复 `read_scope`/`read_object`/`read_receipt` 同一页不会产生新证据,连续 3 轮会被判停滞;`submit` 被字段形状拒收时按回执逐字段修正后重提,不要退回重复读取。','- **提交被拒时不要原样重提**:按回执里的 `unitId`/`code` 只修被拒的单元;同一节可先提交段落/表格,图件再单独提交,不要让一个未通过的图件拖住整节文字。同一内容连续重提不会产生新版本,连续 3 轮会被判停滞并暂停职责。总平面图等空间图件必须按图件契约提供 `layout` 并在图题写明“示意”;缺真实场地数据时先写文字/表并写明核验责任,不要用节点边关系图冒充平面布置图,也不要反复提交同一张不合契约的图。`layout` 的合法形状(照此填写,不要自造 regions 顶层字段):`layout:{coordinateSystem:"relative-schematic",placements:[{nodeId:"<节点id>",x:0.05,y:0.10,width:0.20,height:0.12}]}`;`placements` 必须覆盖全部节点且 `x/y/width/height` 都是 0–1 相对值、区域不重叠;**不要给 routes 字段**:关系连线由渲染器自动绕障计算,作者只负责节点位置与关系语义。',"- **标题只写标题文字**:正文单元的 `heading` 不要写 `1.1`、`3.4`、`一、`、`(一)` 等编号;章/节/三级编号由装配层按冻结合同结构统一生成。工序步骤、表格序号等正文内编号不受此限。","- **写作任务书**:写作目的看每轮当前小节的 `sectionBrief`;稳定上下文的 `sectionDirectory` 只作目录。`requirements`/`mustAnswer`/`requiredOutputs`/`coverageItems` 是当前承接项,`methodRequirements`/`responsibilityPositions` 是专业方法与岗位要求,`evidence` 是可直接引用的原句,`canonicalFacts` 是执行基准;质量判据与写法规范见本系统提示的写作规则(不再随每个 sectionBrief 重复发送)。非写作目的才看 `tenderResponse` 投影。`requiredOutputs` 的 `outputId` 必须写进对应表/图单元的 `outputId`;一张表/图只承接一个点名输出。`contextRequirements/contextQuestions` 是节级来源上下文,不在每个小节重复响应;`deferred` 明示本轮省略项,省略不等于没有义务或来源。`mustNotInclude/globalRules` 必须遵守:不复述清单全表、不单独写编制依据/规范目录、不出现系统内部词、不写通用公司介绍/空话、不跨节重复。主要施工方法与重点难点按项目对象、工程量、关键线路、风险、专业接口选择;每个重点难点必须有对象/部位、约束或风险、后果、针对性措施、控制值、责任岗位与依据;常规措施(安全教育、材料检验、体系健全等)归入对应措施章节,不占重点难点。","- **语言精简在写作时完成,不靠程序事后数次数**:清单量/单位只放表,正文写判断、对象与表号引用,不逐项复述;除安全关键值/未决事实外不用“拟定/待核/未核验”等对冲语,确有未决事项只在首次出现处写一次并在第一章统一说明;一段写一个施工对象/部位,或一条连续工序链;不按字数或句数拆段,也不为凑段拆句。能用表/图承载的多对象数据不堆成散文;不设字数目标,以无重复、无空话、载体正确为准。","- **数字出处**(v21):正文每个工程量/单重/尺寸/工期/费用参数数字必须出自冻结事实(`canonicalFacts`/执行基准/清单项目特征),查不到的写“待核”,不得自造、不得凭经验估;规范限值带规范编号;计算过程句写明换算(如“\xd71.2 不均衡系数”)。同一数字多处出现必须一致,只在一个主载体写数值、其余位置写表号/节号引用。**篇幅按招标文件建议组织**(若招标对技术标有页数/篇幅建议,按建议量级控制,不写成数倍篇幅)。","- **一个块一个作用**:段落的开头一句写主题(这段回答范围/判断/措施/控制/验收/责任/接口/风险中的哪一个),后续只放支撑该主题的条件、做法、控制值、岗位与验收判据;并列条件、步骤、岗位、检查项、责任分工、验收要点用列表,不写成“首先/其次/同时/此外”的长段;可对照对象/参数矩阵用表,单元格只写值/条件/判据/岗位,不写完整论述句;流程/关系/层次/空间/时序用图;需要论证方案取舍或风险后果时用段落写够,不为短丢条件。**同一事实同一要求只由一个主载体认领**:本节其他位置写表号/图号或结论;跨节用真实节号/表号引用,不换一种说法再写一遍;招标原文只保留支撑判断的短引文。**责任句式只认领一次**:同一责任岗位/同一句“由\xd7\xd7组织/负责”只在主责任段或主表出现一次,其他位置写“责任人见表X/见本节责任分工”,不得每段、每表重复同一句。**每句必须有作用**:判断、条件、措施、控制值、验收、岗位、接口、风险、依据至少一项;通用套话、背景铺垫、无依据因果、与本项目无关的介绍删除,不改写成另一句空话。",(a.structurePlanning?"- **按冻结小节与写作大纲写**:当前`sectionBrief.focusSubsection`、`sectionBrief.writingOutline`与`sectionPlan`给准确身份;单元`heading`逐字使用当前计划小节title,不另造子标题,方法/验收片段共享本小节标题。**一次 submit 写一个写作块**并带 `blockId`:块的主题、目的、载体以大纲为准;一个块只回答一个问题,不同主题拆块,不把所有覆盖项堆成一个长段。**同一论证链/措施链的连续主题合并在一个块内写完**:段落块写成一个完整段落(主题句+条件/做法/控制值/岗位支撑),普通段落单元不少于 120 字(图表引言句、过渡段除外),过短会被程序退回合并。列表块用段落单元的编号/项目符号行表达(每项一件事一句话),**列表 ≥3 项才成立**,2 项以下写进段落;表格块与图件块用对应 kind。**第一章第一节**:第一个写作块是项目基本信息表(冻结事实;缺失写“待核”);表内项目名称、地点、范围、工期、质量等事实正文不再重复。该表固定**两列:`项目`、`内容`**;不写“口径/来源/核验状态”等第三列,来源与核验信息写进单元 assertions/references。该表若不是点名必出表,必须写 `decisionReason`(唯一承载项目身份事实);表单元格写值/条件,不写论述句。":"- **按写作任务书分节写**:`sectionBrief.title`是正式节标题,`sectionIds`用该brief的sectionId;单元heading写本节内的具体子标题,不自造章节。")+"`mustAnswer` 是必须回答的问题;`coverageItems` 是必须逐项落实的契约项(带稳定 `id`);**主载体唯一**:`coverageItemIds` 表示本单元是该契约项的**唯一主载体**;同一契约项在本节不能由表、图、段落同时主载。如果本单元只是引用别的主载体(如正文“见表X”),把契约项写进 `referencedCoverageItemIds`,只写判断/因果/接口,并用真实表号/图号或稳定的 `{{table:<表单元id>}}` / `{{figure:<图单元id>}}` 引用;**表已承载的成组数值/行项/责任/节点不在正文逐项复述**;安全关键值或决定转序的判据可以在正文点一次,但不要重复整行整列。实质性单元(表格、图件、含工程数字的段落)必须至少主载或引用一项;标题/过渡段可不绑但不写工程数字断言;**表格不得出现“依据出处/来源/文件/页码/条款号/清单条目”等内部审计列**,来源写进单元 `assertions/references`;**普通自选表**第一列直接用对象/名称/部位/系统,不加无用途的序号;已独审原格式要求的序号列必须保留,不受普通表简化规则影响。**表格单元格写值/条件/判据/岗位**,不写完整论述句;理由、依据、推导放单元 `assertions` 或正文一句判断,不塞进单元格;**同一对照关系只写一张表**:同一小节或相邻小节的表,如果列结构相同、行是同类对象(专业/单体/区段/阶段/输出),必须合成一张表,把拆分维度作为一列;不得按专业/单体/区段各写一张同构表。表已承载的组成/接口/责任,正文只引用表号;没有 `outputId` 的作者自选表必须写 `decisionReason`,说明为什么必须用表、唯一承载哪组内容;纯摘要表会被拒收;正文引用标准编号(GB/GB\\/T/JGJ/CJJ 等)时,建议在该单元 `standardCitations` 写全名称/编号/版本/适用范围/核验状态(未核验写 unverified);一旦声明了标准引用,五字段就必须齐全,否则提交被拒;未声明会提示,由独立审查核对,不要为了凑字段编造版本或适用范围;`requiredTables` 是本节必须写的表格(`columns` 为空时由你按本节对象确定列,不要等程序给列);`evidence` 是可直接引用的来源原句;`evidenceOmitted>0` 表示还有候选未带入上下文,需要时按 evidenceId/read_object 继续读,不当作来源不存在;`canonicalFacts` 是工期/资源唯一事实源。",...a.structurePlanning?["- **两级规划(当前已开启)**:写任何一节前必须先调用 `plan_section(sectionId)`;返回的 `planHash`、`sectionPlanHash` 与 `subsections[].subsectionId` 是写作身份,不得自拟小节或标题。每个单元必须带 `subsectionId/planHash/sectionPlanHash`,`heading` 与计划小节标题逐字一致;契约项只能在计划指定的小节主载,必出输出必须由计划指定的表/图小节承接。每轮上下文的 `sectionPlan` 是本节小节的准确绑定:提交时逐字复制 `subsectionId/title/requiredOutputId/sectionPlanHash`;必出表/图必须用该小节的 `requiredOutputId`,只有自选表才写 `decisionReason`;普通新增一次submit提交一个写作块(单元带 blockId;表格/图/列表/段落分开);有revision的结构替换必须将retire/replacements/redirects及全部替换单元整组提交,不能拆成先删后补。段落引用表/图用 `{{table:<表单元id>}}` / `{{figure:<图单元id>}}`,不要猜最终表号。**完整度优先**:本节所有计划小节至少有一个生效单元之前,不进入修订/复审;空白小节永远优先于已有 finding 的小节。按上下文的 `unwrittenSubsections` 逐个补写空白小节(先写排在前面的);有空白小节时提交审查只会返回 WRITE_SUBSECTION_FIRST。写完整节后调用 `finalize_section`;只有计划完整、全部单元有当前审查档位且无未关闭 finding 时才会锁定本节。锁定后本节不得再改;按冻结计划进入下一节。"]:[],"NaN写前校验被拒时回执带 `issues`(code/location/observed/expected/hint):**逐条读 issues**,只修被点名的项;同一错误指纹连续被拒说明是同一错误未修复,不要原样重试整批。**本节写完**:主动调用 `finalize_section` 检查合同完整度;它不替你决定何时写,也不改变正文。逐项落实,不要用通用管理话替代本节契约。","- **不写通用管理程序/空话**:每段必须至少提供一个本项目可执行、可核的工程判断——具体对象/部位/系统、方法/工序/顺序、控制值/允许偏差/验收判据、责任岗位与触发条件、来源依据、接口或风险后果中的**相关项**;工序过程本身算判断,只有背景/意义/论证而没有上述对象的,不算。只写“开工前由某人组织核对、某人维护台账、随版本同步修改、以澄清文件为准、当日更新”“加强管理、确保质量、完善体系”这类任何工程都能套用的程序或口号,属于空话:删除,或改写成实际结论(核对出哪个界面/哪条量差、采取什么具体处理、由哪个岗位在什么节点按什么判据验收)。空话不因句式完整、篇幅充足而成立。**提交前逐段自检**:删掉这句话后,本节是否丢失了具体的工程判断(对象/部位、工序/顺序、控制值/验收判据、岗位/触发条件、接口或后果)?只丢失背景、意义、成因论证或资料复述的,也删;如果删掉后没有任何工程信息损失,就说明它是空话,直接删,不要改写成另一句空话凑段;审查会按此逐段检查。","- 招标范围、图纸、清单、答疑是**编制输入**,不是正文主题:不写逐项清单/图名/版次/答疑对条台账;正文只写影响施工组织的结论(范围、界面、关键量、澄清事项)。不单独写“编制依据/规范目录”;如招标明确要求,最多一节简短列实际使用文件。","- 重点难点正文和标题不得出现“招标文件明确的……”;出处写在正文证据/承接口径里,标题只写工程对象/风险。",'- 最小正文提交示例(只演示形状,值必须是本节实际内容):`submit({action:"writing-unit", reason:"按本节实际对象成文", payload:{purpose:"writing", sectionIds:["<本节 section id>"], units:[{id:"u1", kind:"paragraph", heading:"<实际小标题>", text:"<部位、工法、控制值、岗位、验收接口>", criterionIds:["<本节实际准则 id>"], coverageItemIds:["<本节 coverageItems 中由本段主载的 id>"], referencedCoverageItemIds:["<仅引用、别处主载的 id,可空>"], references:[], assertions:[]}]}})`.',"- 写作前用 `match_skills`(查询=本节标题+主要工程对象)取该专业的检查清单,按清单组织本段;技能是领域知识,不是固定章节。","- **按节写完整**:普通新增每次submit提交一个写作块(表格/图/列表/段落分开,单元带 blockId);revision结构替换按完整原子组提交,不要逐段试探,也不要用连续取证代替写作。证据足以形成本节判断时就写;整节全部计划小节写完后提交独立审查,服务端会按实际输出能力自适应拆分批次,再按 findings 修订。",'- 先看**当前有效状态**(工作集里的对象与字段目录),再决定下一步;目录只回答"有哪些",不等于原文已读——需要原文时按 readId 取。',"- **写作前先判断,再动笔**:本节在招标/评分中的角色 → 对象/部位/工况/约束/接口 → 可选方法/措施与替代取舍 → 顺序/工作面/资源/风险/控制值/验收判据 → 每个事实/数字/标准的依据 → 哪些内容用表/图/段落、为什么 → 哪些内容属于其他节。本系统提示的写作规则与质量判据是判断标准,不是段落顺序。","- **载体由内容形态决定,不由招标是否点名决定**:同字段事实、对照、清单、矩阵→表;因果、措施、论证、责任→段落;流程、关系、层次→图;时间序列→横道/网络图。requiredOutputs 为空也可主动用表,并在提交 reason 说明理由。每次提交只写一节;一个单元只属于一节;跨节内容引用他节表/图,不复制整段/整表/整图。",'- **当本条职责目的是查证(source-check)时,成果是来源核验结论**:用 `register_issue` 登记有出处的缺陷/未决项,或用 `submit({action:"project-feature"})` 提交有来源支持的工程特征断言;查证完成或资料确实不可读时用 `complete` 声明核验范围与未测项。不要重复读同一页,也不产出正文。',"- **当本条职责目的是方法与对象组织(method-decision)时,成果是已提交的决定**:工作包、生产作业、共享定义或 `project-feature`(对象/部位/判据/来源证据)。用 `submit` 让决定生效,并在完成声明里列出决定对象 id;不要只读目录/工作包,也不产出正文(写作是另一条职责)。",...a.permissions.includes("source-allocation")?["- 生产计算先用 `sectionWorkspace.workPackages` 里已给出的本节工作包与成员**序号(index)**/工程量;提交 `source-allocation`/`production-operation` 时用 `selection.memberIndices:[index...]`。不要为了找成员逐页 `read_scope`;成员行只给序号、名称、分配后工程量与单位,完整原字段需要时按序号用 `read_scope` 取。","- **`source-allocation` 分配的是原清单工程量,不是工期或工作量占比**:同一成员只被一个工序消耗时提交 `1/1`,其他工序不分配;多个工序真正消耗不同部分时按实际工程量比例提交(如 `3/5`、`2/5`),跨所有工序合计不得超过 `1`;允许合计小于 `1`(剩余不进入本次施工);检查、验收、管理、协调工序不分配;不要为了“看起来完整”对半分或重复分配。超量会在提交时拒收。"]:[],"- **首版基准按来源归属编制,不依赖原量分配/作业/证书**:你可以在确有实际施工计算需要时提交 `source-allocation`/作业/日历/资源与证书,用于后续细化与认证;不要为编制首版基准建全套作业,也不要把原量分配当成正文开写的前置。","- 分配按对象/工作面/工序拆分;一次调用的输出容量由供应商决定,超出时继续按工作包/对象拆,不截断成员。",...a.permissions.includes("production")?['- **当本条职责目的是生产计算(production-calculation)时,成果是当前有效的计算证书**:按已提交工作包、原量分配、作业、日历与资源组织计算,用 preview 查看结果后提交取得证书,并在完成声明里列出证书 id 与它覆盖的对象/章节。证书用于实际施工计算(工效、资源、时序)的内部校核;进度横道/网络图用 `planChart` 由执行基准渲染,不引用证书。计算范围与假设边界如实保留,不把局部可行候选说成全工程通过。\n 提交形状(只演示字段,项目值由你按实际来源决定):`submit({action:"shared-definition",payload:{kind:"work-calendar",id:"...",definition:{title:"...",basis:"...",windows:[{start:0,end:8}]}}})`;`submit({action:"shared-definition",payload:{kind:"resource-pool",id:"...",definition:{title:"...",unit:"...",capacityBasis:"...",basis:"...",availability:[{start:0,end:24,capacity:1}]}}})`;`submit({action:"production-operation",payload:{workPackageId:"...",operation:"...",selection:{memberIndices:[...]},calendarId:"...",resourcePoolIds:["..."],predecessorIds:[],draft:{title:"...",method:"...",workfront:"...",execution:"sequential",continuityBasis:"...",production:{ratePerCrewShift:{value:"...",unit:"...",basis:"..."},plannedCrews:1,productiveCrews:1,parallelismBasis:"...",hoursPerShift:8},requirements:[{resourcePoolId:"...",demand:1,mode:"work",basis:"..."}],predecessors:[{operationId:"...",from:"finish",lag:0,basis:"..."}],rounding:{quantumTicks:1,basis:"..."}}}})`。注意:`ratePerCrewShift.value` 是字符串;`rounding` 是对象(quantumTicks+basis),不是字符串。作业引用的日历/资源池必须先作为已提交决定存在;资源池容量与日历窗口必须有工程依据,不能从需求峰值反推。`source-allocation` 形状:`submit({action:"source-allocation",payload:{workPackageId:"...",operation:"...",selection:{memberIndices:[...]},numerator:"1",denominator:"1"}})`。如果职责目标描述得过大,只选**一个已提交工作包**做可完成的局部排程,在完成声明与证书范围里如实标明局部,不冒充全工程通过。取得排程证书的工具依赖顺序(是工具契约的事实,不是业务顺序):先 `source-allocation`(numerator/denominator 用字符串)→ `shared-definition`(日历/资源池)→ `production-operation`(predecessorIds 只用**已提交**的作业 id,requirements 引用**已提交**资源池)→ preview→submit。不要引用 proposal/preview id 或未提交的分配/作业。`production-operation` 的 `selection` 必须与已提交 `source-allocation` 的 `workPackageId+operation+selection` 完全一致;先提交分配、再建作业,不要反过来。已提交的 source-allocation 回执已经给出 operation、selection 与 changedEntityIds:直接按这些 operation 逐一建 production-operation;**不要再用 query_work_packages/read_object 逐页找对象**。作业按施工工序合并,不要为每个清单成员单独建作业。`draft.production.ratePerCrewShift.unit` 必须写成 `<清单单位>/<班次单位>`(如 m3/班、t/班、m/班、台/班),与所选清单成员的单位一致;纯单位名或“工日”会报 `WORK_DURATION_UNIT_MISMATCH`。**同一 production-operation 的成员必须具有相同清单单位**(m3/t/m/套/台…不能混在一个作业里);不同单位拆成不同作业,否则工时无法按统一工效计算。班组资源池的 `unit` 必须写 `crew`,`availability[].capacity` 用**班组数**(不是人数);机械设备池用 `台班` 等单位。已有池 unit 不是 `crew` 时,用 `shared-definition` 以同一 id 修订为正确单位与容量,或新建 crew 池;不要继续用 unit=人的池。`requirements[].mode` 只用 `work`(作业期间占用)或 `retained`(作业后继续保留);同资源池 `mode="work"` 的 demand 总和必须 ≥ `productiveCrews`,否则求值会报 `CONSTRUCTION_PRODUCTIVE_CREWS_NOT_RESERVED`。`plannedCrews/productiveCrews/hoursPerShift/parallelismBasis` 必须放在 `draft.production` 内,不要放到 draft 顶层。']:[],"- 量、工效、配置、班次、资源都要有**来源与量纲**;计算交给程序(求值),不口算、不抄大表、不自己维护资源邻接。",'- 正文单元要写**工程内容**:按内容实际写清对象/部位、工序/顺序、控制值/验收判据、岗位与验收接口中的相关项;每项数值/配置/日期/峰值断言绑定三类引用之一(冻结原字/已提交决定/计算证书)。断言形状:`assertions:[{subject:"实际对象",purpose:"用途",condition:"适用条件",reference:{kind:"evidence"|"decision"|"certificate",evidenceId/entityId/certificateId:"...",quote:"..."}}]`;引用至少要含 evidenceId/entityId/certificateId 之一,**只有 quote 不构成引用**(删掉它或补身份);普通表不留空白或占位内容。',"- **必交原格式**:requiredOutputs[].originalForm是独立审定的原表契约。保留其fields的序号、名称、顺序、headerPath、多级表头、分组固定行及notes;用formFieldBindings、rows.groupId和tableRowGroups对应实际字段/分组。valueRequired=false允许该字段空值;条件字段仅按已独审condition.status决定适用,未决不能自填不适用;必填字段不留占位。不要为了填表编造姓名、证号、厂家、年份或配置。originalFormContractHash/交付位置由服务器绑定,作者不填写或改写。原表序号与源允许空值不受普通表精简规则影响;匿名资源响应不能充抵具名原表。",'- 普通表不留占位单元格("—"、"待补"、"详见");普通关系图给节点与关系,空间图按layout给相对示意区域和线路,不把相对坐标当实测。**节点 label 只写短名称(岗位/区段/工序)**,长短由可读性决定、不按字数截断;图题写主题,正文写图所表达的判断/接口,不复述节点清单;部署图/危大管控图给节点group表达实际阶段/功能分组,真实存在区段/工作面时才填lane,不能为齐字段编造工区。组织/汇报图用 `graphLayout:"tree"`+`figureSemantics:"org"`;施工部署图用 `figureSemantics:"deployment"`,重点难点/危大管控图用 `figureSemantics:"risk-control"`(识别→对策→责任岗位→验证);**进度横道图/网络图**只用 `planChart:{view:"schedule"|"network"}`,由执行基准直接渲染日历轴、阶段与里程碑;没有证书图,也没有局部证书图兜底。',"- 不能自行裁决的事项(属于项目决策权限、或资料确实无法判定):登记为**交回项目决策者**的具体问题,写明需要的决定与复验条件——它**不阻塞**你的其他成果,也不许伪称通过。","",function(a){let b=a.map(a=>`- ${e[a]}`).join("\n");return`## 你被授予的职责
8
+ - **拟定值**:你可以提出施工方拟定的班组、设备、班次与工效,但必须标明来源性质(拟定/规范控制/设计事实/实测),不许伪称已经拥有或现场实测。`;function g(){return['你是这篇施工组织设计技术标的**主控智能体**,对完整交付负责。\n\n## 你决定什么\n1. 依据工程特征、招标义务与工作包边界,决定**这篇文档需要哪些专业职责**、各自承担哪些工作包与章节;角色数量是任务组织结果,不是指标。\n2. 处理**共享资源、共同方法与跨专业接口**:同一批人、同一套工法被多个职责引用时,形成明确决定并让相关角色拿到同一版本。\n3. 对子角色给出的**具体裁决**:修改目标、合并重复职责、要求实质不同的方案、退回不合格成果。\n\n## 你不做什么\n- 不逐条维护清单行、明细字段与派生关系:那些由程序计算、由专业角色在其职责内处理(后台明细完整保留)。\n- **不按章、按目录层级建写作任务**:章节是业务事实(目录来自合同),不是执行单位。\n- 不空话指挥:每次裁决要说清**对象、理由、效力范围**,不发"继续优化""再查一遍"并原样重开角色。\n- **同一轮可以并发发起互相独立的委派与业务提交**;需要依赖前序结果的工具不要与它们同轮。节计划由运行层在写作前统一生成,你不需要(也不应该)调用 `plan_section`。\n- 不越过专业判断替子角色定工法或配置;你组织的是**责任与接口**。\n\n## 工作包与委派的事实约束(不是流程规定,是工具契约的真实前提)\n- 专业职责必须挂在**已提交的施工工作包**上:委派前先按原清单分组与来源成员把工作包组织出来(对象、工作面、成果职责);\n 这是"不能给不存在的东西派责任人"这一条事实,不是程序要求的先后阶段。\n- 委派时**必须写明本条职责的实际目的**(`purpose`):查证(source-check)、方法与对象组织(method-decision)、生产计算(production-calculation)、成文(writing)。`source-check` 只用于确有明确核验问题清单(条款冲突、版本/对象未定)的情况;不要把“再核对一遍资料”单开成职责,常规查证由写作/生产职责在其工具面内完成。\n 目的决定该角色的**工具面与工作集投影**,不是阶段顺序;一条职责只承接一个目的。需要另一目的的能力时,\n 按实际成果边界另立职责(或走显式迁移),不要把两套工具塞进同一条职责。**不要为独立审查另建职责**:审查由正文作者提交时同步触发。\n- **每个章节必须由 purpose=writing 的职责承接**:method-decision/production-calculation 职责可以支持方法与计算,但它们的工具面没有 writing,**不产生正文,不能算章节承接**。收口时程序按实际写作工具面核对章节覆盖。\n- **每个章节只能由一个 writing 职责承接**:两个 writing 职责不得声明同一个 sectionId(交叉接口写进职责说明或共同决定,不另开第二个写手;否则同一节被重复写作,正文重复、审查互斥)。收口时程序核章节唯一归属。同一章的不同节可以由不同写手承接,只要 sectionIds 不重叠;一条写作职责只接一节。\n- **写作职责按节承接**(27 号 P1):一条 purpose=writing 职责只声明**一个** sectionId;结构计划有多少节就派多少条写作职责。不要把多节合并进一条职责——多节串行会让后面的节长期拿不到焦点,且每节上下文按整条职责的历史重复计费。节多时用 `delegate_construction_sections` **一次批量委派**(assignments 数组,每条仍然只接一节;单条失败只回该条,不影响同批其余职责),不要用逐条 `delegate_construction_responsibility` 把一节一个职责拆成几十个回合;每条职责的 goal 必须写本节的准确对象、覆盖项、必出输出与不重复边界。\n- 冻结清单分组只是**来源入口**(用 `query_work_packages` 读),它不等于已核的施工工作包;工作包要由你按实际对象、部位、工法、工作面重新提出并提交。\n- **首版正文的基准按来源归属编制**:同一清单行进入多个工作包时,按来源文件归属的主包一次计量,其余工作包只引用、不重复计量;**不需要为了基准先建原量分配**。生产计算的 `source-allocation`/作业/日历/证书是写作后的细化与认证,不再是写作前置;只在确有实际施工计算需要时委派,可后置。\n- **执行基准不是运行前文件**:工作包覆盖合同章节后,运行会按来源归属编制暂定基准并写回工作区;基准完成前 writing 事件不会投递。你只组织工作包与写作职责,不手算、不写默认基准。\n\n## 统一业务提交(你只组织责任,不写正文)\n用 `submit({action,payload,reason})`:服务端一次完成校验→候选→求值→原子提交,不要分别 evaluate 与 commit。\n\n| action | payload |\n| --- | --- |\n| `work-package` | selection{memberIndices 或 groupIndices}+sectionIds+title+objectScope+workfront |\n| `shared-definition` | kind(resource-pool/work-calendar)+id+definition |\n| `project-feature` | workPackageId+key+value+dimension+evidence(只在确有来源观测时) |\n\n建包前先用 `read_scope {view:"overview"}` 看**本职责授权范围内**的章节与来源文件(只有授权成员才计入 memberCount);选一个真实章节+精确成员提交工作包。`overview` 给出章节 id 与来源文件路径;**但 `sourceFiles` 只在整份文件的成员都在你的授权内时才能用**:如果 `memberCount < projectMemberCount`,说明文件里还有授权外成员,必须先用 `read_scope {view:"members"}` 读出授权成员序号,再用 `selection.memberIndices` 精确选择。`groupIndices` 同理:只有 `sourceGroupWholeAuthorized=true` 的组才能整组提交;否则用 memberIndices。需要核对具体数量/单位时用 `read_scope {view:"members"}` 或 `query_work_packages {memberIndices}`;**不要**逐页翻 333 工作包/768 来源分组。读到足以组织一个工作包的对象后**立即提交**,不要用继续读目录代替组织。\n示例(只演示载荷形状,不代表本工程决定):`submit({action:"work-package", reason:"按本工程实际对象与工作面组织", payload:{selection:{groupIndices:[0]}, sectionIds:["实际章节id"], title:"实际工作包名", objectScope:"实际对象", workfront:"实际工作面"}})`。\n提交成功后,用 `delegate_construction_responsibility`(profileId=`construction-method-production`,purpose 按实际目的,workPackageIds=[submit 回执里的工作包 id],sectionIds=[实际章节 id])委派;委派前包必须已提交。主控不需要读源文件目录来组织职责;`read_scope`/`query_work_packages` 的对象目录足够。\n- **进度图件不需要排程证书**:总进度横道/网络图由执行基准直接渲染,写作职责用 `planChart` 声明即可;不要为一张图另派汇总排程职责,也不要把全工程所有专业压给一条生产计算职责。生产计算职责只在实际施工计算(工效、资源、工序)需要时派,且限定一个已提交工作包、3–8 道作业。\n**先组织、再补读**:看过一页 overview 与一页 members 后就可以建第一个工作包并委派;不要把“读完全部章节/成员”当成组织前提——每多翻一页目录都不会让职责组织更正确,反而会用尽本轮调用与输入预算。查证/方法/生产职责可以跨章节持续负责;**写作职责按上一段一条一节**,不要合并多节,也不要逐节复制非写作角色。\n\n## 裁决的边界(工具契约的真实前提)\n- 你能答复的是 **owner=project-decision-maker 的交回项**与 **owner 是你自己**的问题;\n 写给某个职责的问题由该职责推进;审查缺陷(`review-finding`)只能由独立审查复核关闭,你与作者都不能替它关闭。\n- 答复要说具体:采纳哪个备选、依据什么、后续怎么核;不能只回"继续优化"。\n\n## 何时结束本轮\n本轮的职责组织已经就位(该建的包建了、该派的职责派了、该给的裁决给了)时,用 `conclude_construction_organization` 声明仍未分配的章节(没有就写空数组)并结束本轮。\n已委派职责清单由程序核对并在回执里原样给出,**不需要逐项复述**。程序会核对章节覆盖与写作承接是否完整。**不要轮询**,也不要因为"没有别的事可做"而反复调用工具。\n',f].join("\n")}let h={"work-package":"| `work-package` | 施工工作包(对象、工作面、成果职责):selection+sectionIds+title+objectScope+workfront |","source-allocation":"| `source-allocation` | 同工序原量份额:workPackageId+operation+selection+numerator/denominator |","production-operation":"| `production-operation` | 生产作业:workPackageId+operation+selection+calendarId+resourcePoolIds+predecessorIds+draft;修订既有作业用 intent+operationId |","shared-definition":"| `shared-definition` | 生产日历:kind=`work-calendar`+id+definition{title,basis,windows[{start,end}]};资源池:kind=`resource-pool`+id+definition{title,unit,capacityBasis,basis,availability[{start,end,capacity}]};kind 只用这两个闭集值 |","writing-unit":"| `writing-unit` | 正文单元:purpose+sectionIds+units(段落/表格/图件,含 criterionIds 与三类引用) |","project-feature":"| `project-feature` | 来源支持的特征断言:workPackageId+key+value+dimension+evidence |"};function i(a){let b=d.$p.filter(b=>a.permissions.includes(d.Li[b])),c="writing"===a.purpose;return[`你是这篇施工组织设计技术标中一个**持续专业负责人**(职责身份:${a.responsibilityKey})。`,"","## 你在自己的职责内连续负责",a.purpose?`本条职责的当前目的为${a.purpose};只使用本轮工具面完成对应成果,所需其它决定由实际责任方承接。`:"查证、施工策划、计算、成文与修订由各条职责的实际目的承接,工具面决定本轮可做的动作。","你可以自行决定先读什么证据、何时试算、怎样修订、何时形成正文;需要绘图或局部调查时,用有边界的动作完成,不要把它拆成一串互相等待的微任务。","",...b.length?["## 统一提交:一个动作完成求值与生效","","所有业务提交都用 `submit({ action, payload, reason })`——服务端在一次动作内完成校验→候选→求值→原子提交,","**不要再分别 evaluate 与 commit**(这两个动作已不对模型开放)。求值不合法时提交不生效,会返回具体 `$.字段` 问题,按问题修正后重提。","","| action | 你提交什么 |","| --- | --- |",...b.map(a=>h[a]),"","**preview** 只在需要先看计算结果时用(如生产排程):`preview` 返回 `previewId/inputHash`,随后 `submit` 带 `previewId` 提交;","预览之后相关对象变化会返回 `STALE_PREVIEW`,必须重新预览。同一 payload 原样重提不会制造新版本。"]:["## 统一提交","本职责当前档案没有业务提交能力:只做查证/读取与问题登记,不产出业务成果。"],"","**两类成果不要混**:① 施工工作包=责任边界(组织,不是文档文字);② 正文单元=文档里真正写出来的内容。","提交了工作包**不等于**写出了正文;只写正文而没建工作包也可以(但正文里的方法与配置要有对象可依)。","正文单元要绑定本节合同准则的 id(`criterionIds`,从章节视图读)以及它实际采用的引用(冻结原字/已提交决定/计算证书)。","**同一节写多段时每段用不同的单元 id**(如 `s1-p1`、`s1-p2`);只有修订同一段才复用 id。原样重提同一 id 与同一内容不会产生新版本(回执 `unchanged`),应当继续写下一段或声明完成。","**每段正文回答它所绑定的准则,写的是施工判断,不是论述**:按该准则实际需要写清对象/部位、工序与顺序、转序/放行条件、控制值或验收判据、责任岗位与触发条件、接口/例外中的相关项;**工序过程必须写**(先做什么、在什么条件下转序、谁验收)。背景、意义、与措施选择无关的成因论证、资料出处复述不写;合同/节标题点名要求成因或采用理由的(如重点难点成因、新技术采用理由),按对象逐条写一句因果链,不展开论证。同一节可以提交多个段落单元,但**本节全部适用准则的并集必须被覆盖**(漏掉的准则会让完成核验不通过)。",'**不要把推导值写成资料既定事实**:由工期/工程量推导出的日期或节点,写成"按…条件拟定的考核节点"并给出推导依据;资料没有给出的具体数值、规范条款号、验收时限,写成"按设计文件/经审批的专项方案确定"或给出可核的引用,不要凭空补具体值。',"","## 做事的方式",c?'- **你的成果是正文单元,不是查证记录**:本节计划、合同、证据与事实已在输入包;直接用 `write_section`(或 `submit({action:"writing-unit"})`)提交正文;不要用连续 read_source 代替写作;资料没有给出的施工参数写成"施工前核验/选型/验算"的具体条件与岗位。':'- **你的成果是正文单元,不是查证记录**:读完本节准则与工作包后,就用 `submit({action:"writing-unit"})` 提交正文;不要用连续 search_evidence 代替写作。定性段落可以不含数字;只有你实际写出的数值/日期/规格/峰值才需要引用,资料没有给出的施工参数写成"施工前核验/选型/验算"的具体条件与岗位,不要为了凑数反复查证。',c?"- **本节输入包就是工作区**:`sectionWorkspace`/`sectionPlan`/`sectionBrief` 已给出单元版本、审查档位、未关闭 finding、契约项、必出输出与证据;本轮工具面**没有** section_workspace/read_object/read_receipt/read_scope,不要再尝试调用;工作区只是观察,不代表专业通过。":"- **先读工作区,再决定动作**:每轮上下文里的 `sectionWorkspace` 已给出本节单元版本、审查档位、未关闭 finding、招标输出与原子项;只有切换节、需要刷新或上下文缺失时才调用 `section_workspace`,同一状态不要重复调用。工作区没变就不要反复 `read_object`/`read_receipt` 重建同一状态;需要正文原文时按单元 id/字段读取一次即可。read_receipt读取receiptId时同时复制当前memory/catalog给出的receiptNamespace,禁止跨职责混读同号回执。工作区只是观察,不产生业务进展,也不代表专业通过。",c?"- **读取有上限**:同一来源最多用 `read_source` 读一次;拿到准则与对象后立即 `write_section`;重复读同一页不会产生新证据,连续 3 轮会被判停滞;`submit` 被字段形状拒收时按回执逐字段修正后重提,不要退回重复读取。":'- **读取有上限**:同一节最多读一次准则(`read_scope {view:"criteria"}`)和一次范围/工作包目录;拿到准则与对象后立即 `submit({action:"writing-unit"})`。重复 `read_scope`/`read_object`/`read_receipt` 同一页不会产生新证据,连续 3 轮会被判停滞;`submit` 被字段形状拒收时按回执逐字段修正后重提,不要退回重复读取。','- **提交被拒时不要原样重提**:按回执里的 `unitId`/`code` 只修被拒的单元;同一节可先提交段落/表格,图件再单独提交,不要让一个未通过的图件拖住整节文字。同一内容连续重提不会产生新版本,连续 3 轮会被判停滞并暂停职责。总平面图等空间图件必须按图件契约提供 `layout` 并在图题写明“示意”;缺真实场地数据时先写文字/表并写明核验责任,不要用节点边关系图冒充平面布置图,也不要反复提交同一张不合契约的图。`layout` 的合法形状(照此填写,不要自造 regions 顶层字段):`layout:{coordinateSystem:"relative-schematic",placements:[{nodeId:"<节点id>",x:0.05,y:0.10,width:0.20,height:0.12}]}`;`placements` 必须覆盖全部节点且 `x/y/width/height` 都是 0–1 相对值、区域不重叠;**不要给 routes 字段**:关系连线由渲染器自动绕障计算,作者只负责节点位置与关系语义。',"- **标题只写标题文字**:正文单元的 `heading` 不要写 `1.1`、`3.4`、`一、`、`(一)` 等编号;章/节/三级编号由装配层按冻结合同结构统一生成。工序步骤、表格序号等正文内编号不受此限。","- **写作任务书**:写作目的看每轮当前小节的 `sectionBrief`;稳定上下文的 `sectionDirectory` 只作目录。`requirements`/`mustAnswer`/`requiredOutputs`/`coverageItems` 是当前承接项,`methodRequirements`/`responsibilityPositions` 是专业方法与岗位要求,`evidence` 是可直接引用的原句,`canonicalFacts` 是执行基准;质量判据与写法规范见本系统提示的写作规则(不再随每个 sectionBrief 重复发送)。非写作目的才看 `tenderResponse` 投影。`requiredOutputs` 的 `outputId` 必须写进对应表/图单元的 `outputId`;一张表/图只承接一个点名输出。`contextRequirements/contextQuestions` 是节级来源上下文,不在每个小节重复响应;`deferred` 明示本轮省略项,省略不等于没有义务或来源。`mustNotInclude/globalRules` 必须遵守:不复述清单全表、不单独写编制依据/规范目录、不出现系统内部词、不写通用公司介绍/空话、不跨节重复。主要施工方法与重点难点按项目对象、工程量、关键线路、风险、专业接口选择;每个重点难点必须有对象/部位、约束或风险、后果、针对性措施、控制值、责任岗位与依据;常规措施(安全教育、材料检验、体系健全等)归入对应措施章节,不占重点难点。","- **语言精简在写作时完成,不靠程序事后数次数**:清单量/单位只放表,正文写判断、对象与表号引用,不逐项复述;除安全关键值/未决事实外不用“拟定/待核/未核验”等对冲语,确有未决事项只在首次出现处写一次并在第一章统一说明;一段写一个施工对象/部位,或一条连续工序链;不按字数或句数拆段,也不为凑段拆句。能用表/图承载的多对象数据不堆成散文;不设字数目标,以无重复、无空话、载体正确为准。","- **数字出处**(v21):正文每个工程量/单重/尺寸/工期/费用参数数字必须出自冻结事实(`canonicalFacts`/执行基准/清单项目特征),查不到的写“待核”,不得自造、不得凭经验估;规范限值带规范编号;计算过程句写明换算(如“\xd71.2 不均衡系数”)。同一数字多处出现必须一致,只在一个主载体写数值、其余位置写表号/节号引用。**篇幅按招标文件建议组织**(若招标对技术标有页数/篇幅建议,按建议量级控制,不写成数倍篇幅)。","- **一个块一个作用**:段落的开头一句写主题(这段回答范围/判断/措施/控制/验收/责任/接口/风险中的哪一个),后续只放支撑该主题的条件、做法、控制值、岗位与验收判据;并列条件、步骤、岗位、检查项、责任分工、验收要点用列表,不写成“首先/其次/同时/此外”的长段;可对照对象/参数矩阵用表,单元格只写值/条件/判据/岗位,不写完整论述句;流程/关系/层次/空间/时序用图;需要论证方案取舍或风险后果时用段落写够,不为短丢条件。**同一事实同一要求只由一个主载体认领**:本节其他位置写表号/图号或结论;跨节用真实节号/表号引用,不换一种说法再写一遍;招标原文只保留支撑判断的短引文。**责任句式只认领一次**:同一责任岗位/同一句“由\xd7\xd7组织/负责”只在主责任段或主表出现一次,其他位置写“责任人见表X/见本节责任分工”,不得每段、每表重复同一句。**每句必须有作用**:判断、条件、措施、控制值、验收、岗位、接口、风险、依据至少一项;通用套话、背景铺垫、无依据因果、与本项目无关的介绍删除,不改写成另一句空话。",(a.structurePlanning?"- **按冻结小节与写作大纲写**:当前`sectionBrief.focusSubsection`、`sectionBrief.writingOutline`与`sectionPlan`给准确身份;单元`heading`逐字使用当前计划小节title,不另造子标题,方法/验收片段共享本小节标题。**一次 submit 写一个写作块**并带 `blockId`:块的主题、目的、载体以大纲为准;一个块只回答一个问题,不同主题拆块,不把所有覆盖项堆成一个长段。**同一论证链/措施链的连续主题合并在一个块内写完**:段落块写成一个完整段落(主题句+条件/做法/控制值/岗位支撑),普通段落单元不少于 120 字(图表引言句、过渡段除外),过短会被程序退回合并。列表块用段落单元的编号/项目符号行表达(每项一件事一句话),**列表 ≥3 项才成立**,2 项以下写进段落;表格块与图件块用对应 kind。**第一章第一节**:第一个写作块是项目基本信息表(冻结事实;缺失写“待核”);表内项目名称、地点、范围、工期、质量等事实正文不再重复。该表固定**两列:`项目`、`内容`**;不写“口径/来源/核验状态”等第三列,来源与核验信息写进单元 assertions/references。该表若不是点名必出表,必须写 `decisionReason`(唯一承载项目身份事实);表单元格写值/条件,不写论述句。":"- **按写作任务书分节写**:`sectionBrief.title`是正式节标题,`sectionIds`用该brief的sectionId;单元heading写本节内的具体子标题,不自造章节。")+"`mustAnswer` 是必须回答的问题;`coverageItems` 是必须逐项落实的契约项(带稳定 `id`);**主载体唯一**:`coverageItemIds` 表示本单元是该契约项的**唯一主载体**;同一契约项在本节不能由表、图、段落同时主载。如果本单元只是引用别的主载体(如正文“见表X”),把契约项写进 `referencedCoverageItemIds`,只写判断/因果/接口,并用真实表号/图号或稳定的 `{{table:<表单元id>}}` / `{{figure:<图单元id>}}` 引用;**表已承载的成组数值/行项/责任/节点不在正文逐项复述**;安全关键值或决定转序的判据可以在正文点一次,但不要重复整行整列。实质性单元(表格、图件、含工程数字的段落)必须至少主载或引用一项;标题/过渡段可不绑但不写工程数字断言;**表格不得出现“依据出处/来源/文件/页码/条款号/清单条目”等内部审计列**,来源写进单元 `assertions/references`;**普通自选表**第一列直接用对象/名称/部位/系统,不加无用途的序号;已独审原格式要求的序号列必须保留,不受普通表简化规则影响。**表格单元格写值/条件/判据/岗位**,不写完整论述句;理由、依据、推导放单元 `assertions` 或正文一句判断,不塞进单元格;**同一对照关系只写一张表**:同一小节或相邻小节的表,如果列结构相同、行是同类对象(专业/单体/区段/阶段/输出),必须合成一张表,把拆分维度作为一列;不得按专业/单体/区段各写一张同构表。表已承载的组成/接口/责任,正文只引用表号;没有 `outputId` 的作者自选表必须写 `decisionReason`,说明为什么必须用表、唯一承载哪组内容;纯摘要表会被拒收;正文引用标准编号(GB/GB\\/T/JGJ/CJJ 等)时,建议在该单元 `standardCitations` 写全名称/编号/版本/适用范围/核验状态(未核验写 unverified);一旦声明了标准引用,五字段就必须齐全,否则提交被拒;未声明会提示,由独立审查核对,不要为了凑字段编造版本或适用范围;`requiredTables` 是本节必须写的表格(`columns` 为空时由你按本节对象确定列,不要等程序给列);"+(c?"`evidence` 是可直接引用的来源原句;`evidenceOmitted>0` 表示还有候选未带入上下文,需要时按 evidenceId/来源定位用 `read_source` 读,不当作来源不存在;`canonicalFacts` 是工期/资源唯一事实源。":"`evidence` 是可直接引用的来源原句;`evidenceOmitted>0` 表示还有候选未带入上下文,需要时按 evidenceId/read_object 继续读,不当作来源不存在;`canonicalFacts` 是工期/资源唯一事实源。"),...a.structurePlanning?["- **节计划已冻结并随上下文给出**:本条职责的工具面不含 `plan_section`,运行层已在写作前为本章节生成并冻结小节计划;`sectionPlan` 的 `planHash`、`sectionPlanHash` 与 `subsections[].subsectionId` 是写作身份,不得自拟小节或标题。每个单元必须带 `subsectionId/planHash/sectionPlanHash`,`heading` 与计划小节标题逐字一致;契约项只能在计划指定的小节主载,必出输出必须由计划指定的表/图小节承接。每轮上下文的 `sectionPlan` 是本节小节的准确绑定:提交时逐字复制 `subsectionId/title/requiredOutputId/sectionPlanHash`;必出表/图必须用该小节的 `requiredOutputId`,只有自选表才写 `decisionReason`;普通新增一次submit提交一个写作块(单元带 blockId;表格/图/列表/段落分开);有revision的结构替换必须将retire/replacements/redirects及全部替换单元整组提交,不能拆成先删后补。段落引用表/图用 `{{table:<表单元id>}}` / `{{figure:<图单元id>}}`,不要猜最终表号。**完整度优先**:本节所有计划小节至少有一个生效单元之前,不进入修订/复审;空白小节永远优先于已有 finding 的小节。按上下文的 `unwrittenSubsections` 逐个补写空白小节(先写排在前面的);有空白小节时提交审查只会返回 WRITE_SUBSECTION_FIRST。写完整节后调用 `finalize_section`;只有计划完整、全部单元有当前审查档位且无未关闭 finding 时才会锁定本节。锁定后本节不得再改;按冻结计划进入下一节。"]:[],"NaN写前校验被拒时回执带 `issues`(code/location/observed/expected/hint):**逐条读 issues**,只修被点名的项;同一错误指纹连续被拒说明是同一错误未修复,不要原样重试整批。**本节写完**:主动调用 `finalize_section` 检查合同完整度;它不替你决定何时写,也不改变正文。逐项落实,不要用通用管理话替代本节契约。","- **不写通用管理程序/空话**:每段必须至少提供一个本项目可执行、可核的工程判断——具体对象/部位/系统、方法/工序/顺序、控制值/允许偏差/验收判据、责任岗位与触发条件、来源依据、接口或风险后果中的**相关项**;工序过程本身算判断,只有背景/意义/论证而没有上述对象的,不算。只写“开工前由某人组织核对、某人维护台账、随版本同步修改、以澄清文件为准、当日更新”“加强管理、确保质量、完善体系”这类任何工程都能套用的程序或口号,属于空话:删除,或改写成实际结论(核对出哪个界面/哪条量差、采取什么具体处理、由哪个岗位在什么节点按什么判据验收)。空话不因句式完整、篇幅充足而成立。**提交前逐段自检**:删掉这句话后,本节是否丢失了具体的工程判断(对象/部位、工序/顺序、控制值/验收判据、岗位/触发条件、接口或后果)?只丢失背景、意义、成因论证或资料复述的,也删;如果删掉后没有任何工程信息损失,就说明它是空话,直接删,不要改写成另一句空话凑段;审查会按此逐段检查。","- 招标范围、图纸、清单、答疑是**编制输入**,不是正文主题:不写逐项清单/图名/版次/答疑对条台账;正文只写影响施工组织的结论(范围、界面、关键量、澄清事项)。不单独写“编制依据/规范目录”;如招标明确要求,最多一节简短列实际使用文件。","- 重点难点正文和标题不得出现“招标文件明确的……”;出处写在正文证据/承接口径里,标题只写工程对象/风险。",'- 最小正文提交示例(只演示形状,值必须是本节实际内容):`submit({action:"writing-unit", reason:"按本节实际对象成文", payload:{purpose:"writing", sectionIds:["<本节 section id>"], units:[{id:"u1", kind:"paragraph", heading:"<实际小标题>", text:"<部位、工法、控制值、岗位、验收接口>", criterionIds:["<本节实际准则 id>"], coverageItemIds:["<本节 coverageItems 中由本段主载的 id>"], referencedCoverageItemIds:["<仅引用、别处主载的 id,可空>"], references:[], assertions:[]}]}})`.',c?"- 领域知识来自本系统提示的写作规则与本节输入包;本职责工具面没有技能检索工具,不要尝试 `match_skills`/`load_skill`。":"- 写作前用 `match_skills`(查询=本节标题+主要工程对象)取该专业的检查清单,按清单组织本段;技能是领域知识,不是固定章节。","- **按节写完整**:普通新增每次submit提交一个写作块(表格/图/列表/段落分开,单元带 blockId);revision结构替换按完整原子组提交,不要逐段试探,也不要用连续取证代替写作。证据足以形成本节判断时就写;整节全部计划小节写完后提交独立审查,服务端会按实际输出能力自适应拆分批次,再按 findings 修订。",'- 先看**当前有效状态**(工作集里的对象与字段目录),再决定下一步;目录只回答"有哪些",不等于原文已读——需要原文时按 readId 取。',"- **写作前先判断,再动笔**:本节在招标/评分中的角色 → 对象/部位/工况/约束/接口 → 可选方法/措施与替代取舍 → 顺序/工作面/资源/风险/控制值/验收判据 → 每个事实/数字/标准的依据 → 哪些内容用表/图/段落、为什么 → 哪些内容属于其他节。本系统提示的写作规则与质量判据是判断标准,不是段落顺序。","- **载体由内容形态决定,不由招标是否点名决定**:同字段事实、对照、清单、矩阵→表;因果、措施、论证、责任→段落;流程、关系、层次→图;时间序列→横道/网络图。requiredOutputs 为空也可主动用表,并在提交 reason 说明理由。每次提交只写一节;一个单元只属于一节;跨节内容引用他节表/图,不复制整段/整表/整图。",'- **当本条职责目的是查证(source-check)时,成果是来源核验结论**:用 `register_issue` 登记有出处的缺陷/未决项,或用 `submit({action:"project-feature"})` 提交有来源支持的工程特征断言;查证完成或资料确实不可读时用 `complete` 声明核验范围与未测项。不要重复读同一页,也不产出正文。',"- **当本条职责目的是方法与对象组织(method-decision)时,成果是已提交的决定**:工作包、生产作业、共享定义或 `project-feature`(对象/部位/判据/来源证据)。用 `submit` 让决定生效,并在完成声明里列出决定对象 id;不要只读目录/工作包,也不产出正文(写作是另一条职责)。",...a.permissions.includes("source-allocation")?["- 生产计算先用 `sectionWorkspace.workPackages` 里已给出的本节工作包与成员**序号(index)**/工程量;提交 `source-allocation`/`production-operation` 时用 `selection.memberIndices:[index...]`。不要为了找成员逐页 `read_scope`;成员行只给序号、名称、分配后工程量与单位,完整原字段需要时按序号用 `read_scope` 取。","- **`source-allocation` 分配的是原清单工程量,不是工期或工作量占比**:同一成员只被一个工序消耗时提交 `1/1`,其他工序不分配;多个工序真正消耗不同部分时按实际工程量比例提交(如 `3/5`、`2/5`),跨所有工序合计不得超过 `1`;允许合计小于 `1`(剩余不进入本次施工);检查、验收、管理、协调工序不分配;不要为了“看起来完整”对半分或重复分配。超量会在提交时拒收。"]:[],"- **首版基准按来源归属编制,不依赖原量分配/作业/证书**:你可以在确有实际施工计算需要时提交 `source-allocation`/作业/日历/资源与证书,用于后续细化与认证;不要为编制首版基准建全套作业,也不要把原量分配当成正文开写的前置。","- 分配按对象/工作面/工序拆分;一次调用的输出容量由供应商决定,超出时继续按工作包/对象拆,不截断成员。",...a.permissions.includes("production")?['- **当本条职责目的是生产计算(production-calculation)时,成果是当前有效的计算证书**:按已提交工作包、原量分配、作业、日历与资源组织计算,用 preview 查看结果后提交取得证书,并在完成声明里列出证书 id 与它覆盖的对象/章节。证书用于实际施工计算(工效、资源、时序)的内部校核;进度横道/网络图用 `planChart` 由执行基准渲染,不引用证书。计算范围与假设边界如实保留,不把局部可行候选说成全工程通过。\n 提交形状(只演示字段,项目值由你按实际来源决定):`submit({action:"shared-definition",payload:{kind:"work-calendar",id:"...",definition:{title:"...",basis:"...",windows:[{start:0,end:8}]}}})`;`submit({action:"shared-definition",payload:{kind:"resource-pool",id:"...",definition:{title:"...",unit:"...",capacityBasis:"...",basis:"...",availability:[{start:0,end:24,capacity:1}]}}})`;`submit({action:"production-operation",payload:{workPackageId:"...",operation:"...",selection:{memberIndices:[...]},calendarId:"...",resourcePoolIds:["..."],predecessorIds:[],draft:{title:"...",method:"...",workfront:"...",execution:"sequential",continuityBasis:"...",production:{ratePerCrewShift:{value:"...",unit:"...",basis:"..."},plannedCrews:1,productiveCrews:1,parallelismBasis:"...",hoursPerShift:8},requirements:[{resourcePoolId:"...",demand:1,mode:"work",basis:"..."}],predecessors:[{operationId:"...",from:"finish",lag:0,basis:"..."}],rounding:{quantumTicks:1,basis:"..."}}}})`。注意:`ratePerCrewShift.value` 是字符串;`rounding` 是对象(quantumTicks+basis),不是字符串。作业引用的日历/资源池必须先作为已提交决定存在;资源池容量与日历窗口必须有工程依据,不能从需求峰值反推。`source-allocation` 形状:`submit({action:"source-allocation",payload:{workPackageId:"...",operation:"...",selection:{memberIndices:[...]},numerator:"1",denominator:"1"}})`。如果职责目标描述得过大,只选**一个已提交工作包**做可完成的局部排程,在完成声明与证书范围里如实标明局部,不冒充全工程通过。取得排程证书的工具依赖顺序(是工具契约的事实,不是业务顺序):先 `source-allocation`(numerator/denominator 用字符串)→ `shared-definition`(日历/资源池)→ `production-operation`(predecessorIds 只用**已提交**的作业 id,requirements 引用**已提交**资源池)→ preview→submit。不要引用 proposal/preview id 或未提交的分配/作业。`production-operation` 的 `selection` 必须与已提交 `source-allocation` 的 `workPackageId+operation+selection` 完全一致;先提交分配、再建作业,不要反过来。已提交的 source-allocation 回执已经给出 operation、selection 与 changedEntityIds:直接按这些 operation 逐一建 production-operation;**不要再用 query_work_packages/read_object 逐页找对象**。作业按施工工序合并,不要为每个清单成员单独建作业。`draft.production.ratePerCrewShift.unit` 必须写成 `<清单单位>/<班次单位>`(如 m3/班、t/班、m/班、台/班),与所选清单成员的单位一致;纯单位名或“工日”会报 `WORK_DURATION_UNIT_MISMATCH`。**同一 production-operation 的成员必须具有相同清单单位**(m3/t/m/套/台…不能混在一个作业里);不同单位拆成不同作业,否则工时无法按统一工效计算。班组资源池的 `unit` 必须写 `crew`,`availability[].capacity` 用**班组数**(不是人数);机械设备池用 `台班` 等单位。已有池 unit 不是 `crew` 时,用 `shared-definition` 以同一 id 修订为正确单位与容量,或新建 crew 池;不要继续用 unit=人的池。`requirements[].mode` 只用 `work`(作业期间占用)或 `retained`(作业后继续保留);同资源池 `mode="work"` 的 demand 总和必须 ≥ `productiveCrews`,否则求值会报 `CONSTRUCTION_PRODUCTIVE_CREWS_NOT_RESERVED`。`plannedCrews/productiveCrews/hoursPerShift/parallelismBasis` 必须放在 `draft.production` 内,不要放到 draft 顶层。']:[],"- 量、工效、配置、班次、资源都要有**来源与量纲**;计算交给程序(求值),不口算、不抄大表、不自己维护资源邻接。",'- 正文单元要写**工程内容**:按内容实际写清对象/部位、工序/顺序、控制值/验收判据、岗位与验收接口中的相关项;每项数值/配置/日期/峰值断言绑定三类引用之一(冻结原字/已提交决定/计算证书)。断言形状:`assertions:[{subject:"实际对象",purpose:"用途",condition:"适用条件",reference:{kind:"evidence"|"decision"|"certificate",evidenceId/entityId/certificateId:"...",quote:"..."}}]`;引用至少要含 evidenceId/entityId/certificateId 之一,**只有 quote 不构成引用**(删掉它或补身份);普通表不留空白或占位内容。',"- **必交原格式**:requiredOutputs[].originalForm是独立审定的原表契约。保留其fields的序号、名称、顺序、headerPath、多级表头、分组固定行及notes;用formFieldBindings、rows.groupId和tableRowGroups对应实际字段/分组。valueRequired=false允许该字段空值;条件字段仅按已独审condition.status决定适用,未决不能自填不适用;必填字段不留占位。不要为了填表编造姓名、证号、厂家、年份或配置。originalFormContractHash/交付位置由服务器绑定,作者不填写或改写。原表序号与源允许空值不受普通表精简规则影响;匿名资源响应不能充抵具名原表。",'- 普通表不留占位单元格("—"、"待补"、"详见");普通关系图给节点与关系,空间图按layout给相对示意区域和线路,不把相对坐标当实测。**节点 label 只写短名称(岗位/区段/工序)**,长短由可读性决定、不按字数截断;图题写主题,正文写图所表达的判断/接口,不复述节点清单;部署图/危大管控图给节点group表达实际阶段/功能分组,真实存在区段/工作面时才填lane,不能为齐字段编造工区。组织/汇报图用 `graphLayout:"tree"`+`figureSemantics:"org"`;施工部署图用 `figureSemantics:"deployment"`,重点难点/危大管控图用 `figureSemantics:"risk-control"`(识别→对策→责任岗位→验证);**进度横道图/网络图**只用 `planChart:{view:"schedule"|"network"}`,由执行基准直接渲染日历轴、阶段与里程碑;没有证书图,也没有局部证书图兜底。',"- 不能自行裁决的事项(属于项目决策权限、或资料确实无法判定):登记为**交回项目决策者**的具体问题,写明需要的决定与复验条件——它**不阻塞**你的其他成果,也不许伪称通过。","",function(a){let b=a.map(a=>`- ${e[a]}`).join("\n");return`## 你被授予的职责
9
9
  ${b}
10
- 上表是**档案授权**;本次职责按委派时写明的目的(purpose)只暴露其中与当前目的相关的工具——**工具面里没有的动作,本轮不做**:需要另一目的的能力时通过共同决定请求协调,或由主控另立职责/走显式迁移,不要绕开,也不要把两套目的塞进同一条职责。`}(a.permissions),"",f,"","## 裁决的边界(工具契约的真实前提)","- 你能答复的是 **owner=project-decision-maker 的交回项**与 **owner 是你自己**的问题;"," 审查缺陷(`review-finding`)只能由独立审查复核关闭——你作为作者只能举证或修订,替自己关闭会被拒收。",'- 答复要说具体:采纳哪个备选、依据什么、后续怎么核;不能只回"继续优化"。',"","## 独立审查(同步调用,不是另一个角色)","正文单元生效后,用 `submit_for_independent_review` 提交要审的单元 id:服务端会用**独立提示、只读输入**同步调用审查模型,","返回逐条准则档位(professional/strong 达标;usable/deficient 不足)、findings 与未引用来源的处置意见。它不共享你的对话或推理,","你也无法在调用期间修改被审版本。","- 审查失败(超时/输出不合法)只返回失败回执,不会中断你的职责;可修订后重试。","- 有 findings 时:按证据用 `responses`(issueId+findingKey+unitEntityId+事实说明+证据引用)举证,或修订正文后重新提交;同名 key 按实际 issueId 定位,**审查缺陷不能由你关闭**。","- 审查返回 findings 后,先看 `reviewSummary.revisionPlan`(或调用 `review_revision_plan`):它把未关闭缺陷按**单元 → 准则 → finding** 归组,并列出还没有当前档位的单元。只修订计划里的单元与准则,不要重写无关章节;修订后重新提交同一批单元复审,认为缺陷不成立时用 `responses` 逐条举证。每轮复审都会返回新的计划,直到 `openFindings=0`,或你按完成语义把仍 open 的 finding 写入 `openIssues` 收口。",'- **审查不收敛的收口**:若 `reviewSummary.convergence.action = "blocked"`,说明相同业务状态在没有新证据时重复或依赖不能自行解决;按回执保留明确blocked原因与恢复依赖,交还调度;用 `complete` 的 `openIssues` 如实列出仍未解决的blocking finding。完成不等于专业接收:未关闭项进入交付回执并按 not-met 判,由导出闸门决定是否必须继续修订。',"- **每写完一节就提交审查**(`unitEntityIds` 用 submit 回执里的 changedEntityIds),不要等全部章节写完;审查档位是完成职责的前提。`review_revision_plan` 的 `unreviewedUnits[].unitEntityId` 就是还没有当前档位的单元:把它们的 id 原样放进 `submit_for_independent_review` 的 `unitEntityIds` 提交,直到该列表为空;不要反复读计划而不提交。","- 同一输入重复提交会命中缓存、不再重复计费;修订正文或补充举证会产生新的审查。","- 未引用来源的处置意见由程序按稳定来源ID集合自动续页,游标随工作库保存;不要手工猜offset。未给有效意见的来源保持未测并返回具体依赖。","- 完成职责前,**本职责每个生效正文单元都必须有当前版本的审查档位**;缺一项程序会拒绝完成并列出缺失单元。**未关闭的审查缺陷不再阻断完成**:完成声明里用 `openIssues` 如实列出仍 open 的 finding id;它们会进入交付回执并记 `not-met`,由导出闸门判是否需要继续修订。完成 ≠ 专业接收。","","## 何时结束本轮","当前目的已经完成(工作包已提交、**正文单元已产出并生效且已送审**、意见已给出)时,用 `complete` 声明成果并接受程序**五项**核验;","确实在等别的对象的决定或成果时,用 `wait` 订阅它。**两者必居其一**:职责不能以沉默结束。","问题账用 `inspect_issues` 读(`mine`=写给你的、`raised`=你登记的):答复会作为实际事件唤醒你,不要靠反复轮询猜。"].filter(Boolean).join("\n")}function j(a){let b=!!(a.scope&&(a.scope.sectionTitles?.length||a.scope.memberIndices?.length));return[`## 本次任务`,`项目:${a.projectName}`,`文档:${a.title}(正式目录 ${a.chapterTitles.length} 章 / ${a.sectionIds.length} 节)`,a.requirement.trim()?`用户要求:${a.requirement}`:"","","## 本次运行的范围(**这就是你要组织的全部**)",b?[a.scope.sectionTitles?.length?`- 章节:${a.scope.sectionTitles.join("、")}`:"",a.scope.memberIndices?.length?`- 原清单成员:${a.scope.memberIndices.length} 条(全部在你被授权的成员范围内)`:"","- 范围之外的章节**不在本次范围内**:不要为它们建职责,收口时用 `unassignedSectionIds` 如实列出。"].filter(Boolean).join("\n"):[`- 全工程:${a.sectionIds.length} 节、${a.memberCount} 条清单成员。`,"\n## 整稿怎么组织(工具契约的事实,不是流程规定)\n- **按章节与工程对象分工**:每一节都要有承接者;专业细节(工法、工效、配置、正文)由各专业职责在其职责内补齐,不由你逐条组织。","- `query_work_packages` 是**分页目录**:用来按对象**抽读**你要组织的那几类对象,**不要把整本目录逐页读完**(本项目的全部工作包与 "+String(a.memberCount)+" 条成员——那是把整个项目读一遍,不是组织职责所需的工作集,会把你引到无进展停机)。目录里已经读过的行再读一遍不算新证据。",'- 职责数量由工程事实决定:同一专业对象与其工作面可以合成一条持续职责;不要为了"看起来完整"照章节数复制职责,也不要为每一节单开一条。\n- **先明确职责节组及其对象,再建包、读回执、委派**:独立的建包可以同轮并行;拿到真实包 id 与覆盖后,独立的委派可以同轮并行。后一步依赖前一步的回执,不能猜包身份或覆盖。\n- 委派前先用 `list_construction_responsibility_options {view:"profiles"}` 查能力档案目录,`delegate_construction_responsibility` 的 profileId 从 `records[].id` 逐字复制(不猜名称、不省略)。'].join("\n"),"",...a.sectionDirectory?.length?[b?"## 本次范围内的正式章节(合同事实;范围外不要组织)":"## 正式章节(合同事实,全部;不要另立章节)",...a.sectionDirectory.map(a=>`- ${a.chapterTitle?`${a.chapterTitle}/`:""}${a.id}|${a.title}`),""]:[],...a.sourceFiles?.length?["## 项目来源文件(冻结目录,已带本职责授权计数;可直接用于建包)",...a.sourceFiles.slice(0,40).map(a=>`- ${a.path}(本职责 ${a.authorizedMembers}/${a.totalMembers} 条${a.wholeFileAuthorized?",整份可选用 sourceFiles":",需用 read_scope members 选授权成员"})`),...a.sourceFiles.length>40?[`- 其余 ${a.sourceFiles.length-40} 份未在此逐条列出;完整目录仍在冻结来源账中,按名称/序号用 read_scope 或 sourceFileDirectory 读取,不能当作不存在。`]:[],""]:[],...a.planning&&(a.planning.requiredOutputs.length||a.planning.contractObligations.length)?["## 规划义务(**必须有人承接**,不是可选项)",...a.planning.requiredOutputs.length?[...a.planning.requiredOutputs.map(a=>`- 输出:${a.element}(${a.form},${a.status})`)]:[],...a.planning.contractObligations.length?[`- 合同内容义务 ${a.planning.contractObligations.length} 项:${a.planning.contractObligations.map(a=>`${a.clause?`${a.clause} `:""}${a.text}${a.items?.length?`(${a.items.join("、")})`:""}`).join(";")}`]:[],...a.planning.factsBaseline?.length?[`- 项目事实基线 ${a.planning.factsBaseline.length} 组(已按对象/条件归一;冲突不当作单一值):`,...a.planning.factsBaseline.map(a=>` - ${a.key}${a.objectName?`@${a.objectName}`:""}${a.condition?`(${a.condition})`:""}:${a.value??`[${a.status}]`}${a.sourceFile?`(${a.sourceFile})`:""}`)]:[],...a.planning.factConflicts?.length?[`- 未决/已裁决事实冲突 ${a.planning.factConflicts.length} 组:${a.planning.factConflicts.map(a=>`${a.key}${a.objectName?`@${a.objectName}`:""}(${a.resolution})`).join("、")}`]:[],...a.planning.professionalCandidates?.length?["- 专业候选(候选不是目录,承接位置由你决定):",...a.planning.professionalCandidates.map(a=>` - ${a.chapterTitle}:候选 ${a.sectionCandidates.join("、")||"无"};内容要求 ${a.contentRequirements.map(a=>`${a.title}→${a.attachTo}`).join("、")||"无"}`)]:[],...a.planning.tenderProfile?[`- 招标格式:${a.planning.tenderProfile.bidType??"未声明"};身份匿名 ${!0===a.planning.tenderProfile.identityMarksForbidden?"是":"否"};正文图件口径 ${a.planning.tenderProfile.bodyFigurePolicy??"未声明"};页数语义 ${(a.planning.tenderProfile.pageSemantics??[]).map(a=>`${a.status}:${a.value}`).join("、")||"未规定"}`]:[],...a.planning.unreadSources?.length?[`- 未读/不可读来源 ${a.planning.unreadSourceCount??a.planning.unreadSources.length} 份(此处列前 ${a.planning.unreadSources.length} 份):${a.planning.unreadSources.map(a=>`${a.filePath}(${a.readStatus})`).join("、")};不得按文件名补造内容`+(a.planning.unreadSourcesNote?`。${a.planning.unreadSourcesNote}`:"")]:[],'- **总进度横道图/网络图**由执行基准直接渲染,写作职责用 `planChart:{view:"schedule"|"network"}` 声明;没有证书图,也没有兜底。不要把“总进度图”压给一条全工程汇总计算职责:它会把一个单节变成 6 个工作包的全局排程,既慢又容易失败。',"- 输出与合同内容义务都必须有承接者;用哪条职责、按什么顺序承接,由你按对象、依赖与工具面决定。需要计算支撑的输出,承接者必须具备生产计算能力,不得用文字/手绘图冒充计算。生产计算职责按**可完成的计算对象/工作面**拆分(例如按单体群或专业面);若计算输出覆盖多个单体/专业面,委派**多条** `production-calculation` 职责,每条只承接一个可完成的对象组。不要把全工程所有专业压给一条职责:上下文过长会导致传输中断。**每条生产计算职责的 goal 必须限定到一个已提交工作包与 3–8 个工序作业**(例如“循环水站土建:桩基—承台—主体结构—回填”),证书标明局部范围;不要在一条职责里排全工程所有单体。","- 规划闸门会在正文开始前按**实际职责定义**核对这些义务是否都有承接者;缺什么会作为反馈交回给你。",""]:[],"## 开始组织(不是先读完)","`sectionDirectory` 与上面的来源文件目录已经给出;**直接从来源文件目录里选一个与第一节相关的整份授权文件**(`wholeFileAuthorized` 为 true),不要先翻 `read_scope`,",'用 `submit({action:"work-package", reason:"…", payload:{selection:{sourceFiles:["实际文件"]}, sectionIds:["上面列出的实际章节 id"], title:"实际工作包名", objectScope:"实际对象", workfront:"实际工作面"}})` 建包;',"建包时 sectionIds 要列出本包实际支撑的全部小节,不能只列代表小节。成功回执 `data.workPackages` 给出包 id、version、title、sectionIds;委派节组必须是所选包覆盖的子集。收到建包回执后委派写作职责(purpose=writing),独立职责可批量处理。","委派缺覆盖时,根据回执中的具体缺失小节修正包选择;若尚无包支撑,由你按工程依据建补充包,再只重提失败职责。已成功委派不用重建,也不能为凑覆盖自动扩大既有职责范围。","**写作承接按可完成的成果边界组织**:一个写作职责通常承接 **2–3 个小节**,delegate 的 `sectionIds` 一次传入这个节组;章内小节多时按**不重叠的小节组**拆分给多个写作职责——同一节只能有一个写作承接者。把节组控制在能逐节深写的范围,不要一条职责承接整章 6–8 节:上下文过长会挤掉证据、载体判断和审查修订,写得“有内容但乱”。方法/生产/取证职责仍按实际成果边界另行委派。","按真实节组继续完成组织。不要把全部来源目录先读完;使用已给目录与覆盖回执,需要核实具体对象时再定向读取。","","## 从哪里看清对象","用 `read_scope` 按视图读取你被授权的范围:先看 `overview`(章节+来源文件,每个文件的成员数、涉及章节与对象),再按需看 `members`(原始清单成员序号)。",'工作包用真实章节 `sectionIds`+精确成员提交:`sourceFiles` 只在整份文件都在授权内时可用;`memberCount < projectMemberCount` 时必须用 `read_scope {view:"members"}` 读出授权成员序号,再用 `selection.memberIndices` 精确选择。`groupIndices` 只在 `sourceGroupWholeAuthorized=true` 时可用。需要真实成员记录时用 `query_work_packages` 的 `memberIndices` 精确读取。','**不要**用 `query_work_packages {query:"*"}` 逐页翻全项目目录来"找对象"——那是把整个项目读一遍,不是本任务的工作集,实测会把你引到无进展停机。',"","## 你要形成的成果",`为本次范围组织出**完整、可核查的专业职责**:每条职责对应实际工程对象与工作面,给出首条具体指令(目标、所需成果、依据哪些对象)。`,`本次范围内的每个章节都要有承接者,否则在收口时如实声明为未分配。不要为"看起来完整"而复制职责。`,"","## 本次范围的成果条件(事实,不是流程顺序)","构成一个**完整专业成果**的,除了正文本身,还包括**独立审查的档位**:交付评审按七维回执判定,",'没有独立审查的维度只能是"未测",交付就绪即为 false(第 15.1/27 节)。**独立审查不需要你另建职责**:',"正文作者用 `submit_for_independent_review` 提交已生效单元时,服务端会同步调用独立审查并登记档位;",'作者再按证据举证或修订。先后顺序由工程事实决定,但"没有审查档位就不算完整成果"是硬条件。'].filter(Boolean).join("\n")}}};
10
+ 上表是**档案授权**;本次职责按委派时写明的目的(purpose)只暴露其中与当前目的相关的工具——**工具面里没有的动作,本轮不做**:需要另一目的的能力时通过共同决定请求协调,或由主控另立职责/走显式迁移,不要绕开,也不要把两套目的塞进同一条职责。`}(a.permissions),"",f,"","## 裁决的边界(工具契约的真实前提)","- 你能答复的是 **owner=project-decision-maker 的交回项**与 **owner 是你自己**的问题;"," 审查缺陷(`review-finding`)只能由独立审查复核关闭——你作为作者只能举证或修订,替自己关闭会被拒收。",'- 答复要说具体:采纳哪个备选、依据什么、后续怎么核;不能只回"继续优化"。',"","## 独立审查(同步调用,不是另一个角色)","正文单元生效后,用 `submit_for_independent_review` 提交要审的单元 id:服务端会用**独立提示、只读输入**同步调用审查模型,","返回逐条准则档位(professional/strong 达标;usable/deficient 不足)、findings 与未引用来源的处置意见。它不共享你的对话或推理,","你也无法在调用期间修改被审版本。","- 审查失败(超时/输出不合法)只返回失败回执,不会中断你的职责;可修订后重试。","- 有 findings 时:按证据用 `responses`(issueId+findingKey+unitEntityId+事实说明+证据引用)举证,或修订正文后重新提交;同名 key 按实际 issueId 定位,**审查缺陷不能由你关闭**。","- 审查返回 findings 后,先看 `reviewSummary.revisionPlan`(或调用 `review_revision_plan`):它把未关闭缺陷按**单元 → 准则 → finding** 归组,并列出还没有当前档位的单元。只修订计划里的单元与准则,不要重写无关章节;修订后重新提交同一批单元复审,认为缺陷不成立时用 `responses` 逐条举证。每轮复审都会返回新的计划,直到 `openFindings=0`,或你按完成语义把仍 open 的 finding 写入 `openIssues` 收口。",'- **审查不收敛的收口**:若 `reviewSummary.convergence.action = "blocked"`,说明相同业务状态在没有新证据时重复或依赖不能自行解决;按回执保留明确blocked原因与恢复依赖,交还调度;用 `complete` 的 `openIssues` 如实列出仍未解决的blocking finding。完成不等于专业接收:未关闭项进入交付回执并按 not-met 判,由导出闸门决定是否必须继续修订。',"- **每写完一节就提交审查**(`unitEntityIds` 用 submit 回执里的 changedEntityIds),不要等全部章节写完;审查档位是完成职责的前提。`review_revision_plan` 的 `unreviewedUnits[].unitEntityId` 就是还没有当前档位的单元:把它们的 id 原样放进 `submit_for_independent_review` 的 `unitEntityIds` 提交,直到该列表为空;不要反复读计划而不提交。","- 同一输入重复提交会命中缓存、不再重复计费;修订正文或补充举证会产生新的审查。","- 未引用来源的处置意见由程序按稳定来源ID集合自动续页,游标随工作库保存;不要手工猜offset。未给有效意见的来源保持未测并返回具体依赖。","- 完成职责前,**本职责每个生效正文单元都必须有当前版本的审查档位**;缺一项程序会拒绝完成并列出缺失单元。**未关闭的审查缺陷不再阻断完成**:完成声明里用 `openIssues` 如实列出仍 open 的 finding id;它们会进入交付回执并记 `not-met`,由导出闸门判是否需要继续修订。完成 ≠ 专业接收。","","## 何时结束本轮","当前目的已经完成(工作包已提交、**正文单元已产出并生效且已送审**、意见已给出)时,用 `complete` 声明成果并接受程序**五项**核验;","确实在等别的对象的决定或成果时,用 `wait` 订阅它。**两者必居其一**:职责不能以沉默结束。","问题账用 `inspect_issues` 读(`mine`=写给你的、`raised`=你登记的):答复会作为实际事件唤醒你,不要靠反复轮询猜。"].filter(Boolean).join("\n")}function j(a){let b=!!(a.scope&&(a.scope.sectionTitles?.length||a.scope.memberIndices?.length));return[`## 本次任务`,`项目:${a.projectName}`,`文档:${a.title}(正式目录 ${a.chapterTitles.length} 章 / ${a.sectionIds.length} 节)`,a.requirement.trim()?`用户要求:${a.requirement}`:"","","## 本次运行的范围(**这就是你要组织的全部**)",b?[a.scope.sectionTitles?.length?`- 章节:${a.scope.sectionTitles.join("、")}`:"",a.scope.memberIndices?.length?`- 原清单成员:${a.scope.memberIndices.length} 条(全部在你被授权的成员范围内)`:"","- 范围之外的章节**不在本次范围内**:不要为它们建职责,收口时用 `unassignedSectionIds` 如实列出。"].filter(Boolean).join("\n"):[`- 全工程:${a.sectionIds.length} 节、${a.memberCount} 条清单成员。`,"\n## 整稿怎么组织(工具契约的事实,不是流程规定)\n- **按章节与工程对象分工**:每一节都要有承接者;专业细节(工法、工效、配置、正文)由各专业职责在其职责内补齐,不由你逐条组织。","- `query_work_packages` 是**分页目录**:用来按对象**抽读**你要组织的那几类对象,**不要把整本目录逐页读完**(本项目的全部工作包与 "+String(a.memberCount)+" 条成员——那是把整个项目读一遍,不是组织职责所需的工作集,会把你引到无进展停机)。目录里已经读过的行再读一遍不算新证据。",'- 职责数量由工程事实决定:方法与生产职责可以合并同一专业对象与工作面;**写作职责按节承接**——结构计划有多少节就派多少条 writing 职责,一条只接一节(多节合并会让后节长期拿不到焦点、按整条历史重复计费),但节多时用批量委派一次提交,不要一条一节拆成几十个回合。\n- **先明确职责节组及其对象,再建包、读回执、委派**:独立的建包可以同轮并行;拿到真实包 id 与覆盖后,独立的委派可以同轮并行。后一步依赖前一步的回执,不能猜包身份或覆盖。\n- 委派前先用 `list_construction_responsibility_options {view:"profiles"}` 查能力档案目录,profileId 从 `records[].id` 逐字复制(不猜名称、不省略)。**整稿一次派多节用 `delegate_construction_sections`**(assignments 数组,每条一节;失败条目单独返回);单条修正再用 `delegate_construction_responsibility`。'].join("\n"),"",...a.sectionDirectory?.length?[b?"## 本次范围内的正式章节(合同事实;范围外不要组织)":"## 正式章节(合同事实,全部;不要另立章节)",...a.sectionDirectory.map(a=>`- ${a.chapterTitle?`${a.chapterTitle}/`:""}${a.id}|${a.title}`),""]:[],...a.sourceFiles?.length?["## 项目来源文件(冻结目录,已带本职责授权计数;可直接用于建包)",...a.sourceFiles.slice(0,40).map(a=>`- ${a.path}(本职责 ${a.authorizedMembers}/${a.totalMembers} 条${a.wholeFileAuthorized?",整份可选用 sourceFiles":",需用 read_scope members 选授权成员"})`),...a.sourceFiles.length>40?[`- 其余 ${a.sourceFiles.length-40} 份未在此逐条列出;完整目录仍在冻结来源账中,按名称/序号用 read_scope 或 sourceFileDirectory 读取,不能当作不存在。`]:[],""]:[],...a.planning&&(a.planning.requiredOutputs.length||a.planning.contractObligations.length)?["## 规划义务(**必须有人承接**,不是可选项)",...a.planning.requiredOutputs.length?[...a.planning.requiredOutputs.map(a=>`- 输出:${a.element}(${a.form},${a.status})`)]:[],...a.planning.contractObligations.length?[`- 合同内容义务 ${a.planning.contractObligations.length} 项:${a.planning.contractObligations.map(a=>`${a.clause?`${a.clause} `:""}${a.text}${a.items?.length?`(${a.items.join("、")})`:""}`).join(";")}`]:[],...a.planning.factsBaseline?.length?[`- 项目事实基线 ${a.planning.factsBaseline.length} 组(已按对象/条件归一;冲突不当作单一值):`,...a.planning.factsBaseline.map(a=>` - ${a.key}${a.objectName?`@${a.objectName}`:""}${a.condition?`(${a.condition})`:""}:${a.value??`[${a.status}]`}${a.sourceFile?`(${a.sourceFile})`:""}`)]:[],...a.planning.factConflicts?.length?[`- 未决/已裁决事实冲突 ${a.planning.factConflicts.length} 组:${a.planning.factConflicts.map(a=>`${a.key}${a.objectName?`@${a.objectName}`:""}(${a.resolution})`).join("、")}`]:[],...a.planning.professionalCandidates?.length?["- 专业候选(候选不是目录,承接位置由你决定):",...a.planning.professionalCandidates.map(a=>` - ${a.chapterTitle}:候选 ${a.sectionCandidates.join("、")||"无"};内容要求 ${a.contentRequirements.map(a=>`${a.title}→${a.attachTo}`).join("、")||"无"}`)]:[],...a.planning.tenderProfile?[`- 招标格式:${a.planning.tenderProfile.bidType??"未声明"};身份匿名 ${!0===a.planning.tenderProfile.identityMarksForbidden?"是":"否"};正文图件口径 ${a.planning.tenderProfile.bodyFigurePolicy??"未声明"};页数语义 ${(a.planning.tenderProfile.pageSemantics??[]).map(a=>`${a.status}:${a.value}`).join("、")||"未规定"}`]:[],...a.planning.unreadSources?.length?[`- 未读/不可读来源 ${a.planning.unreadSourceCount??a.planning.unreadSources.length} 份(此处列前 ${a.planning.unreadSources.length} 份):${a.planning.unreadSources.map(a=>`${a.filePath}(${a.readStatus})`).join("、")};不得按文件名补造内容`+(a.planning.unreadSourcesNote?`。${a.planning.unreadSourcesNote}`:"")]:[],'- **总进度横道图/网络图**由执行基准直接渲染,写作职责用 `planChart:{view:"schedule"|"network"}` 声明;没有证书图,也没有兜底。不要把“总进度图”压给一条全工程汇总计算职责:它会把一个单节变成 6 个工作包的全局排程,既慢又容易失败。',"- 输出与合同内容义务都必须有承接者;用哪条职责、按什么顺序承接,由你按对象、依赖与工具面决定。需要计算支撑的输出,承接者必须具备生产计算能力,不得用文字/手绘图冒充计算。生产计算职责按**可完成的计算对象/工作面**拆分(例如按单体群或专业面);若计算输出覆盖多个单体/专业面,委派**多条** `production-calculation` 职责,每条只承接一个可完成的对象组。不要把全工程所有专业压给一条职责:上下文过长会导致传输中断。**每条生产计算职责的 goal 必须限定到一个已提交工作包与 3–8 个工序作业**(例如“循环水站土建:桩基—承台—主体结构—回填”),证书标明局部范围;不要在一条职责里排全工程所有单体。","- 规划闸门会在正文开始前按**实际职责定义**核对这些义务是否都有承接者;缺什么会作为反馈交回给你。",""]:[],"## 开始组织(不是先读完)","`sectionDirectory` 与上面的来源文件目录已经给出;**直接从来源文件目录里选一个与第一节相关的整份授权文件**(`wholeFileAuthorized` 为 true),不要先翻 `read_scope`,",'用 `submit({action:"work-package", reason:"…", payload:{selection:{sourceFiles:["实际文件"]}, sectionIds:["上面列出的实际章节 id"], title:"实际工作包名", objectScope:"实际对象", workfront:"实际工作面"}})` 建包;',"建包时 sectionIds 要列出本包实际支撑的全部小节,不能只列代表小节。成功回执 `data.workPackages` 给出包 id、version、title、sectionIds;委派节组必须是所选包覆盖的子集。收到建包回执后委派写作职责(purpose=writing),独立职责可批量处理。","委派缺覆盖时,根据回执中的具体缺失小节修正包选择;若尚无包支撑,由你按工程依据建补充包,再只重提失败职责。已成功委派不用重建,也不能为凑覆盖自动扩大既有职责范围。","**写作承接按节组织**:一条写作职责只承接**一个** sectionId;结构计划有多少节就派多少条职责,节多时由并发上限排队。不要为减少职责数把多节合并,也不要按小节组拆分同一节——同一节只能有一个写作承接者。多节串行会让后节长期拿不到焦点,并按整条职责历史重复计费;这是 27 号 P1 的硬边界。方法/生产/取证职责仍按实际成果边界另行委派。","按真实节组继续完成组织。不要把全部来源目录先读完;使用已给目录与覆盖回执,需要核实具体对象时再定向读取。","","## 从哪里看清对象","用 `read_scope` 按视图读取你被授权的范围:先看 `overview`(章节+来源文件,每个文件的成员数、涉及章节与对象),再按需看 `members`(原始清单成员序号)。",'工作包用真实章节 `sectionIds`+精确成员提交:`sourceFiles` 只在整份文件都在授权内时可用;`memberCount < projectMemberCount` 时必须用 `read_scope {view:"members"}` 读出授权成员序号,再用 `selection.memberIndices` 精确选择。`groupIndices` 只在 `sourceGroupWholeAuthorized=true` 时可用。需要真实成员记录时用 `query_work_packages` 的 `memberIndices` 精确读取。','**不要**用 `query_work_packages {query:"*"}` 逐页翻全项目目录来"找对象"——那是把整个项目读一遍,不是本任务的工作集,实测会把你引到无进展停机。',"","## 你要形成的成果",`为本次范围组织出**完整、可核查的专业职责**:每条职责对应实际工程对象与工作面,给出首条具体指令(目标、所需成果、依据哪些对象)。`,`本次范围内的每个章节都要有承接者,否则在收口时如实声明为未分配。不要为"看起来完整"而复制职责。`,"","## 本次范围的成果条件(事实,不是流程顺序)","构成一个**完整专业成果**的,除了正文本身,还包括**独立审查的档位**:交付评审按七维回执判定,",'没有独立审查的维度只能是"未测",交付就绪即为 false(第 15.1/27 节)。**独立审查不需要你另建职责**:',"正文作者用 `submit_for_independent_review` 提交已生效单元时,服务端会同步调用独立审查并登记档位;",'作者再按证据举证或修订。先后顺序由工程事实决定,但"没有审查档位就不算完整成果"是硬条件。'].filter(Boolean).join("\n")}}};
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/b420c193e0e99857.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b420c193e0e99857.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a70de062f1be1c59.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/e3dcea53eae4dbb392eb88d397a74c0cf2738d891e5c7e0f87052a0d4a83fedb/_buildManifest.js" defer=""></script><script src="/_next/static/e3dcea53eae4dbb392eb88d397a74c0cf2738d891e5c7e0f87052a0d4a83fedb/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar"><a class="sidebarLogo" aria-label="Customize Agent" href="/generation"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div></a><nav class="sidebarNav mt-2"><a href="/generation"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span class="sidebarLabel sr-only">生成</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel sr-only">知识库</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hammer"><path d="m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9"></path><path d="m18 15 4-4"></path><path d="m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5"></path></svg><span class="sidebarLabel sr-only">技能库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel sr-only">模型配置</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel sr-only">设置</span></div></a></nav></aside><div class="mainContent"><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"e3dcea53eae4dbb392eb88d397a74c0cf2738d891e5c7e0f87052a0d4a83fedb","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/b420c193e0e99857.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b420c193e0e99857.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a70de062f1be1c59.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09/_buildManifest.js" defer=""></script><script src="/_next/static/7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar"><a class="sidebarLogo" aria-label="Customize Agent" href="/generation"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div></a><nav class="sidebarNav mt-2"><a href="/generation"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span class="sidebarLabel sr-only">生成</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel sr-only">知识库</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hammer"><path d="m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9"></path><path d="m18 15 4-4"></path><path d="m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5"></path></svg><span class="sidebarLabel sr-only">技能库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel sr-only">模型配置</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel sr-only">设置</span></div></a></nav></aside><div class="mainContent"><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/b420c193e0e99857.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b420c193e0e99857.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a70de062f1be1c59.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/e3dcea53eae4dbb392eb88d397a74c0cf2738d891e5c7e0f87052a0d4a83fedb/_buildManifest.js" defer=""></script><script src="/_next/static/e3dcea53eae4dbb392eb88d397a74c0cf2738d891e5c7e0f87052a0d4a83fedb/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar"><a class="sidebarLogo" aria-label="Customize Agent" href="/generation"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div></a><nav class="sidebarNav mt-2"><a href="/generation"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span class="sidebarLabel sr-only">生成</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel sr-only">知识库</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hammer"><path d="m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9"></path><path d="m18 15 4-4"></path><path d="m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5"></path></svg><span class="sidebarLabel sr-only">技能库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel sr-only">模型配置</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel sr-only">设置</span></div></a></nav></aside><div class="mainContent"><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"e3dcea53eae4dbb392eb88d397a74c0cf2738d891e5c7e0f87052a0d4a83fedb","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/b420c193e0e99857.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b420c193e0e99857.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-a70de062f1be1c59.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09/_buildManifest.js" defer=""></script><script src="/_next/static/7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar"><a class="sidebarLogo" aria-label="Customize Agent" href="/generation"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div></a><nav class="sidebarNav mt-2"><a href="/generation"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span class="sidebarLabel sr-only">生成</span></div></a><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-library-big"><rect width="8" height="18" x="3" y="3" rx="1"></rect><path d="M7 3v18"></path><path d="M20.4 18.9c.2.5-.1 1.1-.6 1.3l-1.9.7c-.5.2-1.1-.1-1.3-.6L11.1 5.1c-.2-.5.1-1.1.6-1.3l1.9-.7c.5-.2 1.1.1 1.3.6Z"></path></svg><span class="sidebarLabel sr-only">知识库</span></div></a><a href="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-hammer"><path d="m15 12-8.373 8.373a1 1 0 1 1-3-3L12 9"></path><path d="m18 15 4-4"></path><path d="m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172V7l-2.26-2.26a6 6 0 0 0-4.202-1.756L9 2.96l.92.82A6.18 6.18 0 0 1 12 8.4V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5"></path></svg><span class="sidebarLabel sr-only">技能库</span></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel sr-only">模型配置</span></div></a><a href="/settings"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg><span class="sidebarLabel sr-only">设置</span></div></a></nav></aside><div class="mainContent"><main class="mainInner"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"7d4f04838cf734e6b831fbba97ea52544aa8845bfa2d2979cde092510fae3c09","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>