修复自动化任务:bot-activity上线 + task7板块slug修复 + cron强化
问题排查与修复: 1. 🔴 bot-activity从未运行 — 新增cron任务(9-23点每小时15轮) 2. 🔴 task7报错'板块不存在: ai-tools' — 更新所有slug为新的51子板块格式 3. 🟡 install-cron.sh旧cron清理不完整 — 改为覆盖模式 4. 🟡 Google News RSS被墙 — 优化fallback提示词用DeepSeek知识+当前日期 效果: - 8个定时任务全部正常运行 - 首次运行产出10个话题(7+3),社区从12→24帖 - 每小时15轮持续产出,预计每天~45帖
This commit is contained in:
@@ -197,7 +197,7 @@ function buildPasserbyTopicPrompt(bot, forumName, forumDescription, newsItems) {
|
||||
const p = bot.personality;
|
||||
const newsText = newsItems.length > 0
|
||||
? newsItems.map((n, i) => `${i + 1}. [${n.pubDate || "近期"}] ${n.title}`).join("\n")
|
||||
: "(当前无实时新闻,请根据你的角色知识和行业常识,提出一个结合当前季节/月份/年份背景的时效性强的话题。注意话题中必须体现当前时间背景,不能看起来像旧帖子)";
|
||||
: `(搜索不到实时新闻,请充分利用DeepSeek知识库中截至2025年6月的最新行业信息。今天是${today},你必须让话题看起来像是今天或最近几天发生的。可以提及:今年发生的重大事件、近几个月出台的新政策、当前季节性的行业趋势、最近热门的讨论。在你的发言中自然地加入时间锚点,比如"上个月刚出来的…"、"最近大家都在说…"、"这个月的数据显示…"等,让读者第一眼就感受到这是当前的话题而不是老帖)`;
|
||||
|
||||
const today = new Date().toLocaleDateString("zh-CN", { year: "numeric", month: "long", day: "numeric" });
|
||||
const passerbyType = p.passerbyType || "observer";
|
||||
|
||||
@@ -14,10 +14,8 @@ echo "✅ 日志目录已创建: $PROJECT_DIR/logs/"
|
||||
chmod +x "$PROJECT_DIR/scripts/cron-wrapper.sh"
|
||||
echo "✅ cron-wrapper.sh 已加执行权限"
|
||||
|
||||
# 写入 crontab
|
||||
crontab -l 2>/dev/null | grep -v "zhuiguang" > /tmp/cron-temp 2>/dev/null || true
|
||||
|
||||
cat >> /tmp/cron-temp << 'CRONEOF'
|
||||
# 直接写入crontab(覆盖模式)
|
||||
cat > /tmp/cron-temp << 'CRONEOF'
|
||||
|
||||
# ========== 追光AI 定时任务 ==========
|
||||
# 使用 cron-wrapper.sh 统一入口(自动加载 .env)
|
||||
@@ -44,6 +42,9 @@ PROJECT="/home/ubuntu/zhuiguang-ai"
|
||||
|
||||
# 每天早上8:00 新闻推送到社区版块
|
||||
0 8 * * * bash $WRAPPER task7 $PROJECT/scripts/task7-news-to-community.mjs
|
||||
|
||||
# 数字人bot活动引擎(每整点运行,9:00-23:00共15轮/天,每轮3帖)
|
||||
0 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * bash $WRAPPER bot-activity $PROJECT/scripts/bot-activity.mjs
|
||||
CRONEOF
|
||||
|
||||
crontab /tmp/cron-temp
|
||||
@@ -64,4 +65,5 @@ echo " 05:00 - Task4 发现AI技能"
|
||||
echo " 06:00 - Task1 发现AI工具"
|
||||
echo " 07:30 - 生成AI日报"
|
||||
echo " 08:00 - Task7 新闻→社区"
|
||||
echo " 09-23 - 数字人bot活动引擎(每小时1轮)"
|
||||
echo "========================================"
|
||||
@@ -27,18 +27,18 @@ function ensureUniqueSlug(title) {
|
||||
}
|
||||
|
||||
const CATEGORY_MAP = {
|
||||
"产品发布": "ai-tools",
|
||||
"product": "ai-tools",
|
||||
"融资投资": "ai-news",
|
||||
"business": "ai-news",
|
||||
"技术突破": "tech",
|
||||
"model": "tech",
|
||||
"政策法规": "ai-news",
|
||||
"policy": "ai-news",
|
||||
"开源项目": "tech",
|
||||
"opensource": "tech",
|
||||
"行业事件": "ai-news",
|
||||
"insight": "discuss",
|
||||
"产品发布": "ai-tools-app",
|
||||
"product": "ai-tools-app",
|
||||
"融资投资": "ai-startup-forum",
|
||||
"business": "ai-startup-forum",
|
||||
"技术突破": "ai-llm",
|
||||
"model": "ai-llm",
|
||||
"政策法规": "ai-startup-forum",
|
||||
"policy": "ai-startup-forum",
|
||||
"开源项目": "ai-llm",
|
||||
"opensource": "ai-llm",
|
||||
"行业事件": "ai-startup-forum",
|
||||
"insight": "ai-startup-forum",
|
||||
};
|
||||
|
||||
async function main() {
|
||||
@@ -89,7 +89,7 @@ async function main() {
|
||||
|
||||
const forumCategories = await prisma.forumCategory.findMany({
|
||||
where: {
|
||||
slug: { in: ["ai-tools", "ai-news", "tech", "discuss"] },
|
||||
slug: { in: ["ai-tools-app", "ai-startup-forum", "ai-llm"] },
|
||||
},
|
||||
});
|
||||
const categoryBySlug = {};
|
||||
@@ -98,7 +98,7 @@ async function main() {
|
||||
}
|
||||
console.log(`${ts()} 📂 已加载${forumCategories.length}个社区板块: ${Object.keys(categoryBySlug).join(", ")}`);
|
||||
|
||||
const requiredSlugs = ["ai-tools", "ai-news", "tech", "discuss"];
|
||||
const requiredSlugs = ["ai-tools-app", "ai-startup-forum", "ai-llm"];
|
||||
for (const slug of requiredSlugs) {
|
||||
if (!categoryBySlug[slug]) {
|
||||
throw new Error(`社区板块不存在: ${slug},请先在管理后台创建社区分类`);
|
||||
|
||||
Reference in New Issue
Block a user