@customize-agent/server 4.1.34 → 4.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/chunks/273.js +4 -4
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/asset-library.html +1 -1
- package/.next/server/pages/document-roles.html +1 -1
- package/.next/server/pages/documents.html +1 -1
- package/.next/server/pages/guide.html +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/knowledge/file-detail.html +1 -1
- package/.next/server/pages/knowledge/files.html +1 -1
- package/.next/server/pages/knowledge/manage.html +1 -1
- package/.next/server/pages/knowledge.html +1 -1
- package/.next/server/pages/models.html +1 -1
- package/.next/server/pages/overview.html +1 -1
- package/.next/server/pages/prompt.html +1 -1
- package/.next/server/pages/settings.html +1 -1
- package/.next/server/pages/system/logs.html +1 -1
- package/.next/server/pages-manifest.json +27 -27
- package/package.json +1 -1
- /package/.next/static/{ZKd6tMLv1IttqmqHF8igI → fr8b5H7sI0EANf3d7QFJ6}/_buildManifest.js +0 -0
- /package/.next/static/{ZKd6tMLv1IttqmqHF8igI → fr8b5H7sI0EANf3d7QFJ6}/_ssgManifest.js +0 -0
package/.next/BUILD_ID
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
fr8b5H7sI0EANf3d7QFJ6
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"devFiles": [],
|
|
6
6
|
"ampDevFiles": [],
|
|
7
7
|
"lowPriorityFiles": [
|
|
8
|
-
"static/
|
|
9
|
-
"static/
|
|
8
|
+
"static/fr8b5H7sI0EANf3d7QFJ6/_buildManifest.js",
|
|
9
|
+
"static/fr8b5H7sI0EANf3d7QFJ6/_ssgManifest.js"
|
|
10
10
|
],
|
|
11
11
|
"rootMainFiles": [],
|
|
12
12
|
"rootMainFilesTree": {},
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"routes": {},
|
|
4
4
|
"dynamicRoutes": {},
|
|
5
5
|
"preview": {
|
|
6
|
-
"previewModeId": "
|
|
7
|
-
"previewModeSigningKey": "
|
|
8
|
-
"previewModeEncryptionKey": "
|
|
6
|
+
"previewModeId": "b64227044357d270e0813e266516b500",
|
|
7
|
+
"previewModeSigningKey": "71c8a6444be19ab361c2114ba435daf1745dd7489c0789958ae4d20db69a5e43",
|
|
8
|
+
"previewModeEncryptionKey": "87855bc353b4d2d396f9ee99acb6d17ad303f6c410a8916bd790c3372812052d"
|
|
9
9
|
},
|
|
10
10
|
"notFoundRoutes": []
|
|
11
11
|
}
|
|
@@ -147,7 +147,7 @@ ${a5(a.currentContent).slice(0,12e3)}`].filter(Boolean).join("\n\n"),!1,{maxToke
|
|
|
147
147
|
|
|
148
148
|
${i}`:a.currentContent}function ba(a){return aV(a.chapter,Math.max(1e3,(0,w.V7)(a.content))).flatMap(b=>{let c=b.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&"),d=a.content.match(RegExp(`^#{2,4}\\s+(?:\\d+(?:\\.\\d+)*\\s+)?${c}\\s*\\n([\\s\\S]*?)(?=^#{2,4}\\s+|$)`,"mu")),e=d?.[1]||"",f=a3(b.title,aX(b.title,a.chapter,a.evidence)),g=function(a,b,c){if(0===c.items.length)return;let d=(0,w.V7)(b);if(d<180)return`小节正文过短,需补写专业做法和证据依据`;let e=/概况|范围|清单|图纸|设计|材料|设备|工期|质量|安全|危大|资源|验收/u.test(a),f=c.items.filter(a=>a2(a.text,b)>=(a.quantified?1:2)),g=c.items.filter(a=>a.quantified&&a2(a.text,b)>=1),h=e?Math.min(c.items.length,2):Math.min(c.items.length,1),i=e&&c.quantifiedCount>0?1:0;if(f.length>=h&&g.length>=i||!e&&d>=650&&/复核|检查|验收|交底|台账|整改|闭环|进场|协调|保护/u.test(b))return;let j=c.items.filter(a=>!f.includes(a)).slice(0,e?4:2).map(a=>a.text);return`知识库事实落位不足:当前小节已落位 ${f.length}/${c.items.length} 条知识库事实、${g.length}/${c.quantifiedCount} 条量化事实;建议补入:${j.join(";")}`}(b.title,e,f);return g?[`${b.title}:${g}`]:[]})}async function bb(a){if(a7(a.sectionTitle)){let b=await a8({...a,targetWords:Math.max(620,Math.floor(.75*a.targetWords)),maxWords:Math.ceil(1.22*Math.max(620,Math.floor(.75*a.targetWords))),timeoutMs:Math.max(a.timeoutMs||0,24e4),qualityFeedback:`本小节使用 focused writer 优先成稿。必须直接输出“### ${a.sectionTitle}”及正式正文。`}).catch(b=>{a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 异常:${a.chapter.title} / ${a.sectionTitle} / ${b instanceof Error?b.message:String(b)}`)});if(b)return(0,v.kT)((0,v.FD)(b,a.forbidDrawingImages))}let b=function(a,b){let c=a6(a)?760:Math.max(1400,Math.floor(Number(process.env.DOCUMENT_WRITING_TASK_MAX_WORDS??2800))),d=a6(a)?Math.max(3,Math.ceil(b/c)):b>1.5*c?Math.ceil(b/c):1,e=Math.max(800,Math.ceil(b/d));return d<=1?[{sectionTitle:a,taskTitle:a,targetWords:b,index:1,total:1}]:Array.from({length:d},(b,c)=>({sectionTitle:a,taskTitle:function(a,b,c){if(/项目特点.*重点.*难点|重点.*难点.*分析/u.test(a))return["项目特点与基础事实","施工重点识别","施工难点成因与影响","应对措施与责任闭环","重点难点与施工内容对应关系"][b%5];if(/项目主要施工内容/u.test(a))return["当前项目施工对象识别","主要工作包与实施边界","专业工序与穿插关系","工程量参数与资源组织","验收检测与资料闭环"][b%5];if(/主要分部分项工程施工方案|主要施工方法/u.test(a))return["当前项目分部分项对象","主要工艺流程与施工顺序","材料设备与参数控制","质量安全控制点","验收移交与资料闭环"][b%5];let d=a.toLowerCase(),e=/资源|材料|设备|人材机/u.test(a)?["资源配置依据","材料设备规格与数量","进场组织与保管要求","使用调配与过程核验","验收记录与动态调整"]:/施工|工艺|技术|安装|土建|结构|给排水|电气/u.test(a)||/method|technical/u.test(d)?["施工准备与技术依据","主要工艺流程","材料设备与参数控制","质量验收要点","成品保护与问题处置"]:/安全|文明|危大|风险/u.test(a)?["风险识别与控制边界","防护设施与作业条件","人员设备安全管理","检查频次与整改闭环","应急响应与资料留存"]:/质量|验收|标准/u.test(a)?["质量目标与验收依据","过程控制点","材料设备复核","检验批与验收资料","问题整改与成品保护"]:["资料依据与适用范围","对象范围与关键参数","实施方法与组织安排","质量安全控制要求","检查验收与闭环管理"];return c<=1?a:`${a}:${e[b%e.length]}`}(a,c,d),targetWords:e,index:c+1,total:d}))}(a.sectionTitle,a.targetWords),c=[];for(let d of b){let b;(0,M.Te)(a.signal);let e=d.total>1?2:3;for(let c=0;c<e&&!b;c+=1){let f=0===c?d.targetWords:Math.max(560,Math.floor(d.targetWords*(1===c?.85:.7)));try{b=await a4({...a,sectionTitle:d.sectionTitle,targetWords:f,maxWords:Math.ceil(1.18*f),timeoutMs:Math.max(a.timeoutMs||0,c>0?18e4:15e4),qualityFeedback:[d.total>1?`这是首轮生成的主题任务 ${d.index}/${d.total},只聚焦“${d.taskTitle}”。不得重复同小节其他主题的通用表述;优先写入与本主题相关的资料事实、规格、数量、标准、检查要求和执行动作。`:a.qualityFeedback,c>0?`上一轮未生成有效正文。本轮必须直接输出“### ${a.sectionTitle}”及正式正文,优先完成可审查、可落位事实的核心内容。`:""].filter(Boolean).join("\n")})}catch{b=void 0}if(!b&&c===e-1)try{b=await a8({...a,sectionTitle:d.sectionTitle,targetWords:Math.max(520,Math.floor(.85*f)),maxWords:Math.ceil(1.18*Math.max(520,Math.floor(.85*f))),qualityFeedback:`前序 Writer 未完成。本轮使用轻量定向 Writer,只完成“${a.sectionTitle}”正式正文。`})}catch(c){a.diagnostics&&(a.diagnostics.llm.lastError=`focused writer 后置异常:${a.chapter.title} / ${d.sectionTitle} / ${c instanceof Error?c.message:String(c)}`),b=void 0}}b&&c.push(a5(b))}if(0===c.length)return;let d=`### ${a.sectionTitle}
|
|
149
149
|
|
|
150
|
-
${c.join("\n\n")}`;return d=await a9({...a,currentContent:d,targetWords:a.targetWords}),(0,v.kT)((0,v.FD)(d,a.forbidDrawingImages))}async function bc(a){let b=aV(a.chapter,a.targetWords);if(b.length<2)return;let c=b.length>=30?4:5,d=Number(process.env.DOCUMENT_SECTION_GROUP_SIZE||c),e=Math.max(2,Math.min(b.length>=30?5:6,Number.isFinite(d)?Math.floor(d):c)),f=function(a,b){let c=[],d=new Map;for(let b of a){var e;let a=(e=b.title,/工期|进度|节点|计划|纠偏|预警/u.test(e)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(e)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(e)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(e)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(e)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(e)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(e)?"施工组织":"综合管理"),c=d.get(a)||[];c.push(b),d.set(a,c)}for(let a of d.values())for(let d=0;d<a.length;d+=b)c.push(a.slice(d,d+b));return c}(b,e),g=Number(process.env.DOCUMENT_SECTION_GROUP_CONCURRENCY||2),h=Math.max(1,Math.min(f.length,b.length>=30?2:f.length,Number.isFinite(g)?Math.floor(g):2)),i=Array(f.length).fill(""),j=0,k=async c=>{let d,e=c.map(a=>a.title);e.join("、");let f=Math.min(c.reduce((a,b)=>a+b.targetWords,0),b.length>=30?1900:2800),g=await Promise.all(e.map(b=>a.sectionEvidenceProvider?(0,ad.od)(()=>a.sectionEvidenceProvider(b),2e4,a.signal).catch(()=>[]):Promise.resolve([]))),h=[...a.evidence,...g.flat().filter(a=>!!a)].filter(a=>!/违约金额|元\/条|罚款|处罚|检查项目检查内容|清单不再单独列项/u.test(a.content.slice(0,500))).sort((a,b)=>b.score-a.score).slice(0,10).map(a=>({...a,content:a.content.slice(0,1400)})),i={...a.chapter,sections:b.length>=30?e.slice(0,12):e};if(j>=(b.length>=30?1:2))throw Error(`小节组 ${e.join("、")} 连续空响应,已阻断以避免标题占位正文`);let k=async()=>{let b=Array(c.length),d=[],f=Math.max(1,Math.min(c.length,Number(process.env.DOCUMENT_SECTION_GROUP_TASK_CONCURRENCY||
|
|
150
|
+
${c.join("\n\n")}`;return d=await a9({...a,currentContent:d,targetWords:a.targetWords}),(0,v.kT)((0,v.FD)(d,a.forbidDrawingImages))}async function bc(a){let b=aV(a.chapter,a.targetWords);if(b.length<2)return;let c=b.length>=30?4:5,d=Number(process.env.DOCUMENT_SECTION_GROUP_SIZE||c),e=Math.max(2,Math.min(b.length>=30?5:6,Number.isFinite(d)?Math.floor(d):c)),f=function(a,b){let c=[],d=new Map;for(let b of a){var e;let a=(e=b.title,/工期|进度|节点|计划|纠偏|预警/u.test(e)?"工期进度":/质量|验收|三检|样板|隐蔽|复试|实测|通病/u.test(e)?"质量验收":/安全|危大|风险|隐患|应急|临边|洞口|消防|临电/u.test(e)?"安全风险":/文明|扬尘|噪声|绿色|废水|垃圾|环保|智慧/u.test(e)?"文明绿色":/劳务|工资|实名|银行|考勤|人员|岗位|组织|职责/u.test(e)?"组织劳务":/资源|材料|设备|机械|人材机|调配/u.test(e)?"资源保障":/施工|工艺|流程|顺序|穿插|部署|区段|流水/u.test(e)?"施工组织":"综合管理"),c=d.get(a)||[];c.push(b),d.set(a,c)}for(let a of d.values())for(let d=0;d<a.length;d+=b)c.push(a.slice(d,d+b));return c}(b,e),g=Number(process.env.DOCUMENT_SECTION_GROUP_CONCURRENCY||2),h=Math.max(1,Math.min(f.length,b.length>=30?2:f.length,Number.isFinite(g)?Math.floor(g):2)),i=Array(f.length).fill(""),j=0,k=async c=>{let d,e=c.map(a=>a.title);e.join("、");let f=Math.min(c.reduce((a,b)=>a+b.targetWords,0),b.length>=30?1900:2800),g=await Promise.all(e.map(b=>a.sectionEvidenceProvider?(0,ad.od)(()=>a.sectionEvidenceProvider(b),2e4,a.signal).catch(()=>[]):Promise.resolve([]))),h=[...a.evidence,...g.flat().filter(a=>!!a)].filter(a=>!/违约金额|元\/条|罚款|处罚|检查项目检查内容|清单不再单独列项/u.test(a.content.slice(0,500))).sort((a,b)=>b.score-a.score).slice(0,10).map(a=>({...a,content:a.content.slice(0,1400)})),i={...a.chapter,sections:b.length>=30?e.slice(0,12):e};if(j>=(b.length>=30?1:2))throw Error(`小节组 ${e.join("、")} 连续空响应,已阻断以避免标题占位正文`);let k=async()=>{let b=Array(c.length),d=[],f=Math.max(1,Math.min(c.length,Number(process.env.DOCUMENT_SECTION_GROUP_TASK_CONCURRENCY||2))),g=async(b,c=a.signal)=>{let e=c||a.signal,f=a.sectionEvidenceProvider&&await (0,ad.od)(()=>a.sectionEvidenceProvider(b.title),25e3,e).catch(()=>[])||[],g=a.diagnostics?.llm.lastError;try{let c=await bb({template:a.template,chapter:a.chapter,sectionTitle:b.title,evidence:f.length?[...h,...f]:h,missingFacts:a.missingFacts,promptTexts:a.promptTexts,projectContext:a.projectContext,requirement:a.requirement,roleContext:a.roleContext||"",targetWords:Math.max(b.targetWords,900),maxWords:Math.ceil(1.16*Math.max(b.targetWords,900)),forbidDrawingImages:a.forbidDrawingImages,factCoverageContext:a.factCoverageContext,signal:e,diagnostics:a.diagnostics,timeoutMs:Math.max(15e4,Math.min(24e4,Math.ceil(1.1*bf(Math.max(b.targetWords,900)))))});if(!c){let c=a.diagnostics?.llm.lastError;d.push(`${b.title}:${c&&c!==g?c:"Writer 返回空正文"}`)}return c}catch(a){d.push(`${b.title}:${a instanceof Error?a.message:String(a)}`);return}};for(let d=0;d<c.length;d+=f){(0,M.Te)(a.signal);let e=c.slice(d,d+f);(await Promise.all(e.map(b=>g(b,a.signal)))).forEach((a,c)=>{b[d+c]=a})}let i=e.filter((a,c)=>!b[c]);if(i.length>0)throw Error(`${a.chapter.title} 小节组生成未完成:${i.map(a=>`${a}(${d.filter(b=>b.startsWith(`${a}:`)).join(";")||"未记录到具体异常"})`).join("、")}`);let j=b.filter(Boolean).join("\n\n");return{content:j,llmChars:(0,w.V7)(j)}},l=Math.max(9e4,Math.min(b.length>=30?15e4:18e4,Math.ceil(.85*bf(f))));try{let b=await (0,ad.od)(b=>aU(a.template,i,h,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,a.roleContext||"",{forbidDrawingImages:a.forbidDrawingImages,minWords:Math.floor(.45*f),targetWords:f,maxWords:Math.ceil(1.08*f),maxTokens:be(Math.floor(.45*f),f),factCoverageContext:a.factCoverageContext,signal:b}),l,a.signal);d=b?.replace(RegExp(`^##\\s+${a.chapter.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*`,"mu"),"").trim()||""}catch{d=""}let m=(0,w.V7)(d);if(m>=Math.max(500,Math.floor(.25*f)))return{content:d,llmChars:m};if(b.length>=30){let b=await (0,ad.od)(b=>aU(a.template,i,h,a.missingFacts,a.promptTexts,a.projectContext,a.requirement,a.roleContext||"",{forbidDrawingImages:a.forbidDrawingImages,minWords:Math.floor(.5*f),targetWords:Math.ceil(1.08*f),maxWords:Math.ceil(1.2*f),maxTokens:be(Math.floor(.5*f),Math.ceil(1.08*f)),factCoverageContext:`${a.factCoverageContext||""}
|
|
151
151
|
本轮为 Agent Writer 小节组重试,必须逐项输出以下三级标题并补足正式正文:${e.map(a=>`### ${a}`).join(";")}`,signal:b}),Math.max(15e4,Math.min(24e4,Math.ceil(1.05*bf(f)))),a.signal),c=b?.replace(RegExp(`^##\\s+${a.chapter.title.replace(/[.*+?^${}()|[\]\\]/gu,"\\$&")}\\s*`,"mu"),"").trim()||"",d=(0,w.V7)(c);if(d>=Math.max(500,Math.floor(.25*f)))return{content:c,llmChars:d}}return k()};for(let b=0;b<f.length;b+=h){(0,M.Te)(a.signal);let c=f.slice(b,b+h);(await Promise.all(c.map(a=>k(a)))).forEach((a,c)=>{i[b+c]=a.content,a.llmChars<120&&(j+=1)})}let l=f.filter((a,b)=>!i[b]);if(l.length>0)throw Error(`${a.chapter.title} 小节组生成未完成:${l.flatMap(a=>a.map(a=>a.title)).join("、")}`);let m=i.filter(Boolean).join("\n\n");if(m.trim())return(0,v.kT)((0,v.FD)(`## ${a.chapter.title}
|
|
152
152
|
|
|
153
153
|
${m}`,a.forbidDrawingImages))}async function bd(a){let b=aV(a.chapter,a.targetWords);if(b.length<2)return;let c=Number(process.env.DOCUMENT_SECTION_CONCURRENCY||b.length||1),d=Math.max(1,Math.min(b.length,Number.isFinite(c)?Math.floor(c):b.length||1)),e=Array(b.length),f=0,g=async(c,d=!1)=>{a.onSectionProgress?.({completed:f,total:b.length,sectionTitle:c.title,phase:d?"retry":"start"});try{let e=d?Math.max(12e4,Math.min(18e4,Math.ceil(.8*bf(c.targetWords)))):Math.max(15e4,Math.min(24e4,Math.ceil(1.2*bf(c.targetWords)))),g=a.sectionEvidenceProvider&&await (0,ad.od)(()=>a.sectionEvidenceProvider(c.title),Math.min(25e3,Math.floor(.25*e)),a.signal)||[],h={...a,evidence:g.length?[...a.evidence,...g]:a.evidence,projectContext:a.projectContext,roleContext:a.roleContext||"",factCoverageContext:a.factCoverageContext,sectionTitle:c.title,targetWords:c.targetWords,maxWords:a.maxWords?Math.max(c.targetWords,Math.ceil(a.maxWords/b.length)):Math.ceil(1.12*c.targetWords),timeoutMs:e},i=await (0,ad.od)(a=>c.targetWords>=1400?bb({...h,signal:a}):bg({...h,signal:a},function(a){let b=Number(process.env.DOCUMENT_SECTION_SUPPLEMENT_ATTEMPTS??2);return Math.max(1,Math.min(3,Number.isFinite(b)?Math.floor(b):2,a))}(b.length)),e,a.signal)||void 0;return i&&(f+=1,a.onSectionProgress?.({completed:f,total:b.length,sectionTitle:c.title,phase:"complete"})),i}catch(b){console.warn(`[document-workflow] 小节生成失败:${a.chapter.title} / ${c.title}`,b);return}},h=b.length;for(let c=0;c<h;c+=d){(0,M.Te)(a.signal);let f=b.slice(c,Math.min(h,c+d));(await Promise.all(f.map(a=>g(a)))).forEach((a,b)=>{e[c+b]=a})}let i=e.map((a,b)=>a?-1:b).filter(a=>a>=0),j=i;if(j.length>0){for(let c=0;c<j.length;c+=d){(0,M.Te)(a.signal);let f=j.slice(c,c+d);(await Promise.all(f.map(a=>g(b[a],!0)))).forEach((a,b)=>{a&&(e[f[b]]=a)})}let c=(i=e.map((a,b)=>a?-1:b).filter(a=>a>=0)).slice(0,d);c.length>0&&((0,M.Te)(a.signal),(await Promise.all(c.map(a=>g({...b[a],targetWords:Math.max(b[a].targetWords,900)},!0)))).forEach((a,b)=>{a&&(e[c[b]]=a)}))}if((i=e.map((a,b)=>a?-1:b).filter(a=>a>=0)).length>0)throw Error(`${a.chapter.title} 小节生成未完成:${i.map(a=>b[a].title).join("、")}`);let k=e.map(a=>a||"");return(0,v.kT)((0,v.FD)(`## ${a.chapter.title}
|
|
@@ -184,13 +184,13 @@ ${c}`,"写作要求:必须严格按“小节任务”逐项输出,每个任
|
|
|
184
184
|
${b.map((a,b)=>`${b+1}. ${a}`).join("\n")}`}(aH),!aG.enabled?"":"公开资料补充使用规则:\n1. 公开资料只可用于补充通用规范、政策、工艺和措施。\n2. 不得使用公开资料新增或修改项目名称、建设地点、建设规模、工期、质量标准、工程量、材料规格、图纸参数、商务数据。\n3. 本地项目资料与公开资料冲突时,必须以本地项目资料为准。\n4. 不得在正文中出现任何检索过程、外部页面、工具调用或系统内部过程性表述。\n5. 不得把公开资料中的其他项目案例参数写入本项目正文。"].filter(Boolean).join("\n\n"),aN=[an,aJ,`生成前规划章节结构:
|
|
185
185
|
${(0,v.CK)(q)}`,ap||az].filter(Boolean).join("\n\n"),aV=[ao,aJ,aD([...Q.extractionPrompts,...Q.referencePrompts])].filter(Boolean).join("\n\n"),aW=[an,aJ,aD([...Q.writerPrompts,...Q.chapterPrompts,...Q.formattingPrompts])].filter(Boolean).join("\n\n");(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"document-preparation",status:"success",message:`模板规范与项目资料理解完成,识别 ${T.length} 份项目资料`,details:[`提示词绑定:${R.length} 个`,`项目资料包:${U.materialRoots.join("、")||"当前知识库"}`,ab?`识别 OUTLINE 章节:${Z.length} 个`:"未识别显式 OUTLINE,使用模板章节"],progress:{current:3,total:3,label:"准备完成"}},{subtitle:"生成准备",order:P.length})),I();let aX=new Set(T),aY=new Map([...W.entries()].map(([a,b])=>[a,(0,aE._W)(b)])),aZ=new Map([...X.entries()].map(([a,b])=>[a,b]));(0,ay.fx)(P,(0,ay.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:"running",message:"正在读取项目资料包索引",details:["使用上传阶段已完成的解析、切片和索引结果","不在生成流程中重新解析或入库","准备按资料类型召回章节证据"],progress:{current:1,total:3,label:"读取索引"}},{subtitle:"知识库检索",order:P.length})),I();let a$=await K(()=>y.getProject(o)),a_=function(a,b){let c=new Set(b.filter(Boolean)),d=(a.listFiles?.()||[]).filter(a=>0===c.size||c.has(a.relativePath)),e=new Set(d.map(a=>a.relativePath)),f=[...c].filter(a=>!e.has(a)),g=d.filter(a=>0===Math.max(0,Math.ceil(Number(a.chunkCount)||0))).map(a=>a.relativePath),h=d.filter(a=>"error"===a.status).map(a=>a.relativePath),i="function"==typeof a.countPendingIndexJobs?a.countPendingIndexJobs():0,j="function"==typeof a.getVectorStatus?a.getVectorStatus():void 0,k=d.filter(a=>"error"!==a.status&&Math.max(0,Math.ceil(Number(a.chunkCount)||0))>0),l=k.map(a=>a.relativePath),m=k.reduce((a,b)=>a+Math.max(0,Math.ceil(Number(b.chunkCount)||0)),0),n=[...cJ("部分绑定文件未完成索引,已自动跳过",f),...cJ("部分绑定文件没有可用切片,已自动跳过",g),...cJ("部分绑定文件索引失败,已自动跳过",h)],o=c.size>0&&0===m?["所有绑定文件均无可用切片"]:[],p=[...n,...i>0?[`仍有 ${i} 个待索引任务,建议等待索引完成后生成`]:[],...j&&"ready"!==j.status?[`向量索引状态为 ${j.status},当前召回质量可能下降`]:[]];return{scopedRecords:d,usablePaths:l,missingFiles:f,emptyFiles:g,errorFiles:h,pendingJobs:i,vectorStatus:j,usableChunkCount:m,blockingIssues:o,warnings:p}}(a$,[...aX]);if(a_.blockingIssues.length>0)throw Error(`生成前知识索引不可用:${a_.blockingIssues.join(";")}`);let a0=new Set(a_.usablePaths),a1=br(p,[...a0]),a2=cK(a$,[...a0],a.maxEvidencePerChapter),a3=a_.pendingJobs>0||a_.vectorStatus&&"ready"!==a_.vectorStatus.status||0===a_.usableChunkCount,a5=function(a){let b=Math.max(0,Math.ceil(a.totalChunks||0)),c=Math.max(0,Math.ceil(a.loadedChunks||0)),d=Math.max(0,b-c),e=b>0?c/b:1,f=[...b>=1e3&&e<.35?["切片未完全预加载"]:[],...!1===a.vectorReady?["向量索引未就绪"]:[]];return{totalChunks:b,loadedChunks:c,omittedChunks:d,loadedRatio:e,highRisk:f.length>0,riskReason:f.join("、")||void 0}}({totalChunks:Math.min(a_.usableChunkCount,20*T.length),loadedChunks:Math.min(a_.usableChunkCount,20*T.length),vectorReady:a_.vectorStatus?"ready"===a_.vectorStatus.status:void 0});(0,ay.fx)(P,(0,ay.X5)({type:"knowledge_retrieval",roleId:"knowledge-index",status:a3?"failed":"success",message:`已读取知识索引:项目资料 ${a_.scopedRecords.length} 份,可用切片 ${a_.usableChunkCount} 条`,details:[`项目资料:${aX.size} 份`,`可用证据文件:${a0.size} 份`,`向量状态:${a_.vectorStatus?.status||"unknown"}`,...a_.warnings,"后续将按招标正文/清单/图纸/补疑等资料类型召回"],progress:{current:3,total:3,label:"索引已就绪"}},{subtitle:"知识库检索",order:P.length})),I(),(0,M.Te)(a.signal);let a6=[],a7=[],a8={enabled:aG.enabled,queries:[],evidenceCount:0,filteredCount:0,chapters:[]},a9=[],bb=[],bg=[],bh=[],bi=[],bj=-1,bk=new Map,bl=new Map,bm=(a,b)=>{let c=`${a}::${b.maxChunkContentChars}`;if(!bl.has(c))try{bl.set(c,a$.getFileDetail?.(a,b))}catch{bl.set(c,void 0)}return bl.get(c)},bn=async(b,c,d,e)=>{let f=cC(e),g=(0,M.c6)({query:b,scopedFilePaths:c,limit:d,weights:f,generationMode:!1}),h=bk.get(g);if(h)return h;let i=await (0,ad.od)(()=>y.search(o,b,{scope:"project",filters:{filePaths:c},limit:d,weights:f,generationMode:!1}),Number(process.env.DOCUMENT_SEARCH_QUERY_TIMEOUT_MS||15e3),a.signal).catch(()=>null),j=i?.results||[];return bk.set(g,j),j},bo={stage:(0,ay.X5)({type:"file_understanding",roleId:"project-understanding",status:"success",message:`已完成项目资料理解:${U.files.length} 份资料,${Object.values(U.groups).filter(a=>a.length>0).length} 类资料类型`,details:V.prompt.split("\n").slice(0,16)},{subtitle:"项目资料理解",order:P.length})};(0,ay.fx)(P,bo.stage),I();let bq=bu(await ci({manager:y,project:a$,projectRoot:o,scopedFilePaths:[...aX].filter(Boolean).sort(),fileRoleByPath:aY,fileProcessingByPath:aZ,signal:a.signal}),a1);bw(bq,a1,"project-basic-evidence"),bq.length>0&&(a6.push(...bq),(0,ay.fx)(P,(0,ay.X5)({type:"knowledge_retrieval",roleId:"project-basic-evidence",status:"success",message:`已锁定项目基础事实证据 ${bq.length} 条`,details:bq.slice(0,8).map(a=>`${e.basename(a.filePath)}|${a.sectionTitle||"正文片段"}|score=${a.score.toFixed(2)}`)},{subtitle:"基础事实召回",order:P.length})),I());let bs=bv(af(a6,q,ah),a1),bt=bv(al(a6),a1),bx=bv(am(a6,aj),a1),by=[...bs,...bt,...bx],bz=ax(by,bv(ae(a6),a1),a9,ah,aj),bA=cd({template:q,requirement:a.requirement,projectRoot:o,facts:by});for(let a of[(0,ay.X5)({type:"validation",roleId:"agent-material-scope",status:"success",message:`资料范围已锁定:${bA.materialScope.selectedRoots.join("、")}`,details:[`${bA.materialScope.reason}`,`入选资料:${bA.materialScope.selectedFiles.length}/${bA.materialScope.totalAvailableFiles}`,`已排除资料组:${bA.materialScope.rejectedRoots.slice(0,8).join("、")||"无"}`]},{subtitle:"Agent 资料范围锁定"}),(0,ay.X5)({type:"knowledge_retrieval",roleId:"agent-material-snapshot",status:"success",message:`资料快照已固定:${bA.materialSnapshot.totalFiles} 份资料、${bA.materialSnapshot.totalChunks} 个切片`,details:bA.materialSnapshot.files.slice(0,10).map(a=>`${a.root}|${a.fileName}|${a.chunkCount}切片`)},{subtitle:"Agent 资料快照"}),(0,ay.X5)({type:"file_understanding",roleId:"agent-base-project-graph",status:"success",message:`基础项目图谱已生成:${bA.baseProjectGraph.works.length}工程 ${bA.baseProjectGraph.resources.length}资源 ${bA.baseProjectGraph.schedule.length}工期 ${bA.baseProjectGraph.standards.length}标准`,details:[`基础图谱来自确定性事实层,不依赖 LLM`,`事实数:${bA.facts.length}`]},{subtitle:"Agent 基础图谱"})])(0,ay.fx)(P,a);I(),"1"===process.env.DOCUMENT_PROJECT_GRAPH_ENHANCED?((0,ay.fx)(P,(0,ay.X5)({type:"file_understanding",roleId:"project-graph",status:"running",message:`正在进行项目资料图谱分析:${a6.length} 条证据 → LLM 结构化提取`,details:["提取:工程内容、施工方法、材料设备、技术标准、重点难点"],progress:{current:2,total:3,label:"图谱分析"}},{subtitle:"项目资料图谱分析",order:P.length})),I(),b=await K(()=>(0,cP.i)({evidence:a6,signal:a.signal,projectRoot:o,requirement:a.requirement,templateId:q.id,timeoutMs:Number(process.env.DOCUMENT_PROJECT_GRAPH_TIMEOUT_MS||9e4)}),P)):b={graph:bA.baseProjectGraph,stage:(0,ay.X5)({type:"file_understanding",roleId:"project-graph",status:"success",message:"已使用确定性基础项目图谱,LLM 增强图谱按配置关闭",details:["基础图谱来自事实记忆和资料快照",`事实数:${by.length}`],progress:{current:3,total:3,label:"基础图谱"}},{subtitle:"项目资料图谱分析",order:P.length})};let bB=b.graph||bA.baseProjectGraph;b.graph||(b={graph:bB,stage:(0,ay.X5)({type:"file_understanding",roleId:"project-graph",status:"success",message:"确定性基础项目图谱已完成,LLM 增强图谱未通过",details:["基础图谱为必跑结果,继续作为 Planner/Writer 图谱上下文",`增强阶段:${b.stage.message||b.stage.status}`]},{subtitle:"项目资料图谱分析",order:P.length})}),(0,ay.fx)(P,b.stage),I(),bB&&(V=(0,aE._n)(q,U,bB));let bC=function(a){var b;let c=(0,M.c6)({version:"canonical-facts-v2",requirement:a.requirement||"",templateId:a.templateId||"",requiredKeys:a.requiredKeys||[],facts:a.facts.map(a=>({key:a.key,fieldId:a.fieldId,fieldName:a.fieldName,value:a.value,sourceFile:a.sourceFile,roleId:a.roleId,confidence:a.confidence})).sort((a,b)=>`${a.sourceFile}${a.key}${a.value}`.localeCompare(`${b.sourceFile}${b.key}${b.value}`)),graphHash:a.projectGraph?(0,M.c6)(a.projectGraph):"",markdownHash:a.markdown?(0,M.c6)(a.markdown.slice(0,2e4)):""}),d=function(a,b){let c=b5(a);if(c)try{let a=JSON.parse(aa.readFileSync(e.join(c,`canonical-facts-${b}.json`),"utf8"));return a&&a.byKey?a:void 0}catch{return}}(a.projectRoot,c);if(d)return d;let f=b3({facts:a.facts,markdown:a.markdown}),g={};for(let[a,b]of f.entries())g[a]=function(a){let b=a.source.includes("generated_markdown")?"generated_markdown":a.source.includes("evidence")?"evidence":"structured_fact";return{key:a.fieldKey,label:a.label,value:a.value,normalizedValue:ai(a.value),sourceType:b,sourceFile:a.source,confidence:a.confidence,priority:b4(b),locked:b4(b)>=80,selectedReason:a.selectedReason}}(b);let h=a.facts||[],i=[];for(let a of[{key:"project_name",label:"项目名称",pattern:/项目名称|工程名称|招标项目名称|project_name/u,bucket:"projectIdentity"},{key:"project_code",label:"项目编号",pattern:/项目编号|招标项目编号|project_code/u,bucket:"projectIdentity"},{key:"owner",label:"招标人",pattern:/招标人|建设单位|发包人|owner/u,bucket:"projectIdentity"},{key:"project_location",label:"建设地点",pattern:/建设地点|实施地点|project_location/u,bucket:"projectIdentity"},{key:"project_scale",label:"建设规模",pattern:/建设规模|工程规模|project_scale/u,bucket:"projectScope"},{key:"construction_scope",label:"施工范围",pattern:/施工范围|招标范围|工程范围/u,bucket:"projectScope"},{key:"duration",label:"计划工期",pattern:/计划工期|合同工期|总工期|schedule_requirement|duration/u,bucket:"schedule"},{key:"quality_target",label:"质量目标",pattern:/质量标准|质量目标|quality_standard/u,bucket:"quality"}]){let b=function(a,b,c,d){return a.filter(a=>d.test(`${a.fieldId||""}${a.key||""}${a.fieldName||""}`)).map(a=>(function(a,b,c){let d=(0,M.lG)(a.value),e=function(a){let b=`${a.sourceFile||""} ${a.sourceRef?.sectionTitle||""} ${a.roleId||""}`;return/合同/u.test(b)?"contract":/招标|公告|前附表|需求书/u.test(b)?"tender":/清单|工程量|BOQ|报价/u.test(b)?"boq":/图纸|设计|CAD|DWG/u.test(b)?"drawing":/规范|标准/u.test(b)?"standard":"structured_fact"}(a);return{key:b,label:c,value:d,normalizedValue:ai(d),sourceType:e,sourceFile:a.sourceFile,sourceRef:a.sourceRef?.sectionTitle,confidence:Math.round(100*(a.confidence||.5)),priority:b4(e),locked:b4(e)>=80,selectedReason:"按资料来源优先级和字段置信度决策"}})(a,b,c)).filter(a=>a.value&&!/资料未明确|系统暂未确认/u.test(a.value)).sort((a,b)=>b.priority-a.priority||b.confidence-a.confidence||a.value.length-b.value.length)}(h,a.key,a.label,a.pattern);!g[a.key]&&b.length>0&&(g[a.key]=b[0]);let c=function(a,b,c){let d=[...new Map(c.map(a=>[a.normalizedValue,a])).values()];if(d.length<=1)return;let e=Math.max(...d.map(a=>a.priority)),f=d.filter(a=>a.priority===e);return{key:a,label:b,values:d.map(a=>({value:a.value,sourceFile:a.sourceFile,priority:a.priority,confidence:a.confidence})),decision:1===f.length?"highest_priority_selected":"manual_review_required"}}(a.key,a.label,b);c&&i.push(c)}let j=(b=a.projectGraph)?[...(b.resources||[]).map(a=>({key:`resource_${a.type}_${a.name}`,label:"equipment"===a.type?"机械设备":"labor"===a.type?"劳动力":"材料资源",value:[a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" "),normalizedValue:ai([a.name,a.spec,a.quantity,a.unit].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:b4("projectGraph"),locked:!1,selectedReason:"来自项目图谱资源节点"})).filter(a=>a.value),...(b.risks||[]).map(a=>({key:`risk_${a.risk}`,label:"风险源",value:[a.risk,a.level,a.mitigation].filter(Boolean).join(" "),normalizedValue:ai([a.risk,a.level,a.mitigation].filter(Boolean).join(" ")),sourceType:"projectGraph",sourceFile:a.sourceFiles?.[0],confidence:55,priority:b4("projectGraph"),locked:!1,selectedReason:"来自项目图谱风险节点"})).filter(a=>a.value)]:[],k=j.filter(a=>/resource_/u.test(a.key)),l=j.filter(a=>/risk_/u.test(a.key));for(let a of j)g[a.key]||(g[a.key]=a);let m=(a.requiredKeys||[]).filter(a=>!g[a]).map(a=>({key:a,label:b0.find(b=>b.key===a)?.label||a,reason:"未从用户输入、招标资料、清单、图纸或项目图谱中确认该事实"})),n={projectIdentity:{projectName:g.project_name,projectCode:g.project_code,owner:g.owner,location:g.project_location},projectScope:{scale:g.project_scale,constructionScope:g.construction_scope},schedule:{duration:g.duration||g.schedule_requirement},quality:{target:g.quality_target||g.quality_standard},safety:{risks:l},resources:{resources:k},environment:{},constraints:{},byKey:g,conflicts:i,gaps:m},o=b5(a.projectRoot);return o&&aa.writeFileSync(e.join(o,`canonical-facts-${c}.json`),JSON.stringify(n,null,2)),n}({facts:[...bs,...bt,...bx],projectGraph:bB,requiredKeys:b0.map(a=>a.key),projectRoot:o,requirement:a.requirement,templateId:q.id});bz.canonical=bC;let bD=(0,t._9)(q,ah,{preserveExplicitOutline:ab}),bE=$({chapters:function(a){if(!function(a){let b=A(`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>a.title).join(" ")}`);return!!/施工组织设计|施工组织|施组|技术标|投标技术|施工方案/u.test(b)||["施工","工程","质量","安全","进度","文明","部署","方案"].filter(a=>b.includes(a)).length>=3&&!/监理|可研|运维|维护|保养/u.test(b)}(a))return a.chapters;let b=C(a),c=A(`${a.template.name} ${a.template.outputTitle||""} ${a.requirement||""} ${a.chapters.map(a=>`${a.title} ${(a.sections||[]).join(" ")}`).join(" ")}`),d=a.chapters.some(a=>/概况|部署|总体|组织|主要施工方案|保障|保证|综合措施|管理体系/u.test(a.title)&&!/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|应急|BIM|智慧|管线|交通导改/u.test(a.title)),e=z.filter(a=>D(a,b,c)),f=new Set,g=a.chapters.map(a=>({...a,sections:[...a.sections||[]],queries:[...a.queries||[]],requiredFacts:[...a.requiredFacts||[]],tableSections:[...a.tableSections||[]]}));for(let a of e){let e=g.map((b,c)=>({index:c,score:E(b.title,a),chapter:b})).filter(d=>(function(a,b,c,d){var e;if(!D(a,c,d))return!1;let f=A(b.title);if(a.aliases.some(a=>f.includes(A(a)))||a.sectionItems.some(a=>f.includes(A(a))))return!0;if(e=b.title,/雨季|冬季|高温|防汛|扬尘|噪声|工资|劳务|实名|应急|BIM|智慧|管线|交通导改|垃圾分类|多塔|成品保护/u.test(e))return!1;let g=E(b.title,a);return g>=10||("optional"===a.level?g>=12||/BIM|智慧|数字|创新/iu.test(d):"conditional"===a.level?g>=8||a.projectTypes?.some(a=>c.includes(a))===!0||a.aliases.some(a=>d.includes(A(a))):g>=6)})(a,d.chapter,b,c)).sort((a,b)=>b.score-a.score),h=e[0]?.index??(d&&("core"===a.level||"mandatory"===a.level)?F(a,g):-1);if(h<0)continue;let i=g[h],j=function(a,b){let c=A(b.title);return a.aliases.some(a=>c.includes(A(a)))||c.includes(A(a.title)),a.title}(a,i);i.sections=B(i.sections,[j,...a.sectionItems],50),i.queries=B(i.queries,[a.title,...a.queries],30),i.requiredFacts=B(i.requiredFacts,a.facts,30),i.tableSections=B(i.tableSections,a.tableSections||[],20),i.purpose=`${i.purpose};系统已按施工组织设计标准模块库自动挂靠“${a.title}”,仅在本章范围内展开与章节语义、项目类型和资料事实合理相关的内容,禁止机械塞入无关内容。`,f.add(a.id)}for(let a of d?e.filter(a=>("mandatory"===a.level||"core"===a.level)&&!f.has(a.id)):[]){let b=F(a,g),c=g[b];c.sections=B(c.sections,[a.title,...a.sectionItems],50),c.queries=B(c.queries,[a.title,...a.queries],30),c.requiredFacts=B(c.requiredFacts,a.facts,30),c.tableSections=B(c.tableSections,a.tableSections||[],20),c.purpose=`${c.purpose};系统已补足施工组织设计必备模块“${a.title}”,需以合理挂靠方式呈现,不改变用户一级章节。`}return g}({template:q,chapters:bD,requirement:a.requirement}),projectGraph:bB,canonicalFacts:bC});q={...q,chapters:bE};let bF=new Map;if(bB){let a=new Set;for(let b of[...bB.works,...bB.methods,...bB.resources,...bB.schedule,...bB.standards,...bB.risks,...bB.requirements,...bB.siteConditions])(b.sourceFiles||[]).forEach(b=>a.add(b));for(let b of bE){let c=[b.title,b.purpose,...b.sections||[],...b.requiredFacts||[],...b.queries||[]].join(" "),d=a=>a&&((0,c0.C1)(a,c,.18)||(0,c0.C1)(a,b.title,.12)),e=/概况|总体|部署|施工|进度|工期|质量|安全|资源|人材机|材料|机械|劳动力|风险|危大|绿色|环保/u.test(c),f=bB.works.filter(a=>a.name&&(d(a.name)||e)),g=bB.methods.filter(a=>a.name&&(d(a.name)||(a.applicableWorks||[]).some(d)||e)),h=bB.resources.filter(a=>a.name&&(d(a.name)||/资源|人材机|材料|机械|劳动力/u.test(c)&&/material|equipment|labor/u.test(a.type))),i=bB.gaps.filter(a=>d(a)||e),j=new Set;for(let a of f)(a.sourceFiles||[]).forEach(a=>j.add(a));for(let a of g)(a.sourceFiles||[]).forEach(a=>j.add(a));for(let a of h)(a.sourceFiles||[]).forEach(a=>j.add(a));0===j.size&&e&&[...a].slice(0,12).forEach(a=>j.add(a)),bF.set(b.id,{graphFiles:j,graphBoqItems:h.map(a=>({name:a.name,quantity:a.quantity,unit:a.unit,sourceFiles:a.sourceFiles||[]})),graphWorks:f.map(a=>a.name),graphMethods:g.map(a=>a.name),gaps:i})}(0,ay.fx)(P,(0,ay.X5)({type:"file_understanding",roleId:"project-graph-match",status:"success",message:`图谱→章节映射完成:${bB.works.length}工程 ${bB.methods.length}工法 ${bB.resources.length}资源 → ${bE.length}章`,details:bE.map(a=>{let b=bF.get(a.id);return`${(0,t.GQ)(a.title)}:图谱文件${b?.graphFiles.size||0}个,BOQ项${b?.graphBoqItems.length||0}个`})},{subtitle:"图谱章节映射"})),I()}let bG=bE,bH=V.prompt,bI=[bH,S({template:{...q,chapters:bG},chapters:bG,factsModel:bz,requirement:a.requirement})].filter(Boolean).join("\n\n"),bJ={...q,chapters:bG},bK=function(a,b){let c=a.replace(/\\n/gu,"\n"),d=new Map,e=[...c.matchAll(/第([一二两三四五六七八九十\d]+)章[^\n。;;]{0,80}(?:强制|必须|挂靠|小节|排序|最先|之后|之前)/gu)];for(let a of e){let b=function(a){let b={零:0,一:1,二:2,两:2,三:3,四:4,五:5,六:6,七:7,八:8,九:9};if(/^\d+$/u.test(a))return Number(a);if(void 0!==b[a])return b[a];if("十"===a)return 10;let c=/^(?:(一|二|两|三|四|五|六|七|八|九)?)十(?:(一|二|两|三|四|五|六|七|八|九))?$/u.exec(a);if(c)return 10*(c[1]?b[c[1]]:1)+(c[2]?b[c[2]]:0)}(a[1]);if(!b)continue;let f=Math.max(0,a.index||0),g=e.find(a=>(a.index||0)>f)?.index,h=c.slice(f,Math.min(c.length,g??f+1400));if(aL(h)&&!/(强制小节|必须小节|以下小节设置和排序|必须设置独立的|必须包含独立的)/u.test(h))continue;let i=function(a){let b=/(?:以下小节设置和排序|强制小节|必须小节)[::]\s*([\s\S]*?)(?:\n\s*#{2,6}\s|\n\s*第[一二两三四五六七八九十\d]+章|$)/u.exec(a)?.[1];if(b){let c=aM([...b.matchAll(/(?:^|\n)\s*\d+[..、]\s*([^——\-—::。;;\n]{2,30})(?:[——\-—::]|,|,|。|;|;|\n|$)/gu)].map(a=>a[1]),a);if(c.length>0)return c}let c=[];for(let b of a.matchAll(/第[一二两三四五六七八九十\d]+章[^。;;\n]{0,50}(?:强制)?(?:包含|设置|输出|排序|挂靠)[^::。;;\n]{0,20}[::]\s*([^。;;\n]{2,120})/gu))for(let a of b[1].split(/[、,,//及和与]/u))c.push(a);for(let b of a.matchAll(/[“"]([^”"]{2,30})[”"]\s*(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/([\p{Script=Han}A-Za-z0-9()()]{2,30})(?:——|—|-|:|:)\s*(?:独立的)?(?:二级)?小节/gu))c.push(b[1]);for(let b of a.matchAll(/(?:必须|应当|需|需要|包含|设置|输出)[^。;;\n]{0,30}(?:独立的)?(?:二级)?小节[::]\s*([^。;;\n]{2,80})/gu))for(let a of b[1].split(/[、,,//及和与]/u))c.push(a);return aM(c,a)}(h);if(0===i.length)continue;let j=d.get(b)||{blocks:[],titles:[]};for(let a of(j.blocks.push(h),i))j.titles.some(b=>aK(b,a))||j.titles.push(a);d.set(b,j)}return[...d.entries()].map(([a,c])=>{let d=b?.[a-1];return{chapterIndex:a-1,chapterTitle:d?.title,source:c.blocks[0]?.split("\n").find(a=>a.trim())?.trim().slice(0,120),requiredSections:c.titles.map((a,b)=>({title:a,order:b+1,required:!0,source:c.blocks[0]?.slice(0,240)}))}})}([aN,a.requirement||""].filter(Boolean).join("\n\n"),bG),bL=(0,w.tF)({requirement:a.requirement,promptTexts:aN,template:bJ,chapters:bG,spec:ah}),bM=0,bN=0;bG=$({chapters:await (0,M.l$)(bG.map((a,b)=>({chapter:a,chapterIndex:b})),async({chapter:b,chapterIndex:c})=>{if(b.sections?.length){bM+=1;let a=aS([...bK.filter(a=>a.chapterIndex===c||a.chapterTitle&&(0,t.GQ)(a.chapterTitle)===(0,t.GQ)(b.title)).flatMap(a=>a.requiredSections.sort((a,b)=>(a.order||0)-(b.order||0)).map(a=>a.title)),...b.sections],b.title);return{...b,sections:a.length?a:aS(b.sections,b.title)}}bN+=1;let d=(0,s.QR)(a6.filter(a=>a.chapterId===b.id||(0,u.Lk)(a,b.title)),{maxChars:(0,s.Pc)(bL.chapterTargets.get(b.id)||1200),preservePinned:!0}),e=V.chapterPlans.find(a=>a.chapterId===b.id)?.writingGoal||"",f=cx(Q,b),g=await aT({template:bJ,chapter:b,chapterIndex:c,evidence:d,promptTexts:f.promptTexts,projectContext:bI,requirement:a.requirement,roleContext:e,targetWords:bL.chapterTargets.get(b.id)||1200,structuralRules:bK,signal:a.signal}),h=bK.filter(a=>a.chapterIndex===c||a.chapterTitle&&(0,t.GQ)(a.chapterTitle)===(0,t.GQ)(b.title)).flatMap(a=>a.requiredSections.map(a=>`强制小节:${a.title}`));if((0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"section-planning",promptId:f.primaryPromptId,status:g.length?"success":"failed",message:`${(0,t.GQ)(b.title)} 小节规划${g.length?`生成 ${g.length} 个小节`:"未生成可用小节"}`,details:[...f.promptDetails,...h,...g.length?g.map(a=>`规划小节:${a}`):["规划结果为空或被污染过滤"]]},{subtitle:"小节规划"})),!g.length)throw Error(`${(0,t.GQ)(b.title)} 小节规划未生成可用小节`);return{...b,sections:g}},{kind:"llmRepair",targetWords:bL.targetChars||4e3,concurrency:2}),projectGraph:bB,canonicalFacts:bC});let bO=S({template:q={...q,chapters:bG},chapters:bG,factsModel:bz,requirement:a.requirement});bI=[bH,bO].filter(Boolean).join("\n\n"),(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"document-blueprint",status:"success",message:"已生成全局事实主表与文档蓝图,后续章节和小节将共用同一套专业约束",details:bO.split("\n").slice(0,12)},{subtitle:"全局蓝图"}));let bP=(0,w.tF)({requirement:a.requirement,promptTexts:aN,template:q,chapters:bG,spec:ah}),bQ=function(a){let b=Date.now(),c=a.template.chapters.map(a=>{let b=a.sections?.length?a.sections:[a.title];return{chapterId:a.id,title:a.title,purpose:a.purpose||cW(a.title),requiredFacts:[...new Set([...a.requiredFacts||[],a.title])],requiredGraphNodes:[a.title],evidenceQueries:[...new Set([a.title,...a.queries||[],...a.requiredFacts||[]])],qualityRules:["事实必须来自锁定资料范围","不得出现后台话术和兜底措辞","不得混入其他项目名称","章节必须覆盖规划小节"],forbiddenPhrases:cQ,sections:b.map(b=>({title:b,objective:cW(b),requiredFacts:[...new Set([b,...a.requiredFacts||[]])],requiredGraphNodes:[b],evidenceQueries:[...new Set([a.title,b,...cV(a.title),...cV(b),...a.queries||[],...a.requiredFacts||[]].filter(Boolean))],forbiddenPhrases:cQ,minChars:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(b)?1800:/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u.test(b)?2200:/原材料进场复试|见证取样|危大工程专项施工方案审批流程/u.test(b)?1200:/施工部署|施工流水|主要施工机械|劳动力|材料进场|资源动态|质量控制点|危大工程|安全隐患|临时用水|临时用电/u.test(b)?760:/概况|说明|依据/u.test(b)?260:420}))}});return{plan:{planId:`plan-${(0,M.c6)({templateId:a.template.id,scope:a.context.materialScope.scopeHash,chapters:c.map(a=>a.title)}).slice(0,10)}`,title:a.title||a.template.name,chapters:c,requiredGlobalFacts:["项目名称","工期","质量标准","招标范围"],forbiddenPhrases:cQ,qualityRules:["资料范围先锁定","基础图谱必跑","章节任务先于正文","Reviewer 通过后才能导出"]},node:{id:"document-planner",type:"document_planner",status:"completed",startedAt:b,completedAt:Date.now(),outputSummary:`${c.length} 章、${c.reduce((a,b)=>a+b.sections.length,0)} 个小节任务`,metrics:{chapters:c.length}}}}({template:q,context:bA,title:q.name});bA.documentPlan=bQ.plan,bA.nodes.push(bQ.node),(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"agent-document-planner",status:"success",message:bQ.node.outputSummary||"Agent 文档规划完成",details:bQ.plan.chapters.map(a=>`${a.title}:${a.sections.length} 个小节任务`)},{subtitle:"Agent Document Planner",order:P.length})),H=bG.map(a=>a.id);let bR=function(a){let b=a.template.chapters.length,c=b>0?a.targetWords/b:a.targetWords,d=`${a.template.name}
|
|
186
186
|
${a.template.category||""}
|
|
187
|
-
${a.requirement||""}`,e=/专项|安全|质量|验收|审核|合同|合规|审计|风控|风险/u.test(d),f=a.targetWords>=3e4||b>=8||c>=4e3,g=a.targetWords<=6e3&&b<=4&&!e;return{mode:e?"strict":f?"longform":g?"fast":"balanced",enableChapterReview:!0,enableGlobalReview:!0,enableDocumentBudgetExpansion:!1,enableFinalQualityReview:!0}}({template:q,targetWords:bP.targetChars||[...bP.chapterTargets.values()].reduce((a,b)=>a+b,0),requirement:a.requirement}),bS={strategy:bR,metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0},evidence:{raw:0,used:0,filteredNoise:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}};(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${bR.mode} 生成策略:章节审查 ${bR.enableChapterReview?"启用":"跳过"}、全局审查 ${bR.enableGlobalReview?"启用":"跳过"}、最终质量审查 ${bR.enableFinalQualityReview?"启用":"跳过"}、全文扩写 ${bR.enableDocumentBudgetExpansion?"启用":"跳过"};LLM 调用按工作流任务自然并行`},{subtitle:"后台自动策略"}));let bT=ab?"OUTLINE 章节":"模板章节",bU=(0,ay.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${bN} 章由 LLM 基于${bT}、项目资料理解和证据规划小节,${bM} 章已由模板显式提供小节并跳过规划`},{subtitle:"小节规划策略"}),bV=ab?`;识别到 OUTLINE 章节 ${Z.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",bW=[...Q.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...Q.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...Q.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,ay.fx)(P,(0,ay.X5)({type:"role_binding",roleId:L,status:"success",message:`已绑定项目资料 ${T.length} 份、${Q.prompts.length} 个有效提示词;写作 ${Q.writerPrompts.length}、章节 ${Q.chapterPrompts.length}、抽取 ${Q.extractionPrompts.length};已自动抽取运行时规则 ${aH.executionSummary.length} 条;语义资料覆盖 ${Math.round(100*ak.materialCoverageRate)}%${bV}`,details:[...bW,...aH.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:O,roleName:O})),(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${aH.executionSummary.length} 条,版本 ${aH.sourceHash}`,details:aH.executionSummary.length?[...aH.executionSummary,`必需表格:${aH.requiredTables.join("、")||"无"}`,`必含关键词:${aH.requiredKeywords?.join("、")||"无"}`,`禁含内容:${aH.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"document-readiness",status:ak.ready?"success":"failed",message:`生成准备度:绑定资料已就绪,语义覆盖 ${Math.round(100*ak.materialCoverageRate)}%,角色匹配 ${Math.round(100*ak.roleSatisfactionRate)}%,优化建议 ${Math.round(100*ak.specCompletenessRate)}%`,details:ak.diagnostics},{subtitle:"生成准备度检查"})),(0,ay.fx)(P,bU),I();let bX=Math.round(([...bP.chapterTargets.values()].reduce((a,b)=>a+b,0)||bP.targetChars||0)/Math.max(1,bG.length)),bY=Number(process.env.DOCUMENT_CHAPTER_CONCURRENCY||0),bZ=Math.max(1,Math.min(bG.length||1,Number.isFinite(bY)&&bY>0?Math.floor(bY):1));(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节自适应调度:本轮 ${bZ}/${bG.length} 章并发`,details:[`有效章节数:${bG.length}`,`平均章节目标:${bX} 字`,Number.isFinite(bY)&&bY>0?`章节并发来自 DOCUMENT_CHAPTER_CONCURRENCY=${Math.floor(bY)}`:"默认串行生成章节,优先保证 checkpoint/resume 稳定"]},{subtitle:"章节并发策略"})),I();for(let b=0;b<bG.length;b+=bZ){let c=bG.slice(b,b+bZ);await Promise.all(c.map(async(c,d)=>{let f,g=b+d;(0,M.Te)(a.signal);let h=Date.now(),i=P.length;try{var j,k;let b;P.push((0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:Q.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(c.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${g+1}/${bG.length}`,`二级小节:${c.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:g+1,total:bG.length,label:"章节生成"}},{subtitle:(0,t.GQ)(c.title),order:g})),I();let d=a.resumeChapters?.find(a=>a.id===c.id||a.title===c.title),m=d?.content?.trim(),p=d?.evidence?.length?[...d.evidence]:[],r=V.chapterPlans.find(a=>a.chapterId===c.id||a.chapterTitle===c.title),z=r?Object.values(r.evidenceQueries).flat().filter(Boolean):[],A=c.queries.length>0?c.queries:[q.name,q.outputTitle,c.title],B=bF.get(c.id);if(bB&&B&&B.graphFiles.size>0){let a=[...a0],b=b=>a.includes(b)?b:a.find(a=>a.endsWith(b)||a.includes(b));for(let a of[...B.graphFiles].map(a=>b(a)||a).filter(a=>aC(o,a,a0)).slice(0,12)){let b=bm(a,{maxChunkContentChars:8e3});if(b?.chunks?.length)for(let d of b.chunks)p.push({chapterId:c.id,filePath:b.file?.relativePath||a,score:5+(B.graphWorks.length+B.graphMethods.length)*.5,content:d.content,roleId:aY.get(a),processingType:aZ.get(a),sectionTitle:d.sectionTitle,source:"graph-evidence"})}}let C=/概况|工程|项目|总体|部署|进度|工期|质量/u.test(c.title)?cg:[],D=cE(c,[...A,...z],C),E=cF(c,C),F=Date.now();P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:Q.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(c.title)} 正在执行质量优先的章节检索${B?.graphFiles.size?`(图谱匹配 ${B.graphFiles.size} 个文件)`:""}`,details:D.slice(0,E).map(a=>`检索:${a.slice(0,42)}`),progress:{current:g+1,total:bG.length,label:"证据检索"}},{subtitle:(0,t.GQ)(c.title),order:g}),I();let H=m?[]:[...a0].filter(Boolean).sort(),J=[],L=D.slice(0,E);if(H.length>0&&L.length>0){(0,M.Te)(a.signal);let b=await (0,M.l$)(L,async a=>bn(a,H,Math.min(a2,12),c.title),{kind:"search"});J.push(...b)}for(let a of(bS.evidence.searchQueries+=Math.min(D.length,E),bS.evidence.searchMs+=Date.now()-F,J))p.push(...a.filter(a=>aC(o,a.filePath,aX)).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:aY.get(a.filePath),processingType:aZ.get(a.filePath),sectionTitle:a.sectionTitle,source:a.source})));let O=m?[]:await (0,ad.od)(()=>(0,aE.$b)({manager:y,projectRoot:o,chapter:c,plan:r,profile:U,scopedFilePaths:H,limitPerQuery:Math.min(a2,10),signal:a.signal}),Number(process.env.DOCUMENT_PLANNED_EVIDENCE_TIMEOUT_MS||45e3),a.signal).catch(()=>[])||[];p.push(...O);let R=new Set((c.pinnedEvidenceFilePaths||[]).filter(Boolean)),S=[];/概况|工程|项目|总体|部署|进度|工期|质量/u.test(c.title)&&p.push(...bq.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"})));let W=new Set([...R]),X=bP.chapterTargets.get(c.id)||1200,Y=(0,s.Pc)(X,6e3,12e3);for(let a of W){if(!aC(o,a,aX))continue;let b=R.has(a),d=bm(a,{maxChunkContentChars:Y});d&&p.push(...d.chunks.map(a=>({chapterId:c.id,filePath:d.file.relativePath,score:1,content:a.content,roleId:aY.get(d.file.relativePath),processingType:aZ.get(d.file.relativePath),sectionTitle:a.sectionTitle,source:b?"pinned-evidence":"bound-file"})))}let Z=p.filter(a=>aC(o,a.filePath,a0));if(!m&&aG.enabled&&aG.allowProjectFacts){let b=await bp({config:aG,chapterId:c.id,chapterTitle:c.title,sectionTitles:c.sections||[],runtimeRules:aH,localFacts:[...bz.project,...bz.schedule,...bz.quality,...bz.safety,...bz.resources,...bz.preciseFacts],signal:a.signal});a8.queries.push(...b.queries),a8.filteredCount+=b.filtered+b.evidence.length}let $=(0,s.Pc)(X,7e3,26e3),aa=m?[]:(0,aE.SK)({project:a$,chapter:c,plan:r,profile:U,scopedFilePaths:H,highRisk:a5.highRisk});aa.length>0&&Z.push(...bu(aa,a1)),Z=bu(Z,a1);let ab=cD(c,Z,{maxItems:cG(a2,c,a5.highRisk),maxChars:$+(a5.highRisk?14e3:4e3),preservePinned:!0},bS);bw(ab,a1,`chapter:${c.id}:initial`);let ac=c.requiredFacts.filter(a=>!ab.some(b=>(0,u.Lk)(b,a))),ae=0,af=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>c_(`${a.sectionTitle||""}${a.content||""}`).includes(c_(b)))),c=(a.chapter.tablePlans||[]).flatMap(a=>a.fillability?.missingProjectFactFields||[]),d=a.evidence.length<3?["章节证据数量不足"]:[],e=b.length+c.length+d.length,f=e>=5?"high":e>=2?"medium":"low",g="high"===f?"evidence_first":c.length>0?"generate_with_review_notes":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:f,missingFacts:b,missingEvidence:d,tableFieldGaps:[...new Set(c)],suggestedStrategy:g,reason:0===e?"章节事实、证据和表格可填性满足常规生成条件。":`识别到 ${e} 项生成前缺口,按 ${g} 策略生成。`}}({chapter:c,evidence:ab}),ag=new Set(ab.map(a=>a.filePath)).size,ai=!!B&&(B?.graphFiles.size||0)>=8&&ag>=6&&0===ac.length&&"low"===af.riskLevel,ak=H.length<=80&&("evidence_first"===af.suggestedStrategy||a5.highRisk||ac.length>0||ab.length<8&&"low"!==af.riskLevel);if(!ai&&ak&&H.length>0){let b=await (0,ad.od)(()=>_({manager:y,projectRoot:o,chapter:c,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,requiredNeeds:ac,highRisk:a5.highRisk,signal:a.signal}),Number(process.env.DOCUMENT_DEEP_EVIDENCE_TIMEOUT_MS||6e4),a.signal).catch(()=>[])||[];ae=b.length,b.length>0&&(Z=cD(c,[...Z,...bu(b,a1)],{maxItems:cG(a2+12,c,a5.highRisk),maxChars:$+(a5.highRisk?36e3:16e3),preservePinned:!0},bS),Z=bu(Z,a1),ab=cD(c,Z,{maxItems:cG(a2+8,c,a5.highRisk),maxChars:$+(a5.highRisk?28e3:12e3),preservePinned:!0},bS),bw(ab,a1,`chapter:${c.id}:deep`),ac=c.requiredFacts.filter(a=>!ab.some(b=>(0,u.Lk)(b,a))))}for(let a of(0===ab.length&&a9.push(`${c.title}:缺少可支撑正文的项目资料证据`),ac))a9.push(`${c.title}:事实需求未满足 ${a}`);let al=(0,ay.X5)({type:"knowledge_retrieval",roleId:"knowledge-base",status:a6.length>0?"success":"failed",message:`已检索/绑定 ${a6.length} 条证据`});bj<0?bj=(0,ay.fx)(P,al):P[bj]={...al,order:P[bj]?.order??al.order},I(),(0,M.Te)(a.signal);let am=[B?[B.graphWorks.length?`图谱识别本章工程内容:${B.graphWorks.join("、")}`:"",B.graphMethods.length?`图谱识别本章施工方法:${B.graphMethods.join("、")}`:"",B.graphBoqItems.length?`图谱识别本章BOQ清单项(${B.graphBoqItems.length}项):${B.graphBoqItems.slice(0,30).map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",B.gaps.length?`图谱识别本章资料缺口:${B.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",r?.writingGoal,r?.mustCover?.length?`本章必须覆盖:${r.mustCover.join("、")}`:"",r?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${r.mustUseMaterialKinds.join("、")}`:""].filter(Boolean).join("\n"),ao=cx(Q,c);if(Q.writerPrompts.length>0&&!ao.primaryWriter)throw Error(`${(0,t.GQ)(c.title)} 写作主控提示词未进入章节生成阶段`);let ap=[ao.promptTexts,an].filter(Boolean).join("\n\n"),ax=ao.promptDetails.length?ao.promptDetails:["未绑定章节写作提示词"],az=function(a){let b=a.profile||l,c=[],d=[a.template.name,a.template.outputTitle,a.chapter.title,a.chapter.purpose,...a.chapter.sections||[]].filter(Boolean).join(" "),e=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title);for(let d of a.chapter.requiredFacts||[])as(c,b,{label:d,category:n(b,d)?.category||"required",required:!0,source:"template"});for(let d of a.chapter.sections||[])as(c,b,{label:d,category:"section",required:!1,source:"section",queries:ar(d,[a.chapter.title])});for(let d of a.plan?.requiredContents||[])as(c,b,{label:d,category:n(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of a.plan?.evidenceNeeds||[])as(c,b,{label:d,category:n(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of e?.requiredFactIds||[]){let e=a.spec?.factFields.find(a=>a.id===d);e&&as(c,b,{label:e.name,category:n(b,e.name)?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:ar(e.name,[e.extractionHint||"",e.validationHint||""])})}for(let e of a.spec?.factFields||[]){if(!e.required)continue;let f=n(b,e.name),g=`${e.name} ${e.extractionHint||""} ${e.validationHint||""}`;(d.includes(e.name)||ar(e.name,f?.aliases||[]).some(a=>d.includes(a))||a.chapter.requiredFacts.some(a=>a.includes(e.name)||e.name.includes(a)))&&as(c,b,{label:e.name,category:f?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:ar(e.name,[g])})}for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&d.includes(a))&&at(c,b,a,"profile","must_use"===a.usagePolicy,[d]);let f=aq(a.requirement||"");if(f)for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&f.includes(a))&&at(c,b,a,"requirement",!0,[f]);let g=aq(a.promptTexts||"");if(g)for(let d of b.factFields)[d.name,...d.aliases].some(a=>a.length>=2&&g.includes(a))&&at(c,b,d,"prompt","must_use"===d.usagePolicy,[a.chapter.title]);return c}({template:q,chapter:c,spec:ah,profile:aj,promptTexts:ap,requirement:a.requirement,plan:r?{requiredContents:r.mustCover,evidenceNeeds:Object.values(r.evidenceQueries).flat()}:void 0}),aD=av({needs:az,factsModel:bz,evidence:Z,profile:aj}),aF=aD.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label);if(aF.length>0&&H.length>0){let b=await (0,ad.od)(()=>cI({manager:y,projectRoot:o,chapter:c,needs:aF,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:a.signal}),Number(process.env.DOCUMENT_MISSING_FACT_EVIDENCE_TIMEOUT_MS||45e3),a.signal).catch(()=>[])||[],d=await (0,ad.od)(()=>_({manager:y,projectRoot:o,chapter:c,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,requiredNeeds:aF,highRisk:!0,signal:a.signal}),Number(process.env.DOCUMENT_DEEP_EVIDENCE_TIMEOUT_MS||6e4),a.signal).catch(()=>[])||[],e=bu([...b,...d],a1);e.length>0&&(Z=cD(c,[...Z,...e],{maxItems:cG(a2+16,c,!0),maxChars:$+42e3,preservePinned:!0},bS),Z=bu(Z,a1),ab=cD(c,Z,{maxItems:cG(a2+12,c,!0),maxChars:$+32e3,preservePinned:!0},bS),bw(ab,a1,`chapter:${c.id}:supplemental`),ac=c.requiredFacts.filter(a=>!ab.some(b=>(0,u.Lk)(b,a))),aF=(aD=av({needs:az,factsModel:bz,evidence:Z,profile:aj})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label))}bw(ab,a1,`chapter:${c.id}:writer-input`);let aI=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,u.Lk)(a,b)||`${a.sectionTitle||""} ${a.content}`.includes(b))).length,d=a.chapter.requiredFacts.length,e=a.chapter.requiredFacts.filter(b=>a.evidence.some(a=>(0,u.Lk)(a,b))).length;return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,risk:a.risk,evidenceCount:a.evidence.length,evidenceFiles:new Set(a.evidence.map(a=>a.filePath)).size,sectionCovered:c,sectionTotal:b,requiredFactCovered:e,requiredFactTotal:d}}({chapter:c,evidence:ab,risk:a5});a7.push(aI);let aJ=new Set(ab.map(a=>a.filePath)),aK=ab.reduce((a,b)=>a+b.content.length,0),aL=[...a5.highRisk?[`召回覆盖风险(${a5.riskReason||"切片未完全预加载"}):已加载 ${a5.loadedChunks}/${a5.totalChunks},已启用深召回`]:[],`深召回证据:${ae} 条`,`事实覆盖:${aI.requiredFactCovered}/${aI.requiredFactTotal}`,`小节覆盖:${aI.sectionCovered}/${aI.sectionTotal}`];P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:Q.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(c.title)} 已选取 ${ab.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${aJ.size} 份`,`上下文字符:${aK}`,`检索查询:${Math.min(D.length,E)} 组`,...aL],progress:{current:g+1,total:bG.length,label:"正文生成"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(),bS.evidence.contextChars+=aK;let aM=(j=aD,au(j.flatMap(a=>a.facts))),aN=/概况|工程|项目|总体|部署|进度|工期|质量/u.test(c.title)?bt:[],aO=function(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,s.eE)((0,M.lG)(a.value))}`),f=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),g=a.indexedFacts||[],h=(0,N.Cr)(g,a=>(0,N.rF)(a),{maxItems:48,maxChars:12e3},"indexedFacts"),i=f.length>0?[]:h.selected.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,s.eE)((0,M.lG)(a.value)).slice(0,180)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),j=h.dropped.length>0?[`⚠️ ${h.dropped.length} 个低优先级事实未列出(完整列表见事实主表)`]:[],k=[...f,...g].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,M.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,M.lG)(a.value)}`)===b),l=[...new Set([...function(a){let b=new Set,c=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu;for(let d of a){let a=(0,M.lG)(d.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let d of a.matchAll(c))b.add(d[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}(a.evidence),...f.map(a=>(0,M.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a)),...g.map(a=>(0,M.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a))])],m=0,n=[];for(let a of l){if(m+a.length>3e3&&n.length>=10)break;n.push(a),m+=a.length+1}let o=new Set([...a.evidence.map(a=>a.filePath),...f.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,p=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
|
|
187
|
+
${a.requirement||""}`,e=/专项|安全|质量|验收|审核|合同|合规|审计|风控|风险/u.test(d),f=a.targetWords>=3e4||b>=8||c>=4e3,g=a.targetWords<=6e3&&b<=4&&!e;return{mode:e?"strict":f?"longform":g?"fast":"balanced",enableChapterReview:!0,enableGlobalReview:!0,enableDocumentBudgetExpansion:!1,enableFinalQualityReview:!0}}({template:q,targetWords:bP.targetChars||[...bP.chapterTargets.values()].reduce((a,b)=>a+b,0),requirement:a.requirement}),bS={strategy:bR,metrics:[],llm:{calls:0,failures:0,maxActive:0,retries:0},evidence:{raw:0,used:0,filteredNoise:0,avgNoiseScore:0,avgFactDensity:0,searchQueries:0,searchMs:0,contextChars:0},quality:{blockingCount:0,importantCount:0,minorCount:0,repairedCount:0}};(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"document-strategy",status:"success",message:`已自动选择 ${bR.mode} 生成策略:章节审查 ${bR.enableChapterReview?"启用":"跳过"}、全局审查 ${bR.enableGlobalReview?"启用":"跳过"}、最终质量审查 ${bR.enableFinalQualityReview?"启用":"跳过"}、全文扩写 ${bR.enableDocumentBudgetExpansion?"启用":"跳过"};LLM 调用按工作流任务自然并行`},{subtitle:"后台自动策略"}));let bT=ab?"OUTLINE 章节":"模板章节",bU=(0,ay.X5)({type:"validation",roleId:"section-planning",status:"success",message:`小节规划:${bN} 章由 LLM 基于${bT}、项目资料理解和证据规划小节,${bM} 章已由模板显式提供小节并跳过规划`},{subtitle:"小节规划策略"}),bV=ab?`;识别到 OUTLINE 章节 ${Z.length} 个`:";未识别到有效 OUTLINE,将使用模板章节",bW=[...Q.prompts.map(a=>`${a.category}|${a.roleId}|${a.id}|${a.name}|${a.bindingSource}|${a.content.length} 字符|hash=${a.contentHash}|${a.contentPreview}`),...Q.unresolvedRoles.map(a=>`unresolved|${a}|项目角色配置中的提示词角色不存在`),...Q.missingResourceRoles.map(a=>`missingResource|${a}|提示词角色未显式绑定资源`)];(0,ay.fx)(P,(0,ay.X5)({type:"role_binding",roleId:L,status:"success",message:`已绑定项目资料 ${T.length} 份、${Q.prompts.length} 个有效提示词;写作 ${Q.writerPrompts.length}、章节 ${Q.chapterPrompts.length}、抽取 ${Q.extractionPrompts.length};已自动抽取运行时规则 ${aH.executionSummary.length} 条;语义资料覆盖 ${Math.round(100*ak.materialCoverageRate)}%${bV}`,details:[...bW,...aH.executionSummary.map(a=>`runtimeRule|${a}`)]},{subtitle:O,roleName:O})),(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"runtime-prompt-rules",status:"success",message:`运行时提示词规则已抽取:${aH.executionSummary.length} 条,版本 ${aH.sourceHash}`,details:aH.executionSummary.length?[...aH.executionSummary,`必需表格:${aH.requiredTables.join("、")||"无"}`,`必含关键词:${aH.requiredKeywords?.join("、")||"无"}`,`禁含内容:${aH.forbiddenPatterns?.join("、")||"无"}`]:["未从提示词中识别到额外硬规则,使用系统默认质量规则"]},{subtitle:"提示词规则执行"})),(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"document-readiness",status:ak.ready?"success":"failed",message:`生成准备度:绑定资料已就绪,语义覆盖 ${Math.round(100*ak.materialCoverageRate)}%,角色匹配 ${Math.round(100*ak.roleSatisfactionRate)}%,优化建议 ${Math.round(100*ak.specCompletenessRate)}%`,details:ak.diagnostics},{subtitle:"生成准备度检查"})),(0,ay.fx)(P,bU),I();let bX=Math.round(([...bP.chapterTargets.values()].reduce((a,b)=>a+b,0)||bP.targetChars||0)/Math.max(1,bG.length)),bY=Number(process.env.DOCUMENT_CHAPTER_CONCURRENCY||0),bZ=bG.length<=1?1:bP.longformStrict||bX>=9e3?2:bX>=6500?Math.min(3,bG.length):Math.min(4,bG.length),b$=Math.max(1,Math.min(bG.length||1,Number.isFinite(bY)&&bY>0?Math.floor(bY):bZ));(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:"chapter-concurrency",status:"success",message:`章节自适应调度:本轮 ${b$}/${bG.length} 章并发`,details:[`有效章节数:${bG.length}`,`平均章节目标:${bX} 字`,Number.isFinite(bY)&&bY>0?`章节并发来自 DOCUMENT_CHAPTER_CONCURRENCY=${Math.floor(bY)}`:`章节并发自适应=${bZ},长章保守、短章提速`]},{subtitle:"章节并发策略"})),I();for(let b=0;b<bG.length;b+=b$){let c=bG.slice(b,b+b$);await Promise.all(c.map(async(c,d)=>{let f,g=b+d;(0,M.Te)(a.signal);let h=Date.now(),i=P.length;try{var j,k;let b;P.push((0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:Q.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(c.title)} 正在检索证据并准备章节内容`,details:[`章节序号:${g+1}/${bG.length}`,`二级小节:${c.sections?.length||0} 个`,"正在生成检索查询"],progress:{current:g+1,total:bG.length,label:"章节生成"}},{subtitle:(0,t.GQ)(c.title),order:g})),I();let d=a.resumeChapters?.find(a=>a.id===c.id||a.title===c.title),m=d?.content?.trim(),p=d?.evidence?.length?[...d.evidence]:[],r=V.chapterPlans.find(a=>a.chapterId===c.id||a.chapterTitle===c.title),z=r?Object.values(r.evidenceQueries).flat().filter(Boolean):[],A=c.queries.length>0?c.queries:[q.name,q.outputTitle,c.title],B=bF.get(c.id);if(bB&&B&&B.graphFiles.size>0){let a=[...a0],b=b=>a.includes(b)?b:a.find(a=>a.endsWith(b)||a.includes(b));for(let a of[...B.graphFiles].map(a=>b(a)||a).filter(a=>aC(o,a,a0)).slice(0,12)){let b=bm(a,{maxChunkContentChars:8e3});if(b?.chunks?.length)for(let d of b.chunks)p.push({chapterId:c.id,filePath:b.file?.relativePath||a,score:5+(B.graphWorks.length+B.graphMethods.length)*.5,content:d.content,roleId:aY.get(a),processingType:aZ.get(a),sectionTitle:d.sectionTitle,source:"graph-evidence"})}}let C=/概况|工程|项目|总体|部署|进度|工期|质量/u.test(c.title)?cg:[],D=cE(c,[...A,...z],C),E=cF(c,C),F=Date.now();P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:Q.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(c.title)} 正在执行质量优先的章节检索${B?.graphFiles.size?`(图谱匹配 ${B.graphFiles.size} 个文件)`:""}`,details:D.slice(0,E).map(a=>`检索:${a.slice(0,42)}`),progress:{current:g+1,total:bG.length,label:"证据检索"}},{subtitle:(0,t.GQ)(c.title),order:g}),I();let H=m?[]:[...a0].filter(Boolean).sort(),J=[],L=D.slice(0,E);if(H.length>0&&L.length>0){(0,M.Te)(a.signal);let b=await (0,M.l$)(L,async a=>bn(a,H,Math.min(a2,12),c.title),{kind:"search"});J.push(...b)}for(let a of(bS.evidence.searchQueries+=Math.min(D.length,E),bS.evidence.searchMs+=Date.now()-F,J))p.push(...a.filter(a=>aC(o,a.filePath,aX)).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:aY.get(a.filePath),processingType:aZ.get(a.filePath),sectionTitle:a.sectionTitle,source:a.source})));let O=m?[]:await (0,ad.od)(()=>(0,aE.$b)({manager:y,projectRoot:o,chapter:c,plan:r,profile:U,scopedFilePaths:H,limitPerQuery:Math.min(a2,10),signal:a.signal}),Number(process.env.DOCUMENT_PLANNED_EVIDENCE_TIMEOUT_MS||45e3),a.signal).catch(()=>[])||[];p.push(...O);let R=new Set((c.pinnedEvidenceFilePaths||[]).filter(Boolean)),S=[];/概况|工程|项目|总体|部署|进度|工期|质量/u.test(c.title)&&p.push(...bq.map(a=>({...a,chapterId:c.id,source:"pinned-evidence"})));let W=new Set([...R]),X=bP.chapterTargets.get(c.id)||1200,Y=(0,s.Pc)(X,6e3,12e3);for(let a of W){if(!aC(o,a,aX))continue;let b=R.has(a),d=bm(a,{maxChunkContentChars:Y});d&&p.push(...d.chunks.map(a=>({chapterId:c.id,filePath:d.file.relativePath,score:1,content:a.content,roleId:aY.get(d.file.relativePath),processingType:aZ.get(d.file.relativePath),sectionTitle:a.sectionTitle,source:b?"pinned-evidence":"bound-file"})))}let Z=p.filter(a=>aC(o,a.filePath,a0));if(!m&&aG.enabled&&aG.allowProjectFacts){let b=await bp({config:aG,chapterId:c.id,chapterTitle:c.title,sectionTitles:c.sections||[],runtimeRules:aH,localFacts:[...bz.project,...bz.schedule,...bz.quality,...bz.safety,...bz.resources,...bz.preciseFacts],signal:a.signal});a8.queries.push(...b.queries),a8.filteredCount+=b.filtered+b.evidence.length}let $=(0,s.Pc)(X,7e3,26e3),aa=m?[]:(0,aE.SK)({project:a$,chapter:c,plan:r,profile:U,scopedFilePaths:H,highRisk:a5.highRisk});aa.length>0&&Z.push(...bu(aa,a1)),Z=bu(Z,a1);let ab=cD(c,Z,{maxItems:cG(a2,c,a5.highRisk),maxChars:$+(a5.highRisk?14e3:4e3),preservePinned:!0},bS);bw(ab,a1,`chapter:${c.id}:initial`);let ac=c.requiredFacts.filter(a=>!ab.some(b=>(0,u.Lk)(b,a))),ae=0,af=function(a){let b=(a.chapter.requiredFacts||[]).filter(b=>!a.evidence.some(a=>c_(`${a.sectionTitle||""}${a.content||""}`).includes(c_(b)))),c=(a.chapter.tablePlans||[]).flatMap(a=>a.fillability?.missingProjectFactFields||[]),d=a.evidence.length<3?["章节证据数量不足"]:[],e=b.length+c.length+d.length,f=e>=5?"high":e>=2?"medium":"low",g="high"===f?"evidence_first":c.length>0?"generate_with_review_notes":b.length>0?"section_first":"normal";return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,canGenerate:!0,riskLevel:f,missingFacts:b,missingEvidence:d,tableFieldGaps:[...new Set(c)],suggestedStrategy:g,reason:0===e?"章节事实、证据和表格可填性满足常规生成条件。":`识别到 ${e} 项生成前缺口,按 ${g} 策略生成。`}}({chapter:c,evidence:ab}),ag=new Set(ab.map(a=>a.filePath)).size,ai=!!B&&(B?.graphFiles.size||0)>=8&&ag>=6&&0===ac.length&&"low"===af.riskLevel,ak=H.length<=80&&("evidence_first"===af.suggestedStrategy||a5.highRisk||ac.length>0||ab.length<8&&"low"!==af.riskLevel);if(!ai&&ak&&H.length>0){let b=await (0,ad.od)(()=>_({manager:y,projectRoot:o,chapter:c,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,requiredNeeds:ac,highRisk:a5.highRisk,signal:a.signal}),Number(process.env.DOCUMENT_DEEP_EVIDENCE_TIMEOUT_MS||6e4),a.signal).catch(()=>[])||[];ae=b.length,b.length>0&&(Z=cD(c,[...Z,...bu(b,a1)],{maxItems:cG(a2+12,c,a5.highRisk),maxChars:$+(a5.highRisk?36e3:16e3),preservePinned:!0},bS),Z=bu(Z,a1),ab=cD(c,Z,{maxItems:cG(a2+8,c,a5.highRisk),maxChars:$+(a5.highRisk?28e3:12e3),preservePinned:!0},bS),bw(ab,a1,`chapter:${c.id}:deep`),ac=c.requiredFacts.filter(a=>!ab.some(b=>(0,u.Lk)(b,a))))}for(let a of(0===ab.length&&a9.push(`${c.title}:缺少可支撑正文的项目资料证据`),ac))a9.push(`${c.title}:事实需求未满足 ${a}`);let al=(0,ay.X5)({type:"knowledge_retrieval",roleId:"knowledge-base",status:a6.length>0?"success":"failed",message:`已检索/绑定 ${a6.length} 条证据`});bj<0?bj=(0,ay.fx)(P,al):P[bj]={...al,order:P[bj]?.order??al.order},I(),(0,M.Te)(a.signal);let am=[B?[B.graphWorks.length?`图谱识别本章工程内容:${B.graphWorks.join("、")}`:"",B.graphMethods.length?`图谱识别本章施工方法:${B.graphMethods.join("、")}`:"",B.graphBoqItems.length?`图谱识别本章BOQ清单项(${B.graphBoqItems.length}项):${B.graphBoqItems.slice(0,30).map(a=>`${a.name} ${a.quantity}${a.unit}`).join("、")}`:"",B.gaps.length?`图谱识别本章资料缺口:${B.gaps.join(";")}`:""].filter(Boolean).join("\n"):"",r?.writingGoal,r?.mustCover?.length?`本章必须覆盖:${r.mustCover.join("、")}`:"",r?.mustUseMaterialKinds?.length?`本章优先使用资料类型:${r.mustUseMaterialKinds.join("、")}`:""].filter(Boolean).join("\n"),ao=cx(Q,c);if(Q.writerPrompts.length>0&&!ao.primaryWriter)throw Error(`${(0,t.GQ)(c.title)} 写作主控提示词未进入章节生成阶段`);let ap=[ao.promptTexts,an].filter(Boolean).join("\n\n"),ax=ao.promptDetails.length?ao.promptDetails:["未绑定章节写作提示词"],az=function(a){let b=a.profile||l,c=[],d=[a.template.name,a.template.outputTitle,a.chapter.title,a.chapter.purpose,...a.chapter.sections||[]].filter(Boolean).join(" "),e=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title);for(let d of a.chapter.requiredFacts||[])as(c,b,{label:d,category:n(b,d)?.category||"required",required:!0,source:"template"});for(let d of a.chapter.sections||[])as(c,b,{label:d,category:"section",required:!1,source:"section",queries:ar(d,[a.chapter.title])});for(let d of a.plan?.requiredContents||[])as(c,b,{label:d,category:n(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of a.plan?.evidenceNeeds||[])as(c,b,{label:d,category:n(b,d)?.category||"plan",required:!0,source:"plan"});for(let d of e?.requiredFactIds||[]){let e=a.spec?.factFields.find(a=>a.id===d);e&&as(c,b,{label:e.name,category:n(b,e.name)?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:ar(e.name,[e.extractionHint||"",e.validationHint||""])})}for(let e of a.spec?.factFields||[]){if(!e.required)continue;let f=n(b,e.name),g=`${e.name} ${e.extractionHint||""} ${e.validationHint||""}`;(d.includes(e.name)||ar(e.name,f?.aliases||[]).some(a=>d.includes(a))||a.chapter.requiredFacts.some(a=>a.includes(e.name)||e.name.includes(a)))&&as(c,b,{label:e.name,category:f?.category||"spec",required:!0,source:"spec",fieldId:e.id,queries:ar(e.name,[g])})}for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&d.includes(a))&&at(c,b,a,"profile","must_use"===a.usagePolicy,[d]);let f=aq(a.requirement||"");if(f)for(let a of b.factFields)[a.name,...a.aliases].some(a=>a.length>=2&&f.includes(a))&&at(c,b,a,"requirement",!0,[f]);let g=aq(a.promptTexts||"");if(g)for(let d of b.factFields)[d.name,...d.aliases].some(a=>a.length>=2&&g.includes(a))&&at(c,b,d,"prompt","must_use"===d.usagePolicy,[a.chapter.title]);return c}({template:q,chapter:c,spec:ah,profile:aj,promptTexts:ap,requirement:a.requirement,plan:r?{requiredContents:r.mustCover,evidenceNeeds:Object.values(r.evidenceQueries).flat()}:void 0}),aD=av({needs:az,factsModel:bz,evidence:Z,profile:aj}),aF=aD.filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label);if(aF.length>0&&H.length>0){let b=await (0,ad.od)(()=>cI({manager:y,projectRoot:o,chapter:c,needs:aF,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:a.signal}),Number(process.env.DOCUMENT_MISSING_FACT_EVIDENCE_TIMEOUT_MS||45e3),a.signal).catch(()=>[])||[],d=await (0,ad.od)(()=>_({manager:y,projectRoot:o,chapter:c,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,requiredNeeds:aF,highRisk:!0,signal:a.signal}),Number(process.env.DOCUMENT_DEEP_EVIDENCE_TIMEOUT_MS||6e4),a.signal).catch(()=>[])||[],e=bu([...b,...d],a1);e.length>0&&(Z=cD(c,[...Z,...e],{maxItems:cG(a2+16,c,!0),maxChars:$+42e3,preservePinned:!0},bS),Z=bu(Z,a1),ab=cD(c,Z,{maxItems:cG(a2+12,c,!0),maxChars:$+32e3,preservePinned:!0},bS),bw(ab,a1,`chapter:${c.id}:supplemental`),ac=c.requiredFacts.filter(a=>!ab.some(b=>(0,u.Lk)(b,a))),aF=(aD=av({needs:az,factsModel:bz,evidence:Z,profile:aj})).filter(a=>a.need.required&&"satisfied"!==a.status).map(a=>a.need.label))}bw(ab,a1,`chapter:${c.id}:writer-input`);let aI=function(a){let b=a.chapter.sections?.length||0,c=(a.chapter.sections||[]).filter(b=>a.evidence.some(a=>(0,u.Lk)(a,b)||`${a.sectionTitle||""} ${a.content}`.includes(b))).length,d=a.chapter.requiredFacts.length,e=a.chapter.requiredFacts.filter(b=>a.evidence.some(a=>(0,u.Lk)(a,b))).length;return{chapterId:a.chapter.id,chapterTitle:a.chapter.title,risk:a.risk,evidenceCount:a.evidence.length,evidenceFiles:new Set(a.evidence.map(a=>a.filePath)).size,sectionCovered:c,sectionTotal:b,requiredFactCovered:e,requiredFactTotal:d}}({chapter:c,evidence:ab,risk:a5});a7.push(aI);let aJ=new Set(ab.map(a=>a.filePath)),aK=ab.reduce((a,b)=>a+b.content.length,0),aL=[...a5.highRisk?[`召回覆盖风险(${a5.riskReason||"切片未完全预加载"}):已加载 ${a5.loadedChunks}/${a5.totalChunks},已启用深召回`]:[],`深召回证据:${ae} 条`,`事实覆盖:${aI.requiredFactCovered}/${aI.requiredFactTotal}`,`小节覆盖:${aI.sectionCovered}/${aI.sectionTotal}`];P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:Q.writerPrompts[0]?.id,status:"running",message:`${(0,t.GQ)(c.title)} 已选取 ${ab.length} 条高相关证据,正在生成正文`,details:[`使用绑定文件:${aJ.size} 份`,`上下文字符:${aK}`,`检索查询:${Math.min(D.length,E)} 组`,...aL],progress:{current:g+1,total:bG.length,label:"正文生成"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(),bS.evidence.contextChars+=aK;let aM=(j=aD,au(j.flatMap(a=>a.facts))),aN=/概况|工程|项目|总体|部署|进度|工期|质量/u.test(c.title)?bt:[],aO=function(a){let b=a.spec?.chapterRules.find(b=>b.id===a.chapter.id||b.title===a.chapter.title),c=(b?.requiredFactIds||[]).map(b=>a.spec?.factFields.find(a=>a.id===b)?.name).filter(Boolean),d=[...new Set([...a.chapter.requiredFacts,...c,...a.plan?.requiredContents||[],...a.plan?.evidenceNeeds||[],...(a.resolvedFactNeeds||[]).filter(a=>a.need.required).map(a=>a.need.label)].filter(Boolean))],e=a.roleFacts.map(({fact:a})=>`- ${a.key}:${(0,s.eE)((0,M.lG)(a.value))}`),f=(a.resolvedFactNeeds||[]).flatMap(a=>a.facts),g=a.indexedFacts||[],h=(0,N.Cr)(g,a=>(0,N.rF)(a),{maxItems:48,maxChars:12e3},"indexedFacts"),i=f.length>0?[]:h.selected.map(a=>`- ${a.key||a.fieldName||"资料事实"}:${(0,s.eE)((0,M.lG)(a.value)).slice(0,180)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`),j=h.dropped.length>0?[`⚠️ ${h.dropped.length} 个低优先级事实未列出(完整列表见事实主表)`]:[],k=[...f,...g].filter(a=>/建设地点|建设规模|招标范围|计划工期|合同工期|周期要求|质量标准|合同估算|投资估算|最高投标限价|招标控制价/u.test(`${a.key||""}${a.fieldName||""}${a.fieldId||""}`)).filter((a,b,c)=>c.findIndex(b=>`${b.key||b.fieldName}:${(0,M.lG)(b.value)}`==`${a.key||a.fieldName}:${(0,M.lG)(a.value)}`)===b),l=[...new Set([...function(a){let b=new Set,c=/(?:\b[A-Z]{1,8}[\w./-]*\d[\w./-]*\b|\b\d+(?:\.\d+)?\s*(?:mm|cm|m|km|㎡|m²|m3|m³|kg|g|t|L|ml|MPa|kPa|℃|%|台|套|个|项|批|次|份|人|小时|分钟|日历天|天|周|月|年|万元|元)\b|\b\d+\s*[×xX]\s*\d+(?:\s*[×xX]\s*\d+)?\b|\b(?:GB|GB\/T|ISO|IEC|IEEE|RFC|API|DB\d*|T\/[A-Z]+)\s*[\w.-]+\b)/giu;for(let d of a){let a=(0,M.lG)(d.content).replace(/\s+/gu," ");if((!/报价明细|投标报价|单价|合价|综合单价|预留金|税率|增值税|利润|结算/u.test(a)||/合同估算价|合同估算价格|投资估算|最高投标限价|招标控制价/u.test(a))&&!/OCR|识别错误|乱码|无法确认|疑似|不确定|语义断裂/u.test(a)){for(let d of a.matchAll(c))b.add(d[0].trim());if(b.size>=40)break}}return[...b].slice(0,40)}(a.evidence),...f.map(a=>(0,M.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a)),...g.map(a=>(0,M.lG)(a.value)).filter(a=>/\d|DN|φ|Φ|mm|cm|m²|m3|m³|MPa|kPa|℃|%|GB|JGJ|ISO|台|套|个|项|批|次|份|人|㎡|日历天|万元|元/iu.test(a))])],m=0,n=[];for(let a of l){if(m+a.length>3e3&&n.length>=10)break;n.push(a),m+=a.length+1}let o=new Set([...a.evidence.map(a=>a.filePath),...f.map(a=>a.sourceFile),...(a.indexedFacts||[]).map(a=>a.sourceFile)]).size,p=(a.resolvedFactNeeds||[]).filter(a=>"satisfied"!==a.status&&a.need.required).map(a=>a.need.label);return["【本章事实覆盖与参数落位要求】",d.length?`必须优先覆盖的事实/要求:
|
|
188
188
|
${d.map(a=>`- ${a}`).join("\n")}`:"",e.length?`角色节点已抽取事实:
|
|
189
189
|
${e.join("\n")}`:"",k.length?`项目基础事实卡片(资料已明确,项目概况、项目基本信息表、进度和质量相关内容必须优先使用,不得输出任何占位话术):
|
|
190
190
|
${k.map(a=>`- ${a.key||a.fieldName}:${(0,s.eE)((0,M.lG)(a.value)).slice(0,220)}${a.sourceFile?`(来源:${a.sourceFile.split("/").pop()})`:""}`).join("\n")}
|
|
191
191
|
项目基本信息表必须使用固定表头:| 信息项 | 内容 |,不得使用“序号|项目名称|内容参数”表头,不得输出后台溯源列。`:"",a.factNeedsPrompt||"",i.length?`全局资料事实索引匹配到的本章可写事实:
|
|
192
192
|
${i.join("\n")}`:"",n.length?`本章资料中可直接使用的可靠精确参数/编号:${n.join("、")}。这些参数来自绑定资料,不属于编造;涉及对应对象、部位、工序、材料、设备、项目概况、质量验收或安全控制时必须自然写入正文,并保持原样或等价专业表达。项目基础事实中的合同估算价、计划工期可用于项目概况;不得写入报价明细、单价、税率、预留金。`:"",p.length?`当前事实需求仍未充分确认:${p.join("、")}。未确认项不得编造;但已满足事实需求中的资料事实必须写入对应小节。`:"",a.missingFacts.length?`模板显式要求中当前检索未充分命中的项:${a.missingFacts.join("、")}。未命中项不得编造,但不得因此省略上方已经明确的可靠参数。`:"",`本章可用材料来源约 ${o} 个文件,正文必须按事实需求把可用事实内化到对应小节,不得单列后台资料清单。`,...j].filter(Boolean).join("\n")}({chapter:c,plan:void 0,spec:ah,roleFacts:S,evidence:ab,missingFacts:ac,indexedFacts:[...aN,...aM],resolvedFactNeeds:aD,factNeedsPrompt:function(a){let b=a.map(a=>{let b=a.facts.slice(0,5).map(b=>`${b.key||b.fieldName||a.need.label}=${aw(b.value)}${b.sourceFile?`(${e.basename(b.sourceFile)})`:""}`),c=a.facts.length?[]:(a.evidence||[]).slice(0,2).map(a=>`证据片段:${aw(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?`事实需求覆盖卡片:
|
|
193
|
-
${b.join("\n")}`:""}(aD)}),aP=function(a){let b=Date.now(),c=a.plan.chapters.find(b=>b.chapterId===a.chapter.id)||a.plan.chapters.find(b=>b.title===a.chapter.title);if(!c)throw Error(`缺少章节计划:${a.chapter.title}`);let d=a.context.facts.filter(a=>c.evidenceQueries.some(b=>cT(a,b))||c.requiredFacts.some(b=>cT(a,b))),e=c.sections.map(b=>{let c=a.context.facts.filter(a=>b.evidenceQueries.some(b=>cT(a,b))||b.requiredFacts.some(b=>cT(a,b))).slice(0,24),d=a.evidence.filter(a=>b.evidenceQueries.some(b=>(function(a,b){let c=cR(`${a.sectionTitle||""} ${a.content||""} ${a.filePath||""}`);return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(cR(a)))})(a,b))).slice(0,24),e=b.requiredGraphNodes.flatMap(b=>cU(a.context.baseProjectGraph,b)).slice(0,12),f=[];return 0===d.length&&0===c.length&&0===e.length&&f.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${b.title} 缺少事实、图谱或证据支撑`,suggestion:"应先定向检索和抽取事实,不能生成占位正文。"}),{...b,factIds:c.map(a=>(0,M.c6)({key:a.key,value:(0,M.lG)(a.value),sourceFile:a.sourceFile}).slice(0,12)),evidenceIds:d.map(a=>(0,M.c6)({filePath:a.filePath,content:a.content.slice(0,160),score:a.score}).slice(0,12)),graphNodeIds:e.map(a=>(0,M.c6)(a).slice(0,12)),ready:0===f.length,issues:f}}),f=e.flatMap(a=>a.issues),g={taskId:`chapter-task-${(0,M.c6)({plan:a.plan.planId,chapter:a.chapter.id,evidence:a.evidence.map(a=>(0,M.c6)({filePath:a.filePath,content:a.content.slice(0,120),score:a.score}))}).slice(0,10)}`,chapterId:a.chapter.id,title:a.chapter.title,facts:d.slice(0,48),evidence:a.evidence.slice(0,48),graphContext:cU(a.context.baseProjectGraph,a.chapter.title).slice(0,20).join("\n"),sections:e,ready:0===f.length,issues:f};return{task:g,node:{id:`chapter-task-${a.chapter.id}`,type:"chapter_task_planner",status:g.ready?"completed":"failed",startedAt:b,completedAt:Date.now(),outputSummary:`${g.sections.filter(a=>a.ready).length}/${g.sections.length} 个小节任务就绪`,metrics:{facts:g.facts.length,evidence:g.evidence.length,issues:f.length},issues:f}}}({plan:bQ.plan,chapter:c,context:bA,evidence:ab});if(bA.chapterTasks=[...(bA.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aP.task],bA.nodes.push(aP.node),(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aP.task.ready||m?"success":"failed",message:aP.task.ready?aP.node.outputSummary||`${(0,t.GQ)(c.title)} 章节任务规划完成`:m?`${(0,t.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aP.node.outputSummary||`${(0,t.GQ)(c.title)} 章节任务规划完成`,details:aP.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:P.length})),I(G),!aP.task.ready&&!m)throw Error(`${(0,t.GQ)(c.title)} 章节任务未就绪:${aP.task.issues.map(a=>a.message).join(";")}`);let aQ=[ap,cX(aP.task)].filter(Boolean).join("\n\n"),aR={total:aD.length,satisfied:aD.filter(a=>"satisfied"===a.status).length,missing:aD.filter(a=>"missing"===a.status).length,lowConfidence:aD.filter(a=>"low_confidence"===a.status).length};for(let a of aF)a9.push(`${c.title}:事实需求未确认 ${a}`);let aS=ah?.chapterRules.find(a=>a.id===c.id||a.title===c.title),aT=bP.chapterTargets.get(c.id)||1200,aV=c.sections?.filter(Boolean).length||0,aW=/[、,,;;]/u.test(c.title),a_=function(a){let{budgetTarget:b,sectionCount:c,title:d,longformStrict:e}=a,f=/[、,,;;]/u.test(d),g=/工期|进度|质量|安全|危大|资源|人材机|保障|措施|重难点/u.test(d),h=/概况|结语|附录|说明/u.test(d),i=c>0?c*(f?720:g?900:780):g?5200:3600,j=e?h?2600:g?5200:3600:Math.min(1200,b),k=e?Math.min(Math.max(4200,b),c>=30?9800:f?8800:g?9200:7200):b,l=Math.max(j,Math.min(b,i,k));return{budgetTarget:b,roundTarget:l,structureTarget:i,maxWords:Math.ceil(l*(a.longformStrict?1.12:1.18)),label:`章节预算约 ${b} 字,本轮生成约 ${l} 字,结构目标约 ${i} 字`}}({budgetTarget:aT,sectionCount:aV,title:c.title,longformStrict:bP.longformStrict}),a3=Math.ceil(a_.maxWords*(bP.maxChars?1.05:1)),bg=bP.targetChars?Math.min(1800,Math.max(600,Math.floor(.45*a_.roundTarget))):1200,bk=a_.roundTarget,bl=Math.max(Math.min(aS?.minWords||0,bk),Math.min(ah?.dynamicChapterRule.minWordsPerChapter||0,bk),Math.floor(.68*bk),bg),bo=be(bl,bk),br=aV>0?Math.min(bk,Math.max(1800,a_.structureTarget)):bk,bs=Math.max(4,Number(process.env.DOCUMENT_SECTION_FIRST_MAX_SECTIONS||8)),bv=process.env.DOCUMENT_SECTION_FIRST_GENERATION,bx=void 0!==bv&&0===Number(bv),by=void 0!==bv&&0!==Number(bv),bC=bk>=6e3&&aV>=4&&aV<=bs&&!aW,bD=!bx&&aV>=2&&(aV>bs||aW||bP.longformStrict&&aV>=6),bE=!bx&&!bD&&aV>=2&&aV<=bs&&(by||bC||bP.longformStrict);if(m)b=cw(m,c),f=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"success",message:`${(0,t.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,w.V7)(b)} 字,跳过 Writer,直接进入 Reviewer/Repairer/Final Gate`,details:[`有效证据:${ab.length} 条`,`事实需求:${aR.satisfied}/${aR.total} 已满足,缺失 ${aR.missing},低置信 ${aR.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:g+1,total:bG.length,label:"复用章节"}},{subtitle:(0,t.GQ)(c.title),order:g}),P[i]=f,I(G);else{P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"running",message:bD?`${(0,t.GQ)(c.title)} 正在按语义小节组并发成稿`:bE?`${(0,t.GQ)(c.title)} 正在按小节并发成稿`:`${(0,t.GQ)(c.title)} 正在整章一次成稿`,details:bD||bE?[...ax,`有效证据:${ab.length} 条`,`事实需求:${aR.satisfied}/${aR.total} 已满足,缺失 ${aR.missing},低置信 ${aR.lowConfidence}`,a_.label,`生成上限约 ${a3} 字`,`规划小节:${c.sections?.length||0} 个`,bD?"小节较多,按工期/质量/安全/资源等语义组并发生成,避免整章长调用低产":"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...ax,`有效证据:${ab.length} 条`,`事实需求:${aR.satisfied}/${aR.total} 已满足,缺失 ${aR.missing},低置信 ${aR.lowConfidence}`,a_.label,`生成上限约 ${a3} 字`,`规划小节:${aV} 个`,"首次生成必须覆盖章节结构、小节和事实,篇幅目标仅作为规划参考"],progress:{current:g+1,total:bG.length,label:bD?"小节分组":bE?"小节并发":"整章成稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),I();let d=bD?Math.min(bf(bk)+12e4,36e4):bE?Math.min(bf(bk)+18e4,6e5):Math.min(bf(bk),18e4),e=bD?await K(()=>aA(bS,`chapter-section-group-draft:${c.id}`,()=>(0,ad.od)(b=>bc({template:q,chapter:c,evidence:ab,missingFacts:ac,promptTexts:aQ,projectContext:bI,requirement:a.requirement,roleContext:am,targetWords:br,maxWords:a3,forbidDrawingImages:!1,factCoverageContext:aO,sectionEvidenceProvider:a=>cH({manager:y,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:b}),diagnostics:bS,signal:b}),d,a.signal))):bE?await K(()=>aA(bS,`chapter-section-draft:${c.id}`,()=>(0,ad.od)(b=>bd({template:q,chapter:c,evidence:ab,missingFacts:ac,promptTexts:aQ,projectContext:bI,requirement:a.requirement,roleContext:am,targetWords:br,maxWords:a3,forbidDrawingImages:!1,factCoverageContext:aO,projectRoot:o,modelName:(0,ad.$y)()?.model.name,materialContextHash:(0,M.c6)({materialFilePaths:T,promptTexts:ap}),allowPartialResult:!1,sectionEvidenceProvider:a=>cH({manager:y,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:b}),diagnostics:bS,signal:b}),d,a.signal))):await K(()=>aA(bS,`chapter-draft:${c.id}`,()=>(0,ad.od)(b=>aU(q,c,ab,ac,aQ,bI,a.requirement,am,{forbidDrawingImages:!1,minWords:bl,targetWords:bk,maxWords:a3,maxTokens:bo,factCoverageContext:aO,signal:b}),bf(bk),a.signal)));if(!e&&bD&&(P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} 小节组未返回有效正文,正在切换为逐小节备用成稿`,details:[`LLM 最近错误:${bS.llm.lastError||"小节组空响应或超时"}`,`有效证据:${ab.length} 条`],progress:{current:g+1,total:bG.length,label:"备用成稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(G),e=await K(()=>aA(bS,`chapter-section-fallback:${c.id}`,()=>(0,ad.od)(b=>bd({template:q,chapter:c,evidence:ab,missingFacts:ac,promptTexts:aQ,projectContext:bI,requirement:a.requirement,roleContext:am,targetWords:br,maxWords:a3,forbidDrawingImages:!1,factCoverageContext:aO,projectRoot:o,modelName:(0,ad.$y)()?.model.name,materialContextHash:(0,M.c6)({materialFilePaths:T,promptTexts:ap,fallback:"section-parallel"}),allowPartialResult:!1,sectionEvidenceProvider:a=>cH({manager:y,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:b}),diagnostics:bS,signal:b}),Math.min(bf(bk)+18e4,6e5),a.signal).catch(a=>(bS.llm.lastError=a instanceof Error?a.message:String(a),null))))),!e&&(bD||bE)&&(P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} 小节成稿未完成,正在切换为整章紧凑备用成稿`,details:[`LLM 最近错误:${bS.llm.lastError||"小节成稿空响应或超时"}`,`有效证据:${ab.length} 条`],progress:{current:g+1,total:bG.length,label:"整章备用"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(G),e=await K(()=>aA(bS,`chapter-compact-fallback:${c.id}`,()=>(0,ad.od)(b=>aU(q,c,ab,ac,aQ,bI,a.requirement,am,{forbidDrawingImages:!1,minWords:Math.floor(.65*bl),targetWords:Math.floor(.75*br),maxWords:a3,maxTokens:bo,factCoverageContext:aO,signal:b}),bf(Math.floor(.75*bk)),a.signal).catch(a=>(bS.llm.lastError=a instanceof Error?a.message:String(a),null))))),!e&&ab.length>0&&(P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} LLM 多路径未返回有效正文,正在用当前项目证据生成可审查草稿`,details:[`LLM 最近错误:${bS.llm.lastError||"空响应或超时"}`,`证据条数:${ab.length}`],progress:{current:g+1,total:bG.length,label:"证据草稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(G),e=function(a){let b=(a.chapter.sections?.length?a.chapter.sections:["资料依据与施工对象","主要控制措施","检查验收与闭环管理"]).flatMap(b=>{let c=(function(a,b,c){let d=[a,b.title,...a.split(/[、,,;;\s]+/u)].filter(a=>a.length>=2),e=c.map(a=>{let b=(0,s.eE)(a.content||"").replace(/\s+/gu," ").trim(),c=d.reduce((c,d)=>c+(b.includes(d)||(a.sectionTitle||"").includes(d)?1:0),0)+a.score;return{content:b,score:c}}).filter(a=>a.content.length>=30).sort((a,b)=>b.score-a.score),f=[];for(let a of e.slice(0,8)){for(let b of a.content.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean))if(!(b.length<18||b.length>180||/报价|单价|税率|利润|后台|知识库|提示词|OCR|文件路径/u.test(b))&&!(/^(?:本节围绕|本小节依据|项目实施时应|实施过程中应|当前绑定资料|当前项目绑定资料)/u.test(b)||/确保各项措施与本工程实施条件相匹配/u.test(b)||/形成责任明确、过程可控、资料完整的管理闭环/u.test(b)||/确保现场管理要求与施工进度、资源组织和验收节点同步推进/u.test(b)||/^管理闭环[。;;]?$/u.test(b)||/资料参数行摘要|房建市政施工评定分离招标示范文本|我方已仔细研究|中标通知书|签订合同|履约保证金|投标函|投标人须知|招标公告|开标|评标|保证金|电子交易系统|公共资源交易|监管部门|专用账户监管协议书|资金托管专用账号/u.test(b)||/^#+\s*/u.test(b)||/^(?\d+)/u.test(b))&&(f.some(a=>a.includes(b)||b.includes(a))||f.push(b),f.length>=10))break;if(f.length>=10)break}return f})(b,a.chapter,a.evidence).slice(0,8);return 0===c.length?[]:[[`### ${b}`,"",...c.map(a=>`- ${a}。`)].join("\n")]});return 0===b.length?"":(0,v.kT)((0,v.FD)(`## ${a.chapter.title}
|
|
193
|
+
${b.join("\n")}`:""}(aD)}),aP=function(a){let b=Date.now(),c=a.plan.chapters.find(b=>b.chapterId===a.chapter.id)||a.plan.chapters.find(b=>b.title===a.chapter.title);if(!c)throw Error(`缺少章节计划:${a.chapter.title}`);let d=a.context.facts.filter(a=>c.evidenceQueries.some(b=>cT(a,b))||c.requiredFacts.some(b=>cT(a,b))),e=c.sections.map(b=>{let c=a.context.facts.filter(a=>b.evidenceQueries.some(b=>cT(a,b))||b.requiredFacts.some(b=>cT(a,b))).slice(0,24),d=a.evidence.filter(a=>b.evidenceQueries.some(b=>(function(a,b){let c=cR(`${a.sectionTitle||""} ${a.content||""} ${a.filePath||""}`);return b.split(/[\s、,,;;::()()【】[-]+/u).filter(a=>a.length>=2).some(a=>c.includes(cR(a)))})(a,b))).slice(0,24),e=b.requiredGraphNodes.flatMap(b=>cU(a.context.baseProjectGraph,b)).slice(0,12),f=[];return 0===d.length&&0===c.length&&0===e.length&&f.push({level:"error",severity:"blocker",category:"evidence_coverage",owner:"system",message:`${b.title} 缺少事实、图谱或证据支撑`,suggestion:"应先定向检索和抽取事实,不能生成占位正文。"}),{...b,factIds:c.map(a=>(0,M.c6)({key:a.key,value:(0,M.lG)(a.value),sourceFile:a.sourceFile}).slice(0,12)),evidenceIds:d.map(a=>(0,M.c6)({filePath:a.filePath,content:a.content.slice(0,160),score:a.score}).slice(0,12)),graphNodeIds:e.map(a=>(0,M.c6)(a).slice(0,12)),ready:0===f.length,issues:f}}),f=e.flatMap(a=>a.issues),g={taskId:`chapter-task-${(0,M.c6)({plan:a.plan.planId,chapter:a.chapter.id,evidence:a.evidence.map(a=>(0,M.c6)({filePath:a.filePath,content:a.content.slice(0,120),score:a.score}))}).slice(0,10)}`,chapterId:a.chapter.id,title:a.chapter.title,facts:d.slice(0,48),evidence:a.evidence.slice(0,48),graphContext:cU(a.context.baseProjectGraph,a.chapter.title).slice(0,20).join("\n"),sections:e,ready:0===f.length,issues:f};return{task:g,node:{id:`chapter-task-${a.chapter.id}`,type:"chapter_task_planner",status:g.ready?"completed":"failed",startedAt:b,completedAt:Date.now(),outputSummary:`${g.sections.filter(a=>a.ready).length}/${g.sections.length} 个小节任务就绪`,metrics:{facts:g.facts.length,evidence:g.evidence.length,issues:f.length},issues:f}}}({plan:bQ.plan,chapter:c,context:bA,evidence:ab});if(bA.chapterTasks=[...(bA.chapterTasks||[]).filter(a=>a.chapterId!==c.id),aP.task],bA.nodes.push(aP.node),(0,ay.fx)(P,(0,ay.X5)({type:"validation",roleId:`agent-chapter-task-${c.id}`,status:aP.task.ready||m?"success":"failed",message:aP.task.ready?aP.node.outputSummary||`${(0,t.GQ)(c.title)} 章节任务规划完成`:m?`${(0,t.GQ)(c.title)} 章节任务未完全就绪,已复用已有正文并交由 Reviewer/Repairer 处理`:aP.node.outputSummary||`${(0,t.GQ)(c.title)} 章节任务规划完成`,details:aP.task.issues.map(a=>a.message)},{subtitle:"Agent Chapter Task Planner",order:P.length})),I(G),!aP.task.ready&&!m)throw Error(`${(0,t.GQ)(c.title)} 章节任务未就绪:${aP.task.issues.map(a=>a.message).join(";")}`);let aQ=[ap,cX(aP.task)].filter(Boolean).join("\n\n"),aR={total:aD.length,satisfied:aD.filter(a=>"satisfied"===a.status).length,missing:aD.filter(a=>"missing"===a.status).length,lowConfidence:aD.filter(a=>"low_confidence"===a.status).length};for(let a of aF)a9.push(`${c.title}:事实需求未确认 ${a}`);let aS=ah?.chapterRules.find(a=>a.id===c.id||a.title===c.title),aT=bP.chapterTargets.get(c.id)||1200,aV=c.sections?.filter(Boolean).length||0,aW=/[、,,;;]/u.test(c.title),a_=function(a){let{budgetTarget:b,sectionCount:c,title:d,longformStrict:e}=a,f=/[、,,;;]/u.test(d),g=/工期|进度|质量|安全|危大|资源|人材机|保障|措施|重难点/u.test(d),h=/概况|结语|附录|说明/u.test(d),i=c>0?c*(f?720:g?900:780):g?5200:3600,j=e?h?2600:g?5200:3600:Math.min(1200,b),k=e?Math.min(Math.max(4200,b),c>=30?9800:f?8800:g?9200:7200):b,l=Math.max(j,Math.min(b,i,k));return{budgetTarget:b,roundTarget:l,structureTarget:i,maxWords:Math.ceil(l*(a.longformStrict?1.12:1.18)),label:`章节预算约 ${b} 字,本轮生成约 ${l} 字,结构目标约 ${i} 字`}}({budgetTarget:aT,sectionCount:aV,title:c.title,longformStrict:bP.longformStrict}),a3=Math.ceil(a_.maxWords*(bP.maxChars?1.05:1)),bg=bP.targetChars?Math.min(1800,Math.max(600,Math.floor(.45*a_.roundTarget))):1200,bk=a_.roundTarget,bl=Math.max(Math.min(aS?.minWords||0,bk),Math.min(ah?.dynamicChapterRule.minWordsPerChapter||0,bk),Math.floor(.68*bk),bg),bo=be(bl,bk),br=aV>0?Math.min(bk,Math.max(1800,a_.structureTarget)):bk,bs=Math.max(4,Number(process.env.DOCUMENT_SECTION_FIRST_MAX_SECTIONS||8)),bv=process.env.DOCUMENT_SECTION_FIRST_GENERATION,bx=void 0!==bv&&0===Number(bv),by=void 0!==bv&&0!==Number(bv),bC=bk>=6e3&&aV>=4&&aV<=bs&&!aW,bD=!bx&&aV>=2&&(aV>bs||aW||bP.longformStrict&&aV>=6),bE=!bx&&!bD&&aV>=2&&aV<=bs&&(by||bC||bP.longformStrict);if(m)b=cw(m,c),f=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"success",message:`${(0,t.GQ)(c.title)} 已复用已有章节正文:当前 ${(0,w.V7)(b)} 字,跳过 Writer,直接进入 Reviewer/Repairer/Final Gate`,details:[`有效证据:${ab.length} 条`,`事实需求:${aR.satisfied}/${aR.total} 已满足,缺失 ${aR.missing},低置信 ${aR.lowConfidence}`,"来源:resumeChapters/checkpointChapters"],progress:{current:g+1,total:bG.length,label:"复用章节"}},{subtitle:(0,t.GQ)(c.title),order:g}),P[i]=f,I(G);else{P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"running",message:bD?`${(0,t.GQ)(c.title)} 正在按语义小节组并发成稿`:bE?`${(0,t.GQ)(c.title)} 正在按小节并发成稿`:`${(0,t.GQ)(c.title)} 正在整章一次成稿`,details:bD||bE?[...ax,`有效证据:${ab.length} 条`,`事实需求:${aR.satisfied}/${aR.total} 已满足,缺失 ${aR.missing},低置信 ${aR.lowConfidence}`,a_.label,`生成上限约 ${a3} 字`,`规划小节:${c.sections?.length||0} 个`,bD?"小节较多,按工期/质量/安全/资源等语义组并发生成,避免整章长调用低产":"按章节结构拆分小节自然并发生成,章节聚合后再审查修复"]:[...ax,`有效证据:${ab.length} 条`,`事实需求:${aR.satisfied}/${aR.total} 已满足,缺失 ${aR.missing},低置信 ${aR.lowConfidence}`,a_.label,`生成上限约 ${a3} 字`,`规划小节:${aV} 个`,"首次生成必须覆盖章节结构、小节和事实,篇幅目标仅作为规划参考"],progress:{current:g+1,total:bG.length,label:bD?"小节分组":bE?"小节并发":"整章成稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),I();let d=bD?Math.min(bf(bk),18e4):bE?Math.min(bf(bk)+6e4,3e5):Math.min(bf(bk),18e4),e=bD?await K(()=>aA(bS,`chapter-section-group-draft:${c.id}`,()=>(0,ad.od)(b=>bc({template:q,chapter:c,evidence:ab,missingFacts:ac,promptTexts:aQ,projectContext:bI,requirement:a.requirement,roleContext:am,targetWords:br,maxWords:a3,forbidDrawingImages:!1,factCoverageContext:aO,sectionEvidenceProvider:a=>cH({manager:y,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:b}),diagnostics:bS,signal:b}),d,a.signal))):bE?await K(()=>aA(bS,`chapter-section-draft:${c.id}`,()=>(0,ad.od)(b=>bd({template:q,chapter:c,evidence:ab,missingFacts:ac,promptTexts:aQ,projectContext:bI,requirement:a.requirement,roleContext:am,targetWords:br,maxWords:a3,forbidDrawingImages:!1,factCoverageContext:aO,projectRoot:o,modelName:(0,ad.$y)()?.model.name,materialContextHash:(0,M.c6)({materialFilePaths:T,promptTexts:ap}),allowPartialResult:!1,sectionEvidenceProvider:a=>cH({manager:y,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:b}),diagnostics:bS,signal:b}),d,a.signal))):await K(()=>aA(bS,`chapter-draft:${c.id}`,()=>(0,ad.od)(b=>aU(q,c,ab,ac,aQ,bI,a.requirement,am,{forbidDrawingImages:!1,minWords:bl,targetWords:bk,maxWords:a3,maxTokens:bo,factCoverageContext:aO,signal:b}),bf(bk),a.signal)));if(!e&&bD&&(P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} 小节组未返回有效正文,正在切换为逐小节备用成稿`,details:[`LLM 最近错误:${bS.llm.lastError||"小节组空响应或超时"}`,`有效证据:${ab.length} 条`],progress:{current:g+1,total:bG.length,label:"备用成稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(G),e=await K(()=>aA(bS,`chapter-section-fallback:${c.id}`,()=>(0,ad.od)(b=>bd({template:q,chapter:c,evidence:ab,missingFacts:ac,promptTexts:aQ,projectContext:bI,requirement:a.requirement,roleContext:am,targetWords:br,maxWords:a3,forbidDrawingImages:!1,factCoverageContext:aO,projectRoot:o,modelName:(0,ad.$y)()?.model.name,materialContextHash:(0,M.c6)({materialFilePaths:T,promptTexts:ap,fallback:"section-parallel"}),allowPartialResult:!1,sectionEvidenceProvider:a=>cH({manager:y,projectRoot:o,chapter:c,sectionTitle:a,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:b}),diagnostics:bS,signal:b}),Math.min(bf(bk),24e4),a.signal).catch(a=>(bS.llm.lastError=a instanceof Error?a.message:String(a),null))))),!e&&(bD||bE)&&(P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} 小节成稿未完成,正在切换为整章紧凑备用成稿`,details:[`LLM 最近错误:${bS.llm.lastError||"小节成稿空响应或超时"}`,`有效证据:${ab.length} 条`],progress:{current:g+1,total:bG.length,label:"整章备用"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(G),e=await K(()=>aA(bS,`chapter-compact-fallback:${c.id}`,()=>(0,ad.od)(b=>aU(q,c,ab,ac,aQ,bI,a.requirement,am,{forbidDrawingImages:!1,minWords:Math.floor(.65*bl),targetWords:Math.floor(.75*br),maxWords:a3,maxTokens:bo,factCoverageContext:aO,signal:b}),Math.min(bf(Math.floor(.75*bk)),18e4),a.signal).catch(a=>(bS.llm.lastError=a instanceof Error?a.message:String(a),null))))),!e&&ab.length>0&&(P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"running",message:`${(0,t.GQ)(c.title)} LLM 多路径未返回有效正文,正在用当前项目证据生成可审查草稿`,details:[`LLM 最近错误:${bS.llm.lastError||"空响应或超时"}`,`证据条数:${ab.length}`],progress:{current:g+1,total:bG.length,label:"证据草稿"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(G),e=function(a){let b=(a.chapter.sections?.length?a.chapter.sections:["资料依据与施工对象","主要控制措施","检查验收与闭环管理"]).flatMap(b=>{let c=(function(a,b,c){let d=[a,b.title,...a.split(/[、,,;;\s]+/u)].filter(a=>a.length>=2),e=c.map(a=>{let b=(0,s.eE)(a.content||"").replace(/\s+/gu," ").trim(),c=d.reduce((c,d)=>c+(b.includes(d)||(a.sectionTitle||"").includes(d)?1:0),0)+a.score;return{content:b,score:c}}).filter(a=>a.content.length>=30).sort((a,b)=>b.score-a.score),f=[];for(let a of e.slice(0,8)){for(let b of a.content.split(/[。;;\n]/u).map(a=>a.trim()).filter(Boolean))if(!(b.length<18||b.length>180||/报价|单价|税率|利润|后台|知识库|提示词|OCR|文件路径/u.test(b))&&!(/^(?:本节围绕|本小节依据|项目实施时应|实施过程中应|当前绑定资料|当前项目绑定资料)/u.test(b)||/确保各项措施与本工程实施条件相匹配/u.test(b)||/形成责任明确、过程可控、资料完整的管理闭环/u.test(b)||/确保现场管理要求与施工进度、资源组织和验收节点同步推进/u.test(b)||/^管理闭环[。;;]?$/u.test(b)||/资料参数行摘要|房建市政施工评定分离招标示范文本|我方已仔细研究|中标通知书|签订合同|履约保证金|投标函|投标人须知|招标公告|开标|评标|保证金|电子交易系统|公共资源交易|监管部门|专用账户监管协议书|资金托管专用账号/u.test(b)||/^#+\s*/u.test(b)||/^(?\d+)/u.test(b))&&(f.some(a=>a.includes(b)||b.includes(a))||f.push(b),f.length>=10))break;if(f.length>=10)break}return f})(b,a.chapter,a.evidence).slice(0,8);return 0===c.length?[]:[[`### ${b}`,"",...c.map(a=>`- ${a}。`)].join("\n")]});return 0===b.length?"":(0,v.kT)((0,v.FD)(`## ${a.chapter.title}
|
|
194
194
|
|
|
195
195
|
${b.join("\n\n")}`,a.forbidDrawingImages))}({chapter:c,evidence:ab,targetWords:br,forbidDrawingImages:!1})),(0,M.Te)(a.signal),!e){let a=`${(0,t.GQ)(c.title)} 大模型未返回有效正文,已阻断生成`;throw P[i]=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:"failed",message:a,details:[`LLM 最近错误:${bS.llm.lastError||"空响应或超时"}`,`证据条数:${ab.length}`],progress:{current:g+1,total:bG.length,label:"章节阻断"}},{subtitle:(0,t.GQ)(c.title),order:g}),I(G),Error(a)}let f=e;if(!f.trim())throw Error(`${(0,t.GQ)(c.title)} 首次生成失败,未获得可用于定稿的正文`);b=cw(f,c)}let bH=ba({chapter:c,content:b,evidence:ab}),bJ=(0,w.V7)(b),bK=(0,v.r4)(b),bL=bK.length>0?bK:c.sections||[],bM=(0,x.qK)(b,[{title:c.title,content:b,sections:bL}]).map(a=>a.message),bN=bH.slice(0,6).map(a=>`小节事实密度需优化:${a}`),bO=[...bM,...bN],bR=function(a,b,c=[]){return a<=0||c.some(a=>/未返回有效章节正文|生成失败/u.test(a))?"failed":"success"}(bJ,0,bO);f=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",promptId:ao.primaryPromptId,status:bR,message:(0,ay.AQ)(`${(0,t.GQ)(c.title)} 已由大模型成稿:当前 ${bJ} 字;章节预算约 ${a_.budgetTarget} 字,本轮目标约 ${a_.roundTarget} 字${bO.length?`;待优化:${bO.slice(0,8).join("、")}`:""}`,h),details:[`本轮完成率:${Math.round(bJ/Math.max(1,a_.roundTarget)*100)}%`,`结构目标约 ${a_.structureTarget} 字`,...ax,`二级小节:${bL.length} 个`,`扩写轮次:0`],progress:{current:g+1,total:bG.length,label:bO.length?"章节已生成":"章节达标"}},{subtitle:(0,t.GQ)(c.title),order:g}),bi[g]=f;let bT={id:c.id,title:c.title,content:b,evidence:ab,missingFacts:ac,sections:bL,tablePlans:c.tablePlans||[]},bU=c$({task:aP.task,draft:bT,context:bA});bA.reviewResults={...bA.reviewResults||{},[c.id]:bU};let bV=bU.issues.length>0&&(bU.repairable||bU.issues.some(a=>/Writer 未完成/u.test(a.message)));bA.nodes.push({id:`chapter-reviewer-${c.id}`,type:"chapter_reviewer",status:bU.issues.length?bV?"running":"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:bU.issues.length?`${bU.issues.length} 个 Reviewer 问题`:"Reviewer 通过",metrics:{supportedFacts:bU.supportedFacts},issues:bU.issues}),(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-reviewer-${c.id}`,status:bU.issues.length?bV?"running":"failed":"success",message:bU.issues.length?`${(0,t.GQ)(c.title)} Reviewer 发现 ${bU.issues.length} 个问题,等待 Repairer 修复`:`${(0,t.GQ)(c.title)} Reviewer 通过`,details:bU.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:P.length})),I(G);let bW=bU.issues.some(a=>/Writer 未完成/u.test(a.message));if(bU.issues.length>0&&(bU.repairable||bW)){let b=bU.repairable?(k={task:aP.task,review:bU}).review.repairable?["【Agent 定向修复任务】",`章节:${k.task.title}`,"只修复下列问题,不重写无关内容;如果问题是小节正文不足,必须按原小节标题完整补足该小节正式正文,每个小节不得少于任务最小深度:",...k.review.issues.map(a=>`- ${a.message};${a.suggestion||""}`),cX(k.task)].join("\n"):"":["【Agent 定向修复任务】",`章节:${aP.task.title}`,"Reviewer 发现 Writer 未完成小节。必须基于对应小节事实卡和证据生成正式正文,替换并删除 WRITER_MISSING_SECTION 标记;不得跳过这些小节,不得保留占位说明。",...bU.issues.map(a=>`- ${a.message};${a.suggestion||""}`)].join("\n"),d=P.length,e=bU.issues.filter(a=>/Writer 未完成/u.test(a.message)),f=bU.issues.filter(a=>/正文不足,未达到任务最小深度/u.test(a.message)),g=[...e,...f.filter(a=>!e.some(b=>b.message===a.message))],h=[];for(let[e,f]of((0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:"running",message:`${(0,t.GQ)(c.title)} Reviewer 发现 ${bU.issues.length} 个问题,正在定向修复`,details:bU.issues.map(a=>a.message)},{subtitle:"Agent Repairer",order:d})),I(G),g.entries())){let i=f.message.replace(/\s*Writer 未完成.*$/u,"").replace(/\s*正文不足,未达到任务最小深度.*$/u,"").trim(),j=/Writer 未完成/u.test(f.message)?"缺失小节":"深度不足小节";(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:"running",message:`${(0,t.GQ)(c.title)} 正在补写${j} ${e+1}/${g.length}:${i}`,details:[...h,`当前:${i}`]},{subtitle:"Agent Repairer",order:d})),I(G);let k=aP.task.sections.find(a=>a.title===i),l=(a,b,c)=>{let d=a=>a.replace(/[\u00a0\u3000]/gu," ").replace(/^\d+(?:\.\d+)*\s+/u,"").trim(),e=a=>d(a).replace(/施工(?=方案|流程|方法)/gu,"").replace(/专项(?=方案)/gu,"").replace(/\s/gu,""),f=a=>a.trim().replace(/^#{2,6}\s+(?:\d+(?:\.\d+)*\s+)?[^\n]+\n+/u,"").trim(),g=a.split("\n"),h=0;for(let i=0;i<g.length;i+=1){let j=g[i],k=h;h+=j.length+1;let l=/^(#{3,4})\s+(.+)$/u.exec(j.trim());if(!l)continue;let m=d(l[2]),n=e(m),o=e(b);if(m!==b&&!m.includes(b)&&!b.includes(m)&&n!==o&&!n.includes(o)&&!o.includes(n))continue;let p=g.length;for(let a=i+1;a<g.length;a+=1)if(/^#{2,4}\s+/u.test(g[a].trim())){p=a;break}let q=p<g.length?g.slice(0,p).join("\n").length:a.length,r=f(c);return`${a.slice(0,k)}${j.trim()}
|
|
196
196
|
|
|
@@ -206,6 +206,6 @@ ${a.slice(j).trimStart()}`:a}}let j=f(c);return j?`${a.trimEnd()}
|
|
|
206
206
|
|
|
207
207
|
${j}`:a},m=bu(await cH({manager:y,projectRoot:o,chapter:c,sectionTitle:i,scopedFilePaths:H,fileRoleByPath:aY,fileProcessingByPath:aZ,signal:a.signal}).catch(()=>[]),a1);bw(m.length?m:ab,a1,`repair:${c.id}:${i}`);let n=Math.max(k?.minChars||0,/项目主要施工内容|主要分部分项工程施工方案|主要施工方法/u.test(i)?2200:/项目特点.*重点.*难点|重点.*难点.*分析/u.test(i)?1800:/原材料进场复试|见证取样|危大工程专项施工方案审批流程/u.test(i)?1200:760),p=/正文不足,未达到任务最小深度/u.test(f.message);bS.llm.lastError=void 0;let r=await K(()=>aA(bS,`agent-repairer-section:${c.id}:${i}`,()=>a4({template:q,chapter:c,sectionTitle:i,evidence:m.length?m:ab,missingFacts:ac,promptTexts:[aQ,b].filter(Boolean).join("\n\n"),projectContext:bI,requirement:a.requirement,roleContext:am,targetWords:n,maxWords:1.25*n,forbidDrawingImages:!1,factCoverageContext:aO,qualityFeedback:`Repairer 定向补写“${i}”。必须输出该小节正式正文并彻底删除 WRITER_MISSING_SECTION 标记。`,timeoutMs:3e5,diagnostics:bS,signal:a.signal})));if((!r||r.includes("WRITER_MISSING_SECTION"))&&(bS.llm.lastError=void 0,(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:"running",message:`${(0,t.GQ)(c.title)} 正在二次补写${j} ${e+1}/${g.length}:${i}`,details:[...h,`重试:${i}`]},{subtitle:"Agent Repairer",order:d})),I(G),r=await K(()=>aA(bS,`agent-repairer-section-retry:${c.id}:${i}`,()=>a4({template:q,chapter:c,sectionTitle:i,evidence:m.length?m:ab,missingFacts:ac,promptTexts:b,projectContext:bI,requirement:a.requirement,roleContext:am,targetWords:n,maxWords:1.15*n,forbidDrawingImages:!1,factCoverageContext:aO,qualityFeedback:`第二次定向补写“${i}”:只写该小节正式正文,不写解释,不保留 WRITER_MISSING_SECTION。`,timeoutMs:36e4,diagnostics:bS,signal:a.signal})))),r&&!r.includes("WRITER_MISSING_SECTION")){let a=/^#{3,4}\s+/u.test(r.trim())?r.trim():`### ${i}
|
|
208
208
|
|
|
209
|
-
${r.trim()}`,b=(0,w.V7)(a),c=!p||b>=Math.floor(.85*n),d=c?l(bT.content,i,a):bT.content,e=d!==bT.content;e&&(bT={...bT,content:d}),h.push(e?`成功:${i}(${b}字,证据 ${m.length||ab.length} 条)`:`失败:${i}(${c?"未定位到原小节块":`补写不足 ${b}/${n} 字`})`)}else h.push(`失败:${i}(${!r?bS.llm.lastError||"空响应":"仍包含 WRITER_MISSING_SECTION"})`);(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:"running",message:`${(0,t.GQ)(c.title)} 已补写${j} ${e+1}/${g.length}`,details:h},{subtitle:"Agent Repairer",order:d})),I(G)}let i={content:bT.content,appliedCount:0};bU.issues.some(a=>!/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message))&&(i=await K(()=>aA(bS,`agent-repairer:${c.id}`,()=>aB({template:q,chapter:{id:c.id,title:c.title,content:bT.content,evidence:ab,missingFacts:ac,sections:bL},issues:bU.issues.map(a=>`${a.message};${a.suggestion||""}`),promptTexts:[aQ,b].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:bS,signal:a.signal})))),bT={...bT,content:cw(i.content||bT.content,c)},bU=c$({task:aP.task,draft:bT,context:bA}),bA.reviewResults={...bA.reviewResults||{},[c.id]:bU};let j=bU.issues.some(a=>"blocker"===a.severity||"error"===a.level);bA.nodes.push({id:`chapter-repairer-${c.id}`,type:"chapter_repairer",status:j?"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:bU.issues.length?`修复后仍有 ${bU.issues.length} 个问题`:"定向修复通过",metrics:{supportedFacts:bU.supportedFacts},issues:bU.issues}),(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-reviewer-${c.id}`,status:j?"failed":"success",message:j?`${(0,t.GQ)(c.title)} Reviewer 复审仍有 ${bU.issues.length} 个阻断问题`:`${(0,t.GQ)(c.title)} Reviewer 复审通过`,details:bU.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:d-1})),(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:j?"failed":"success",message:bU.issues.length?`${(0,t.GQ)(c.title)} 定向修复后仍有 ${bU.issues.length} 个问题`:`${(0,t.GQ)(c.title)} 定向修复通过`,details:[...h,...bU.issues.map(a=>`剩余:${a.message}`)]},{subtitle:"Agent Repairer",order:d})),I(G)}bU.issues.some(a=>"blocker"===a.severity||"error"===a.level)&&bb.push(`${(0,t.GQ)(c.title)} Reviewer 未通过:${bU.issues.map(a=>a.message).join(";")}`),bh[g]=bT,G=bh.filter(a=>!!a),I(G),bS.quality.blockingCount+=bU.issues.filter(a=>"error"===a.level).length,bS.quality.importantCount+=bU.issues.filter(a=>"warning"===a.level).length}catch(d){if(a.signal?.aborted)throw d;console.error(`[gen] chapter ${c.title} failed:`,d);let b=`${c.title}:${d instanceof Error?d.message:"生成失败"}`;bb.push(b),f=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,t.GQ)(c.title)} 生成失败:${b}`},{subtitle:(0,t.GQ)(c.title),order:g}),bi[g]=f}f&&(P[i]=f),I(G)}))}let
|
|
209
|
+
${r.trim()}`,b=(0,w.V7)(a),c=!p||b>=Math.floor(.85*n),d=c?l(bT.content,i,a):bT.content,e=d!==bT.content;e&&(bT={...bT,content:d}),h.push(e?`成功:${i}(${b}字,证据 ${m.length||ab.length} 条)`:`失败:${i}(${c?"未定位到原小节块":`补写不足 ${b}/${n} 字`})`)}else h.push(`失败:${i}(${!r?bS.llm.lastError||"空响应":"仍包含 WRITER_MISSING_SECTION"})`);(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:"running",message:`${(0,t.GQ)(c.title)} 已补写${j} ${e+1}/${g.length}`,details:h},{subtitle:"Agent Repairer",order:d})),I(G)}let i={content:bT.content,appliedCount:0};bU.issues.some(a=>!/Writer 未完成|正文不足,未达到任务最小深度/u.test(a.message))&&(i=await K(()=>aA(bS,`agent-repairer:${c.id}`,()=>aB({template:q,chapter:{id:c.id,title:c.title,content:bT.content,evidence:ab,missingFacts:ac,sections:bL},issues:bU.issues.map(a=>`${a.message};${a.suggestion||""}`),promptTexts:[aQ,b].filter(Boolean).join("\n\n"),requirement:a.requirement,forbidDrawingImages:!1,diagnostics:bS,signal:a.signal})))),bT={...bT,content:cw(i.content||bT.content,c)},bU=c$({task:aP.task,draft:bT,context:bA}),bA.reviewResults={...bA.reviewResults||{},[c.id]:bU};let j=bU.issues.some(a=>"blocker"===a.severity||"error"===a.level);bA.nodes.push({id:`chapter-repairer-${c.id}`,type:"chapter_repairer",status:j?"failed":"completed",startedAt:Date.now(),completedAt:Date.now(),outputSummary:bU.issues.length?`修复后仍有 ${bU.issues.length} 个问题`:"定向修复通过",metrics:{supportedFacts:bU.supportedFacts},issues:bU.issues}),(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-reviewer-${c.id}`,status:j?"failed":"success",message:j?`${(0,t.GQ)(c.title)} Reviewer 复审仍有 ${bU.issues.length} 个阻断问题`:`${(0,t.GQ)(c.title)} Reviewer 复审通过`,details:bU.issues.map(a=>a.message)},{subtitle:"Agent Reviewer",order:d-1})),(0,ay.fx)(P,(0,ay.X5)({type:"llm_review",roleId:`agent-repairer-${c.id}`,status:j?"failed":"success",message:bU.issues.length?`${(0,t.GQ)(c.title)} 定向修复后仍有 ${bU.issues.length} 个问题`:`${(0,t.GQ)(c.title)} 定向修复通过`,details:[...h,...bU.issues.map(a=>`剩余:${a.message}`)]},{subtitle:"Agent Repairer",order:d})),I(G)}bU.issues.some(a=>"blocker"===a.severity||"error"===a.level)&&bb.push(`${(0,t.GQ)(c.title)} Reviewer 未通过:${bU.issues.map(a=>a.message).join(";")}`),bh[g]=bT,G=bh.filter(a=>!!a),I(G),bS.quality.blockingCount+=bU.issues.filter(a=>"error"===a.level).length,bS.quality.importantCount+=bU.issues.filter(a=>"warning"===a.level).length}catch(d){if(a.signal?.aborted)throw d;console.error(`[gen] chapter ${c.title} failed:`,d);let b=`${c.title}:${d instanceof Error?d.message:"生成失败"}`;bb.push(b),f=(0,ay.X5)({type:"chapter_generation",roleId:"chapter_generation",status:"failed",message:`${(0,t.GQ)(c.title)} 生成失败:${b}`},{subtitle:(0,t.GQ)(c.title),order:g}),bi[g]=f}f&&(P[i]=f),I(G)}))}let b_=bh.filter(a=>!!a);return bg.push(...bi.filter(a=>!!a)),cO({chapterDrafts:b_,chapterDraftsByOrder:bh,chapterGenerationStagesByOrder:bi,chapterGenerationStages:bg,effectiveChapters:bG,template:q,allEvidence:a6,projectMaterialScope:a1,progressStages:P,documentSpec:ah,projectMaterialProfile:U,projectMaterialSummary:ac,domainProfile:aj,documentBudget:bP,promptTexts:aN,reviewPromptTexts:aW,input:a,generationStrategy:bR,generationDiagnostics:bS,promptBindings:R,promptDocumentRules:aH,projectUnderstanding:V,projectContext:bI,projectRoot:o,projectId:p,readiness:ak,factExtractionPromptTexts:aV,hasExplicitOutline:ab,missingItems:a9,retrievalCoverageReports:a7,failedChapterMessages:bb,webResearchReport:a8,indexHealth:a_,promptPlan:Q,agentWorkflow:bA,emitProgress:I,withProgressHeartbeat:K})}async function c2(a){let b=(0,d.QJ)(a.templateId);if(!b)throw Error("Document template not found");let c=b.chapters.find(b=>b.id===a.chapterId);if(!c)throw Error("Document chapter not found");let f=e.resolve(a.projectRoot||(0,g.aY)());if(!f)throw Error("No knowledge base project found");let h=(0,g.Qh)(),i=(0,aE.Hh)(f,b,{requirement:a.requirement}),j=(0,aE.W9)(f,b,{requirement:a.requirement}),{kindByPath:k,processingByPath:l}=(0,aE.Hz)(j),m=new Set(i),n=br(f,i),o=new Map([...k.entries()].map(([a,b])=>[a,(0,aE._W)(b)])),p=new Map([...l.entries()].map(([a,b])=>[a,b])),q=cK(await h.getProject(f),[...m],a.maxEvidencePerChapter),r=[],v=[...m].filter(Boolean).sort(),w=cE(c,c.queries,[]),x=cF(c,[]);for(let a of w.slice(0,x)){let b=await h.search(f,a,{scope:"project",filters:{filePaths:v},limit:Math.min(q,12),weights:{keyword:.4,vector:.45,rewrite:.75,hybridBonus:.15}});r.push(...b.results.filter(a=>aC(f,a.filePath,m)).map(a=>({chapterId:c.id,filePath:a.filePath,score:a.score,content:a.content,roleId:o.get(a.filePath),processingType:p.get(a.filePath),sectionTitle:a.sectionTitle,source:a.source})))}let y=cD(c,bu(r.filter(a=>aC(f,a.filePath,m)),n),{maxItems:cG(q,c),maxChars:16e3,preservePinned:!0});bw(y,n,`regenerate:${c.id}`);let z=a.currentMarkdown||"",A=new Set(a.existingFacts??[]),B=c.requiredFacts.filter(a=>!A.has(a)&&!y.some(b=>(0,u.Lk)(b,a)));if(0===y.length)throw Error(`${(0,t.GQ)(c.title)} 缺少可支撑正文的项目资料证据`);let C=[`## ${c.title}`,"",a.requirement?`> 生成要求:${a.requirement}`:"",z?`> 当前文档上下文摘要:${z.replace(/\s+/gu," ")}`:"",`本章依据已锁定项目资料围绕“${c.purpose}”重新整理,并与当前文档上下文保持一致。`,"","### 资料依据",...y.map(s.OF)].filter(Boolean).join("\n");return{id:c.id,title:c.title,content:C,evidence:y,missingFacts:B}}},91977:(a,b,c)=>{c.d(b,{I2:()=>g,Lk:()=>e,Uy:()=>f});var d=c(70208);function e(a,b){let c=`${a.filePath}
|
|
210
210
|
${a.content}`;return(function(a){let b=a.replace(/要求|计划|目标|标准|内容|信息|事实|依据|参数|范围|要点/gu,"");return[a,b].filter(Boolean)})(b).some(a=>c.includes(a))}function f(a,b){let c=(0,d._9)(a,b).flatMap(a=>a.requiredFacts).map(a=>({id:a,name:a,required:!0,sourceRoleIds:[],extractionHint:""})),e=b?.factFields.map(a=>({id:a.id,name:a.name,required:a.required,sourceRoleIds:a.sourceRoleIds||[],extractionHint:a.extractionHint||""}))||[],f=new Map;for(let a of[...c,...e])f.set(a.id,{...f.get(a.id)||a,...a,required:a.required||f.get(a.id)?.required||!1});return[...f.values()]}function g(a,b){return(!b.sourceRoleIds?.length||!!(a.roleId&&b.sourceRoleIds.includes(a.roleId)))&&e(a,b.name)}},92808:(a,b,c)=>{c.d(b,{NT:()=>e,Ny:()=>f,hW:()=>g,nt:()=>d,rs:()=>i,t0:()=>h});let d=[{id:"report",label:"报告",patterns:[/报告|调研|分析|评估|研究|复盘|总结/iu],output:["报告"]},{id:"plan",label:"实施方案",patterns:[/方案|规划|计划|预案|路径|路线图/iu],output:["实施方案"]},{id:"standard",label:"规范说明",patterns:[/规范|标准|制度|规则|指南|手册/iu],output:["规范说明"]},{id:"proposal",label:"建议方案",patterns:[/建议|提案|需求|响应|说明书/iu],output:["建议方案"]}],e=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|约束|响应|澄清|变更/iu],output:["需求约束","规则要求","变更说明"]},{id:"scope",label:"范围资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["实施范围","对象范围"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["结构化数据范围","参数规格范围"]},{id:"quality",label:"质量评价资料",patterns:[/质量|验收|审核|评审|评价|标准|规范|指标/iu],output:["质量要求","评价标准"]},{id:"schedule",label:"时间进度资料",patterns:[/周期|期限|进度|计划|节点|里程碑|时间|日期/iu],output:["周期要求","进度节点要求"]},{id:"safety",label:"安全合规资料",patterns:[/安全|合规|风险|应急|环保|隐私|审计|控制/iu],output:["安全合规要求","风险控制要求"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"analysis",label:"分析结论",patterns:[/报告|调研|分析|评估|研究|建议|结论/iu],output:["背景依据","分析结论","风险建议"]}],f=[{id:"overview",label:"概况章节",patterns:[/概况|背景|理解|说明|总则|摘要/iu],output:["对象名称","材料范围","实施范围"]},{id:"implementation",label:"实施章节",patterns:[/方法|部署|实施|范围|组织|流程|步骤/iu],output:["实施范围","对象范围","结构化数据范围"]},{id:"controls",label:"控制章节",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价/iu],output:["质量要求","周期要求","安全合规要求"]},{id:"resources",label:"资源章节",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["资源配置要求"]},{id:"risk",label:"风险章节",patterns:[/风险|重点|难点|约束|应急|合规/iu],output:["风险控制要求","风险建议"]}],g=[{id:"requirement",label:"需求规则资料",patterns:[/需求|要求|规则|条款|响应|requirement|rule/iu],output:["requirement_document"]},{id:"change",label:"变更澄清资料",patterns:[/补充|澄清|变更|修订|addendum|change/iu],output:["addendum"]},{id:"structured-data",label:"结构化数据资料",patterns:[/表格|列表|明细|数量|数据|字段|参数|规格|sheet|table|data/iu],output:["structured_data"]},{id:"budget",label:"预算费用资料",patterns:[/预算|费用|金额|报价|限价|成本|price|cost|budget/iu],output:["budget_cost"]},{id:"design",label:"设计方案资料",patterns:[/设计|方案|说明|图像|地图|附件|drawing|image|map|design/iu],output:["design_specification"]},{id:"resource",label:"资源配置资料",patterns:[/资源|人员|设备|材料|品牌|采购|供应|配置/iu],output:["resource_recommendation"]},{id:"schedule-quality-safety",label:"进度质量合规资料",patterns:[/质量|周期|进度|安全|合规|验收|审核|评价|环保|应急/iu],output:["schedule_quality_safety"]},{id:"scope",label:"范围任务资料",patterns:[/范围|内容|任务|目标|边界|对象|工作内容/iu],output:["scope_description"]},{id:"technical",label:"技术标准资料",patterns:[/技术|规范|标准|规程|指南|手册|参数|spec|standard/iu],output:["technical_specification"]},{id:"risk",label:"风险约束资料",patterns:[/风险|重点|难点|约束|限制|现场|条件|应急/iu],output:["risk_constraints"]}];function h(a,b){let c=new Set;for(let d of b)for(let b of d.patterns)if(b.lastIndex=0,b.test(a)){for(let a of d.output)c.add(a);break}return[...c]}function i(a,b){for(let c of b)for(let b of c.patterns)if(b.lastIndex=0,b.test(a))return c.output[0]}},95734:(a,b,c)=>{c.d(b,{$y:()=>j,bb:()=>m,od:()=>l,rI:()=>k});var d=c(95393),e=c(96770),f=c(29281),g=c(22157);let h=new Map,i=0;function j(){let a=(0,f.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 k(a,b,c=!1,f={}){f.diagnostics&&(f.diagnostics.llm.calls+=1),i+=1,f.diagnostics&&(f.diagnostics.llm.maxActive=Math.max(f.diagnostics.llm.maxActive,i));try{let i,k=j();if(!k)return;let{model:l,provider:m}=k,n=(0,g.c6)({provider:l.provider,model:l.name,baseUrl:m.baseUrl,directEndpoint:m.directEndpoint,protocol:m.protocol,apiKeyHash:m.apiKey?(0,g.c6)(m.apiKey):""}),o=h.get(n);o||(o=(0,d.createProvider)(function(a,b){let c=(0,e.resolveProtocol)(a,b);return"anthropic"===c?"anthropic":"google"===c?"google":"ollama"===c?"ollama":"openrouter"===c?"openrouter":"openai"}(l.provider,m),{baseUrl:m.baseUrl,apiKey:m.apiKey,modelName:l.name,directEndpoint:m.directEndpoint}),h.set(n,o));let p=async()=>{let d,e,g=Math.max(3e4,Number(f.timeoutMs??process.env.DOCUMENT_LLM_CALL_TIMEOUT_MS??3e5)),h=new AbortController;if(f.signal?.aborted)throw Error("用户中止");let i=new Promise((a,b)=>{d=setTimeout(()=>{h.abort(),b(Error("LLM 调用超时"))},g)}),j=f.signal?new Promise((a,b)=>{e=()=>{h.abort(),b(Error("用户中止"))},f.signal?.addEventListener("abort",e,{once:!0})}):void 0,k=o.chat([{role:"system",content:c?`${a}
|
|
211
211
|
只返回 JSON,不要返回 markdown。`:a},{role:"user",content:b}],{temperature:f.temperature??.3*!c,maxTokens:f.maxTokens,signal:h.signal});return(await Promise.race(j?[k,i,j]:[k,i]).finally(()=>{d&&clearTimeout(d),e&&f.signal?.removeEventListener("abort",e)})).content.trim()};for(let a=0;a<=1;a+=1){if(f.signal?.aborted)throw Error("用户中止");try{return await p()}catch(b){if(i=b,f.signal?.aborted)throw Error("用户中止",{cause:b});if(!function(a){let b=a instanceof Error?`${a.name} ${a.message}`:String(a);return/connection error|econnrefused|econnreset|fetch failed|network|socket|eai_again|enotfound|etimedout|429|502|503|504|rate ?limit|too many requests|overloaded|服务繁忙|连接失败/iu.test(b)}(b)||a>=1)break;f.diagnostics&&(f.diagnostics.llm.retries+=1),await new Promise(a=>{setTimeout(a,1200)})}}f.diagnostics&&(f.diagnostics.llm.failures+=1,f.diagnostics.llm.lastError=i instanceof Error?i.message:String(i));return}finally{i=Math.max(0,i-1)}}async function l(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 m(a,b,c={}){let d=await k(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}}}};
|
|
@@ -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/3f9e41b5c0ba95f7.css" as="style"/><link rel="stylesheet" href="/_next/static/css/3f9e41b5c0ba95f7.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-01a59698bc68d8ca.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/ZKd6tMLv1IttqmqHF8igI/_buildManifest.js" defer=""></script><script src="/_next/static/ZKd6tMLv1IttqmqHF8igI/_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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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":"ZKd6tMLv1IttqmqHF8igI","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/3f9e41b5c0ba95f7.css" as="style"/><link rel="stylesheet" href="/_next/static/css/3f9e41b5c0ba95f7.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-01a59698bc68d8ca.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/fr8b5H7sI0EANf3d7QFJ6/_buildManifest.js" defer=""></script><script src="/_next/static/fr8b5H7sI0EANf3d7QFJ6/_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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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":"fr8b5H7sI0EANf3d7QFJ6","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/3f9e41b5c0ba95f7.css" as="style"/><link rel="stylesheet" href="/_next/static/css/3f9e41b5c0ba95f7.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-01a59698bc68d8ca.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/ZKd6tMLv1IttqmqHF8igI/_buildManifest.js" defer=""></script><script src="/_next/static/ZKd6tMLv1IttqmqHF8igI/_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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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":"ZKd6tMLv1IttqmqHF8igI","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/3f9e41b5c0ba95f7.css" as="style"/><link rel="stylesheet" href="/_next/static/css/3f9e41b5c0ba95f7.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-01a59698bc68d8ca.js" defer=""></script><script src="/_next/static/chunks/pages/_error-282257fbdcc167b4.js" defer=""></script><script src="/_next/static/fr8b5H7sI0EANf3d7QFJ6/_buildManifest.js" defer=""></script><script src="/_next/static/fr8b5H7sI0EANf3d7QFJ6/_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,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";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":"fr8b5H7sI0EANf3d7QFJ6","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
|