@customize-agent/server 4.60.6 → 4.60.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +3 -3
  3. package/.next/prerender-manifest.json +3 -3
  4. package/.next/required-server-files.json +1 -1
  5. package/.next/server/chunks/1001.js +1 -1
  6. package/.next/server/chunks/1243.js +1 -1
  7. package/.next/server/chunks/2328.js +1 -1
  8. package/.next/server/chunks/3806.js +1 -1
  9. package/.next/server/chunks/{7848.js → 4722.js} +65 -65
  10. package/.next/server/chunks/8204.js +1 -1
  11. package/.next/server/chunks/9666.js +76 -76
  12. package/.next/server/instrumentation.js +1 -1
  13. package/.next/server/instrumentation.js.nft.json +1 -1
  14. package/.next/server/middleware-build-manifest.js +1 -1
  15. package/.next/server/pages/404.html +1 -1
  16. package/.next/server/pages/500.html +1 -1
  17. package/.next/server/pages/api/documents/export.js +1 -1
  18. package/.next/server/pages/api/documents/generate/preview.js +1 -1
  19. package/.next/server/pages/api/documents/generate.js +1 -1
  20. package/.next/server/pages/api/documents/generated/[id]/instruction.js +1 -1
  21. package/.next/server/pages/api/documents/generated/[id]/pause.js +1 -1
  22. package/.next/server/pages/api/health.js +1 -1
  23. package/.next/server/pages/api/kb/upload.js +2 -2
  24. package/.next/server/pages/api/system/data-health.js +1 -1
  25. package/.next/server/pages/canvas/[id].html +1 -1
  26. package/.next/server/pages/canvas.html +1 -1
  27. package/.next/server/pages/documents.html +1 -1
  28. package/.next/server/pages/guide.html +1 -1
  29. package/.next/server/pages/index.html +1 -1
  30. package/.next/server/pages/knowledge/file-detail.html +1 -1
  31. package/.next/server/pages/knowledge/files.html +1 -1
  32. package/.next/server/pages/knowledge/manage.html +1 -1
  33. package/.next/server/pages/knowledge/source-preview.html +1 -1
  34. package/.next/server/pages/knowledge.html +1 -1
  35. package/.next/server/pages/models.html +1 -1
  36. package/.next/server/pages/overview.html +1 -1
  37. package/.next/server/pages/prompt.html +1 -1
  38. package/.next/server/pages/settings.html +1 -1
  39. package/.next/server/pages/skills/[id]/edit.html +1 -1
  40. package/.next/server/pages/skills/[id].html +1 -1
  41. package/.next/server/pages/skills/new.html +1 -1
  42. package/.next/server/pages/skills.html +1 -1
  43. package/.next/server/pages/system/logs.html +1 -1
  44. package/.next/server/pages-manifest.json +31 -31
  45. package/.next/static/chunks/pages/{_app-3f5aa4ff7951feca.js → _app-28228d95968c4d44.js} +1 -1
  46. package/package.json +2 -2
  47. package/scripts/capture-baseline.mjs +4 -2
  48. package/scripts/half-built-scan.allow.json +1 -1
  49. package/scripts/kb-index-worker.cjs +2 -2
  50. package/scripts/kb-worker-ipc.cjs +1 -1
  51. package/scripts/upload-matrix.cjs +44 -25
  52. /package/.next/static/{3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b → 36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152}/_buildManifest.js +0 -0
  53. /package/.next/static/{3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b → 36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
1
  "use strict";(()=>{var a={};a.id=6438,a.ids=[6438],a.modules={191:(a,b,c)=>{c.d(b,{cW:()=>p,hH:()=>q,mG:()=>t,wF:()=>o});var d=c(51342),e=c(29021),f=c.n(e),g=c(33873),h=c.n(g),i=c(55511),j=c.n(i);let k=h().join((0,d.J0)(),"logs"),l=h().join(k,"errors.jsonl"),m="errors-";function n(){try{return f().readdirSync(k).filter(a=>a.startsWith(m)&&a.endsWith(".jsonl")).sort().reverse()}catch{return[]}}function o(a){let{message:b,stack:c}=function(a){if(a instanceof Error)return{message:a.message,stack:a.stack};if("string"==typeof a)return{message:a};try{return{message:JSON.stringify(a)}}catch{return{message:String(a)}}}(a.error),d={id:`err_${Date.now()}_${j().randomBytes(4).toString("hex")}`,level:a.level||"error",source:a.source,functionName:a.functionName,message:b,stack:c,request:a.req?{method:a.req.method,url:a.req.url,query:a.req.query}:void 0,meta:a.meta,createdAt:Date.now()};try{f().mkdirSync(k,{recursive:!0}),function(){try{if(f().statSync(l).size<=2097152)return;f().renameSync(l,h().join(k,`${m}${Date.now()}.jsonl`)),function(){for(let a of n().slice(20))try{f().rmSync(h().join(k,a),{force:!0})}catch{}}()}catch{}}(),f().appendFileSync(l,`${JSON.stringify(d)}
2
- `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},28656:(a,b,c)=>{c.r(b),c.d(b,{config:()=>C,default:()=>B,handler:()=>E});var d={};c.r(d),c.d(d,{default:()=>y});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(51342),j=c(73024),k=c(76760),l=c(16006),m=c(45304),n=c(21312),o=c(87942);let p=[{name:"DOCUMENT_TWO_STEP_GENERATION",status:"removed",note:"两步生成恒开;大纲失败退化单步保留为代码内安全路径"},{name:"DOCUMENT_TWO_STEP_SLIM",status:"removed",note:"两步法第二步证据预算 0.6\xd7 瘦身恒开"},{name:"DOCUMENT_CONTEXT_SLIM_CHAPTER",status:"removed",note:"章级 scoped 上下文瘦身恒开"},{name:"DOCUMENT_REQUIREMENT_CALIBRATION",status:"removed",note:"大纲要求校准恒开(无评分项要求时天然跳过)"},{name:"DOCUMENT_CROSS_CHAPTER_DEDUP",status:"removed",note:"跨章完全重复句/语义重复检测与 strip 恒开"},{name:"DOCUMENT_SECTION_FIRST_GENERATION",status:"removed",note:"小节级成稿自动判定恒开(小节 2-8、非复合标题)"},{name:"DOCUMENT_SECTION_FIRST_MAX_SECTIONS",status:"removed",note:"小节级成稿小节数上限固化为常量 8"},{name:"DOCUMENT_SECTION_PLANNING_MODE",status:"removed",note:"LLM 规划常态化恒开(template-locked 回退删除)"},{name:"DOCUMENT_UNIFIED_SYSTEM_PREFIX",status:"removed",note:"跨角色统一正文前缀已退役,各调用点使用实际任务协议"},{name:"DOCUMENT_L0_SYSTEM_PREFIX",status:"removed",note:"统一旧正文公共段已退役,无兼容前缀路径"},{name:"DOCUMENT_TITLE_ALIGNMENT_CHECK",status:"removed",note:"跨章同名小节标题检测恒开"},{name:"DOCUMENT_GENERATION_RERANKER",status:"removed",note:"cross-encoder 语义重排(worker 线程)恒开"},{name:"DOCUMENT_QUERY_EXPANSION_SEMANTIC",status:"removed",note:"语义查询扩展恒开(正则兜底仍保留)"},{name:"DOCUMENT_T0_WHITELIST",status:"removed",note:"T0 白名单行瘦身恒开(8000 字符硬顶保留)"},{name:"DOCUMENT_SECTION_QUANT_PLAN",status:"removed",note:"量化参数落位清单注入恒开"},{name:"DOCUMENT_FACT_SANITIZE",status:"removed",note:"事实净化门恒开"},{name:"DOCUMENT_TABLE_PARSE_CACHE",status:"removed",note:"工作簿磁盘解析进程内缓存恒开"},{name:"DOCUMENT_SECTION_SUPPLEMENT_ATTEMPTS",status:"removed",note:"补写尝试上限固化为常量 2(1~3 收敛)"},{name:"DOCUMENT_BLOCK_MAX_ATTEMPTS",status:"removed",note:"块级写作/反馈重试上限固化为常量 2"},{name:"DOCUMENT_REPAIR_ROUND_RETIREMENT",status:"managed",default:"off",note:"修复轮逐轮退役(收敛环 D1):on 时跳过热力图判定的退役候选轮(只跳补偿轮,逐轮落账);off(默认)时候选只上屏不生效"},{name:"DOCUMENT_EVIDENCE_CATALOG_MAX_LINES",status:"merged",note:"→ tuningProfile.evidenceCatalogMaxLines"},{name:"DOCUMENT_FACT_EXTRACTION_MAX_CHARS",status:"merged",note:"→ tuningProfile.factExtractionMaxChars"},{name:"DOCUMENT_PERSIST_EVIDENCE_MAX_ITEMS",status:"merged",note:"→ tuningProfile.persistEvidenceMaxItems"},{name:"DOCUMENT_PERSIST_EVIDENCE_ITEM_CHARS",status:"merged",note:"→ tuningProfile.persistEvidenceItemChars"},{name:"DOCUMENT_ABANDONED_RECORD_STALE_MS",status:"managed",default:"86400000",note:"废弃任务记录陈旧阈值"},{name:"DOCUMENT_RECENT_UPDATE_GRACE_MS",status:"managed",default:"180000",note:"任务最近更新宽限期(clamp ≥3\xd7心跳写盘间隔,防多实例误判中断)"},{name:"DOCUMENT_MAX_CONCURRENT_GENERATIONS",status:"managed",default:"2",note:"全局并发生成上限"},{name:"DOCUMENT_PROGRESS_SAVE_INTERVAL_MS",status:"managed",default:"5000",note:"进度落盘节流间隔"},{name:"DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS",status:"managed",default:"30000",note:"心跳落盘节流间隔(与中断宽限联动:宽限自动 clamp ≥3\xd7本值)"},{name:"DOCUMENT_GENERATION_HEARTBEAT_MS",status:"managed",default:"30000",note:"生成心跳周期"},{name:"DOCUMENT_EMBED_CACHE",status:"managed",default:"1",note:"bge 嵌入全局 LRU 缓存开关"},{name:"DOCUMENT_EMBED_CACHE_SIZE",status:"managed",default:"40000",note:"bge 嵌入缓存容量(检索侧/报告侧默认口径 2000/40000,均为展示口径)"},{name:"DOCUMENT_EXTRACTION_CACHE",status:"managed",default:"1",note:"事实提取缓存开关"},{name:"DOCUMENT_TRUTH_CALIBER_DIAG",status:"managed",default:"1",note:"真值层口径修复输入诊断恒显(4.61:修复器零命中时必须可观测,防「没修」与「无需修」不可分)"},{name:"DOCUMENT_LLM_RETRY_BACKOFF",status:"managed",default:"1",note:"LLM 过载退避开关"},{name:"DOCUMENT_PREFIX_SCHEDULE_WINDOW_MS",status:"managed",default:"adaptive",note:"prefix 预热调度窗口(毫秒,0=关闭调度);未设置=adaptive(在飞 <16 → 120ms,≥16 → 500ms)"},{name:"DOCUMENT_QINGTIAN_PATCH_GUARD",status:"managed",default:"observe",note:"patchGuard 模式(observe/enforce),灰度完成后固化"},{name:"DOCUMENT_EXPORT_PURE_RENDER",status:"managed",default:"observe",note:"导出纯渲染模式(off/observe/enforce):观测期仅检测计数,enforce 阻断源层结构性缺陷(批 1 A1)"},{name:"DOCUMENT_CONSISTENCY_SAMPLE_LIMIT",status:"managed",default:"0",note:"数据一致性复核抽样上限(0=全量)"},{name:"DOCUMENT_MAX_QUERIES_PER_CHAPTER",status:"managed",default:"12",note:"单章主检索查询数上限"},{name:"DOCUMENT_SEMANTIC_TOP_CANDIDATES",status:"managed",default:"0",note:"语义召回 Top 候选数(0=自动)"},{name:"DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS",status:"managed",default:"30000",note:"模板运行验证缓存 TTL"},{name:"DOCUMENT_WRITING_CONSTRAINTS_EVOLUTION",status:"managed",default:"1",note:"写作硬约束自进化开关(P19,默认开启;历史缺陷热力图规避提醒注入 L1 可变段末尾,=0 关闭)"},{name:"DOCUMENT_SKIP_EMBED_PREFLIGHT",status:"managed",default:"0",note:"任务启动本地语义模型预热快速失败跳过开关(=1 跳过,仅限本地调试)"},{name:"DOCUMENT_MEMORY_ALERT_MB",status:"managed",default:"3072",note:"finalize 收尾 rss 内存采样告警阈值(MB,超阈值写入 healthAlerts)"},{name:"DOCUMENT_INDEX_SAVE_INTERVAL_MS",status:"managed",default:"30000",note:"generatedDocuments/index.json 列表投影写盘节流间隔(P-1 \xa73.2:终态与首次出现不受节流;0=每次全写)"},{name:"DOCUMENT_PLANNING_CACHE",status:"managed",default:"auto",note:"规划期 LLM 产物跨轮缓存(on/off/auto;auto=生产开、测试关)"},{name:"DOCUMENT_CLAUSE_BATCH_CONCURRENCY",status:"managed",default:"6",note:"条款判定并发批数(默认 6;上限受在飞 LLM 信号量约束,超出会告警而非静默夹住)"},{name:"AGENT_CLAUSE_BATCH_CONCURRENCY",status:"removed",note:"改名 → DOCUMENT_CLAUSE_BATCH_CONCURRENCY(原名不在守卫扫描范围内,属治理逃逸)"},{name:"DOCUMENT_THINKING_FOR_JUDGES",status:"managed",default:"off",note:"判定类调用保留思考(2026-10-01 默认翻转为 off:判定是 JSON 任务、与输出共享预算;=1/on/true 显式开启。证据见 llmClient.judgeThinkingEnabled)"},{name:"AGENT_THINKING_FOR_JUDGES",status:"renamed",note:"改名 → DOCUMENT_THINKING_FOR_JUDGES(原名不在守卫扫描范围内,属治理逃逸;本名已不再被读取)"}];[...p];let q=[{id:"kb-tags-ui",summary:"知识库标签:服务端能列标签,界面里没有任何地方显示或编辑标签",capabilityAt:["src/pages/api/kb/tags/index.ts"],missing:"ui-entry",disposition:"当前服务端标签API已注册,但没有标签管理界面。无消费者的客户端预留封装已删除,不能将API存在冒称界面已接入。",check:{kind:"no-ui-reference",urls:["/api/kb/tags"],uiSymbols:["getKbTags"]}},{id:"kb-duplicates-ui",summary:"知识库重复文件:服务端能查重复,界面里没有入口",capabilityAt:["src/pages/api/kb/duplicates/index.ts"],missing:"ui-entry",disposition:"产品面新增;重复文件会影响检索命中(同一内容多份),界面缺位时用户只能靠自动去重",check:{kind:"no-ui-reference",urls:["/api/kb/duplicates"],uiSymbols:["getKbDuplicates"]}},{id:"web-access-ui",summary:'联网增强:检索链与服务端配置都在,但界面里没有开关——**而定稿报告还在让用户去"模型配置"里开**',capabilityAt:["src/pages/api/config/web-access/index.ts","WebResearchReport 检索链"],missing:"ui-entry",disposition:"运行期仍从当前服务配置读取联网功能;管理界面没有该开关,未使用的客户端配置封装已删除。报告只能如实呈现实际配置与取证结果。",check:{kind:"no-ui-reference",urls:["/api/config/web-access"]}},{id:"repair-patch-body-ui",summary:"「用户显式定点补丁」(`RepairCreateBody.patch` = 11.5 的 anchor/replacement 载体)在服务端已实现并有校验,**客户端从来不发这个字段**",capabilityAt:["src/pages/api/documents/generated/[id]/repair/index.ts(`patch` 解析 + anchor/replacement 校验)","src/pages/canvas/[id].tsx(发起修复请求的调用点不传 `patch`)"],missing:"ui-entry",disposition:'界面侧"逐字锚点补丁"是产品面新增(选中原文 → 填替换文本 → 预览 → 提交);服务端与事务层已就绪,删掉等于把一条已完成的交付链能力下架。**登记在此,等界面排期**——不许"路由留着、界面没有"就当它已实现(H7 纪律)',check:{kind:"manual",how:"grep `patch` 在 canvas/[id].tsx 的修复请求体里零命中;repair/index.ts 里 `body.patch` 有解析与校验"}}],r=(0,i.J0)();function s(a){let b,c=0,d=0,e=a=>{let f;try{f=j.readdirSync(a,{withFileTypes:!0})}catch{return}for(let g of f){let f=k.join(a,g.name);if(g.isDirectory()){e(f);continue}try{let a=j.statSync(f);c+=a.size,d+=1,(void 0===b||a.mtimeMs>b)&&(b=a.mtimeMs)}catch{}}};return e(a),{bytes:c,files:d,lastModified:b}}function t(){let a,b=k.join(r,"projects");try{a=j.readdirSync(b)}catch{return[]}return a.map(a=>k.join(b,a,"generatedDocuments")).filter(a=>j.existsSync(a))}let u={"workflow-cache":{label:"工作流缓存",note:"缓存键含内容指纹与判据源指纹 ⇒ 陈旧缓存不会命中;删除后下次生成重算",dirs:()=>[k.join(r,"cache","document-workflow")]},"document-cache":{label:"文档缓存",note:"文档生成的中间缓存;可重建",dirs:()=>[k.join(r,"document-cache")]},"orphan-artifacts":{label:"孤儿产物(无人引用)",note:"按节点日志的 payloadRef 反查:**只删没有任何节点引用的** artifacts 文件(被引用的一个都不动)",files:()=>(function(){let a=[];for(let b of t()){let c=k.join(b,"artifacts");if(!j.existsSync(c))continue;let d=k.join(b,"drafts"),e="";try{e=j.readdirSync(d).filter(a=>a.endsWith(".nodes.jsonl")).map(a=>{try{return j.readFileSync(k.join(d,a),"utf8")}catch{return""}}).join("\n")}catch{}let f=b=>{let c;try{c=j.readdirSync(b,{withFileTypes:!0})}catch{return}for(let d of c){let c=k.join(b,d.name);if(d.isDirectory()){f(c);continue}e.includes(d.name)||a.push(c)}};f(c)}return a})()}},v=new Set(Object.keys(u));function w(){let a=[];for(let[b,c]of Object.entries(u)){let d=0,e=0;for(let a of c.dirs?.()??[]){let b=s(a);d+=b.bytes,e+=b.files}for(let a of c.files?.()??[])try{d+=j.statSync(a).size,e+=1}catch{}a.push({key:b,label:c.label,deletable:!0,bytes:d,files:e,note:c.note})}let b=0,c=0;for(let a of t()){let d=s(a);b+=d.bytes,c+=d.files}a.push({key:"records",label:"生成记录与节点日志",deletable:!1,bytes:b,files:c,note:"交付证据与审计链:**不提供批量清理**(要删请在记录页逐条删)"});let d=s(k.join(r,"snapshots"));if(d.files>0){let b=void 0===d.lastModified?void 0:Math.floor((Date.now()-d.lastModified)/864e5);a.push({key:"legacy-snapshots",label:"遗留快照(已退役产品线)",deletable:!1,bytes:d.bytes,files:d.files,lastModified:d.lastModified,note:`${k.join(r,"snapshots")} 下的整树备份(旧"写代码"产品线遗留;当前源码零读写,与本产品无关)${void 0===b?"":`;最后写入约 ${b} 天前`}——**不可重建,故不提供清理**(决议:见本文件 \`legacy-snapshots\` 处的决议记录;要与不要由你定,确认要清就删除上面这个目录)`})}let e=(()=>{try{let a=(0,m.LU)();return{count:a.skills.length,invalid:a.invalid.length,unresolved:(0,n.u3)(a.skills).length}}catch{return{count:0,invalid:0,unresolved:0}}})();for(let[b,c]of(a.push({key:"skills",label:"技能库",deletable:!1,bytes:s(k.join(r,"skills")).bytes,files:e.count,note:`用户资产(含自建技能):无效记录 ${e.invalid} 条、引用不到的工艺卡 ${e.unresolved} 个——**只报告,不清理**`}),Object.entries(function(){let a={"ui-entry":[],"declaration-site":[],writer:[],reader:[]};for(let b of q)a[b.missing].push(b);return a}())))0!==c.length&&a.push({key:`capability-gap-${b}`,label:`能力缺口(${b})`,deletable:!1,bytes:0,files:c.length,note:c.map(a=>`${a.id}:${a.summary}`).join(";")+'——完整登记与"为什么不接"见 `services/agent/capabilityGaps.ts`(`capabilityGaps.test.ts` 逐条机械核对)'});let f=function(a=process.env){let b=new Set(p.map(a=>a.name)),c=new Set(["DOCUMENT_TUNING_PROFILE"]);return Object.keys(a).filter(a=>a.startsWith("DOCUMENT_")&&!b.has(a)&&!c.has(a)).sort()}();return f.length>0&&a.push({key:"env-contract",label:"环境变量契约",deletable:!1,bytes:0,files:f.length,note:`**已设置但未登记**的 DOCUMENT_ 变量:${f.join("、")}——它们不会生效(可能名字写错),可用变量清单见 \`services/document-workflow/envRegistry.ts\``}),{storageRoot:r,workflowVersion:o.x,scopes:a}}async function x(a,b){if("GET"===a.method)return b.status(200).json(w());if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=a.body,d=Array.isArray(c.scopes)?c.scopes.map(String):[];if(0===d.length)return b.status(400).json({error:"scopes 不能为空(要清什么必须显式列出)"});if(!0!==c.confirm)return b.status(400).json({error:"必须带 confirm=true(清理不可撤销)"});let e=d.filter(a=>!v.has(a));if(e.length>0)return b.status(400).json({error:`不可清理的范围:${e.join("、")}(只有 ${[...v].join("、")} 可清)`});let f=[];for(let a of[...new Set(d)]){let b=u[a],c=0,d=0;for(let a of b.dirs?.()??[]){if(!j.existsSync(a))continue;let b=function(a){let b=k.resolve(a);if(!b.startsWith(k.resolve(r)+k.sep))throw Error(`拒绝删除存储根之外的路径:${b}`);let c=s(b);try{j.rmSync(b,{recursive:!0,force:!0})}catch(a){throw Error(`删除 ${b} 失败:${a instanceof Error?a.message:String(a)}`,{cause:a})}return c}(a);c+=b.bytes,d+=b.files}for(let a of b.files?.()??[]){let b=k.resolve(a);if(!b.startsWith(k.resolve(r)+k.sep))throw Error(`拒绝删除存储根之外的路径:${b}`);try{c+=j.statSync(b).size,j.rmSync(b,{force:!0}),d+=1}catch{}}f.push({scope:a,bytes:c,files:d})}b.status(200).json({removed:f,report:w()})}let y=(0,l.j)("api/system/data-health",x);var z=c(68970),A=c(50296);let B=(0,h.M)(d,"default"),C=(0,h.M)(d,"config"),D=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/system/data-health",pathname:"/api/system/data-health",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function E(a,b,c){let d=await D.prepare(a,b,{srcPage:"/api/system/data-health"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,z.getTracer)(),e=d.getActiveScopeSpan(),j=D.instrumentationOnRequestError.bind(D),k=async e=>D.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:D.isDev,page:"/api/system/data-health",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==A.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(A.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:z.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(D.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5304,1243],()=>b(b.s=28656));module.exports=c})();
2
+ `)}catch(a){console.error("[errorLogService] failed to write error log",a)}return d}function p(a=200){let b=[l,...n().map(a=>h().join(k,a))],c=[];for(let d of b){if(c.length>=a)break;for(let b of(function(a){try{return f().readFileSync(a,"utf8").split("\n").filter(Boolean).flatMap(a=>{try{return[JSON.parse(a)]}catch{return[]}})}catch{return[]}})(d).reverse())if(c.push(b),c.length>=a)break}return c}function q(){let a=0;if(f().existsSync(l))try{f().rmSync(l,{force:!0}),a++}catch{}for(let b of n())try{f().rmSync(h().join(k,b),{force:!0}),a++}catch{}return a}let r=!1;function s(a,b,c,d=20){let e=0,f=0;return g=>{try{b(g);let h=Date.now();h-e>6e4&&(e=h,f=0),f<d&&(f+=1,c(a,g))}catch{}}}function t(){r||(r=!0,process.on("uncaughtException",s("uncaughtException",a=>o({source:"process",functionName:"uncaughtException",error:a}),(a,b)=>console.error(`[process] ${a}`,b))),process.on("unhandledRejection",s("unhandledRejection",a=>o({source:"process",functionName:"unhandledRejection",error:a}),(a,b)=>console.error(`[process] ${a}`,b))))}},16006:(a,b,c)=>{c.d(b,{j:()=>f});var d=c(191),e=c(47774);function f(a,b){return async function(c,f){let g=async()=>{try{await b(c,f)}catch(h){if(h instanceof e.Bc){f.headersSent||f.status(503).json({error:h.message});return}let g=(0,d.wF)({source:a,functionName:b.name||"anonymous",error:h,req:c});console.error(`[${a}]`,g.id,h),f.headersSent||f.status(500).json({error:h instanceof Error?h.message:"Internal server error",requestId:g.id})}};if("api/system/reset"===a||a.startsWith("api/health"))return void await g();try{await (0,e.i0)(g)}catch(a){if(a instanceof e.Bc&&!f.headersSent)f.status(503).json({error:a.message});else throw a}}}(0,d.mG)()},28656:(a,b,c)=>{c.r(b),c.d(b,{config:()=>C,default:()=>B,handler:()=>E});var d={};c.r(d),c.d(d,{default:()=>y});var e=c(11400),f=c(50029),g=c(71086),h=c(38513),i=c(51342),j=c(73024),k=c(76760),l=c(16006),m=c(45304),n=c(21312),o=c(87942);let p=[{name:"DOCUMENT_TWO_STEP_GENERATION",status:"removed",note:"两步生成恒开;大纲失败退化单步保留为代码内安全路径"},{name:"DOCUMENT_TWO_STEP_SLIM",status:"removed",note:"两步法第二步证据预算 0.6\xd7 瘦身恒开"},{name:"DOCUMENT_CONTEXT_SLIM_CHAPTER",status:"removed",note:"章级 scoped 上下文瘦身恒开"},{name:"DOCUMENT_REQUIREMENT_CALIBRATION",status:"removed",note:"大纲要求校准恒开(无评分项要求时天然跳过)"},{name:"DOCUMENT_CROSS_CHAPTER_DEDUP",status:"removed",note:"跨章完全重复句/语义重复检测与 strip 恒开"},{name:"DOCUMENT_SECTION_FIRST_GENERATION",status:"removed",note:"小节级成稿自动判定恒开(小节 2-8、非复合标题)"},{name:"DOCUMENT_SECTION_FIRST_MAX_SECTIONS",status:"removed",note:"小节级成稿小节数上限固化为常量 8"},{name:"DOCUMENT_SECTION_PLANNING_MODE",status:"removed",note:"LLM 规划常态化恒开(template-locked 回退删除)"},{name:"DOCUMENT_UNIFIED_SYSTEM_PREFIX",status:"removed",note:"跨角色统一正文前缀已退役,各调用点使用实际任务协议"},{name:"DOCUMENT_L0_SYSTEM_PREFIX",status:"removed",note:"统一旧正文公共段已退役,无兼容前缀路径"},{name:"DOCUMENT_TITLE_ALIGNMENT_CHECK",status:"removed",note:"跨章同名小节标题检测恒开"},{name:"DOCUMENT_GENERATION_RERANKER",status:"removed",note:"cross-encoder 语义重排(worker 线程)恒开"},{name:"DOCUMENT_QUERY_EXPANSION_SEMANTIC",status:"removed",note:"语义查询扩展恒开(正则兜底仍保留)"},{name:"DOCUMENT_T0_WHITELIST",status:"removed",note:"T0 白名单行瘦身恒开(8000 字符硬顶保留)"},{name:"DOCUMENT_SECTION_QUANT_PLAN",status:"removed",note:"量化参数落位清单注入恒开"},{name:"DOCUMENT_FACT_SANITIZE",status:"removed",note:"事实净化门恒开"},{name:"DOCUMENT_TABLE_PARSE_CACHE",status:"removed",note:"工作簿磁盘解析进程内缓存恒开"},{name:"DOCUMENT_SECTION_SUPPLEMENT_ATTEMPTS",status:"removed",note:"补写尝试上限固化为常量 2(1~3 收敛)"},{name:"DOCUMENT_BLOCK_MAX_ATTEMPTS",status:"removed",note:"块级写作/反馈重试上限固化为常量 2"},{name:"DOCUMENT_REPAIR_ROUND_RETIREMENT",status:"managed",default:"off",note:"修复轮逐轮退役(收敛环 D1):on 时跳过热力图判定的退役候选轮(只跳补偿轮,逐轮落账);off(默认)时候选只上屏不生效"},{name:"DOCUMENT_EVIDENCE_CATALOG_MAX_LINES",status:"merged",note:"→ tuningProfile.evidenceCatalogMaxLines"},{name:"DOCUMENT_FACT_EXTRACTION_MAX_CHARS",status:"merged",note:"→ tuningProfile.factExtractionMaxChars"},{name:"DOCUMENT_PERSIST_EVIDENCE_MAX_ITEMS",status:"merged",note:"→ tuningProfile.persistEvidenceMaxItems"},{name:"DOCUMENT_PERSIST_EVIDENCE_ITEM_CHARS",status:"merged",note:"→ tuningProfile.persistEvidenceItemChars"},{name:"DOCUMENT_ABANDONED_RECORD_STALE_MS",status:"managed",default:"86400000",note:"废弃任务记录陈旧阈值"},{name:"DOCUMENT_RECENT_UPDATE_GRACE_MS",status:"managed",default:"180000",note:"任务最近更新宽限期(clamp ≥3\xd7心跳写盘间隔,防多实例误判中断)"},{name:"DOCUMENT_MAX_CONCURRENT_GENERATIONS",status:"managed",default:"2",note:"全局并发生成上限"},{name:"DOCUMENT_PROGRESS_SAVE_INTERVAL_MS",status:"managed",default:"5000",note:"进度落盘节流间隔"},{name:"DOCUMENT_PROGRESS_HEARTBEAT_SAVE_INTERVAL_MS",status:"managed",default:"30000",note:"心跳落盘节流间隔(与中断宽限联动:宽限自动 clamp ≥3\xd7本值)"},{name:"DOCUMENT_GENERATION_HEARTBEAT_MS",status:"managed",default:"30000",note:"生成心跳周期"},{name:"DOCUMENT_EMBED_CACHE",status:"managed",default:"1",note:"bge 嵌入全局 LRU 缓存开关"},{name:"DOCUMENT_EMBED_CACHE_SIZE",status:"managed",default:"40000",note:"bge 嵌入缓存容量(检索侧/报告侧默认口径 2000/40000,均为展示口径)"},{name:"DOCUMENT_EXTRACTION_CACHE",status:"managed",default:"1",note:"事实提取缓存开关"},{name:"DOCUMENT_TRUTH_CALIBER_DIAG",status:"managed",default:"1",note:"真值层口径修复输入诊断恒显(4.61:修复器零命中时必须可观测,防「没修」与「无需修」不可分)"},{name:"DOCUMENT_LLM_RETRY_BACKOFF",status:"managed",default:"1",note:"LLM 过载退避开关"},{name:"DOCUMENT_PREFIX_SCHEDULE_WINDOW_MS",status:"removed",note:"已删除定时攒批;同前缀正式请求按首个有效流输出排序,不增加预热调用"},{name:"DOCUMENT_QINGTIAN_PATCH_GUARD",status:"managed",default:"observe",note:"patchGuard 模式(observe/enforce),灰度完成后固化"},{name:"DOCUMENT_EXPORT_PURE_RENDER",status:"managed",default:"observe",note:"导出纯渲染模式(off/observe/enforce):观测期仅检测计数,enforce 阻断源层结构性缺陷(批 1 A1)"},{name:"DOCUMENT_CONSISTENCY_SAMPLE_LIMIT",status:"managed",default:"0",note:"数据一致性复核抽样上限(0=全量)"},{name:"DOCUMENT_MAX_QUERIES_PER_CHAPTER",status:"managed",default:"12",note:"单章主检索查询数上限"},{name:"DOCUMENT_SEMANTIC_TOP_CANDIDATES",status:"managed",default:"0",note:"语义召回 Top 候选数(0=自动)"},{name:"DOCUMENT_TEMPLATE_VALIDATION_CACHE_TTL_MS",status:"managed",default:"30000",note:"模板运行验证缓存 TTL"},{name:"DOCUMENT_WRITING_CONSTRAINTS_EVOLUTION",status:"managed",default:"1",note:"写作硬约束自进化开关(P19,默认开启;历史缺陷热力图规避提醒注入 L1 可变段末尾,=0 关闭)"},{name:"DOCUMENT_SKIP_EMBED_PREFLIGHT",status:"managed",default:"0",note:"任务启动本地语义模型预热快速失败跳过开关(=1 跳过,仅限本地调试)"},{name:"DOCUMENT_MEMORY_ALERT_MB",status:"managed",default:"3072",note:"finalize 收尾 rss 内存采样告警阈值(MB,超阈值写入 healthAlerts)"},{name:"DOCUMENT_INDEX_SAVE_INTERVAL_MS",status:"managed",default:"30000",note:"generatedDocuments/index.json 列表投影写盘节流间隔(P-1 \xa73.2:终态与首次出现不受节流;0=每次全写)"},{name:"DOCUMENT_PLANNING_CACHE",status:"managed",default:"auto",note:"规划期 LLM 产物跨轮缓存(on/off/auto;auto=生产开、测试关)"},{name:"DOCUMENT_CLAUSE_BATCH_CONCURRENCY",status:"managed",default:"6",note:"条款判定并发批数(默认 6;上限受在飞 LLM 信号量约束,超出会告警而非静默夹住)"},{name:"AGENT_CLAUSE_BATCH_CONCURRENCY",status:"removed",note:"改名 → DOCUMENT_CLAUSE_BATCH_CONCURRENCY(原名不在守卫扫描范围内,属治理逃逸)"},{name:"DOCUMENT_THINKING_FOR_JUDGES",status:"managed",default:"off",note:"判定类调用保留思考(2026-10-01 默认翻转为 off:判定是 JSON 任务、与输出共享预算;=1/on/true 显式开启。证据见 llmClient.judgeThinkingEnabled)"},{name:"AGENT_THINKING_FOR_JUDGES",status:"renamed",note:"改名 → DOCUMENT_THINKING_FOR_JUDGES(原名不在守卫扫描范围内,属治理逃逸;本名已不再被读取)"}];[...p];let q=[{id:"kb-tags-ui",summary:"知识库标签:服务端能列标签,界面里没有任何地方显示或编辑标签",capabilityAt:["src/pages/api/kb/tags/index.ts"],missing:"ui-entry",disposition:"当前服务端标签API已注册,但没有标签管理界面。无消费者的客户端预留封装已删除,不能将API存在冒称界面已接入。",check:{kind:"no-ui-reference",urls:["/api/kb/tags"],uiSymbols:["getKbTags"]}},{id:"kb-duplicates-ui",summary:"知识库重复文件:服务端能查重复,界面里没有入口",capabilityAt:["src/pages/api/kb/duplicates/index.ts"],missing:"ui-entry",disposition:"产品面新增;重复文件会影响检索命中(同一内容多份),界面缺位时用户只能靠自动去重",check:{kind:"no-ui-reference",urls:["/api/kb/duplicates"],uiSymbols:["getKbDuplicates"]}},{id:"web-access-ui",summary:'联网增强:检索链与服务端配置都在,但界面里没有开关——**而定稿报告还在让用户去"模型配置"里开**',capabilityAt:["src/pages/api/config/web-access/index.ts","WebResearchReport 检索链"],missing:"ui-entry",disposition:"运行期仍从当前服务配置读取联网功能;管理界面没有该开关,未使用的客户端配置封装已删除。报告只能如实呈现实际配置与取证结果。",check:{kind:"no-ui-reference",urls:["/api/config/web-access"]}},{id:"repair-patch-body-ui",summary:"「用户显式定点补丁」(`RepairCreateBody.patch` = 11.5 的 anchor/replacement 载体)在服务端已实现并有校验,**客户端从来不发这个字段**",capabilityAt:["src/pages/api/documents/generated/[id]/repair/index.ts(`patch` 解析 + anchor/replacement 校验)","src/pages/canvas/[id].tsx(发起修复请求的调用点不传 `patch`)"],missing:"ui-entry",disposition:'界面侧"逐字锚点补丁"是产品面新增(选中原文 → 填替换文本 → 预览 → 提交);服务端与事务层已就绪,删掉等于把一条已完成的交付链能力下架。**登记在此,等界面排期**——不许"路由留着、界面没有"就当它已实现(H7 纪律)',check:{kind:"manual",how:"grep `patch` 在 canvas/[id].tsx 的修复请求体里零命中;repair/index.ts 里 `body.patch` 有解析与校验"}}],r=(0,i.J0)();function s(a){let b,c=0,d=0,e=a=>{let f;try{f=j.readdirSync(a,{withFileTypes:!0})}catch{return}for(let g of f){let f=k.join(a,g.name);if(g.isDirectory()){e(f);continue}try{let a=j.statSync(f);c+=a.size,d+=1,(void 0===b||a.mtimeMs>b)&&(b=a.mtimeMs)}catch{}}};return e(a),{bytes:c,files:d,lastModified:b}}function t(){let a,b=k.join(r,"projects");try{a=j.readdirSync(b)}catch{return[]}return a.map(a=>k.join(b,a,"generatedDocuments")).filter(a=>j.existsSync(a))}let u={"workflow-cache":{label:"工作流缓存",note:"缓存键含内容指纹与判据源指纹 ⇒ 陈旧缓存不会命中;删除后下次生成重算",dirs:()=>[k.join(r,"cache","document-workflow")]},"document-cache":{label:"文档缓存",note:"文档生成的中间缓存;可重建",dirs:()=>[k.join(r,"document-cache")]},"orphan-artifacts":{label:"孤儿产物(无人引用)",note:"按节点日志的 payloadRef 反查:**只删没有任何节点引用的** artifacts 文件(被引用的一个都不动)",files:()=>(function(){let a=[];for(let b of t()){let c=k.join(b,"artifacts");if(!j.existsSync(c))continue;let d=k.join(b,"drafts"),e="";try{e=j.readdirSync(d).filter(a=>a.endsWith(".nodes.jsonl")).map(a=>{try{return j.readFileSync(k.join(d,a),"utf8")}catch{return""}}).join("\n")}catch{}let f=b=>{let c;try{c=j.readdirSync(b,{withFileTypes:!0})}catch{return}for(let d of c){let c=k.join(b,d.name);if(d.isDirectory()){f(c);continue}e.includes(d.name)||a.push(c)}};f(c)}return a})()}},v=new Set(Object.keys(u));function w(){let a=[];for(let[b,c]of Object.entries(u)){let d=0,e=0;for(let a of c.dirs?.()??[]){let b=s(a);d+=b.bytes,e+=b.files}for(let a of c.files?.()??[])try{d+=j.statSync(a).size,e+=1}catch{}a.push({key:b,label:c.label,deletable:!0,bytes:d,files:e,note:c.note})}let b=0,c=0;for(let a of t()){let d=s(a);b+=d.bytes,c+=d.files}a.push({key:"records",label:"生成记录与节点日志",deletable:!1,bytes:b,files:c,note:"交付证据与审计链:**不提供批量清理**(要删请在记录页逐条删)"});let d=s(k.join(r,"snapshots"));if(d.files>0){let b=void 0===d.lastModified?void 0:Math.floor((Date.now()-d.lastModified)/864e5);a.push({key:"legacy-snapshots",label:"遗留快照(已退役产品线)",deletable:!1,bytes:d.bytes,files:d.files,lastModified:d.lastModified,note:`${k.join(r,"snapshots")} 下的整树备份(旧"写代码"产品线遗留;当前源码零读写,与本产品无关)${void 0===b?"":`;最后写入约 ${b} 天前`}——**不可重建,故不提供清理**(决议:见本文件 \`legacy-snapshots\` 处的决议记录;要与不要由你定,确认要清就删除上面这个目录)`})}let e=(()=>{try{let a=(0,m.LU)();return{count:a.skills.length,invalid:a.invalid.length,unresolved:(0,n.u3)(a.skills).length}}catch{return{count:0,invalid:0,unresolved:0}}})();for(let[b,c]of(a.push({key:"skills",label:"技能库",deletable:!1,bytes:s(k.join(r,"skills")).bytes,files:e.count,note:`用户资产(含自建技能):无效记录 ${e.invalid} 条、引用不到的工艺卡 ${e.unresolved} 个——**只报告,不清理**`}),Object.entries(function(){let a={"ui-entry":[],"declaration-site":[],writer:[],reader:[]};for(let b of q)a[b.missing].push(b);return a}())))0!==c.length&&a.push({key:`capability-gap-${b}`,label:`能力缺口(${b})`,deletable:!1,bytes:0,files:c.length,note:c.map(a=>`${a.id}:${a.summary}`).join(";")+'——完整登记与"为什么不接"见 `services/agent/capabilityGaps.ts`(`capabilityGaps.test.ts` 逐条机械核对)'});let f=function(a=process.env){let b=new Set(p.map(a=>a.name)),c=new Set(["DOCUMENT_TUNING_PROFILE"]);return Object.keys(a).filter(a=>a.startsWith("DOCUMENT_")&&!b.has(a)&&!c.has(a)).sort()}();return f.length>0&&a.push({key:"env-contract",label:"环境变量契约",deletable:!1,bytes:0,files:f.length,note:`**已设置但未登记**的 DOCUMENT_ 变量:${f.join("、")}——它们不会生效(可能名字写错),可用变量清单见 \`services/document-workflow/envRegistry.ts\``}),{storageRoot:r,workflowVersion:o.x,scopes:a}}async function x(a,b){if("GET"===a.method)return b.status(200).json(w());if("POST"!==a.method)return b.status(405).json({error:"Method not allowed"});let c=a.body,d=Array.isArray(c.scopes)?c.scopes.map(String):[];if(0===d.length)return b.status(400).json({error:"scopes 不能为空(要清什么必须显式列出)"});if(!0!==c.confirm)return b.status(400).json({error:"必须带 confirm=true(清理不可撤销)"});let e=d.filter(a=>!v.has(a));if(e.length>0)return b.status(400).json({error:`不可清理的范围:${e.join("、")}(只有 ${[...v].join("、")} 可清)`});let f=[];for(let a of[...new Set(d)]){let b=u[a],c=0,d=0;for(let a of b.dirs?.()??[]){if(!j.existsSync(a))continue;let b=function(a){let b=k.resolve(a);if(!b.startsWith(k.resolve(r)+k.sep))throw Error(`拒绝删除存储根之外的路径:${b}`);let c=s(b);try{j.rmSync(b,{recursive:!0,force:!0})}catch(a){throw Error(`删除 ${b} 失败:${a instanceof Error?a.message:String(a)}`,{cause:a})}return c}(a);c+=b.bytes,d+=b.files}for(let a of b.files?.()??[]){let b=k.resolve(a);if(!b.startsWith(k.resolve(r)+k.sep))throw Error(`拒绝删除存储根之外的路径:${b}`);try{c+=j.statSync(b).size,j.rmSync(b,{force:!0}),d+=1}catch{}}f.push({scope:a,bytes:c,files:d})}b.status(200).json({removed:f,report:w()})}let y=(0,l.j)("api/system/data-health",x);var z=c(68970),A=c(50296);let B=(0,h.M)(d,"default"),C=(0,h.M)(d,"config"),D=new g.PagesAPIRouteModule({definition:{kind:f.A.PAGES_API,page:"/api/system/data-health",pathname:"/api/system/data-health",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function E(a,b,c){let d=await D.prepare(a,b,{srcPage:"/api/system/data-health"});if(!d){b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve());return}let{query:f,params:g,prerenderManifest:h,routerServerContext:i}=d;try{let c=a.method||"GET",d=(0,z.getTracer)(),e=d.getActiveScopeSpan(),j=D.instrumentationOnRequestError.bind(D),k=async e=>D.render(a,b,{query:{...f,...g},params:g,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:h.preview,propagateError:!1,dev:D.isDev,page:"/api/system/data-health",internalRevalidate:null==i?void 0:i.revalidate,onError:(...b)=>j(a,...b)}).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let f=d.getRootSpanAttributes();if(!f)return;if(f.get("next.span_type")!==A.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${f.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let g=f.get("next.route");if(g){let a=`${c} ${g}`;e.setAttributes({"next.route":g,"http.route":g,"next.span_name":a}),e.updateName(a)}else e.updateName(`${c} ${a.url}`)});e?await k(e):await d.withPropagatedContext(a.headers,()=>d.trace(A.BaseServerSpan.handleRequest,{spanName:`${c} ${a.url}`,kind:z.SpanKind.SERVER,attributes:{"http.method":c,"http.target":a.url}},k))}catch(a){if(D.isDev)throw a;(0,e.sendError)(b,500,"Internal Server Error")}finally{null==c.waitUntil||c.waitUntil.call(c,Promise.resolve())}}},29021:a=>{a.exports=require("fs")},33873:a=>{a.exports=require("path")},47774:(a,b,c)=>{c.d(b,{Bc:()=>g,b:()=>h,i0:()=>j,jF:()=>i,jp:()=>k,mh:()=>l,wx:()=>m});let d=globalThis,e=d.__customizeStorageMaintenance??={active:!1},f=d.__customizeStorageApiWriters??=new Set;class g extends Error{constructor(){super("系统清空正在执行,暂不接收新的存储访问"),this.name="StorageMaintenanceError"}}function h(){return e.active}function i(){if(e.active)throw new g}async function j(a){i();let b=Promise.resolve(a());f.add(b);try{return await b}finally{f.delete(b)}}function k(){return[...f]}function l(){if(e.active)throw Error("已有系统清空任务正在执行");e.active=!0;let a=!1;return()=>{a||(a=!0,e.active=!1)}}async function m(a,b=1e4){let c;if(!a.length)return!0;try{return await Promise.race([Promise.allSettled(a).then(()=>!0),new Promise(a=>{c=setTimeout(()=>a(!1),b)})])}finally{c&&clearTimeout(c)}}},48161:a=>{a.exports=require("node:os")},51342:(a,b,c)=>{c.d(b,{Bn:()=>k,J0:()=>h});var d=c(73024),e=c(48161),f=c(96770),g=c(76760);function h(){return(0,f.resolveAgentStorageRoot)(process.env.CUSTOMIZE_AGENT_HOME?.trim()||e.homedir())}function i(){return g.join(h(),"state.json")}function j(){try{let a=JSON.parse(d.readFileSync(i(),"utf8")),b=a?.firstStartedAt;return"number"==typeof b&&Number.isFinite(b)&&b>0?{firstStartedAt:b}:null}catch{return null}}function k(a=Date.now()){return Math.max(0,Math.round((a-function(a=Date.now()){let b=j();if(b)return b.firstStartedAt;try{let b=i();d.mkdirSync(g.dirname(b),{recursive:!0});let c=`${b}.${process.pid}.${Date.now()}.tmp`;return d.writeFileSync(c,JSON.stringify({firstStartedAt:a}),"utf8"),d.renameSync(c,b),a}catch{return j()?.firstStartedAt??a}}(a))/1e3))}},55511:a=>{a.exports=require("crypto")},73024:a=>{a.exports=require("node:fs")},75600:a=>{a.exports=require("next/dist/compiled/next-server/pages-api.runtime.prod.js")},76760:a=>{a.exports=require("node:path")},96770:a=>{a.exports=require("@customize-agent/runtime")}};var b=require("../../../webpack-api-runtime.js");b.C(a);var c=b.X(0,[9705,5304,1243],()=>b(b.s=28656));module.exports=c})();
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><link rel="preload" href="/_next/static/css/f4f2d386cfeae8e4.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f4f2d386cfeae8e4.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-3f5aa4ff7951feca.js" defer=""></script><script src="/_next/static/chunks/324-650dc02536b071bf.js" defer=""></script><script src="/_next/static/chunks/280-3ce590d421b5c47d.js" defer=""></script><script src="/_next/static/chunks/665-0634aa49137defc4.js" defer=""></script><script src="/_next/static/chunks/576-6699fed6c88502fe.js" defer=""></script><script src="/_next/static/chunks/569-2bfdde9e402af5b2.js" defer=""></script><script src="/_next/static/chunks/499-2233cadc6d4da647.js" defer=""></script><script src="/_next/static/chunks/808-0506edc7454b5c0e.js" defer=""></script><script src="/_next/static/chunks/127-7d37d37dab02bd10.js" defer=""></script><script src="/_next/static/chunks/579-fc0a2eb64aedb001.js" defer=""></script><script src="/_next/static/chunks/530-7e79396d68742829.js" defer=""></script><script src="/_next/static/chunks/pages/canvas/%5Bid%5D-534b45f39f39630c.js" defer=""></script><script src="/_next/static/3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b/_buildManifest.js" defer=""></script><script src="/_next/static/3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" 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 width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><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><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-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></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</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="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><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-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></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></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ 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 mainInnerCanvas"><div class="appShellPlaceholder"><div class="ant-spin ant-spin-spinning ant-spin-section css-1pi45l5 css-var-_R_56_" style="margin:48px" aria-live="polite" aria-busy="true"><span class="ant-spin-dot-holder"><span class="ant-spin-dot ant-spin-dot-spin"><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i></span></span></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/canvas/[id]","query":{},"buildId":"3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><link rel="preload" href="/_next/static/css/f4f2d386cfeae8e4.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f4f2d386cfeae8e4.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-28228d95968c4d44.js" defer=""></script><script src="/_next/static/chunks/324-650dc02536b071bf.js" defer=""></script><script src="/_next/static/chunks/280-3ce590d421b5c47d.js" defer=""></script><script src="/_next/static/chunks/665-0634aa49137defc4.js" defer=""></script><script src="/_next/static/chunks/576-6699fed6c88502fe.js" defer=""></script><script src="/_next/static/chunks/569-2bfdde9e402af5b2.js" defer=""></script><script src="/_next/static/chunks/499-2233cadc6d4da647.js" defer=""></script><script src="/_next/static/chunks/808-0506edc7454b5c0e.js" defer=""></script><script src="/_next/static/chunks/127-7d37d37dab02bd10.js" defer=""></script><script src="/_next/static/chunks/579-fc0a2eb64aedb001.js" defer=""></script><script src="/_next/static/chunks/530-7e79396d68742829.js" defer=""></script><script src="/_next/static/chunks/pages/canvas/%5Bid%5D-534b45f39f39630c.js" defer=""></script><script src="/_next/static/36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152/_buildManifest.js" defer=""></script><script src="/_next/static/36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" 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 width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><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><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-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></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</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="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><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-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></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></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ 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 mainInnerCanvas"><div class="appShellPlaceholder"><div class="ant-spin ant-spin-spinning ant-spin-section css-1pi45l5 css-var-_R_56_" style="margin:48px" aria-live="polite" aria-busy="true"><span class="ant-spin-dot-holder"><span class="ant-spin-dot ant-spin-dot-spin"><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i></span></span></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/canvas/[id]","query":{},"buildId":"36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">生成画布</title><link rel="preload" href="/_next/static/css/f4f2d386cfeae8e4.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f4f2d386cfeae8e4.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-3f5aa4ff7951feca.js" defer=""></script><script src="/_next/static/chunks/324-650dc02536b071bf.js" defer=""></script><script src="/_next/static/chunks/280-3ce590d421b5c47d.js" defer=""></script><script src="/_next/static/chunks/576-6699fed6c88502fe.js" defer=""></script><script src="/_next/static/chunks/499-2233cadc6d4da647.js" defer=""></script><script src="/_next/static/chunks/127-7d37d37dab02bd10.js" defer=""></script><script src="/_next/static/chunks/530-7e79396d68742829.js" defer=""></script><script src="/_next/static/chunks/pages/canvas-ffb08963e5cf9558.js" defer=""></script><script src="/_next/static/3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b/_buildManifest.js" defer=""></script><script src="/_next/static/3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" 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 width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><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><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-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></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</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="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><div class="sidebarItem sidebarItemActive"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></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></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ 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 mainInnerCanvas"><div class="canvasRoot"><div class="canvasStage" style="background-image:radial-gradient(var(--canvasGridDot) 1px, transparent 1px);background-size:24px 24px;background-position:0px 0px;cursor:grab"><div style="position:absolute;inset:0;display:grid;place-items:center;pointer-events:none"><div style="text-align:center;max-width:420px"><div style="font-size:15px;margin-bottom:6px">新画布</div><div style="font-size:12px;color:var(--colorTextSecondary);line-height:1.7">还没有节点日志——节点日志是唯一真相源,这里不造占位节点。<br/>点屏幕底部中央那个 <b>^</b> 展开输入框:用里面的「+」选择提示词与项目, 写下要求后点「生成」,节点会随日志追加而出现。</div></div></div></div><div class="canvasRecordsBall" style="position:absolute;z-index:3;right:24px;bottom:96px"><div class="canvasRecordsBallBtn" role="button" tabindex="0" aria-label="生成记录(0)" style="width:44px;height:44px"><span role="img" aria-label="history" class="anticon anticon-history"><svg viewBox="64 64 896 896" focusable="false" data-icon="history" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M536.1 273H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.3 120.7c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.7-3.7 1.9-8.7-1.7-11.2L544.1 528.5V281c0-4.4-3.6-8-8-8zm219.8 75.2l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3L752.9 334.1a8 8 0 003 14.1zm167.7 301.1l-56.7-19.5a8 8 0 00-10.1 4.8c-1.9 5.1-3.9 10.1-6 15.1-17.8 42.1-43.3 80-75.9 112.5a353 353 0 01-112.5 75.9 352.18 352.18 0 01-137.7 27.8c-47.8 0-94.1-9.3-137.7-27.8a353 353 0 01-112.5-75.9c-32.5-32.5-58-70.4-75.9-112.5A353.44 353.44 0 01171 512c0-47.8 9.3-94.2 27.8-137.8 17.8-42.1 43.3-80 75.9-112.5a353 353 0 01112.5-75.9C430.6 167.3 477 158 524.8 158s94.1 9.3 137.7 27.8A353 353 0 01775 261.7c10.2 10.3 19.8 21 28.6 32.3l59.8-46.8C784.7 146.6 662.2 81.9 524.6 82 285 82.1 92.6 276.7 95 516.4 97.4 751.9 288.9 942 524.8 942c185.5 0 343.5-117.6 403.7-282.3 1.5-4.2-.7-8.9-4.9-10.4z"></path></svg></span><span class="canvasRecordsBallBadge isZero">0</span></div></div><div class="canvasInputBar canvasInputBarCollapsed"><div class="canvasInputHandleRow"><button type="button" class="canvasInputHandle isCollapsed" aria-expanded="false" aria-label="展开输入框"><span role="img" aria-label="up" class="anticon anticon-up"><svg viewBox="64 64 896 896" focusable="false" data-icon="up" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z"></path></svg></span></button></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/canvas","query":{},"buildId":"3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">生成画布</title><link rel="preload" href="/_next/static/css/f4f2d386cfeae8e4.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f4f2d386cfeae8e4.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-28228d95968c4d44.js" defer=""></script><script src="/_next/static/chunks/324-650dc02536b071bf.js" defer=""></script><script src="/_next/static/chunks/280-3ce590d421b5c47d.js" defer=""></script><script src="/_next/static/chunks/576-6699fed6c88502fe.js" defer=""></script><script src="/_next/static/chunks/499-2233cadc6d4da647.js" defer=""></script><script src="/_next/static/chunks/127-7d37d37dab02bd10.js" defer=""></script><script src="/_next/static/chunks/530-7e79396d68742829.js" defer=""></script><script src="/_next/static/chunks/pages/canvas-ffb08963e5cf9558.js" defer=""></script><script src="/_next/static/36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152/_buildManifest.js" defer=""></script><script src="/_next/static/36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" 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 width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><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><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-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></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</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="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><div class="sidebarItem sidebarItemActive"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></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></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ 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 mainInnerCanvas"><div class="canvasRoot"><div class="canvasStage" style="background-image:radial-gradient(var(--canvasGridDot) 1px, transparent 1px);background-size:24px 24px;background-position:0px 0px;cursor:grab"><div style="position:absolute;inset:0;display:grid;place-items:center;pointer-events:none"><div style="text-align:center;max-width:420px"><div style="font-size:15px;margin-bottom:6px">新画布</div><div style="font-size:12px;color:var(--colorTextSecondary);line-height:1.7">还没有节点日志——节点日志是唯一真相源,这里不造占位节点。<br/>点屏幕底部中央那个 <b>^</b> 展开输入框:用里面的「+」选择提示词与项目, 写下要求后点「生成」,节点会随日志追加而出现。</div></div></div></div><div class="canvasRecordsBall" style="position:absolute;z-index:3;right:24px;bottom:96px"><div class="canvasRecordsBallBtn" role="button" tabindex="0" aria-label="生成记录(0)" style="width:44px;height:44px"><span role="img" aria-label="history" class="anticon anticon-history"><svg viewBox="64 64 896 896" focusable="false" data-icon="history" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M536.1 273H488c-4.4 0-8 3.6-8 8v275.3c0 2.6 1.2 5 3.3 6.5l165.3 120.7c3.6 2.6 8.6 1.9 11.2-1.7l28.6-39c2.7-3.7 1.9-8.7-1.7-11.2L544.1 528.5V281c0-4.4-3.6-8-8-8zm219.8 75.2l156.8 38.3c5 1.2 9.9-2.6 9.9-7.7l.8-161.5c0-6.7-7.7-10.5-12.9-6.3L752.9 334.1a8 8 0 003 14.1zm167.7 301.1l-56.7-19.5a8 8 0 00-10.1 4.8c-1.9 5.1-3.9 10.1-6 15.1-17.8 42.1-43.3 80-75.9 112.5a353 353 0 01-112.5 75.9 352.18 352.18 0 01-137.7 27.8c-47.8 0-94.1-9.3-137.7-27.8a353 353 0 01-112.5-75.9c-32.5-32.5-58-70.4-75.9-112.5A353.44 353.44 0 01171 512c0-47.8 9.3-94.2 27.8-137.8 17.8-42.1 43.3-80 75.9-112.5a353 353 0 01112.5-75.9C430.6 167.3 477 158 524.8 158s94.1 9.3 137.7 27.8A353 353 0 01775 261.7c10.2 10.3 19.8 21 28.6 32.3l59.8-46.8C784.7 146.6 662.2 81.9 524.6 82 285 82.1 92.6 276.7 95 516.4 97.4 751.9 288.9 942 524.8 942c185.5 0 343.5-117.6 403.7-282.3 1.5-4.2-.7-8.9-4.9-10.4z"></path></svg></span><span class="canvasRecordsBallBadge isZero">0</span></div></div><div class="canvasInputBar canvasInputBarCollapsed"><div class="canvasInputHandleRow"><button type="button" class="canvasInputHandle isCollapsed" aria-expanded="false" aria-label="展开输入框"><span role="img" aria-label="up" class="anticon anticon-up"><svg viewBox="64 64 896 896" focusable="false" data-icon="up" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M890.5 755.3L537.9 269.2c-12.8-17.6-39-17.6-51.7 0L133.5 755.3A8 8 0 00140 768h75c5.1 0 9.9-2.5 12.9-6.6L512 369.8l284.1 391.6c3 4.1 7.8 6.6 12.9 6.6h75c6.5 0 10.3-7.4 6.5-12.7z"></path></svg></span></button></div></div></div></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/canvas","query":{},"buildId":"36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><link rel="preload" href="/_next/static/css/f4f2d386cfeae8e4.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f4f2d386cfeae8e4.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-3f5aa4ff7951feca.js" defer=""></script><script src="/_next/static/chunks/pages/documents-e6a80f2de39c6fd2.js" defer=""></script><script src="/_next/static/3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b/_buildManifest.js" defer=""></script><script src="/_next/static/3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" 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 width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><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><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-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></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</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="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><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-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></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></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ 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"></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/documents","query":{},"buildId":"3a50a07d5e578847f7a1eefe9573b36527d6e1f5a7d0cb3b4883423ccfabc75b","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" data-next-head=""/><link rel="icon" type="image/svg+xml" href="/favicon.svg" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><link rel="preload" href="/_next/static/css/f4f2d386cfeae8e4.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f4f2d386cfeae8e4.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-6224d37324e372cb.js" defer=""></script><script src="/_next/static/chunks/framework-4b565b3ddc94cdac.js" defer=""></script><script src="/_next/static/chunks/main-0c91f573696223ca.js" defer=""></script><script src="/_next/static/chunks/pages/_app-28228d95968c4d44.js" defer=""></script><script src="/_next/static/chunks/pages/documents-e6a80f2de39c6fd2.js" defer=""></script><script src="/_next/static/36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152/_buildManifest.js" defer=""></script><script src="/_next/static/36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152/_ssgManifest.js" defer=""></script></head><body><div id="__next"><script>((e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=["light","dark"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y==="class",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n==="system"?c():n;p(y)}catch(n){}})("class","theme","system",null,["light","dark"],null,true,true)</script><div class="css-1pi45l5 ant-app css-var-_R_56_"><aside class="sidebar sidebarCollapsedSelf"><div class="sidebarLogoRow"><a class="min-w-0 flex-1" 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 width="26" height="26" viewBox="0 0 24 24" class="text-white dark:text-black" aria-hidden="true" focusable="false"><g transform="translate(12.2475 11.7525) scale(1.0500) translate(0.9636 0.0000) rotate(5.00)"><path d="M8.561 5.168 A10 10 0 1 1 1.544 -9.880 A8.5 8.5 0 1 0 8.561 5.168 Z" fill="currentColor"></path></g></svg></div><div class="sidebarLogoTitle"><span class="logoGradient">Customize Agent</span></div></div></a></div><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><a href="/knowledge"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-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></div></a><a href="/models"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu"><rect width="16" height="16" x="4" y="4" rx="2"></rect><rect width="6" height="6" x="9" y="9" rx="1"></rect><path d="M15 2v2"></path><path d="M15 20v2"></path><path d="M2 15h2"></path><path d="M2 9h2"></path><path d="M20 15h2"></path><path d="M20 9h2"></path><path d="M9 2v2"></path><path d="M9 20v2"></path></svg><span class="sidebarLabel">模型配置</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="/skills"><div class="sidebarItem"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span class="sidebarLabel">技能库</span></div></a><a href="/canvas"><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-network"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></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></aside><div class="mainContent"><header class="topbar"><div class="flex-1"></div><span class="ant-badge css-1pi45l5 css-var-_R_56_"><button type="button" class="ant-btn css-1pi45l5 css-var-_R_56_ 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"></main></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/documents","query":{},"buildId":"36956db6655c7ce7a67c9b6862b2ca1b6b5308f268b5595d430facff6c0f4152","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>