|
@@ -33,7 +33,7 @@
|
|
|
.ribbon{margin:11px 18px 0;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 14px}
|
|
.ribbon{margin:11px 18px 0;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 14px}
|
|
|
.rcap{font-size:11.5px;color:#6b7280;margin-bottom:8px}
|
|
.rcap{font-size:11.5px;color:#6b7280;margin-bottom:8px}
|
|
|
.rsteps{display:flex;align-items:stretch;flex-wrap:wrap}
|
|
.rsteps{display:flex;align-items:stretch;flex-wrap:wrap}
|
|
|
- .rstep{flex:1;min-width:148px;border:1px solid #e2e8f0;border-radius:8px;padding:9px 11px;cursor:pointer;background:#f8fafc}
|
|
|
|
|
|
|
+ .rstep{flex:1;min-width:118px;border:1px solid #e2e8f0;border-radius:8px;padding:8px 9px;cursor:pointer;background:#f8fafc}
|
|
|
.rstep:hover{background:#ecfeff;border-color:#99d5d0}
|
|
.rstep:hover{background:#ecfeff;border-color:#99d5d0}
|
|
|
.rstep.auto{cursor:default;background:#f1f5f9;opacity:.9}.rstep.auto:hover{background:#f1f5f9;border-color:#e2e8f0}
|
|
.rstep.auto{cursor:default;background:#f1f5f9;opacity:.9}.rstep.auto:hover{background:#f1f5f9;border-color:#e2e8f0}
|
|
|
.rtop{display:flex;align-items:center;gap:7px}
|
|
.rtop{display:flex;align-items:center;gap:7px}
|
|
@@ -201,12 +201,15 @@ const STEPS=[
|
|
|
{key:"read",label:"读懂帖子",desc:"把图、视频读成文字",
|
|
{key:"read",label:"读懂帖子",desc:"把图、视频读成文字",
|
|
|
why:"创作知识常在图里、不在正文;这一步只忠实转写、不判断,避免一步干两件事。",
|
|
why:"创作知识常在图里、不在正文;这一步只忠实转写、不判断,避免一步干两件事。",
|
|
|
src:["/prompt-read/extract.txt"]},
|
|
src:["/prompt-read/extract.txt"]},
|
|
|
|
|
+ {key:"gate",label:"判断是否是创作知识",desc:"判这帖是不是『图文/视频创作』知识:两次判断+分歧裁决,不是就整帖跳过",
|
|
|
|
|
+ why:"靠模型语义理解判、不靠关键词(换措辞就绕过);两视角(一个判'是创作'、一个专挑'是制作/越界'的茬)+ 边界倾向排除,把『用工具做视频/游戏设计』挡在门外,省下后面整条拆解。",
|
|
|
|
|
+ src:["/prompt-read/gate_admit.txt","/prompt-read/gate_refute.txt","/prompt-read/gate_tiebreak.txt"]},
|
|
|
{key:"frame",label:"拆出知识",desc:"从文字里拆出一条条知识,理清每条是 怎么做 / 是什么 / 为什么",
|
|
{key:"frame",label:"拆出知识",desc:"从文字里拆出一条条知识,理清每条是 怎么做 / 是什么 / 为什么",
|
|
|
why:"先判类型再拆——三类成形不同,默认 how 会把纯 what 硬掰成假 how;how 先吸进步骤里的 what/why,吸不进的才独立成一条。",
|
|
why:"先判类型再拆——三类成形不同,默认 how 会把纯 what 硬掰成假 how;how 先吸进步骤里的 what/why,吸不进的才独立成一条。",
|
|
|
src:["/prompt-skill/phase1-frame.md"]},
|
|
src:["/prompt-skill/phase1-frame.md"]},
|
|
|
- {key:"scope",label:"给知识归类",desc:"标好 讲什么 / 起什么作用 / 哪个创作环节,再和已有分类库对上号",
|
|
|
|
|
- why:"这 5 类标签最容易串味,又要中途调向量回扣工具;单独一步写厚,避免塞进一个提示词复杂到死循环。",
|
|
|
|
|
- src:["/prompt-skill/phase2-scope.md"]},
|
|
|
|
|
|
|
+ {key:"scope",label:"给知识归类",desc:"标好 讲什么 / 起什么作用 / 哪个创作环节 → 标签收成规范名词 → 和已有分类库对上号",
|
|
|
|
|
+ why:"这 5 类标签最容易串味,单独写厚;标签先名词化(动宾→名词)再做向量回扣,既规范又能挂上分类库。",
|
|
|
|
|
+ src:["/prompt-skill/phase2-scope.md","/prompt-read/normalize_scope.txt"]},
|
|
|
{key:"store",label:"存进知识库",desc:"整理成统一格式存起来,供以后调用",
|
|
{key:"store",label:"存进知识库",desc:"整理成统一格式存起来,供以后调用",
|
|
|
why:"纯拼接 + 校验的确定性活,程序自动做——没有提示词,让 AI 来干只会帮倒忙。",
|
|
why:"纯拼接 + 校验的确定性活,程序自动做——没有提示词,让 AI 来干只会帮倒忙。",
|
|
|
src:null}
|
|
src:null}
|
|
@@ -357,8 +360,10 @@ function App(){
|
|
|
const st=STEPMAP[key]; if(!st) return;
|
|
const st=STEPMAP[key]; if(!st) return;
|
|
|
if(!st.src){ setPm({label:st.label,why:st.why,text:"(这一步是程序自动完成的,没有提示词。)"}); return; }
|
|
if(!st.src){ setPm({label:st.label,why:st.why,text:"(这一步是程序自动完成的,没有提示词。)"}); return; }
|
|
|
setPm({label:st.label,why:st.why,text:"加载中…"});
|
|
setPm({label:st.label,why:st.why,text:"加载中…"});
|
|
|
- Promise.all(st.src.map(u=>fetch(u,{cache:"no-store"}).then(r=>r.ok?r.text():"(未找到 "+u+")").catch(()=>"(加载失败 "+u+")")))
|
|
|
|
|
- .then(txts=>setPm({label:st.label,why:st.why,text:txts.join("\n\n──────\n\n")}));
|
|
|
|
|
|
|
+ const multi=st.src.length>1;
|
|
|
|
|
+ Promise.all(st.src.map(u=>fetch(u,{cache:"no-store"}).then(r=>r.ok?r.text():"(未找到 "+u+")").catch(()=>"(加载失败 "+u+")")
|
|
|
|
|
+ .then(t=>multi?("## 〔"+u.split("/").pop()+"〕\n\n"+t):t)))
|
|
|
|
|
+ .then(txts=>setPm({label:st.label,why:st.why,text:txts.join("\n\n")}));
|
|
|
}
|
|
}
|
|
|
if(!items.length) return <div className="empty">加载中…</div>;
|
|
if(!items.length) return <div className="empty">加载中…</div>;
|
|
|
const it=items[sel];
|
|
const it=items[sel];
|