Files
nmfs-agents/tests/test_market_agents.py
qiuruiandClaude Sonnet 4.6 4bc3c5b5ed feat: 24/7 持续运行 - 调研/算法/市场组自动续链
- rtp/net/kernel researcher: system prompt 新增 [后续] 续链输出指令
  每轮调研完成后自动生成下一轮聚焦方向并入队同角色任务
- algo_researcher: 新增 run() 覆盖,解析 [记忆] 写入 ProjectMemory
  + 解析 [后续] 自动入队下轮算法迭代任务
- market_pm: 修复 _extract_market_intelligence 从未被调用的 bug
  新增 run() 覆盖确保情报写入 ProjectMemory,并加入 [后续] 续链指令
- scheduler: 已注册 research_cycle(8h)/algo_cycle(8h)/market_intel(24h) 周期 job
- 测试更新: test_market_pm_system_prompt_has_doc_types 对齐新的系统提示内容

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-09 21:22:25 +08:00

42 lines
1.7 KiB
Python

from __future__ import annotations
import pytest
from unittest.mock import MagicMock
from nmfs_agents.config import AgentsConfig, ClaudeConfig
from nmfs_agents.core.queue import Task
from nmfs_agents.tools.project_memory import ProjectMemory
def _make_config():
cfg = MagicMock(spec=AgentsConfig)
cfg.projects = {}
cfg.claude = ClaudeConfig(model="claude-sonnet-4-6", api_key=None)
return cfg
def test_market_pm_system_prompt_has_doc_types(tmp_path):
from nmfs_agents.agents.market_pm import MarketPmAgent, MARKET_PM_SYSTEM
assert "竞品" in MARKET_PM_SYSTEM or "市场情报" in MARKET_PM_SYSTEM
mem = ProjectMemory(db_path=tmp_path / "m.db")
agent = MarketPmAgent(_make_config(), memory=mem)
task = Task(project="research", type="market_intel", title="市场调研",
context="", priority=3, mode="auto", agent_role="market-pm")
ctx = agent._build_context(task)
assert len(ctx) > 10
def test_media_producer_system_prompt_has_tools(tmp_path):
from nmfs_agents.agents.media_producer import MediaProducerAgent, MEDIA_PRODUCER_SYSTEM
assert "OpenCV" in MEDIA_PRODUCER_SYSTEM or "ffmpeg" in MEDIA_PRODUCER_SYSTEM
mem = ProjectMemory(db_path=tmp_path / "m.db")
agent = MediaProducerAgent(_make_config(), memory=mem)
task = Task(project="yolo", type="media", title="演示图",
context="", priority=3, mode="auto", agent_role="media-producer")
ctx = agent._build_context(task)
assert len(ctx) > 10
def test_media_producer_context_mentions_market_and_tech(tmp_path):
from nmfs_agents.agents.media_producer import MEDIA_PRODUCER_SYSTEM
assert "技术" in MEDIA_PRODUCER_SYSTEM
assert "市场" in MEDIA_PRODUCER_SYSTEM