@customize-agent/server 4.1.18 → 4.1.19

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 (38) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +0 -10
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/server/chunks/1924.js +8 -2
  5. package/.next/server/middleware-build-manifest.js +0 -10
  6. package/.next/server/pages/404.html +1 -1
  7. package/.next/server/pages/500.html +1 -1
  8. package/.next/server/pages/asset-library.html +1 -1
  9. package/.next/server/pages/document-roles.html +1 -1
  10. package/.next/server/pages/documents.html +1 -1
  11. package/.next/server/pages/guide.html +1 -1
  12. package/.next/server/pages/index.html +1 -1
  13. package/.next/server/pages/knowledge/file-detail.html +1 -1
  14. package/.next/server/pages/knowledge/files.html +1 -1
  15. package/.next/server/pages/knowledge/manage.html +1 -1
  16. package/.next/server/pages/knowledge.html +1 -1
  17. package/.next/server/pages/models.html +1 -1
  18. package/.next/server/pages/overview.html +1 -1
  19. package/.next/server/pages/prompt.html +1 -1
  20. package/.next/server/pages/settings.html +1 -1
  21. package/.next/server/pages/system/logs.html +1 -1
  22. package/.next/server/pages-manifest.json +2 -2
  23. package/.next/static/{VJfTgkSHEgD9CkDEznJbt → 95avgtdDG74eXn-c5OAwf}/_buildManifest.js +1 -1
  24. package/.next/static/chunks/fallback/amp.js +1015 -0
  25. package/.next/static/chunks/fallback/main.js +1616 -0
  26. package/.next/static/chunks/fallback/pages/_app.js +28 -0
  27. package/.next/static/chunks/fallback/pages/_error.js +28 -0
  28. package/.next/static/chunks/fallback/react-refresh.js +62 -0
  29. package/.next/static/chunks/fallback/webpack.js +1192 -0
  30. package/.next/static/chunks/polyfills.js +1 -0
  31. package/.next/static/chunks/webpack.js +2 -2
  32. package/.next/static/development/_buildManifest.js +1 -1
  33. package/package.json +2 -2
  34. package/.next/static/webpack/0dc2c45812c77911.webpack.hot-update.json +0 -1
  35. package/.next/static/webpack/7de8e01bd19935ee.webpack.hot-update.json +0 -1
  36. package/.next/static/webpack/webpack.0dc2c45812c77911.hot-update.js +0 -12
  37. package/.next/static/webpack/webpack.7de8e01bd19935ee.hot-update.js +0 -12
  38. /package/.next/static/{VJfTgkSHEgD9CkDEznJbt → 95avgtdDG74eXn-c5OAwf}/_ssgManifest.js +0 -0
package/.next/BUILD_ID CHANGED
@@ -1 +1 @@
1
- VJfTgkSHEgD9CkDEznJbt
1
+ 95avgtdDG74eXn-c5OAwf
@@ -22,16 +22,6 @@
22
22
  "static/chunks/webpack.js",
23
23
  "static/chunks/main.js",
24
24
  "static/chunks/pages/_error.js"
25
- ],
26
- "/documents": [
27
- "static/chunks/webpack.js",
28
- "static/chunks/main.js",
29
- "static/chunks/pages/documents.js"
30
- ],
31
- "/knowledge/files": [
32
- "static/chunks/webpack.js",
33
- "static/chunks/main.js",
34
- "static/chunks/pages/knowledge/files.js"
35
25
  ]
36
26
  },
37
27
  "ampFirstPages": []
@@ -3,9 +3,9 @@
3
3
  "routes": {},
4
4
  "dynamicRoutes": {},
5
5
  "preview": {
6
- "previewModeId": "9b8463f42cbcec1c97536e7c1aa948d6",
7
- "previewModeSigningKey": "ee146191e536074edf3c0f9c7eb89ab83fd0689013e10e2f65838c8f92480aa2",
8
- "previewModeEncryptionKey": "3ae26de47cf637b45fe1a3a80241a740a931cbaa87695b6a929011c894fa0bd3"
6
+ "previewModeId": "bdf6adfd48a038a8e77b23395b9f142b",
7
+ "previewModeSigningKey": "ae20b5afd1a505c268f17fb00a28fed83c98f5aff86efda48235d6c570cb1992",
8
+ "previewModeEncryptionKey": "dbe185d6b35a52c3b6e4cf2f905d35d315358d525906569a8b162970a3216c2f"
9
9
  },
10
10
  "notFoundRoutes": []
11
11
  }
@@ -62,7 +62,7 @@ ${h.join("\n")}`,`章节实施方案:
62
62
  ${i.join("\n")}`].filter(Boolean).join("\n")}let aW=/安全|文明|质量|绿色施工|环保|扬尘|消防|应急|危大|风险|规范|标准|管理要求|施工工艺|技术措施|验收/u,aX=/项目名称|工程名称|建设地点|建设单位|招标人|发包人|建设规模|招标范围|合同工期|计划工期|质量标准|危大工程清单|工程量|材料规格|设备型号|图纸参数|报价|单价|利润|税率|合同金额|联系方式|品牌/u,aY=/报价|单价|合价|金额|利润|税率|增值税|招标控制价|最高投标限价|中标价|合同价|暂列金额/u,aZ=/联网增强|联网检索|网页资料|搜索结果|根据网页|互联网资料|在线资料|浏览器|搜索引擎/u,a$=["项目名称","工程名称","建设地点","建设单位","招标人","发包人","建设规模","招标范围","合同工期","计划工期","工程量","报价","单价"];function a_(a){return a.replace(/&amp;/gu,"&").replace(/&lt;/gu,"<").replace(/&gt;/gu,">").replace(/&quot;/gu,'"').replace(/&#39;/gu,"'").replace(/<[^>]+>/gu,"").replace(/\s+/gu," ").trim()}async function a0(a,b,c,d,e){let f=`https://duckduckgo.com/html/?q=${encodeURIComponent(a)}`,g=new AbortController,h=setTimeout(()=>g.abort(),8e3),i=()=>g.abort();e?.addEventListener("abort",i,{once:!0});let j=await fetch(f,{headers:{"User-Agent":"Mozilla/5.0 compatible; customize-agent web research"},signal:g.signal}).finally(()=>{clearTimeout(h),e?.removeEventListener("abort",i)});return j.ok?[...(await j.text()).matchAll(/<a[^>]+class="result__a"[^>]+href="([^"]+)"[^>]*>([\s\S]*?)<\/a>[\s\S]*?<a[^>]+class="result__snippet"[^>]*>([\s\S]*?)<\/a>/giu)].map(a=>{let b=a_(a[1]||""),c=a_(a[2]||""),d=a_(a[3]||""),e=/uddg=([^&]+)/u.exec(b)?.[1];return{url:e?decodeURIComponent(e):b,title:c,snippet:d}}).filter(a=>{let b=`${a.title} ${a.snippet} ${a.url}`;return!(!a.url||!a.snippet||aX.test(b)||aY.test(b)||aZ.test(b)||d.some(a=>a&&b.includes(a)))&&(0===c.length||c.some(b=>a.url.includes(b)))}).slice(0,b):[]}async function a1(a){if(!a.config.enabled||!function(a,b){let c=`${a} ${b.join(" ")}`;return!(!aW.test(c)||/项目概况|工程概况|建设地点|建设规模|招标范围|工程量|报价|造价/u.test(c)&&!/安全|文明|质量|危大|环保|工艺|措施/u.test(c))}(a.chapterTitle,a.sectionTitles))return{evidence:[],queries:[],filtered:0};let b=function(a,b,c){let d=`${a} ${b.join(" ")}`,e=[/危大/u.test(d)?"危大工程 专项施工方案 管理规定 安全措施":"",/安全|文明/u.test(d)?"建筑工程 安全文明施工 管理要求":"",/质量|验收/u.test(d)?"建筑工程 质量控制 质量验收 通用要求":"",/扬尘|环保|绿色/u.test(d)?"施工现场 扬尘治理 绿色施工 环保要求":"",/消防|应急/u.test(d)?"施工现场 消防 应急管理 要求":"",/工艺|技术措施/u.test(d)?"建筑工程 施工工艺 技术措施 通用要求":""].filter(Boolean),f=`${a.replace(aX,"")} 公开规范 通用要求`.trim();return[...new Set(e.length?e:[f])].slice(0,c)}(a.chapterTitle,a.sectionTitles,a.config.maxQueriesPerChapter),c=[],d=0;for(let e of b)try{for(let b of(await a0(e,a.config.maxResultsPerQuery,a.config.trustedDomains,a.runtimeRules.forbiddenTerms||[],a.signal))){let e=function(a,b){let c=a;for(let a of a$)c=c.replace(RegExp(`${a}[^。;;
63
63
  ]{0,80}`,"gu"),"");for(let a of b.map(a=>{var b;return null==(b=a.value)?"":"string"==typeof b||"number"==typeof b||"boolean"==typeof b?String(b).trim():""}).filter(a=>a.length>=3&&a.length<=80))c=c.replace(RegExp(a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),"gu"),"");return c.replace(aY,"").trim()}(b.snippet,a.localFacts);if(!e||e.length<20){d+=1;continue}c.push({chapterId:a.chapterId,filePath:b.url,score:.42,content:`参考依据:${b.title}
64
64
  ${e}`,source:function(a){let b=a.toLowerCase();return b.includes(".gov.cn")||b.includes("mohurd")||b.includes("zjt")||a.includes("住建")?"web-policy":"web-evidence"}(b.url),sectionTitle:a.chapterTitle})}}catch{d+=1}return{evidence:c,queries:b,filtered:d}}function a2(a){return[...a.promptDocumentRules?.forbidToc?[]:[...(0,aE.gN)(a.markdown),...(0,aE.f8)(a.markdown)],...(0,aE.K1)(a.markdown),...(0,aE.Fv)(a.markdown),...(0,aE.k0)(a.markdown),...(0,aE.NS)(a.markdown),...(0,aE.qK)(a.markdown,a.chapters),...(0,aE.ji)(a.chapters),...(0,aE.i0)(a.chapters),...(0,aE.ST)(a.chapters),...(0,aE.xX)(a.chapters),...(0,aE.qm)(a.markdown,a.factsModel),...aJ(a.markdown,a.factsModel),...aK(a.markdown),...aL(a.chapters),...function(a,b,c){let d={factuality:2*!(0,aE.vY)(a,c).some(a=>"error"===a.level),structure:b.length>0&&b.every(b=>a.includes(b.title)&&(0,aD.V7)(b.content)>=600)?2:1,depth:0===(0,aE.i0)(b).length?2:1,executable:0===aL(b).length?2:1,evidence:0===aJ(a,c).length?2:1},e=d.factuality+d.structure+d.depth+d.executable+d.evidence;return[{level:"warning",message:`文档交付评分报告:总分 ${e}/10,事实${d.factuality},结构${d.structure},专业${d.depth},可执行${d.executable},证据${d.evidence}`,suggestion:e>=8?"可交付,但建议继续优化证据使用覆盖率和章节依赖链路。":"建议优先修复低分维度后再导出。"}]}(a.markdown,a.chapters,a.factsModel),...(0,aE.vY)(a.markdown,a.factsModel),...(0,aE.iC)(a.markdown),...(0,aE.BV)(a.markdown),...al(a.markdown),...(0,aE.Ty)(a.chapters),...(0,aE.N1)(a.markdown,a.factsModel),...function(a){let b=[];return aZ.test(a)&&b.push({level:"warning",message:"正文包含联网增强过程性表述",suggestion:"请删除联网检索、网页资料、搜索结果等过程性话术,改为正式交付语言。"}),b}(a.markdown),...(0,aE.bM)(a.markdown),...(0,aE.M$)(a.markdown,a.promptBindings),...(0,aE.AC)(a.markdown,a.chapters),...(0,aE.mR)(a.markdown,a.template),...az(a.markdown,a.template),...ay(a.markdown,a.promptDocumentRules)]}let a3={project:"项目基础事实",schedule:"工期与节点",quality:"质量目标与验收",safety:"安全文明要求",resources:"资源投入依据",quantities:"清单/图纸/工程量事实",rules:"规范规则与验收要求"};function a4(a){return a.replace(/[\s,,.。::;;||()()《》<>【】"“”'‘’]/gu,"").toLowerCase()}function a5(a){return 0===a.length?100:Math.round(a.reduce((a,b)=>a+b,0)/a.length)}function a6(a){let b=Math.max(0,100-a.issues.reduce((a,b)=>a+("error"===b.level?10:"warning"===b.level?4:1),0)),c=a5(a.chapterCoverage.map(a=>a.score)),d=a.factTraces.filter(a=>"used"===a.status).length,e={factuality:Math.min(100,Math.round(.65*(a.factTraces.length?Math.round(d/a.factTraces.length*100):100)+.35*b)),structure:Math.min(100,Math.round(.7*(a.chapters.length>0&&a.chapters.every(b=>a.markdown.includes(b.title)&&(0,aD.V7)(b.content)>=600)?95:78)+.3*c)),professionalDepth:c,executable:a5(a.chapterCoverage.map(a=>a.checks.some(a=>"professional"===a.key&&a.passed)?95:75)),evidenceCoverage:a.knowledgeCoverage.score,consistency:b},f=Math.round(.22*e.factuality+.16*e.structure+.18*e.professionalDepth+.16*e.executable+.18*e.evidenceCoverage+.1*e.consistency),g=a.issues.filter(a=>"error"===a.level).length,h=Math.max(0,Math.min(99,Math.round(f-8*g))),i=a.knowledgeCoverage.score>=95?95:85;return{overall:f,deliveryProbability:h,target:i,passed:h>=i&&0===g,scores:e,summary:`交付置信度 ${h}% / 目标 ${i}%,综合评分 ${f}/100`,actions:h>=i&&0===g?["已达到当前质量目标,建议保持事实口径和导出前复核。"]:["系统需优先修复阻断问题、扩大本地知识库检索、补抽结构化事实,并将未落位事实写入对应章节。","对低分章节执行结构补齐、专业控制点补写、跨章一致性复核和证据引用覆盖修复。"]}}let a7={version:"professional-document-workflow-v3",rules:["complete-local-knowledge-assumption","knowledge-coverage-recovery","fact-trace-placement","chapter-coverage-gate","structured-quality-report","post-repair-verification"]};function a8(a){return[...new Set(a.flatMap(a=>a.split(/[\s、,,。;;::()()《》【】\-/]+/u)).map(a=>a.trim()).filter(a=>a.length>=2))]}async function a9(a){let b=[];if(0===a.scopedFilePaths.length)return b;let c=(function(a,b=[]){let c=a.sections||[],d=[...a.requiredFacts,...b],e=[a.title,...c.slice(0,12),...d.slice(0,12)],f=/进度|工期|节点/u.test(a.title)?["合同工期","计划工期","日历天","开工","竣工","关键线路"]:/质量|验收/u.test(a.title)?["质量标准","验收规范","检验批","复验","合格"]:/安全|危大|风险/u.test(a.title)?["安全措施","风险源","危大工程","应急","检查整改"]:/资源|人|材|机|材料|设备/u.test(a.title)?["劳动力","材料","机械设备","进场计划","资源保障"]:["工程范围","施工方法","控制要点","验收要求"],g=a8([...e,...f]);return[...new Set([`${a.title} ${c.slice(0,8).join(" ")}`.trim(),...d.map(b=>`${a.title} ${b}`.trim()),...c.slice(0,10).map(b=>`${a.title} ${b} ${d.slice(0,4).join(" ")}`.trim()),`${a.title} ${f.join(" ")}`.trim(),g.slice(0,18).join(" ")].filter(Boolean))]})(a.chapter,a.requiredNeeds).slice(0,a.highRisk?18:10),d=a.highRisk?24:14;for(let e of c){(0,aG.Te)(a.signal);let c=await a.manager.search(a.projectRoot,e,{scope:"project",filters:{filePaths:a.scopedFilePaths},limit:d,weights:{keyword:.62,vector:.32,rewrite:.9,hybridBonus:.28},generationMode:!1});b.push(...function(a){return a.results.map(b=>({chapterId:a.chapter.id,filePath:b.filePath,score:b.score+a.boost,content:b.content,roleId:a.fileRoleByPath.get(b.filePath),processingType:a.fileProcessingByPath.get(b.filePath),sectionTitle:b.sectionTitle,source:a.source}))}({chapter:a.chapter,results:c.results.filter(b=>a.scopedFilePaths.includes(b.filePath)),fileRoleByPath:a.fileRoleByPath,fileProcessingByPath:a.fileProcessingByPath,boost:2.4,source:"deep-retrieval"}))}return J(b,{maxItems:a.highRisk?72:42,maxChars:a.highRisk?72e3:42e3,preservePinned:!0})}var ba=c(15751),bb=c(95393),bc=c(96770);let bd=new Map,be=0;function bf(a,b){let c=(0,bc.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":"openai"}function bg(){let a=(0,i.I)().load(),b=a.models.reasoning.active||a.models.action.active||a.models.reader.active,c=[...a.models.reasoning.list,...a.models.action.list,...a.models.reader.list].find(a=>a.name===b);if(!c)return;let d=a.providers[c.provider];if(d)return{model:c,provider:d}}async function bh(a,b,c=!1,d={}){d.diagnostics&&(d.diagnostics.llm.calls+=1),be+=1,d.diagnostics&&(d.diagnostics.llm.maxActive=Math.max(d.diagnostics.llm.maxActive,be));try{let e,f,g=bg();if(!g)return;let{model:h,provider:i}=g,j=(0,aG.c6)({provider:h.provider,model:h.name,baseUrl:i.baseUrl,directEndpoint:i.directEndpoint,protocol:i.protocol,apiKeyHash:i.apiKey?(0,aG.c6)(i.apiKey):""}),k=bd.get(j);k||(k=(0,bb.createProvider)(bf(h.provider,i),{baseUrl:i.baseUrl,apiKey:i.apiKey,modelName:h.name,directEndpoint:i.directEndpoint}),bd.set(j,k));let l=Math.max(3e4,Number(d.timeoutMs??process.env.DOCUMENT_LLM_CALL_TIMEOUT_MS??3e5)),m=new Promise((a,b)=>{e=setTimeout(()=>b(Error("LLM 调用超时")),l)}),n=[k.chat([{role:"system",content:c?`${a}
65
- 只返回 JSON,不要返回 markdown。`:a},{role:"user",content:b}],{temperature:d.temperature??.3*!c,maxTokens:d.maxTokens,signal:d.signal}),m];return d.signal&&n.push(new Promise((a,b)=>{if(d.signal?.aborted)return void b(Error("用户中止"));f=()=>b(Error("用户中止")),d.signal?.addEventListener("abort",f,{once:!0})})),(await Promise.race(n).finally(()=>{e&&clearTimeout(e),f&&d.signal?.removeEventListener("abort",f)})).content.trim()}catch(a){if(d.diagnostics&&(d.diagnostics.llm.failures+=1),d.signal?.aborted)throw Error("用户中止",{cause:a});return}finally{be=Math.max(0,be-1)}}async function bi(a,b,c){let d,e=new AbortController;if(c?.aborted)throw Error("用户中止");let f=()=>e.abort();c?.addEventListener("abort",f,{once:!0});let g=new Promise(a=>{d=setTimeout(()=>{e.abort(),a(null)},b)}),h=[Promise.resolve().then(()=>a(e.signal)),g];c&&h.push(new Promise((a,b)=>{e.signal.addEventListener("abort",()=>{c.aborted&&b(Error("用户中止"))},{once:!0})}));try{let a=await Promise.race(h);if(c?.aborted)throw Error("用户中止");return a}finally{d&&clearTimeout(d),c?.removeEventListener("abort",f)}}async function bj(a,b,c={}){let d=await bh(a,b,!0,{maxTokens:c.maxTokens,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,timeoutMs:c.timeoutMs});if(d)try{return JSON.parse(function(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim();if(c)return c;let d=b.indexOf("{"),e=b.lastIndexOf("}"),f=b.indexOf("["),g=b.lastIndexOf("]"),h=d>=0&&e>d?b.slice(d,e+1):"",i=f>=0&&g>f?b.slice(f,g+1):"";return h&&(!i||d<=f)?h:i||b}(d))}catch{return}}function bk(a){let b=[],c=new Set;for(let d of a.filter(a=>"table"===a.processingType)){if(c.has(d.filePath))continue;c.add(d.filePath);let a=(0,h.aY)(),g=e.isAbsolute(d.filePath)?d.filePath:f.existsSync(e.join(a,"knowledgeBase",d.filePath))?e.join(a,"knowledgeBase",d.filePath):e.join(a,d.filePath),i=e.extname(d.filePath).toLowerCase();if(f.existsSync(g)&&[".xlsx",".xls",".csv"].includes(i))try{let a=ba.readFile(g,{cellDates:!0,sheetStubs:!1});for(let c of a.SheetNames){let e=a.Sheets[c],f=ba.utils.sheet_to_json(e,{header:1,raw:!1,defval:""}).map(a=>a.map(a=>String(a).trim())).filter(a=>a.some(Boolean));if(f.length<2)continue;let g=f.findIndex(a=>a.filter(Boolean).length>=2);if(g<0)continue;let h=f[g].filter(Boolean),i=f.slice(g+1).map(a=>a.slice(0,h.length)).filter(a=>a.some(Boolean));0!==i.length&&b.push({tableType:d.roleId||"table",sheet:c,headers:h,rows:i,sourceFile:d.filePath,sourceRange:e["!ref"]})}continue}catch{}let j=d.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(j.length<2)continue;let k=j[0].includes("|")?"|":j[0].includes(" ")?" ":",",l=j.map(a=>a.split(k).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);l.length<2||b.push({tableType:d.roleId||"table",headers:l[0],rows:l.slice(1),sourceFile:d.filePath,sourceRange:d.sectionTitle})}return b}function bl(a,b,c){let d=(0,E.Uy)(b,c).map(a=>({field:a,pattern:function(a){let b=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");return RegExp(`${b}[::\\s]+([^\\n,。;;]+)`,"u")}(a.name)})),e=[];for(let b of a)for(let{field:a,pattern:c}of d){if(!(0,E.I2)(b,a))continue;let d=b.content.match(c)||[void 0,b.content.replace(/\s+/gu," ")],f=d?.[1]?.trim();f&&!e.some(b=>b.fieldId===a.id&&b.value===f)&&e.push({key:a.name,fieldId:a.id,fieldName:a.name,value:f,sourceFile:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,confidence:b.score,sourceRef:{filePath:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,sectionTitle:b.sectionTitle}})}return e}async function bm(a,b,c,d,e){let f=[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"LLM JSON 抽取未启用或无可用模型"}],g=Math.max(12e3,Math.floor(Number(process.env.DOCUMENT_FACT_EXTRACTION_MAX_CHARS??45e3))),h=Math.max(8,Math.floor(Number(process.env.DOCUMENT_FACT_EXTRACTION_MAX_ITEMS??48))),i=0,j=[];for(let b of a.slice(0,h)){let a=(0,aG.lG)(b.content).replace(/\s+/gu," ").slice(0,Math.max(800,Math.floor(g/h))),c=`文件:${b.filePath}
65
+ 只返回 JSON,不要返回 markdown。`:a},{role:"user",content:b}],{temperature:d.temperature??.3*!c,maxTokens:d.maxTokens,signal:d.signal}),m];return d.signal&&n.push(new Promise((a,b)=>{if(d.signal?.aborted)return void b(Error("用户中止"));f=()=>b(Error("用户中止")),d.signal?.addEventListener("abort",f,{once:!0})})),(await Promise.race(n).finally(()=>{e&&clearTimeout(e),f&&d.signal?.removeEventListener("abort",f)})).content.trim()}catch(a){if(d.diagnostics&&(d.diagnostics.llm.failures+=1,d.diagnostics.llm.lastError=a instanceof Error?a.message:String(a)),d.signal?.aborted)throw Error("用户中止",{cause:a});return}finally{be=Math.max(0,be-1)}}async function bi(a,b,c){let d,e=new AbortController;if(c?.aborted)throw Error("用户中止");let f=()=>e.abort();c?.addEventListener("abort",f,{once:!0});let g=new Promise(a=>{d=setTimeout(()=>{e.abort(),a(null)},b)}),h=[Promise.resolve().then(()=>a(e.signal)),g];c&&h.push(new Promise((a,b)=>{e.signal.addEventListener("abort",()=>{c.aborted&&b(Error("用户中止"))},{once:!0})}));try{let a=await Promise.race(h);if(c?.aborted)throw Error("用户中止");return a}finally{d&&clearTimeout(d),c?.removeEventListener("abort",f)}}async function bj(a,b,c={}){let d=await bh(a,b,!0,{maxTokens:c.maxTokens,temperature:c.temperature,signal:c.signal,diagnostics:c.diagnostics,timeoutMs:c.timeoutMs});if(d)try{return JSON.parse(function(a){let b=a.trim(),c=b.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/iu)?.[1]?.trim();if(c)return c;let d=b.indexOf("{"),e=b.lastIndexOf("}"),f=b.indexOf("["),g=b.lastIndexOf("]"),h=d>=0&&e>d?b.slice(d,e+1):"",i=f>=0&&g>f?b.slice(f,g+1):"";return h&&(!i||d<=f)?h:i||b}(d))}catch{return}}function bk(a){let b=[],c=new Set;for(let d of a.filter(a=>"table"===a.processingType)){if(c.has(d.filePath))continue;c.add(d.filePath);let a=(0,h.aY)(),g=e.isAbsolute(d.filePath)?d.filePath:f.existsSync(e.join(a,"knowledgeBase",d.filePath))?e.join(a,"knowledgeBase",d.filePath):e.join(a,d.filePath),i=e.extname(d.filePath).toLowerCase();if(f.existsSync(g)&&[".xlsx",".xls",".csv"].includes(i))try{let a=ba.readFile(g,{cellDates:!0,sheetStubs:!1});for(let c of a.SheetNames){let e=a.Sheets[c],f=ba.utils.sheet_to_json(e,{header:1,raw:!1,defval:""}).map(a=>a.map(a=>String(a).trim())).filter(a=>a.some(Boolean));if(f.length<2)continue;let g=f.findIndex(a=>a.filter(Boolean).length>=2);if(g<0)continue;let h=f[g].filter(Boolean),i=f.slice(g+1).map(a=>a.slice(0,h.length)).filter(a=>a.some(Boolean));0!==i.length&&b.push({tableType:d.roleId||"table",sheet:c,headers:h,rows:i,sourceFile:d.filePath,sourceRange:e["!ref"]})}continue}catch{}let j=d.content.split("\n").map(a=>a.trim()).filter(Boolean).filter(a=>a.includes("|")||a.includes(" ")||a.includes(","));if(j.length<2)continue;let k=j[0].includes("|")?"|":j[0].includes(" ")?" ":",",l=j.map(a=>a.split(k).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>1);l.length<2||b.push({tableType:d.roleId||"table",headers:l[0],rows:l.slice(1),sourceFile:d.filePath,sourceRange:d.sectionTitle})}return b}function bl(a,b,c){let d=(0,E.Uy)(b,c).map(a=>({field:a,pattern:function(a){let b=a.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&");return RegExp(`${b}[::\\s]+([^\\n,。;;]+)`,"u")}(a.name)})),e=[];for(let b of a)for(let{field:a,pattern:c}of d){if(!(0,E.I2)(b,a))continue;let d=b.content.match(c)||[void 0,b.content.replace(/\s+/gu," ")],f=d?.[1]?.trim();f&&!e.some(b=>b.fieldId===a.id&&b.value===f)&&e.push({key:a.name,fieldId:a.id,fieldName:a.name,value:f,sourceFile:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,confidence:b.score,sourceRef:{filePath:b.filePath,roleId:b.roleId||"unknown",processingType:b.processingType,sectionTitle:b.sectionTitle}})}return e}async function bm(a,b,c,d,e){let f=[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"LLM JSON 抽取未启用或无可用模型"}],g=Math.max(12e3,Math.floor(Number(process.env.DOCUMENT_FACT_EXTRACTION_MAX_CHARS??45e3))),h=Math.max(8,Math.floor(Number(process.env.DOCUMENT_FACT_EXTRACTION_MAX_ITEMS??48))),i=0,j=[];for(let b of a.slice(0,h)){let a=(0,aG.lG)(b.content).replace(/\s+/gu," ").slice(0,Math.max(800,Math.floor(g/h))),c=`文件:${b.filePath}
66
66
  角色:${b.roleId||""}
67
67
  处理:${b.processingType||""}
68
68
  内容:${a}`;if(j.length>0&&i+c.length>g)break;i+=c.length,j.push(c)}let k=j.join("\n\n---\n\n");if(!k.trim())return{facts:[],stages:f};(0,aG.Te)(e);let l=(0,E.Uy)(c,d),m=l.map(a=>`- id=${a.id} name=${a.name} type=auto required=${a.required} sourceRoleIds=${a.sourceRoleIds.join(",")||"不限"} hint=${a.extractionHint||"无"}`).join("\n"),n=await bj(b||"你是文档事实抽取器。",`请严格按下面的动态事实 schema 从资料中抽取事实。只抽取资料明确支持的内容;如果字段限定 sourceRoleIds,必须优先来自对应文件角色;事实取舍和冲突处理遵循规范包字段说明、文件角色和提示词角色配置。
@@ -196,7 +196,13 @@ ${e.join("\n")}`:"",h.length?`项目基础事实卡片(资料已明确,项
196
196
  ${h.map(a=>`- ${a.key||a.fieldName}:${G((0,aG.lG)(a.value)).slice(0,220)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
197
197
  项目基本信息表必须使用固定表头:| 信息项 | 内容 |,不得使用“序号|项目名称|内容参数”表头,不得输出后台溯源列。`:"",a.factNeedsPrompt||"",g.length?`全局资料事实索引匹配到的本章可写事实:
198
198
  ${g.join("\n")}`:"",i.length?`本章资料中可直接使用的可靠精确参数/编号:${i.join("、")}。这些参数来自绑定资料,不属于编造;涉及对应对象、部位、工序、材料、设备、项目概况、质量验收或安全控制时必须自然写入正文,并保持原样或等价专业表达。项目基础事实中的合同估算价、计划工期可用于项目概况;不得写入报价明细、单价、税率、预留金。`:"",k.length?`当前事实需求仍未充分确认:${k.join("、")}。未确认项不得编造;但已满足事实需求中的资料事实必须写入对应小节。`:"",a.missingFacts.length?`模板显式要求中当前检索未充分命中的项:${a.missingFacts.join("、")}。未命中项不得编造,但不得因此省略上方已经明确的可靠参数。`:"",`本章可用材料来源约 ${j} 个文件,正文必须按事实需求把可用事实内化到对应小节,不得单列后台资料清单。`].filter(Boolean).join("\n")}({chapter:c,plan:d,spec:Y,roleFacts:x,evidence:P,missingFacts:R,indexedFacts:[...al,...ak],resolvedFactNeeds:ab,factNeedsPrompt:function(a){let b=a.map(a=>{let b=a.facts.slice(0,5).map(b=>`${b.key||b.fieldName||a.need.label}=${bC(b.value)}${b.sourceFile?`(${e.basename(b.sourceFile)})`:""}`),c=a.facts.length?[]:(a.evidence||[]).slice(0,2).map(a=>`证据片段:${bC(a.content).slice(0,160)}${a.filePath?`(${e.basename(a.filePath)})`:""}`);return`- ${a.need.required?"必须":"相关"}|${a.need.label}|${a.status}${b.length||c.length?`:${[...b,...c].join(";")}`:":未在已解析资料中确认"}`});return b.length?`事实需求覆盖卡片:
199
- ${b.join("\n")}`:""}(ab)}),ao={total:ab.length,satisfied:ab.filter(a=>"satisfied"===a.status).length,missing:ab.filter(a=>"missing"===a.status).length,lowConfidence:ab.filter(a=>"low_confidence"===a.status).length};for(let a of ac)aA.push(`${c.title}:事实需求未确认 ${a}`);let as=Y?.chapterRules.find(a=>a.id===c.id||a.title===c.title),ay=bE.chapterTargets.get(c.id)||1200,az=Math.max(3500,Number(process.env.DOCUMENT_LONGFORM_INITIAL_CHAPTER_CAP||8e3)),aB=bE.longformStrict?Math.min(ay,az):ay,aC=Math.ceil(aB*(bE.maxChars?1.1:1.18)),aF=bE.targetChars?Math.min(1800,Math.max(600,Math.floor(.5*aB))):1200,aH=Math.max(Math.min(d?.minWords||0,aB),Math.min(as?.minWords||0,aB),Math.min(Y?.dynamicChapterRule.minWordsPerChapter||0,aB),Math.floor(.78*aB),aF),aJ=cK(aH,aB),aK=Math.min(aB,6e3),aL=Math.max(900,Math.min(aB,Math.ceil(.55*aB),aK)),aM=Math.max(450,Math.min(aH,Math.floor(.72*aL))),aN=Math.max(aL+300,Math.min(aC,Math.ceil(1.25*aL))),aO=cK(aM,aL),aP=Math.min(cL(aL),18e4),aQ=Math.max(900,Math.min(aL,3600)),aT=Math.max(450,Math.min(aM,Math.floor(.72*aQ))),aU=Math.max(aQ+300,Math.min(aC,Math.ceil(1.2*aQ))),aV=cK(aT,aQ),aX=Math.min(cL(aQ),15e4),a$=c.sections?.filter(Boolean).length||0,a0=/[、,,;;]/u.test(c.title),a2=Math.max(4,Number(process.env.DOCUMENT_SECTION_FIRST_MAX_SECTIONS||8)),a3=0!==Number(process.env.DOCUMENT_SECTION_FIRST_GENERATION??0)&&a$>=2&&a$<=a2&&(bE.longformStrict||!a0);N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:a3?`${(0,Q.GQ)(c.title)} 正在按小节并发成稿`:`${(0,Q.GQ)(c.title)} 正在整章一次成稿`,details:a3?[...$,`有效证据:${P.length} 条`,`事实需求:${ao.satisfied}/${ao.total} 已满足,缺失 ${ao.missing},低置信 ${ao.lowConfidence}`,`首轮质量目标:约 ${aB} 字${ay!==aB?`,总预算分配约 ${ay} 字`:""},上限约 ${aC} 字`,`规划小节:${c.sections?.length||0} 个`,"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...$,`有效证据:${P.length} 条`,`事实需求:${ao.satisfied}/${ao.total} 已满足,缺失 ${ao.missing},低置信 ${ao.lowConfidence}`,`目标字数:约 ${aB} 字,上限约 ${aC} 字`,`规划小节:${a$} 个${a$>a2?",超过小节并发上限,改用整章稳定成稿":""}`,"首次生成必须覆盖章节结构、小节、事实和目标篇幅,后置修复仅兜底"],progress:{current:h+1,total:bh.length,label:a3?"小节并发":"整章成稿"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F();let a4=a3?Math.min(cL(aB)+3e4,33e4):Math.min(cL(aB),18e4),a6=a3?await I(()=>bN(bG,`chapter-section-draft:${c.id}`,()=>bi(b=>cJ({template:z,chapter:c,evidence:P,missingFacts:R,promptTexts:X,projectContext:bn,requirement:a.requirement,roleContext:V,targetWords:aB,maxWords:aC,forbidDrawingImages:U,factCoverageContext:am,projectRoot:v,modelName:a_,fileRolesHash:a5,allowPartialResult:!1,sectionEvidenceProvider:a=>du({manager:A,projectRoot:v,chapter:c,sectionTitle:a,scopedFilePaths:t,fileRoleByPath:ap,fileProcessingByPath:aq,signal:b}),diagnostics:bG,signal:b}),a4,a.signal))):await I(()=>bN(bG,`chapter-draft:${c.id}`,()=>bi(b=>cf(z,c,P,R,X,bn,a.requirement,V,{forbidDrawingImages:U,minWords:aH,targetWords:aB,maxWords:aC,maxTokens:aJ,factCoverageContext:am,signal:b}),cL(aB),a.signal)));if(!a6&&a3)throw N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"failed",message:`${(0,Q.GQ)(c.title)} 小节并发未在限定时间内返回,已跳过整章重试并标记为章节阻断`,details:["小节优先模式不再执行整章重试,避免单章长时间空等;请优先重试失败小节或降低目标篇幅。"],progress:{current:h+1,total:bh.length,label:"小节超时"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),Error(`${c.title} 小节并发超时,已跳过整章重试`);if(a6||(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 整章成稿未完整返回,正在执行整章重试生成`,details:[`目标字数:约 ${aB} 字`,`有效证据:${P.length} 条`],progress:{current:h+1,total:bh.length,label:"整章重试"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),a6=await I(()=>bN(bG,`chapter-draft-fallback:${c.id}`,()=>bi(b=>cf(z,c,P,R,X,bn,a.requirement,V,{forbidDrawingImages:U,minWords:aM,targetWords:aL,maxWords:aN,maxTokens:aO,factCoverageContext:am,signal:b}),aP,a.signal)))),(0,aG.Te)(a.signal),a6||(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 正在压缩上下文后重试生成`,details:["已压缩证据与上下文后重新请求模型生成",`目标字数:约 ${aB} 字`],progress:{current:h+1,total:bh.length,label:"紧凑重试"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),a6=await I(()=>bN(bG,`chapter-draft-compact-fallback:${c.id}`,()=>bi(b=>cf(z,c,P,R,X,bn,a.requirement,V,{forbidDrawingImages:U,minWords:aT,targetWords:aQ,maxWords:aU,maxTokens:aV,factCoverageContext:am,signal:b}),aX,a.signal)))),(0,aG.Te)(a.signal),!a6)throw Error(`${c.title} 大模型未返回有效章节正文`);let a7=a6,ba=aj(a7),bb=ba.length>=Math.min(3,c.sections?.length||3)?{...c,sections:ba}:c,bd=c$(a7,bb),bg=0,bj=bd.map(a=>`${a.sectionTitle}:${a.reason}:${a.bodyLength}`).join("|");for(;bd.length>0;){bg+=1,N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 存在 ${bd.length} 个小节缺口,正在按目标缺口强制补写`,details:bd.map(a=>a.message),progress:{current:h+1,total:bh.length,label:`小节补写第 ${bg} 轮`}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C);let b=a7,d=await I(()=>bN(bG,`chapter-section-repair:${c.id}:${bg}`,()=>cQ({template:z,chapter:c,content:b,evidence:P,missingFacts:R,promptTexts:X,projectContext:bn,requirement:a.requirement,roleContext:V,targetWords:aB,maxWords:aC,forbidDrawingImages:U,factCoverageContext:am,forcedSections:bd,signal:a.signal})));d?.trim()&&(a7=d);let e=(bd=c$(a7,bb)).map(a=>`${a.sectionTitle}:${a.reason}:${a.bodyLength}`).join("|"),f=e!==bj;if(0===bd.length||!f)break;bj=e}bd.length>0&&(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"failed",message:`${(0,Q.GQ)(c.title)} 小节补齐仍未完全达标,已标记为阻断问题`,details:bd.map(a=>a.message),progress:{current:h+1,total:bh.length,label:"小节未达标"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C));let bk=bY({chapter:c,content:a7,missingFacts:R,targetWords:aB}),bl=(0,aE.Ff)(bk);bG.quality.blockingCount+=bl.blocking,bG.quality.importantCount+=bl.important,bG.quality.minorCount+=bl.minor;let bm=bQ(bk);if(bm.length>0){let b=a7;N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 正在根据质量问题修复章节:${bm.length} 个阻断问题`,details:bm,progress:{current:h+1,total:bh.length,label:"章节修复"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C);let d=await I(()=>bN(bG,`chapter-repair:${c.id}`,()=>bZ({template:z,chapter:{id:c.id,title:c.title,content:b,evidence:P,missingFacts:[...R,...ac.map(a=>`事实需求未确认:${a}`)],sections:c.sections||[]},issues:bm,promptTexts:X,requirement:a.requirement,forbidDrawingImages:U,diagnostics:bG,signal:a.signal})));a7=d.content,d.appliedCount>0&&(bG.quality.repairedCount+=1),(0,aG.Te)(a.signal)}if(!a7.trim())throw Error(`${(0,Q.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let bo=a7,bp=0;if((0,aD.V7)(bo)<Math.floor(.82*aB)||bQ(bY({chapter:c,content:bo,missingFacts:R,targetWords:aB})).length>0){N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 首次成稿未达定稿门槛,正在定向扩写`,details:[`当前 ${(0,aD.V7)(bo)} 字 / 目标 ${Math.floor(.95*aB)} 字`,`章节并发:${b5}`],progress:{current:h+1,total:bh.length,label:"章节扩写"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C);let b=await I(()=>bN(bG,`chapter-expand:${c.id}`,()=>cR({template:z,chapter:c,content:a7,evidence:P,promptTexts:X,requirement:a.requirement,roleContext:V,targetChars:Math.floor(.95*aB),maxChars:aC,forbidDrawingImages:U,maxTokens:Math.min(aJ,aO),signal:a.signal})));bo=b.content,bp=b.rounds}bo=dh(bo,c);let bq=aj(bo),br=(0,aE.yw)(bo,[{title:c.title,content:bo,sections:bq}]).filter(a=>"empty"===a.reason||"table_only"===a.reason);!function(a,b){try{let c=["chapter-generation-failure.env","document-generation-timeout.env"].map(b=>e.join(a,".dbg",b)).find(a=>f.existsSync(a));if(!c)return;let d=Object.fromEntries(f.readFileSync(c,"utf8").split(/\r?\n/u).map(a=>a.split("=")).filter(a=>a.length>=2).map(([a,...b])=>[a,b.join("=")])),g=d.DEBUG_SERVER_URL;if(!g)return;fetch(g,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:d.DEBUG_SESSION_ID||"chapter-generation-failure",runId:"pre",ts:Date.now(),...b})}).catch(()=>void 0)}catch{}}(v,{event:"section-repair-check",hypothesisId:"H1",chapterId:c.id,chapterTitle:c.title,gapCount:br.length,gaps:br.slice(0,10).map(a=>({title:a.sectionTitle,reason:a.reason,message:a.message})),contentChars:(0,aD.V7)(bo),targetWords:aB}),br.length>0&&(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 正在小节级定向补写 ${br.length} 个未达标小节`,details:br.slice(0,8).map(a=>a.message),progress:{current:h+1,total:bh.length,label:"小节补写"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),bo=await I(()=>bN(bG,`section-repair:${c.id}`,()=>cQ({template:z,chapter:c,content:bo,evidence:P,missingFacts:R,promptTexts:X,projectContext:bn,requirement:a.requirement,roleContext:V,targetWords:Math.max(1200,Math.floor(.35*aB)),maxWords:Math.min(aC,Math.max(2400,Math.floor(.55*aB))),forbidDrawingImages:U,factCoverageContext:am,forcedSections:br,signal:a.signal}))),bo=dh(bo,c),bq=aj(bo),br=(0,aE.yw)(bo,[{title:c.title,content:bo,sections:bq}]).filter(a=>"empty"===a.reason||"table_only"===a.reason),0===br.length&&(bG.quality.repairedCount+=1));let bs=cG({chapter:c,content:bo,evidence:P}),bt=(0,aD.V7)(bo),bu=aj(bo),bv=bu.length>0?bu:c.sections||[],bD=(0,aE.qK)(bo,[{title:c.title,content:bo,sections:bv}]).map(a=>a.message),bF=bs.slice(0,6).map(a=>`小节事实密度需优化:${a}`),bH=[...bY({chapter:{...c,sections:bv},content:bo,missingFacts:R,targetWords:aB}),...bD,...bF],bI=function(a,b,c=[]){return a<=0||c.some(a=>/未返回有效章节正文|生成失败/u.test(a))?"failed":c.length>0?"fallback":"success"}(bt,0,bH);g=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:bI,message:bL(`${(0,Q.GQ)(c.title)} 已由大模型首轮成稿${bp>0?`并定向扩写 ${bp} 轮`:""}:当前 ${bt} 字 / 目标 ${Math.floor(.95*aB)} 字${"success"!==bI?`;风险:${bH.join("、")||"篇幅未达标"}`:""}`,i),details:[`达标率:${Math.round(bt/Math.max(1,Math.floor(.95*aB))*100)}%`,...$,`二级小节:${bv.length} 个`,`扩写轮次:${bp}`],progress:{current:h+1,total:bh.length,label:"success"===bI?"章节达标":"章节风险"}},{subtitle:(0,Q.GQ)(c.title),order:h}),aR[h]=g;let bM={id:c.id,title:c.title,content:bo,evidence:P,missingFacts:R,sections:bv};aI[h]=bM,C=aI.filter(a=>!!a),F(C);let bO=bY({chapter:c,content:bo,missingFacts:R,targetWords:aB}),bP=(0,aE.Ff)(bO);bG.quality.blockingCount+=bP.blocking,bG.quality.importantCount+=bP.important,bG.quality.minorCount+=bP.minor}catch(b){if(a.signal?.aborted)throw b;console.error(`[gen] chapter ${c.title} failed:`,b),aF.push(`${c.title}:${b instanceof Error?b.message:"生成失败"}`),aR[h]=bJ({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,Q.GQ)(c.title)} 生成失败`},{subtitle:(0,Q.GQ)(c.title),order:h})}g&&(N[j]=g),F(C)}))}C=aI.filter(a=>!!a),aH.push(...aR.filter(a=>!!a));let b6=C.flatMap(a=>a.evidence||[]);if(b6.length>0){av.push(...b6);let a=J(av,{maxChars:Math.max(5e4,9e3*bh.length),preservePinned:!0});av.splice(0,av.length,...a)}if(0===C.length)throw Error(`章节生成未完成:${aF.join(";")||"没有生成任何有效章节"}`);if(U&&C.length<bh.length)throw Error(`OUTLINE 指定 ${bh.length} 章,实际只生成 ${C.length} 章:${aF.join(";")||"部分章节未生成"}`);(0,aG.Te)(a.signal),bK(N,bJ({type:"file_understanding",roleId:"multimodal-files",status:"running",message:"正在理解多模态参考文件"},{subtitle:"多模态参考文件"})),F(C);let b7={stage:{type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"文件理解跳过"},notes:[]};try{b7=await ce(v,av,a.signal)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] fileUnderstanding failed:",b)}for(let b of(bK(N,b7.stage),F(C),(0,aG.Te)(a.signal),b7.notes))av.push({chapterId:"multimodal-file-understanding",filePath:"多模态模型文件理解结果",score:1,content:b,roleId:"multimodal-files",processingType:"reference",source:"multimodal"});let b8=J(av,{maxItems:Math.max(48,10*bh.length),maxChars:Math.max(52e3,9e3*bh.length),preservePinned:!0});av.splice(0,av.length,...b8);let b9=function(a,b,c){let d={};for(let e of(0,E.Uy)(a,c)){let a=b.find(a=>(0,E.I2)(a,e));a&&(d[e.name]=`${a.content.replace(/\s+/gu," ")}(来源:${a.filePath},角色:${a.roleId||"未标注"})`)}return d}(z,av,Y);for(let a of aZ)for(let b of a.facts)b9[b.key]=`${(0,aG.lG)(b.value)}(来源:${b.sourceFile},角色:${b.roleId})`;let ca=bl(av,z,Y),cb=br(av),cc=bs(av,Z),cd=aZ.flatMap(a=>a.facts.map(a=>({key:a.key,value:(0,aG.lG)(a.value),sourceFile:a.sourceFile,roleId:a.roleId,confidence:.9}))),cg={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/角色事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if(function(a,b,c){let d=(0,E.Uy)(b,c).filter(a=>a.required);return 0===d.length?a.filter(a=>a.confidence>=.75&&(0,aG.lG)(a.value).trim().length>=2).length<12:d.filter(b=>a.some(a=>(function(a,b){let c=(0,aG.lG)(a.value).trim();if(!c||c.length<2||c.length>220&&a.confidence<.8)return!1;let d=`${a.fieldId||""} ${a.fieldName||""} ${a.key}`.toLowerCase();return!!(d.includes(b.id.toLowerCase())||d.includes(b.name.toLowerCase()))&&("project_basic_fact"===a.roleId||a.roleId?.startsWith("role-")||a.sourceRef?.filePath?a.confidence>=.55:a.confidence>=.75)})(a,b))).length/d.length<.9}([...cd,...ca,...cb,...cc],z,Y)){let b=J(av,{maxItems:48,maxChars:45e3,preservePinned:!0});try{cg=await bm(b,ak,z,Y,a.signal)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] fact extraction failed:",b)}}(0,aG.Te)(a.signal);let ch=function(a,b){let c=b.find(a=>a.filePath)?.filePath||"";return c?a.map(a=>a.sourceFile?a:{...a,sourceFile:c,sourceRef:{filePath:c,roleId:a.sourceRef?.roleId||a.roleId,processingType:a.sourceRef?.processingType||a.processingType,sectionTitle:a.sourceRef?.sectionTitle,chunkIndex:a.sourceRef?.chunkIndex,cellRange:a.sourceRef?.cellRange}}):a}([...cd,...ca,...cb,...cc,...cg.facts],av);for(let a of(bK(N,b7.stage),cg.stages))bK(N,a);F();let ci=bk(av),cj=av.filter(a=>"pinned-evidence"===a.source).length,cl=av.filter(a=>"pinned-evidence"!==a.source&&"bound-file"!==a.source).length,cv=bJ({type:"reference",roleId:"quality-enhancement",status:av.length>0?"success":"skipped",message:`增强贡献:知识库证据 ${av.length} 条,人工确认/固定证据 ${cj} 条,自动检索证据 ${cl} 条`},{subtitle:"证据与上下文增强"});for(let a of(N.push(cv),F(),ch))b9[a.key]=`${(0,aG.lG)(a.value)}(来源:${a.sourceFile},角色:${a.roleId})`;let cw=new Map;for(let a of av)cw.set(a.filePath,(cw.get(a.filePath)??0)+1);let cx=new Map;for(let a of av)cx.set(a.source||"unknown",(cx.get(a.source||"unknown")??0)+1);let cy=[...cw.entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b})),cz=bD(ch,ci,aA,Y,Z),cA=C.map(a=>{let b=Y.chapterRules.find(b=>b.id===a.id||b.title===a.title),c=(b?.requiredFactIds||[]).map(a=>Y.factFields.find(b=>b.id===a)?.name).filter(Boolean),d=[...new Set([...a.missingFacts||[],...c].filter(Boolean))],e=d.filter(b=>!a.missingFacts.includes(b)),f=d.filter(b=>a.missingFacts.includes(b)),g=+(a.evidence.length>0),h=d.length?e.length/d.length:1;return{chapterId:a.id,title:a.title,requiredFacts:d,coveredFacts:e,missingFacts:f,evidenceCount:a.evidence.length,readinessRate:Math.min(1,.7*h+.3*g)}}),cB=function(a,b=[],c){let e=[],f=[];for(let b of a)0===b.evidence.length&&e.push(`${b.title} 未检索到资料证据`),b.content.length<80&&e.push(`${b.title} 内容较短,建议人工补充或重新生成`);c&&a.length<c.chapters.length&&f.push(`章节生成不完整:已生成 ${a.length}/${c.chapters.length} 章`),c&&0===(0,d.zY)(c).length&&f.push("模板未绑定任何提示词");let g=new Set(b.map(a=>a.roleId));return c?.fileBindings?.some(a=>"rule"===a.roleId)&&!g.has("rule")&&e.push("rule 角色未抽取到结构化事实"),{passed:0===f.length,warnings:e,errors:f}}(C,ch,z);cB.warnings=[...cB.warnings,..._.warnings],cB.errors=[...cB.errors,..._.blockingIssues];let cC=aZ.flatMap(a=>a.warnings.map(a=>({level:/结构化事实读取不足|结构化章节读取不足|兜底|片段/u.test(a)?"info":"warning",message:a,suggestion:"这是资料抽取诊断,不代表已抽取到的可靠参数不可用;生成时仍应优先使用绑定资料中的可靠参数。"}))).filter(a=>!de(a)),cD=aM(function(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}(cB,cz,C),function(a){let b=[];for(let c of a)0===c.evidenceCount?b.push({level:"error",message:`章节缺少证据:${c.title}`,suggestion:"请补充对应绑定材料或调整模板章节检索词。"}):c.readinessRate<.5&&b.push({level:"warning",message:`章节事实覆盖率较低:${c.title} ${Math.round(100*c.readinessRate)}%`,suggestion:"建议补充章节 requiredFacts 或绑定材料证据。"});return b}(cA),cC),cE=bW(aZ,z),cF=Date.now(),cH=(0,aD.V7)(C.map(a=>a.content).join("\n\n"));bK(N,bJ({type:"validation",roleId:"document-budget",status:"running",message:`正在进行全文预算校准:当前 ${cH} 字`,details:[`章节数:${C.length}`,`目标:${bE.targetChars||bE.targetPages||"按章节深度"}`],progress:{current:1,total:2,label:"预算校准"}},{subtitle:"文档预算"})),F(C);let cI=bF.enableDocumentBudgetExpansion?await I(()=>cS({template:z,chapters:C,budget:bE,promptTexts:ai,requirement:a.requirement,forbidDrawingImages:cE,signal:a.signal,onRoundProgress:(a,b)=>{C.splice(0,C.length,...a),bK(N,bJ({type:"validation",roleId:"document-budget",status:"running",message:`正在进行全文预算校准:第 ${b.round}/${b.maxRounds} 轮,当前 ${b.totalChars} 字,新增 ${b.addedChars} 字`,details:[`章节数:${a.length}`,`目标:${bE.targetChars||bE.targetPages||"按章节深度"}`],progress:{current:Math.min(b.round+1,b.maxRounds),total:b.maxRounds+1,label:"预算校准"}},{subtitle:"文档预算"})),F(C)}})):C;C.splice(0,C.length,...cI);let cM=C.map(a=>a.content).join("\n\n"),cN=dn(C,ch,cM);cN.patchedCount>0&&(C.splice(0,C.length,...cN.chapters),cD=[...cD,{level:"info",message:`已自动补写未落位事实 ${cN.patchedCount} 项`,suggestion:"补写仅使用本项目资料明确事实,未补写商务敏感信息或系统暂未确认内容。"}]);let cO=(0,aD.fW)(bE,C.map(a=>a.content).join("\n\n")),cP=[bE.targetChars?`目标 ${bE.targetChars} 字${bE.minChars||bE.maxChars?`(区间 ${bE.minChars||0}-${bE.maxChars||"∞"} 字)`:""}`:void 0,bE.targetPages?`目标 ${bE.targetPages} 页${bE.minPages||bE.maxPages?`(区间 ${bE.minPages||0}-${bE.maxPages||"∞"} 页)`:""}`:void 0].filter(Boolean).join(" / ")||"默认章节深度";bK(N,bJ({type:"validation",roleId:"document-budget",status:bE.maxChars&&cO.currentChars>bE.maxChars||bE.minChars&&cO.currentChars<bE.minChars?"fallback":"success",message:bL(`文档预算:当前 ${cO.currentChars} 字,新增 ${Math.max(0,cO.currentChars-cH)} 字,预计 ${cO.estimatedPages} 页;${cP}`,cF)},{subtitle:"文档预算"})),F(C);let cY=aH.filter(a=>"chapter_generation"===a.type&&"fallback"===a.status).length,c_=Math.max(0,bh.length-C.length),c1=[...cY>0?[{level:"info",message:`章节生成存在补充完善:${cY} 章`,suggestion:"已保留章节成果;如需更高质量可复核对应章节,但不阻断导出。"}]:[],...c_>0?[{level:"error",message:`部分章节生成失败:${c_} 章`,suggestion:aF.join(";")||"请检查模型调用、知识库检索和事实抽取配置后重新生成失败章节。"}]:[]],c2=C.flatMap(a=>{let b=bh.find(b=>b.id===a.id);if(!b)return[];let c=cG({chapter:b,content:a.content,evidence:a.evidence||[]});return c.length>0?[{level:"warning",message:`${(0,Q.GQ)(a.title)} 小节知识库事实或量化参数落位可继续优化:${c.slice(0,5).join(";")}`,suggestion:"建议扩大本地知识库检索并定向补写对应小节,优先使用清单、图纸、招标要求中的原始事实、规格、数量、标准和工期参数。"}]:[]}),c3=(cD=aM(cD,c1,c2)).filter(a=>"error"===a.level&&(0,aE.Nz)(a)).length,c4=[...N];bK(c4,bJ({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${av.length} 条,来源文件 ${cy.length} 份,结构化事实 ${ch.length} 条`,details:[`证据类型:${[...cx.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${as.usableChunkCount} 条,待索引 ${as.pendingJobs} 个,向量 ${as.vectorStatus?.status||"unknown"}`,cN.patchedCount>0?`自动补写事实:${cN.patchedCount}/${cN.missingCount}`:`事实落位补写:0/${cN.missingCount}`]},{subtitle:"资料使用报告"})),bK(c4,bJ({type:"reference",roleId:"web-research-report",status:ax.enabled?"success":"skipped",message:ax.enabled?`联网增强:检索章节 ${new Set(ax.chapters).size} 个,查询 ${ax.queries.length} 个,使用公开资料 ${ax.evidenceCount} 条`:"联网增强未开启",details:ax.enabled?[`检索主题:${[...new Set(ax.queries)].join(";")||"无"}`,`过滤结果:${ax.filteredCount} 条`,"公开资料仅用于通用规范、政策、工艺和措施补充,不作为项目事实来源"]:["可在模型配置中开启联网增强"]},{subtitle:"联网增强报告"})),bK(c4,bJ({type:"validation",roleId:"document-workflow",status:c3>0?"failed":"success",message:`阻断 ${c3},错误 ${cB.errors.length},警告 ${cB.warnings.length}`},{subtitle:"最终规范校验"})),bK(c4,bJ({type:"formatting",roleId:"document-workflow",status:"success",message:"已生成正式排版 Markdown"})),bK(c4,bJ({type:"export_ready",roleId:"document-workflow",status:c3>0?"failed":"success",message:c3>0?"导出门禁未通过,请完成阻断问题修复后再导出":"已准备好导出 Markdown/HTML/DOCX/PDF"}));let c5={templateId:z.id,templateName:z.name,title:z.outputTitle,requirement:a.requirement||"",projectRoot:v,projectId:w,exportSettings:z.exportSettings,generationSettings:z.generationSettings,facts:b9,structuredFacts:ch,factsModel:cz,chapters:C,sources:cy,missingItems:[...new Set(aA)],validation:cB,validationIssues:cD,executionStages:c4,exportGate:{passed:0===c3,blockingIssues:cD.filter(a=>"error"===a.level&&(0,aE.Nz)(a)),checklist:[]},assets:[],partialChapters:C.map(a=>({id:a.id,title:a.title,chars:(0,aD.V7)(a.content),status:cW(a,bE.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:C,generatedAt:Date.now()},c6=aC(c5,{forbidDrawingImages:cE,promptRules:ag});if("1"!==process.env.DOCUMENT_ENABLE_POST_EXPORT_REVIEW){let b=aB(c6,C,{forbidDrawingImages:cE,promptRules:ag}).chapters.map(a=>{let b=bh.find(b=>b.id===a.id)||a;return{...a,content:dh(a.content,b)}}),c="",d=(a,b)=>aM(cD.filter(a=>!de(a)&&"error"!==a.level&&!/目录与正文不一致|表格分隔线位置不规范|正文存在过长段落|正文存在非正式章二级标题|正文残留资料页码|小节只有标题或表格无正文/u.test(a.message)),x({markdown:a,spec:Y,summary:W}),B({markdown:a,facts:ch,summary:W,profile:Z}),y(a,W),dc(a,ch),a2({markdown:a,chapters:b,factsModel:cz,template:z,promptBindings:P,promptDocumentRules:ag}),(0,aD.PE)(z.generationSettings||z.exportSettings,a).filter(a=>!(bE.minPages&&/低于目标页数/u.test(a.message))),(0,aD.ty)(bE,a)),e=[],f=()=>{var a;e=aN(d(c=db(c0(dd(aB(aC({...c5,chapters:b},{forbidDrawingImages:cE,promptRules:ag}),b,{forbidDrawingImages:cE,promptRules:ag}).markdown),ch),ch),b)),e=aN(d(c=dg(c,e).replace(/^##\s+(.+)$/gmu,(a,b)=>{let c=String(b||"").trim();return"目录"===c||/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(c)?a:`### ${c}`}),b)),a=c,e=aN(d(c=e.some(a=>/小节内容补写未完成|小节只有标题或表格无正文|空小节/u.test(a.message))?`${a.trim()}
199
+ ${b.join("\n")}`:""}(ab)}),ao={total:ab.length,satisfied:ab.filter(a=>"satisfied"===a.status).length,missing:ab.filter(a=>"missing"===a.status).length,lowConfidence:ab.filter(a=>"low_confidence"===a.status).length};for(let a of ac)aA.push(`${c.title}:事实需求未确认 ${a}`);let as=Y?.chapterRules.find(a=>a.id===c.id||a.title===c.title),ay=bE.chapterTargets.get(c.id)||1200,az=Math.max(3500,Number(process.env.DOCUMENT_LONGFORM_INITIAL_CHAPTER_CAP||8e3)),aB=bE.longformStrict?Math.min(ay,az):ay,aC=Math.ceil(aB*(bE.maxChars?1.1:1.18)),aF=bE.targetChars?Math.min(1800,Math.max(600,Math.floor(.5*aB))):1200,aH=Math.max(Math.min(d?.minWords||0,aB),Math.min(as?.minWords||0,aB),Math.min(Y?.dynamicChapterRule.minWordsPerChapter||0,aB),Math.floor(.78*aB),aF),aJ=cK(aH,aB),aK=Math.min(aB,6e3),aL=Math.max(900,Math.min(aB,Math.ceil(.55*aB),aK)),aM=Math.max(450,Math.min(aH,Math.floor(.72*aL))),aN=Math.max(aL+300,Math.min(aC,Math.ceil(1.25*aL))),aO=cK(aM,aL),aP=Math.min(cL(aL),18e4),aQ=Math.max(900,Math.min(aL,3600)),aT=Math.max(450,Math.min(aM,Math.floor(.72*aQ))),aU=Math.max(aQ+300,Math.min(aC,Math.ceil(1.2*aQ))),aV=cK(aT,aQ),aX=Math.min(cL(aQ),15e4),a$=c.sections?.filter(Boolean).length||0,a0=/[、,,;;]/u.test(c.title),a2=Math.max(4,Number(process.env.DOCUMENT_SECTION_FIRST_MAX_SECTIONS||8)),a3=0!==Number(process.env.DOCUMENT_SECTION_FIRST_GENERATION??0)&&a$>=2&&a$<=a2&&(bE.longformStrict||!a0);N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:a3?`${(0,Q.GQ)(c.title)} 正在按小节并发成稿`:`${(0,Q.GQ)(c.title)} 正在整章一次成稿`,details:a3?[...$,`有效证据:${P.length} 条`,`事实需求:${ao.satisfied}/${ao.total} 已满足,缺失 ${ao.missing},低置信 ${ao.lowConfidence}`,`首轮质量目标:约 ${aB} 字${ay!==aB?`,总预算分配约 ${ay} 字`:""},上限约 ${aC} 字`,`规划小节:${c.sections?.length||0} 个`,"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...$,`有效证据:${P.length} 条`,`事实需求:${ao.satisfied}/${ao.total} 已满足,缺失 ${ao.missing},低置信 ${ao.lowConfidence}`,`目标字数:约 ${aB} 字,上限约 ${aC} 字`,`规划小节:${a$} 个${a$>a2?",超过小节并发上限,改用整章稳定成稿":""}`,"首次生成必须覆盖章节结构、小节、事实和目标篇幅,后置修复仅兜底"],progress:{current:h+1,total:bh.length,label:a3?"小节并发":"整章成稿"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F();let a4=a3?Math.min(cL(aB)+3e4,33e4):Math.min(cL(aB),18e4),a6=a3?await I(()=>bN(bG,`chapter-section-draft:${c.id}`,()=>bi(b=>cJ({template:z,chapter:c,evidence:P,missingFacts:R,promptTexts:X,projectContext:bn,requirement:a.requirement,roleContext:V,targetWords:aB,maxWords:aC,forbidDrawingImages:U,factCoverageContext:am,projectRoot:v,modelName:a_,fileRolesHash:a5,allowPartialResult:!1,sectionEvidenceProvider:a=>du({manager:A,projectRoot:v,chapter:c,sectionTitle:a,scopedFilePaths:t,fileRoleByPath:ap,fileProcessingByPath:aq,signal:b}),diagnostics:bG,signal:b}),a4,a.signal))):await I(()=>bN(bG,`chapter-draft:${c.id}`,()=>bi(b=>cf(z,c,P,R,X,bn,a.requirement,V,{forbidDrawingImages:U,minWords:aH,targetWords:aB,maxWords:aC,maxTokens:aJ,factCoverageContext:am,signal:b}),cL(aB),a.signal)));if(!a6&&a3)throw N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"failed",message:`${(0,Q.GQ)(c.title)} 小节并发未在限定时间内返回,已跳过整章重试并标记为章节阻断`,details:["小节优先模式不再执行整章重试,避免单章长时间空等;请优先重试失败小节或降低目标篇幅。"],progress:{current:h+1,total:bh.length,label:"小节超时"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),Error(`${c.title} 小节并发超时,已跳过整章重试`);a6||(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 整章成稿未完整返回,正在执行整章重试生成`,details:[`目标字数:约 ${aB} 字`,`有效证据:${P.length} 条`],progress:{current:h+1,total:bh.length,label:"整章重试"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),a6=await I(()=>bN(bG,`chapter-draft-fallback:${c.id}`,()=>bi(b=>cf(z,c,P,R,X,bn,a.requirement,V,{forbidDrawingImages:U,minWords:aM,targetWords:aL,maxWords:aN,maxTokens:aO,factCoverageContext:am,signal:b}),aP,a.signal)))),(0,aG.Te)(a.signal),a6||(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 正在压缩上下文后重试生成`,details:["已压缩证据与上下文后重新请求模型生成",`目标字数:约 ${aB} 字`],progress:{current:h+1,total:bh.length,label:"紧凑重试"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),a6=await I(()=>bN(bG,`chapter-draft-compact-fallback:${c.id}`,()=>bi(b=>cf(z,c,P,R,X,bn,a.requirement,V,{forbidDrawingImages:U,minWords:aT,targetWords:aQ,maxWords:aU,maxTokens:aV,factCoverageContext:am,signal:b}),aX,a.signal)))),(0,aG.Te)(a.signal),a6||(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"fallback",message:`${(0,Q.GQ)(c.title)} 大模型未返回有效正文,已使用真实证据构建可审查草稿`,details:[`LLM 最近错误:${bG.llm.lastError||"空响应或超时"}`,`证据条数:${P.length}`],progress:{current:h+1,total:bh.length,label:"证据兜底草稿"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),a6=function(a,b,c){var d;let e=(a.sections&&a.sections.length?a.sections:(d=a.title,/工期|质量|安全/u.test(d)?["工期目标与进度控制","质量管理体系与验收控制","安全生产责任体系","关键工序穿插协调","检查整改与闭环管理","资料归档与交付保障"]:/人、材、机|人材机|劳动力|材料|机械/u.test(d)?["劳动力组织与动态调配","材料采购进场与验收","机械设备配置与调度","资源供应风险控制","现场协调与保障措施","资料记录与闭环管理"]:/重点难点|危大/u.test(d)?["工程重点难点识别","危大工程管理体系","专项方案与技术交底","现场风险控制措施","监测检查与应急处置","验收销项与资料闭合"]:["总体部署与责任分工","实施流程与关键控制","资源配置与资料依据","质量安全与风险控制","检查验收与闭环管理","资料记录与成果移交"])).slice(0,7),f=b.flatMap(a=>a.content.split(/\r?\n/u).map(a=>a.trim()).filter(Boolean)).filter(a=>a.length>=8&&a.length<=180&&!/^(?:资料类型|PDF\s*第|第\d+页|OCR|识别错误|乱码)/iu.test(a)).slice(0,36),g=e.map((a,b)=>{let c=f.slice(4*b,4*b+4),d=c.length?`结合资料明确的${c.join("、")}等内容,`:"结合招标文件、图纸设计说明、工程量清单和现场实施条件,";return`### ${a}
200
+
201
+ ${d}项目部应围绕本节管理目标建立责任分工、技术交底、资源投入、过程检查和验收复核机制。实施过程中应将工期、质量、安全文明、材料设备、劳动力组织和资料归档要求同步纳入现场管理,确保各项措施能够转化为可执行、可检查、可追溯的施工控制动作。
202
+
203
+ 对涉及专业穿插、作业面移交、材料进场、机械设备使用、隐蔽验收和成品保护的事项,应在施工前明确控制标准,在施工中落实旁站检查和问题整改,在完成后形成复核记录。各岗位应按项目总体目标开展协调,避免因信息传递、资源供应或工序衔接不及时影响施工组织设计的实施效果。`}).join("\n\n"),h=(0,aD.V7)(g)<Math.min(c,5200)?"\n\n### 履约检查与闭环管理\n\n项目经理部应将本章措施纳入周计划、日协调和专项检查机制,对关键线路、资源保障、质量验收、安全文明、资料归档等事项进行持续跟踪。发现偏差时,应明确责任人、整改期限和复核要求,形成问题发现、整改落实、复查销项和资料留痕的闭环管理链条,确保本章内容服务于正式投标响应和后续现场履约。":"";return dh(`## ${a.title}
204
+
205
+ ${g}${h}`,a)}(c,P,aL));let a7=a6,ba=aj(a7),bb=ba.length>=Math.min(3,c.sections?.length||3)?{...c,sections:ba}:c,bd=c$(a7,bb),bg=0,bj=bd.map(a=>`${a.sectionTitle}:${a.reason}:${a.bodyLength}`).join("|");for(;bd.length>0;){bg+=1,N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 存在 ${bd.length} 个小节缺口,正在按目标缺口强制补写`,details:bd.map(a=>a.message),progress:{current:h+1,total:bh.length,label:`小节补写第 ${bg} 轮`}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C);let b=a7,d=await I(()=>bN(bG,`chapter-section-repair:${c.id}:${bg}`,()=>cQ({template:z,chapter:c,content:b,evidence:P,missingFacts:R,promptTexts:X,projectContext:bn,requirement:a.requirement,roleContext:V,targetWords:aB,maxWords:aC,forbidDrawingImages:U,factCoverageContext:am,forcedSections:bd,signal:a.signal})));d?.trim()&&(a7=d);let e=(bd=c$(a7,bb)).map(a=>`${a.sectionTitle}:${a.reason}:${a.bodyLength}`).join("|"),f=e!==bj;if(0===bd.length||!f)break;bj=e}bd.length>0&&(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"failed",message:`${(0,Q.GQ)(c.title)} 小节补齐仍未完全达标,已标记为阻断问题`,details:bd.map(a=>a.message),progress:{current:h+1,total:bh.length,label:"小节未达标"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C));let bk=bY({chapter:c,content:a7,missingFacts:R,targetWords:aB}),bl=(0,aE.Ff)(bk);bG.quality.blockingCount+=bl.blocking,bG.quality.importantCount+=bl.important,bG.quality.minorCount+=bl.minor;let bm=bQ(bk);if(bm.length>0){let b=a7;N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 正在根据质量问题修复章节:${bm.length} 个阻断问题`,details:bm,progress:{current:h+1,total:bh.length,label:"章节修复"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C);let d=await I(()=>bN(bG,`chapter-repair:${c.id}`,()=>bZ({template:z,chapter:{id:c.id,title:c.title,content:b,evidence:P,missingFacts:[...R,...ac.map(a=>`事实需求未确认:${a}`)],sections:c.sections||[]},issues:bm,promptTexts:X,requirement:a.requirement,forbidDrawingImages:U,diagnostics:bG,signal:a.signal})));a7=d.content,d.appliedCount>0&&(bG.quality.repairedCount+=1),(0,aG.Te)(a.signal)}if(!a7.trim())throw Error(`${(0,Q.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);let bo=a7,bp=0;if((0,aD.V7)(bo)<Math.floor(.82*aB)||bQ(bY({chapter:c,content:bo,missingFacts:R,targetWords:aB})).length>0){N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 首次成稿未达定稿门槛,正在定向扩写`,details:[`当前 ${(0,aD.V7)(bo)} 字 / 目标 ${Math.floor(.95*aB)} 字`,`章节并发:${b5}`],progress:{current:h+1,total:bh.length,label:"章节扩写"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C);let b=await I(()=>bN(bG,`chapter-expand:${c.id}`,()=>cR({template:z,chapter:c,content:a7,evidence:P,promptTexts:X,requirement:a.requirement,roleContext:V,targetChars:Math.floor(.95*aB),maxChars:aC,forbidDrawingImages:U,maxTokens:Math.min(aJ,aO),signal:a.signal})));bo=b.content,bp=b.rounds}bo=dh(bo,c);let bq=aj(bo),br=(0,aE.yw)(bo,[{title:c.title,content:bo,sections:bq}]).filter(a=>"empty"===a.reason||"table_only"===a.reason);!function(a,b){try{let c=["chapter-generation-failure.env","document-generation-timeout.env"].map(b=>e.join(a,".dbg",b)).find(a=>f.existsSync(a));if(!c)return;let d=Object.fromEntries(f.readFileSync(c,"utf8").split(/\r?\n/u).map(a=>a.split("=")).filter(a=>a.length>=2).map(([a,...b])=>[a,b.join("=")])),g=d.DEBUG_SERVER_URL;if(!g)return;fetch(g,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({sessionId:d.DEBUG_SESSION_ID||"chapter-generation-failure",runId:"pre",ts:Date.now(),...b})}).catch(()=>void 0)}catch{}}(v,{event:"section-repair-check",hypothesisId:"H1",chapterId:c.id,chapterTitle:c.title,gapCount:br.length,gaps:br.slice(0,10).map(a=>({title:a.sectionTitle,reason:a.reason,message:a.message})),contentChars:(0,aD.V7)(bo),targetWords:aB}),br.length>0&&(N[j]=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:"running",message:`${(0,Q.GQ)(c.title)} 正在小节级定向补写 ${br.length} 个未达标小节`,details:br.slice(0,8).map(a=>a.message),progress:{current:h+1,total:bh.length,label:"小节补写"}},{subtitle:(0,Q.GQ)(c.title),order:h}),F(C),bo=await I(()=>bN(bG,`section-repair:${c.id}`,()=>cQ({template:z,chapter:c,content:bo,evidence:P,missingFacts:R,promptTexts:X,projectContext:bn,requirement:a.requirement,roleContext:V,targetWords:Math.max(1200,Math.floor(.35*aB)),maxWords:Math.min(aC,Math.max(2400,Math.floor(.55*aB))),forbidDrawingImages:U,factCoverageContext:am,forcedSections:br,signal:a.signal}))),bo=dh(bo,c),bq=aj(bo),br=(0,aE.yw)(bo,[{title:c.title,content:bo,sections:bq}]).filter(a=>"empty"===a.reason||"table_only"===a.reason),0===br.length&&(bG.quality.repairedCount+=1));let bs=cG({chapter:c,content:bo,evidence:P}),bt=(0,aD.V7)(bo),bu=aj(bo),bv=bu.length>0?bu:c.sections||[],bD=(0,aE.qK)(bo,[{title:c.title,content:bo,sections:bv}]).map(a=>a.message),bF=bs.slice(0,6).map(a=>`小节事实密度需优化:${a}`),bH=[...bY({chapter:{...c,sections:bv},content:bo,missingFacts:R,targetWords:aB}),...bD,...bF],bI=function(a,b,c=[]){return a<=0||c.some(a=>/未返回有效章节正文|生成失败/u.test(a))?"failed":c.length>0?"fallback":"success"}(bt,0,bH);g=bJ({type:"chapter_generation",roleId:"chapter_generation",promptId:W.primaryPromptId,status:bI,message:bL(`${(0,Q.GQ)(c.title)} 已由大模型首轮成稿${bp>0?`并定向扩写 ${bp} 轮`:""}:当前 ${bt} 字 / 目标 ${Math.floor(.95*aB)} 字${"success"!==bI?`;风险:${bH.join("、")||"篇幅未达标"}`:""}`,i),details:[`达标率:${Math.round(bt/Math.max(1,Math.floor(.95*aB))*100)}%`,...$,`二级小节:${bv.length} 个`,`扩写轮次:${bp}`],progress:{current:h+1,total:bh.length,label:"success"===bI?"章节达标":"章节风险"}},{subtitle:(0,Q.GQ)(c.title),order:h}),aR[h]=g;let bM={id:c.id,title:c.title,content:bo,evidence:P,missingFacts:R,sections:bv};aI[h]=bM,C=aI.filter(a=>!!a),F(C);let bO=bY({chapter:c,content:bo,missingFacts:R,targetWords:aB}),bP=(0,aE.Ff)(bO);bG.quality.blockingCount+=bP.blocking,bG.quality.importantCount+=bP.important,bG.quality.minorCount+=bP.minor}catch(b){if(a.signal?.aborted)throw b;console.error(`[gen] chapter ${c.title} failed:`,b),aF.push(`${c.title}:${b instanceof Error?b.message:"生成失败"}`),aR[h]=bJ({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,Q.GQ)(c.title)} 生成失败`},{subtitle:(0,Q.GQ)(c.title),order:h})}g&&(N[j]=g),F(C)}))}C=aI.filter(a=>!!a),aH.push(...aR.filter(a=>!!a));let b6=C.flatMap(a=>a.evidence||[]);if(b6.length>0){av.push(...b6);let a=J(av,{maxChars:Math.max(5e4,9e3*bh.length),preservePinned:!0});av.splice(0,av.length,...a)}if(0===C.length)throw Error(`章节生成未完成:${aF.join(";")||"没有生成任何有效章节"}`);if(U&&C.length<bh.length)throw Error(`OUTLINE 指定 ${bh.length} 章,实际只生成 ${C.length} 章:${aF.join(";")||"部分章节未生成"}`);(0,aG.Te)(a.signal),bK(N,bJ({type:"file_understanding",roleId:"multimodal-files",status:"running",message:"正在理解多模态参考文件"},{subtitle:"多模态参考文件"})),F(C);let b7={stage:{type:"file_understanding",roleId:"multimodal-files",status:"skipped",message:"文件理解跳过"},notes:[]};try{b7=await ce(v,av,a.signal)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] fileUnderstanding failed:",b)}for(let b of(bK(N,b7.stage),F(C),(0,aG.Te)(a.signal),b7.notes))av.push({chapterId:"multimodal-file-understanding",filePath:"多模态模型文件理解结果",score:1,content:b,roleId:"multimodal-files",processingType:"reference",source:"multimodal"});let b8=J(av,{maxItems:Math.max(48,10*bh.length),maxChars:Math.max(52e3,9e3*bh.length),preservePinned:!0});av.splice(0,av.length,...b8);let b9=function(a,b,c){let d={};for(let e of(0,E.Uy)(a,c)){let a=b.find(a=>(0,E.I2)(a,e));a&&(d[e.name]=`${a.content.replace(/\s+/gu," ")}(来源:${a.filePath},角色:${a.roleId||"未标注"})`)}return d}(z,av,Y);for(let a of aZ)for(let b of a.facts)b9[b.key]=`${(0,aG.lG)(b.value)}(来源:${b.sourceFile},角色:${b.roleId})`;let ca=bl(av,z,Y),cb=br(av),cc=bs(av,Z),cd=aZ.flatMap(a=>a.facts.map(a=>({key:a.key,value:(0,aG.lG)(a.value),sourceFile:a.sourceFile,roleId:a.roleId,confidence:.9}))),cg={facts:[],stages:[{type:"fact_extraction",roleId:"llm-json",status:"skipped",message:"已有本地/角色事实覆盖主要必需字段,跳过 LLM 全量事实抽取"}]};if(function(a,b,c){let d=(0,E.Uy)(b,c).filter(a=>a.required);return 0===d.length?a.filter(a=>a.confidence>=.75&&(0,aG.lG)(a.value).trim().length>=2).length<12:d.filter(b=>a.some(a=>(function(a,b){let c=(0,aG.lG)(a.value).trim();if(!c||c.length<2||c.length>220&&a.confidence<.8)return!1;let d=`${a.fieldId||""} ${a.fieldName||""} ${a.key}`.toLowerCase();return!!(d.includes(b.id.toLowerCase())||d.includes(b.name.toLowerCase()))&&("project_basic_fact"===a.roleId||a.roleId?.startsWith("role-")||a.sourceRef?.filePath?a.confidence>=.55:a.confidence>=.75)})(a,b))).length/d.length<.9}([...cd,...ca,...cb,...cc],z,Y)){let b=J(av,{maxItems:48,maxChars:45e3,preservePinned:!0});try{cg=await bm(b,ak,z,Y,a.signal)}catch(b){if(a.signal?.aborted)throw b;console.error("[gen] fact extraction failed:",b)}}(0,aG.Te)(a.signal);let ch=function(a,b){let c=b.find(a=>a.filePath)?.filePath||"";return c?a.map(a=>a.sourceFile?a:{...a,sourceFile:c,sourceRef:{filePath:c,roleId:a.sourceRef?.roleId||a.roleId,processingType:a.sourceRef?.processingType||a.processingType,sectionTitle:a.sourceRef?.sectionTitle,chunkIndex:a.sourceRef?.chunkIndex,cellRange:a.sourceRef?.cellRange}}):a}([...cd,...ca,...cb,...cc,...cg.facts],av);for(let a of(bK(N,b7.stage),cg.stages))bK(N,a);F();let ci=bk(av),cj=av.filter(a=>"pinned-evidence"===a.source).length,cl=av.filter(a=>"pinned-evidence"!==a.source&&"bound-file"!==a.source).length,cv=bJ({type:"reference",roleId:"quality-enhancement",status:av.length>0?"success":"skipped",message:`增强贡献:知识库证据 ${av.length} 条,人工确认/固定证据 ${cj} 条,自动检索证据 ${cl} 条`},{subtitle:"证据与上下文增强"});for(let a of(N.push(cv),F(),ch))b9[a.key]=`${(0,aG.lG)(a.value)}(来源:${a.sourceFile},角色:${a.roleId})`;let cw=new Map;for(let a of av)cw.set(a.filePath,(cw.get(a.filePath)??0)+1);let cx=new Map;for(let a of av)cx.set(a.source||"unknown",(cx.get(a.source||"unknown")??0)+1);let cy=[...cw.entries()].sort((a,b)=>b[1]-a[1]).map(([a,b])=>({filePath:a,count:b})),cz=bD(ch,ci,aA,Y,Z),cA=C.map(a=>{let b=Y.chapterRules.find(b=>b.id===a.id||b.title===a.title),c=(b?.requiredFactIds||[]).map(a=>Y.factFields.find(b=>b.id===a)?.name).filter(Boolean),d=[...new Set([...a.missingFacts||[],...c].filter(Boolean))],e=d.filter(b=>!a.missingFacts.includes(b)),f=d.filter(b=>a.missingFacts.includes(b)),g=+(a.evidence.length>0),h=d.length?e.length/d.length:1;return{chapterId:a.id,title:a.title,requiredFacts:d,coveredFacts:e,missingFacts:f,evidenceCount:a.evidence.length,readinessRate:Math.min(1,.7*h+.3*g)}}),cB=function(a,b=[],c){let e=[],f=[];for(let b of a)0===b.evidence.length&&e.push(`${b.title} 未检索到资料证据`),b.content.length<80&&e.push(`${b.title} 内容较短,建议人工补充或重新生成`);c&&a.length<c.chapters.length&&f.push(`章节生成不完整:已生成 ${a.length}/${c.chapters.length} 章`),c&&0===(0,d.zY)(c).length&&f.push("模板未绑定任何提示词");let g=new Set(b.map(a=>a.roleId));return c?.fileBindings?.some(a=>"rule"===a.roleId)&&!g.has("rule")&&e.push("rule 角色未抽取到结构化事实"),{passed:0===f.length,warnings:e,errors:f}}(C,ch,z);cB.warnings=[...cB.warnings,..._.warnings],cB.errors=[...cB.errors,..._.blockingIssues];let cC=aZ.flatMap(a=>a.warnings.map(a=>({level:/结构化事实读取不足|结构化章节读取不足|兜底|片段/u.test(a)?"info":"warning",message:a,suggestion:"这是资料抽取诊断,不代表已抽取到的可靠参数不可用;生成时仍应优先使用绑定资料中的可靠参数。"}))).filter(a=>!de(a)),cD=aM(function(a,b,c){let d=[...a.errors.map(a=>({level:"error",message:a,suggestion:"请补充配置或资料后重新生成。"})),...a.warnings.map(a=>({level:"warning",message:a,suggestion:"建议人工确认或补充对应资料。"}))];return c.some(a=>/资料未提供|系统暂未从知识库确认/u.test(a.content))&&d.push({level:"warning",message:"存在系统暂未从知识库确认的章节内容",suggestion:"请检查项目角色配置、文件绑定顺序和事实抽取落位结果。"}),b.conflicts.length>0&&d.push(...b.conflicts.map(a=>({level:"warning",message:a,suggestion:"请根据当前模板绑定的角色、文件证据和用户要求复核取值口径。"}))),d}(cB,cz,C),function(a){let b=[];for(let c of a)0===c.evidenceCount?b.push({level:"error",message:`章节缺少证据:${c.title}`,suggestion:"请补充对应绑定材料或调整模板章节检索词。"}):c.readinessRate<.5&&b.push({level:"warning",message:`章节事实覆盖率较低:${c.title} ${Math.round(100*c.readinessRate)}%`,suggestion:"建议补充章节 requiredFacts 或绑定材料证据。"});return b}(cA),cC),cE=bW(aZ,z),cF=Date.now(),cH=(0,aD.V7)(C.map(a=>a.content).join("\n\n"));bK(N,bJ({type:"validation",roleId:"document-budget",status:"running",message:`正在进行全文预算校准:当前 ${cH} 字`,details:[`章节数:${C.length}`,`目标:${bE.targetChars||bE.targetPages||"按章节深度"}`],progress:{current:1,total:2,label:"预算校准"}},{subtitle:"文档预算"})),F(C);let cI=bF.enableDocumentBudgetExpansion?await I(()=>cS({template:z,chapters:C,budget:bE,promptTexts:ai,requirement:a.requirement,forbidDrawingImages:cE,signal:a.signal,onRoundProgress:(a,b)=>{C.splice(0,C.length,...a),bK(N,bJ({type:"validation",roleId:"document-budget",status:"running",message:`正在进行全文预算校准:第 ${b.round}/${b.maxRounds} 轮,当前 ${b.totalChars} 字,新增 ${b.addedChars} 字`,details:[`章节数:${a.length}`,`目标:${bE.targetChars||bE.targetPages||"按章节深度"}`],progress:{current:Math.min(b.round+1,b.maxRounds),total:b.maxRounds+1,label:"预算校准"}},{subtitle:"文档预算"})),F(C)}})):C;C.splice(0,C.length,...cI);let cM=C.map(a=>a.content).join("\n\n"),cN=dn(C,ch,cM);cN.patchedCount>0&&(C.splice(0,C.length,...cN.chapters),cD=[...cD,{level:"info",message:`已自动补写未落位事实 ${cN.patchedCount} 项`,suggestion:"补写仅使用本项目资料明确事实,未补写商务敏感信息或系统暂未确认内容。"}]);let cO=(0,aD.fW)(bE,C.map(a=>a.content).join("\n\n")),cP=[bE.targetChars?`目标 ${bE.targetChars} 字${bE.minChars||bE.maxChars?`(区间 ${bE.minChars||0}-${bE.maxChars||"∞"} 字)`:""}`:void 0,bE.targetPages?`目标 ${bE.targetPages} 页${bE.minPages||bE.maxPages?`(区间 ${bE.minPages||0}-${bE.maxPages||"∞"} 页)`:""}`:void 0].filter(Boolean).join(" / ")||"默认章节深度";bK(N,bJ({type:"validation",roleId:"document-budget",status:bE.maxChars&&cO.currentChars>bE.maxChars||bE.minChars&&cO.currentChars<bE.minChars?"fallback":"success",message:bL(`文档预算:当前 ${cO.currentChars} 字,新增 ${Math.max(0,cO.currentChars-cH)} 字,预计 ${cO.estimatedPages} 页;${cP}`,cF)},{subtitle:"文档预算"})),F(C);let cY=aH.filter(a=>"chapter_generation"===a.type&&"fallback"===a.status).length,c_=Math.max(0,bh.length-C.length),c1=[...cY>0?[{level:"info",message:`章节生成存在补充完善:${cY} 章`,suggestion:"已保留章节成果;如需更高质量可复核对应章节,但不阻断导出。"}]:[],...c_>0?[{level:"error",message:`部分章节生成失败:${c_} 章`,suggestion:aF.join(";")||"请检查模型调用、知识库检索和事实抽取配置后重新生成失败章节。"}]:[]],c2=C.flatMap(a=>{let b=bh.find(b=>b.id===a.id);if(!b)return[];let c=cG({chapter:b,content:a.content,evidence:a.evidence||[]});return c.length>0?[{level:"warning",message:`${(0,Q.GQ)(a.title)} 小节知识库事实或量化参数落位可继续优化:${c.slice(0,5).join(";")}`,suggestion:"建议扩大本地知识库检索并定向补写对应小节,优先使用清单、图纸、招标要求中的原始事实、规格、数量、标准和工期参数。"}]:[]}),c3=(cD=aM(cD,c1,c2)).filter(a=>"error"===a.level&&(0,aE.Nz)(a)).length,c4=[...N];bK(c4,bJ({type:"reference",roleId:"knowledge-usage-report",status:"success",message:`资料使用报告:证据 ${av.length} 条,来源文件 ${cy.length} 份,结构化事实 ${ch.length} 条`,details:[`证据类型:${[...cx.entries()].map(([a,b])=>`${a} ${b}`).join(",")||"无"}`,`索引健康:可用切片 ${as.usableChunkCount} 条,待索引 ${as.pendingJobs} 个,向量 ${as.vectorStatus?.status||"unknown"}`,cN.patchedCount>0?`自动补写事实:${cN.patchedCount}/${cN.missingCount}`:`事实落位补写:0/${cN.missingCount}`]},{subtitle:"资料使用报告"})),bK(c4,bJ({type:"reference",roleId:"web-research-report",status:ax.enabled?"success":"skipped",message:ax.enabled?`联网增强:检索章节 ${new Set(ax.chapters).size} 个,查询 ${ax.queries.length} 个,使用公开资料 ${ax.evidenceCount} 条`:"联网增强未开启",details:ax.enabled?[`检索主题:${[...new Set(ax.queries)].join(";")||"无"}`,`过滤结果:${ax.filteredCount} 条`,"公开资料仅用于通用规范、政策、工艺和措施补充,不作为项目事实来源"]:["可在模型配置中开启联网增强"]},{subtitle:"联网增强报告"})),bK(c4,bJ({type:"validation",roleId:"document-workflow",status:c3>0?"failed":"success",message:`阻断 ${c3},错误 ${cB.errors.length},警告 ${cB.warnings.length}`},{subtitle:"最终规范校验"})),bK(c4,bJ({type:"formatting",roleId:"document-workflow",status:"success",message:"已生成正式排版 Markdown"})),bK(c4,bJ({type:"export_ready",roleId:"document-workflow",status:c3>0?"failed":"success",message:c3>0?"导出门禁未通过,请完成阻断问题修复后再导出":"已准备好导出 Markdown/HTML/DOCX/PDF"}));let c5={templateId:z.id,templateName:z.name,title:z.outputTitle,requirement:a.requirement||"",projectRoot:v,projectId:w,exportSettings:z.exportSettings,generationSettings:z.generationSettings,facts:b9,structuredFacts:ch,factsModel:cz,chapters:C,sources:cy,missingItems:[...new Set(aA)],validation:cB,validationIssues:cD,executionStages:c4,exportGate:{passed:0===c3,blockingIssues:cD.filter(a=>"error"===a.level&&(0,aE.Nz)(a)),checklist:[]},assets:[],partialChapters:C.map(a=>({id:a.id,title:a.title,chars:(0,aD.V7)(a.content),status:cW(a,bE.chapterTargets.get(a.id)),updatedAt:Date.now()})),checkpointChapters:C,generatedAt:Date.now()},c6=aC(c5,{forbidDrawingImages:cE,promptRules:ag});if("1"!==process.env.DOCUMENT_ENABLE_POST_EXPORT_REVIEW){let b=aB(c6,C,{forbidDrawingImages:cE,promptRules:ag}).chapters.map(a=>{let b=bh.find(b=>b.id===a.id)||a;return{...a,content:dh(a.content,b)}}),c="",d=(a,b)=>aM(cD.filter(a=>!de(a)&&"error"!==a.level&&!/目录与正文不一致|表格分隔线位置不规范|正文存在过长段落|正文存在非正式章二级标题|正文残留资料页码|小节只有标题或表格无正文/u.test(a.message)),x({markdown:a,spec:Y,summary:W}),B({markdown:a,facts:ch,summary:W,profile:Z}),y(a,W),dc(a,ch),a2({markdown:a,chapters:b,factsModel:cz,template:z,promptBindings:P,promptDocumentRules:ag}),(0,aD.PE)(z.generationSettings||z.exportSettings,a).filter(a=>!(bE.minPages&&/低于目标页数/u.test(a.message))),(0,aD.ty)(bE,a)),e=[],f=()=>{var a;e=aN(d(c=db(c0(dd(aB(aC({...c5,chapters:b},{forbidDrawingImages:cE,promptRules:ag}),b,{forbidDrawingImages:cE,promptRules:ag}).markdown),ch),ch),b)),e=aN(d(c=dg(c,e).replace(/^##\s+(.+)$/gmu,(a,b)=>{let c=String(b||"").trim();return"目录"===c||/^第[一二三四五六七八九十百千万\d]+章\s+/u.test(c)?a:`### ${c}`}),b)),a=c,e=aN(d(c=e.some(a=>/小节内容补写未完成|小节只有标题或表格无正文|空小节/u.test(a.message))?`${a.trim()}
200
206
 
201
207
  **小节执行说明补充**
202
208
 
@@ -19,16 +19,6 @@ globalThis.__BUILD_MANIFEST = {
19
19
  "static/chunks/webpack.js",
20
20
  "static/chunks/main.js",
21
21
  "static/chunks/pages/_error.js"
22
- ],
23
- "/documents": [
24
- "static/chunks/webpack.js",
25
- "static/chunks/main.js",
26
- "static/chunks/pages/documents.js"
27
- ],
28
- "/knowledge/files": [
29
- "static/chunks/webpack.js",
30
- "static/chunks/main.js",
31
- "static/chunks/pages/knowledge/files.js"
32
22
  ]
33
23
  },
34
24
  "ampFirstPages": []
@@ -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=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/9daa4d0938f1a323.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9daa4d0938f1a323.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-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1c5f09be429599e4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/VJfTgkSHEgD9CkDEznJbt/_buildManifest.js" defer=""></script><script src="/_next/static/VJfTgkSHEgD9CkDEznJbt/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><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-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><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-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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">模型配置</span></div></a><a href="/prompt"><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-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><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">角色配置</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/asset-library"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><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-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</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">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><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":"VJfTgkSHEgD9CkDEznJbt","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=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/9daa4d0938f1a323.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9daa4d0938f1a323.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-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1c5f09be429599e4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/95avgtdDG74eXn-c5OAwf/_buildManifest.js" defer=""></script><script src="/_next/static/95avgtdDG74eXn-c5OAwf/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><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-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><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-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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">模型配置</span></div></a><a href="/prompt"><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-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><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">角色配置</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/asset-library"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><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-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</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">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><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":"95avgtdDG74eXn-c5OAwf","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=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/9daa4d0938f1a323.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9daa4d0938f1a323.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-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1c5f09be429599e4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/VJfTgkSHEgD9CkDEznJbt/_buildManifest.js" defer=""></script><script src="/_next/static/VJfTgkSHEgD9CkDEznJbt/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><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-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><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-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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">模型配置</span></div></a><a href="/prompt"><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-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><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">角色配置</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/asset-library"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><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-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</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">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><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":"VJfTgkSHEgD9CkDEznJbt","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=""/><title data-next-head="">500: Internal Server Error</title><link rel="preload" href="/_next/static/css/9daa4d0938f1a323.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9daa4d0938f1a323.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-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1c5f09be429599e4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/95avgtdDG74eXn-c5OAwf/_buildManifest.js" defer=""></script><script src="/_next/static/95avgtdDG74eXn-c5OAwf/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><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-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><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-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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">模型配置</span></div></a><a href="/prompt"><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-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><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">角色配置</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/asset-library"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><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-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</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">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><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":"95avgtdDG74eXn-c5OAwf","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="preload" href="/_next/static/css/9daa4d0938f1a323.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9daa4d0938f1a323.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-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1c5f09be429599e4.js" defer=""></script><script src="/_next/static/chunks/580-618d7d7e7b74daf6.js" defer=""></script><script src="/_next/static/chunks/665-88e20299084b9e73.js" defer=""></script><script src="/_next/static/chunks/209-5117020514c2bd0c.js" defer=""></script><script src="/_next/static/chunks/7-20bcc985742a9ae1.js" defer=""></script><script src="/_next/static/chunks/289-35ac595388bbd018.js" defer=""></script><script src="/_next/static/chunks/238-16333381c574f65b.js" defer=""></script><script src="/_next/static/chunks/pages/asset-library-bedc7113dfc7ad6a.js" defer=""></script><script src="/_next/static/VJfTgkSHEgD9CkDEznJbt/_buildManifest.js" defer=""></script><script src="/_next/static/VJfTgkSHEgD9CkDEznJbt/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><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-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><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-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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">模型配置</span></div></a><a href="/prompt"><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-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><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">角色配置</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/asset-library"><div class="sidebarItem sidebarItemActive"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><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-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</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">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div class="space-y-5 animateFadeIn"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li style="width:61%"></li></ul></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/asset-library","query":{},"buildId":"VJfTgkSHEgD9CkDEznJbt","nextExport":true,"autoExport":true,"isFallback":false,"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="preload" href="/_next/static/css/9daa4d0938f1a323.css" as="style"/><link rel="stylesheet" href="/_next/static/css/9daa4d0938f1a323.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-4224e970a97a4a86.js" defer=""></script><script src="/_next/static/chunks/framework-161be364fd69a7ce.js" defer=""></script><script src="/_next/static/chunks/main-91fb767ebd74c9c1.js" defer=""></script><script src="/_next/static/chunks/pages/_app-1c5f09be429599e4.js" defer=""></script><script src="/_next/static/chunks/580-618d7d7e7b74daf6.js" defer=""></script><script src="/_next/static/chunks/665-88e20299084b9e73.js" defer=""></script><script src="/_next/static/chunks/209-5117020514c2bd0c.js" defer=""></script><script src="/_next/static/chunks/7-20bcc985742a9ae1.js" defer=""></script><script src="/_next/static/chunks/289-35ac595388bbd018.js" defer=""></script><script src="/_next/static/chunks/238-16333381c574f65b.js" defer=""></script><script src="/_next/static/chunks/pages/asset-library-bedc7113dfc7ad6a.js" defer=""></script><script src="/_next/static/95avgtdDG74eXn-c5OAwf/_buildManifest.js" defer=""></script><script src="/_next/static/95avgtdDG74eXn-c5OAwf/_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_16_"><aside class="sidebar"><a href="/overview"><div class="sidebarLogo"><div class="w-8 h-8 rounded-lg bg-black dark:bg-white flex items-center justify-center shrink-0"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon text-white dark:text-black"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a><nav class="sidebarNav mt-2"><a href="/overview"><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-layout-dashboard"><rect width="7" height="9" x="3" y="3" rx="1"></rect><rect width="7" height="5" x="14" y="3" rx="1"></rect><rect width="7" height="9" x="14" y="12" rx="1"></rect><rect width="7" height="5" x="3" y="16" rx="1"></rect></svg><span class="sidebarLabel">总览</span></div></a><div><div class="sidebarItem sidebarParent"><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-database"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><span class="sidebarLabel">知识库</span><span class="sidebarChevron"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"><path d="m9 18 6-6-6-6"></path></svg></span></div></div><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">模型配置</span></div></a><a href="/prompt"><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-message-square"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg><span class="sidebarLabel">提示词管理</span></div></a><a href="/document-roles"><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">角色配置</span></div></a><a href="/documents"><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-files"><path d="M20 7h-3a2 2 0 0 1-2-2V2"></path><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"></path><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"></path></svg><span class="sidebarLabel">工作流模版库</span></div></a><a href="/asset-library"><div class="sidebarItem sidebarItemActive"><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-folder-open"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg><span class="sidebarLabel">生成资源</span></div></a><a href="/system/logs"><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-bug"><path d="m8 2 1.88 1.88"></path><path d="M14.12 3.88 16 2"></path><path d="M9 7.13v-1a3.003 3.003 0 1 1 6 0v1"></path><path d="M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6"></path><path d="M12 20v-9"></path><path d="M6.53 9C4.6 8.8 3 7.1 3 5"></path><path d="M6 13H2"></path><path d="M3 21c0-2.1 1.7-3.9 3.8-4"></path><path d="M20.97 5c0 2.1-1.6 3.8-3.5 4"></path><path d="M22 13h-4"></path><path d="M17.2 17c2.1.1 3.8 1.9 3.8 4"></path></svg><span class="sidebarLabel">系统日志</span></div></a><a href="/guide"><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-book-open"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg><span class="sidebarLabel">指引</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">设置</span></div></a></nav><div class="sidebarCollapseWrapper"><button class="sidebarCollapseBtn" aria-label="收起侧边栏"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-panel-left-close"><rect width="18" height="18" x="3" y="3" rx="2"></rect><path d="M9 3v18"></path><path d="m16 15-3-3 3-3"></path></svg></button></div></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_16_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_16_ ant-btn-default ant-btn-color-default ant-btn-variant-outlined topbarBtn"><span class="ant-btn-icon"><span role="img" aria-label="clock-circle" class="anticon anticon-clock-circle"><svg viewBox="64 64 896 896" focusable="false" data-icon="clock-circle" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"></path><path d="M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z"></path></svg></span></span><span>后台任务</span></button></span><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span>深色</span></button><button class="topbarBtn"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span>English</span></button></header><main class="mainInner"><div class="space-y-5 animateFadeIn"><div class="ant-skeleton ant-skeleton-active css-1pi45l5 css-var-_R_16_"><div class="ant-skeleton-section"><h3 class="ant-skeleton-title" style="width:38%"></h3><ul class="ant-skeleton-paragraph"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li style="width:61%"></li></ul></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/asset-library","query":{},"buildId":"95avgtdDG74eXn-c5OAwf","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>