feat: 智能体 md 产物一键发布到外部知识入库接口

- 智能体新增「入库模板名」(template_name) 配置,持久化到 config.yaml
  并经 AgentCreate/Update/Response 回读(NewAgentPage / AgentDetailPanel)
- 新增 POST /api/knowledge-ingest/publish:把 md 标题+全文发到 knowes,
  标题字段先「名称」失败再用同一 nodeName 换「标题」重试一次
- md 产物预览右上角新增「发布入库」按钮(仅智能体会话且配置了模板名时显示)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
吉鑫升andClaude Opus 4.8 committed 2026-06-12 16:38:04 +08:00
1 parent d9d5780ea7
commit 229830ee89
10 files changed
+371 -3

No files matched your search

+19
View File
@@ -82,6 +82,7 @@ export default function NewAgentPage() {
const [soulInput, setSoulInput] = useState("");
const [modelInput, setModelInput] = useState<string>("");
const [chatModelInput, setChatModelInput] = useState<string>("");
const [templateNameInput, setTemplateNameInput] = useState("");
const [formError, setFormError] = useState("");
const [agentId, setAgentId] = useState("");
const [agent, setAgent] = useState<Agent | null>(null);
@@ -228,6 +229,7 @@ export default function NewAgentPage() {
soul: soulInput,
skills: selectedSkills,
model: modelOverride,
template_name: templateNameInput.trim(),
});
setAgent(updated);
return updated;
@@ -248,6 +250,7 @@ export default function NewAgentPage() {
soul: soulInput,
skills: selectedSkills,
model: modelOverride,
template_name: templateNameInput.trim(),
});
setAgentId(created.id);
setAgent(created);
@@ -277,6 +280,7 @@ export default function NewAgentPage() {
modelInput,
selectedSkills,
soulInput,
templateNameInput,
t.agents.nameStepCheckError,
t.agents.nameStepNetworkError,
validateForm,
@@ -549,6 +553,21 @@ export default function NewAgentPage() {
</p>
</div>
<div className="space-y-2">
<label className="text-sm font-medium">入库模板名</label>
<Input
placeholder="例如:临时策略库(留空表示不支持入库)"
value={templateNameInput}
onChange={(event) =>
setTemplateNameInput(event.currentTarget.value)
}
/>
<p className="text-muted-foreground text-xs">
配置后,该智能体对话中生成的 Markdown
文件右上角会出现"发布入库"按钮,可一键发送到知识入库接口。
</p>
</div>
<div className="space-y-2">
<label className="text-sm font-medium">SOUL.md</label>
<Textarea