修复清空记忆缺失
This commit is contained in:
parent
77e9d558d5
commit
696f0f6115
@ -1,77 +0,0 @@
|
||||
# 烤龙肉的做法
|
||||
|
||||
## 前言
|
||||
|
||||
龙肉,作为幻想世界中最珍贵的食材之一,其烹饪方法自古以来就是冒险者和宫廷厨师们追求的终极秘技。以下是一份经典的烤龙肉食谱。
|
||||
|
||||
---
|
||||
|
||||
## 食材准备
|
||||
|
||||
| 食材 | 用量 | 备注 |
|
||||
|------|------|------|
|
||||
| 龙肉(里脊或腿肉) | 2公斤 | 需提前放血处理 |
|
||||
| 龙息椒粉 | 2大勺 | 普通辣椒粉可替代 |
|
||||
| 凤凰蛋黄 | 3个 | 鸡蛋黄可替代 |
|
||||
| 精灵橄榄油 | 100毫升 | 特级初榨橄榄油可替代 |
|
||||
| 矮人黑盐 | 适量 | 海盐可替代 |
|
||||
| 迷迭香、百里香 | 各一把 | 新鲜为佳 |
|
||||
| 蒜头 | 8瓣 | 拍碎 |
|
||||
| 蜂蜜 | 3大勺 | 用于表面刷酱 |
|
||||
|
||||
---
|
||||
|
||||
## 烹饪步骤
|
||||
|
||||
### 第一步:腌制龙肉(需提前一天)
|
||||
|
||||
1. 将龙肉洗净,用厨房纸巾吸干表面水分
|
||||
2. 用锋利的刀在肉面划几道深约1厘米的斜纹,便于入味
|
||||
3. 将蛋黄、橄榄油、龙息椒粉、黑盐混合,调成腌料
|
||||
4. 均匀涂抹在龙肉表面,放入密封容器
|
||||
5. 冷藏腌制12-24小时
|
||||
|
||||
### 第二步:准备香草束
|
||||
|
||||
1. 将迷迭香、百里香捆扎成束
|
||||
2. 蒜瓣拍碎备用
|
||||
3. 准备好蜂蜜刷酱
|
||||
|
||||
### 第三步:烤制
|
||||
|
||||
1. **预热烤炉**:将烤炉预热至220°C(若使用龙焰烤炉,调至"青龙"档位)
|
||||
|
||||
2. **初次高温烤制**:
|
||||
- 将腌制好的龙肉放入烤盘
|
||||
- 铺上香草束和蒜瓣
|
||||
- 220°C烤制20分钟,封住肉汁
|
||||
|
||||
3. **转中温慢烤**:
|
||||
- 温度降至160°C
|
||||
- 每隔20分钟翻面一次,并刷上蜂蜜
|
||||
- 继续烤制约1.5-2小时(视肉块大小调整)
|
||||
|
||||
4. **检验熟度**:
|
||||
- 用探针温度计测量中心温度达65°C为五分熟
|
||||
- 达75°C为全熟
|
||||
- 龙肉建议七分熟(约70°C),口感最佳
|
||||
|
||||
### 第四步:静置与切片
|
||||
|
||||
1. 出炉后用锡纸包裹,静置15分钟
|
||||
2. 逆着纹理切成1厘米厚的片状
|
||||
3. 摆盘,淋上烤盘中的肉汁
|
||||
|
||||
---
|
||||
|
||||
## 小贴士
|
||||
|
||||
- ⚠️ **安全提示**:处理龙肉时请佩戴防火手套,残余龙息可能引发灼伤
|
||||
- 🍷 **搭配推荐**:建议搭配精灵白葡萄酒或矮人麦芽啤酒
|
||||
- 🔥 若龙肉带有冰属性(如霜龙),烤制时间需延长30%
|
||||
|
||||
---
|
||||
|
||||
## 成品效果
|
||||
|
||||
外皮金黄酥脆,内部肉质鲜嫩多汁,带有独特的硫磺香气与蜂蜜的甜润,回味中隐约有龙息的微辣感。
|
||||
@ -443,7 +443,7 @@ export default async (knex: Knex, forceInit: boolean = false): Promise<void> =>
|
||||
table.text("type").notNullable(); // "main" | "references"
|
||||
table.integer("createTime").notNullable();
|
||||
table.integer("updateTime").notNullable();
|
||||
table.integer("state").notNullable(); // 1正常,0正在生成description,-1description为空。-2归属为空,-3md5变动
|
||||
table.integer("state").notNullable(); // 1正常,0正在生成description,-1description为空。-2归属为空,-3md5变动,-4文件不存在
|
||||
table.primary(["id"]);
|
||||
},
|
||||
initData: async (knex) => {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
// @routes-hash 7cec68ede825a3753ef93dc3bab8f7ad
|
||||
// @routes-hash fd1b3ec2552be041f1b6e9582eb842b6
|
||||
import { Express } from "express";
|
||||
|
||||
import route1 from "./routes/agents/clearMemory";
|
||||
@ -77,24 +77,25 @@ import route73 from "./routes/setting/fileManagement/openFolder";
|
||||
import route74 from "./routes/setting/getTextModel";
|
||||
import route75 from "./routes/setting/loginConfig/getUser";
|
||||
import route76 from "./routes/setting/loginConfig/updateUserPwd";
|
||||
import route77 from "./routes/setting/memoryConfig/getMemory";
|
||||
import route78 from "./routes/setting/memoryConfig/sureMemory";
|
||||
import route79 from "./routes/setting/skillManagement/addSkill";
|
||||
import route80 from "./routes/setting/skillManagement/deleteSkill";
|
||||
import route81 from "./routes/setting/skillManagement/embeddingSkill";
|
||||
import route82 from "./routes/setting/skillManagement/generateDescription";
|
||||
import route83 from "./routes/setting/skillManagement/getSkillList";
|
||||
import route84 from "./routes/setting/skillManagement/scanSkills";
|
||||
import route85 from "./routes/setting/skillManagement/updateSkill";
|
||||
import route86 from "./routes/setting/vendorConfig/addVendor";
|
||||
import route87 from "./routes/setting/vendorConfig/deleteVendor";
|
||||
import route88 from "./routes/setting/vendorConfig/getVendorList";
|
||||
import route89 from "./routes/setting/vendorConfig/modelTest";
|
||||
import route90 from "./routes/setting/vendorConfig/updateVendor";
|
||||
import route91 from "./routes/task/getTaskApi";
|
||||
import route92 from "./routes/task/getTaskCategories";
|
||||
import route93 from "./routes/task/taskDetails";
|
||||
import route94 from "./routes/test/test";
|
||||
import route77 from "./routes/setting/memoryConfig/delAllMemory";
|
||||
import route78 from "./routes/setting/memoryConfig/getMemory";
|
||||
import route79 from "./routes/setting/memoryConfig/sureMemory";
|
||||
import route80 from "./routes/setting/skillManagement/addSkill";
|
||||
import route81 from "./routes/setting/skillManagement/deleteSkill";
|
||||
import route82 from "./routes/setting/skillManagement/embeddingSkill";
|
||||
import route83 from "./routes/setting/skillManagement/generateDescription";
|
||||
import route84 from "./routes/setting/skillManagement/getSkillList";
|
||||
import route85 from "./routes/setting/skillManagement/scanSkills";
|
||||
import route86 from "./routes/setting/skillManagement/updateSkill";
|
||||
import route87 from "./routes/setting/vendorConfig/addVendor";
|
||||
import route88 from "./routes/setting/vendorConfig/deleteVendor";
|
||||
import route89 from "./routes/setting/vendorConfig/getVendorList";
|
||||
import route90 from "./routes/setting/vendorConfig/modelTest";
|
||||
import route91 from "./routes/setting/vendorConfig/updateVendor";
|
||||
import route92 from "./routes/task/getTaskApi";
|
||||
import route93 from "./routes/task/getTaskCategories";
|
||||
import route94 from "./routes/task/taskDetails";
|
||||
import route95 from "./routes/test/test";
|
||||
|
||||
export default async (app: Express) => {
|
||||
app.use("/api/agents/clearMemory", route1);
|
||||
@ -173,22 +174,23 @@ export default async (app: Express) => {
|
||||
app.use("/api/setting/getTextModel", route74);
|
||||
app.use("/api/setting/loginConfig/getUser", route75);
|
||||
app.use("/api/setting/loginConfig/updateUserPwd", route76);
|
||||
app.use("/api/setting/memoryConfig/getMemory", route77);
|
||||
app.use("/api/setting/memoryConfig/sureMemory", route78);
|
||||
app.use("/api/setting/skillManagement/addSkill", route79);
|
||||
app.use("/api/setting/skillManagement/deleteSkill", route80);
|
||||
app.use("/api/setting/skillManagement/embeddingSkill", route81);
|
||||
app.use("/api/setting/skillManagement/generateDescription", route82);
|
||||
app.use("/api/setting/skillManagement/getSkillList", route83);
|
||||
app.use("/api/setting/skillManagement/scanSkills", route84);
|
||||
app.use("/api/setting/skillManagement/updateSkill", route85);
|
||||
app.use("/api/setting/vendorConfig/addVendor", route86);
|
||||
app.use("/api/setting/vendorConfig/deleteVendor", route87);
|
||||
app.use("/api/setting/vendorConfig/getVendorList", route88);
|
||||
app.use("/api/setting/vendorConfig/modelTest", route89);
|
||||
app.use("/api/setting/vendorConfig/updateVendor", route90);
|
||||
app.use("/api/task/getTaskApi", route91);
|
||||
app.use("/api/task/getTaskCategories", route92);
|
||||
app.use("/api/task/taskDetails", route93);
|
||||
app.use("/api/test/test", route94);
|
||||
app.use("/api/setting/memoryConfig/delAllMemory", route77);
|
||||
app.use("/api/setting/memoryConfig/getMemory", route78);
|
||||
app.use("/api/setting/memoryConfig/sureMemory", route79);
|
||||
app.use("/api/setting/skillManagement/addSkill", route80);
|
||||
app.use("/api/setting/skillManagement/deleteSkill", route81);
|
||||
app.use("/api/setting/skillManagement/embeddingSkill", route82);
|
||||
app.use("/api/setting/skillManagement/generateDescription", route83);
|
||||
app.use("/api/setting/skillManagement/getSkillList", route84);
|
||||
app.use("/api/setting/skillManagement/scanSkills", route85);
|
||||
app.use("/api/setting/skillManagement/updateSkill", route86);
|
||||
app.use("/api/setting/vendorConfig/addVendor", route87);
|
||||
app.use("/api/setting/vendorConfig/deleteVendor", route88);
|
||||
app.use("/api/setting/vendorConfig/getVendorList", route89);
|
||||
app.use("/api/setting/vendorConfig/modelTest", route90);
|
||||
app.use("/api/setting/vendorConfig/updateVendor", route91);
|
||||
app.use("/api/task/getTaskApi", route92);
|
||||
app.use("/api/task/getTaskCategories", route93);
|
||||
app.use("/api/task/taskDetails", route94);
|
||||
app.use("/api/test/test", route95);
|
||||
}
|
||||
|
||||
9
src/routes/setting/memoryConfig/delAllMemory.ts
Normal file
9
src/routes/setting/memoryConfig/delAllMemory.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import express from "express";
|
||||
import { error, success } from "@/lib/responseFormat";
|
||||
import u from "@/utils";
|
||||
const router = express.Router();
|
||||
|
||||
export default router.post("/", async (req, res) => {
|
||||
await u.db("memories").del();
|
||||
res.status(200).send(success(true));
|
||||
});
|
||||
@ -51,7 +51,16 @@ export default router.post(
|
||||
});
|
||||
}
|
||||
|
||||
const list = await query.select("*").orderBy("updateTime", "desc").orderBy("type", "desc").limit(limit).offset(offset);
|
||||
const list = await query
|
||||
.select("*")
|
||||
.orderByRaw(`
|
||||
CASE type WHEN 'main' THEN 1 ELSE 0 END ASC,
|
||||
CASE WHEN id NOT IN (SELECT skillId FROM o_skillAttribution) THEN 0 ELSE 1 END ASC,
|
||||
CASE WHEN state = 1 THEN 1 ELSE 0 END ASC,
|
||||
updateTime DESC
|
||||
`)
|
||||
.limit(limit)
|
||||
.offset(offset);
|
||||
|
||||
// 查询每个技能的归属
|
||||
const skillIds = list.map((item: any) => item.id);
|
||||
|
||||
@ -44,19 +44,19 @@ export default router.post("/", async (req, res) => {
|
||||
let updatedCount = 0;
|
||||
let removedCount = 0;
|
||||
|
||||
const scannedIds = new Set<string>();
|
||||
const scannedPaths = new Set<string>();
|
||||
const existingRows = await u.db("o_skillList").whereIn("type", ["main", "references"]).select("id", "md5", "type", "path");
|
||||
|
||||
for (const item of scanItems) {
|
||||
const id = crypto.createHash("md5").update(item.relativePath).digest("hex");
|
||||
const name = path.basename(item.entry, ".md");
|
||||
scannedPaths.add(item.relativePath);
|
||||
|
||||
const existing = existingRows.find((row: any) => row.path === item.relativePath);
|
||||
const content = await fs.readFile(item.fullPath, "utf-8");
|
||||
const md5 = crypto.createHash("md5").update(content).digest("hex");
|
||||
const existing = existingRows.find((row: any) => row.id === id);
|
||||
|
||||
scannedIds.add(id);
|
||||
|
||||
if (!existing) {
|
||||
const id = crypto.createHash("md5").update(item.relativePath).digest("hex");
|
||||
const name = path.basename(item.entry, ".md");
|
||||
await u.db("o_skillList").insert({
|
||||
id,
|
||||
path: item.relativePath,
|
||||
@ -70,25 +70,19 @@ export default router.post("/", async (req, res) => {
|
||||
state: -1,
|
||||
});
|
||||
insertedCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (existing.md5 !== md5 || existing.path !== item.relativePath || existing.type !== item.type) {
|
||||
await u.db("o_skillList").where("id", id).update({
|
||||
path: item.relativePath,
|
||||
name,
|
||||
md5,
|
||||
type: item.type,
|
||||
updateTime: now,
|
||||
state: -3,
|
||||
});
|
||||
} else {
|
||||
const updateData: Record<string, any> = { md5, updateTime: now };
|
||||
if (existing.md5 !== md5) {
|
||||
updateData.state = -3;
|
||||
}
|
||||
await u.db("o_skillList").where("id", existing.id).update(updateData);
|
||||
updatedCount++;
|
||||
}
|
||||
}
|
||||
|
||||
const removedIds = existingRows.map((row: any) => row.id).filter((id: string) => !scannedIds.has(id));
|
||||
const removedIds = existingRows.filter((row: any) => !scannedPaths.has(row.path)).map((row: any) => row.id);
|
||||
if (removedIds.length > 0) {
|
||||
await u.db("o_skillList").whereIn("id", removedIds).delete();
|
||||
await u.db("o_skillList").whereIn("id", removedIds).update({ state: -4, updateTime: now });
|
||||
removedCount = removedIds.length;
|
||||
}
|
||||
|
||||
|
||||
@ -6,6 +6,7 @@ import { validateFields } from "@/middleware/middleware";
|
||||
import fs from "fs/promises";
|
||||
import path from "path";
|
||||
import crypto from "crypto";
|
||||
import { getEmbedding } from "@/utils/agent/embedding";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
@ -99,6 +100,14 @@ export default router.post(
|
||||
state: resolveState(finalDescription, finalAttributions),
|
||||
});
|
||||
|
||||
if (finalDescription && !current.embedding) {
|
||||
const embedding = await getEmbedding(finalDescription);
|
||||
await u
|
||||
.db("o_skillList")
|
||||
.where("id", nextId)
|
||||
.update({ embedding: JSON.stringify(embedding) });
|
||||
}
|
||||
|
||||
await u.db("o_skillAttribution").where("skillId", nextId).delete();
|
||||
if (finalAttributions.length > 0) {
|
||||
await u.db("o_skillAttribution").insert(
|
||||
|
||||
3
src/types/database.d.ts
vendored
3
src/types/database.d.ts
vendored
@ -1,4 +1,4 @@
|
||||
// @db-hash f9f1fb9b0fc04331ecf65d34c1e4b6af
|
||||
// @db-hash d807205fbb27fc5ddb04cae060fb4430
|
||||
//该文件由脚本自动生成,请勿手动修改
|
||||
|
||||
export interface memories {
|
||||
@ -156,6 +156,7 @@ export interface o_storyboard {
|
||||
'filePath'?: string | null;
|
||||
'frameMode'?: string | null;
|
||||
'id'?: number;
|
||||
'index'?: string | null;
|
||||
'lines'?: string | null;
|
||||
'mode'?: string | null;
|
||||
'model'?: string | null;
|
||||
|
||||
@ -30,13 +30,8 @@ export default function runCode(code: string) {
|
||||
urlToBase64,
|
||||
mergeImages,
|
||||
pollTask,
|
||||
|
||||
Response,
|
||||
exports,
|
||||
|
||||
fetch,
|
||||
axios,
|
||||
|
||||
FormData,
|
||||
},
|
||||
compiler: "javascript",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user