MCPcopy Create free account
hub / github.com/OpenRaiser/PaperFlow / build_learning_signals

Function build_learning_signals

agents/feedback-agent/main.py:436–475  ·  view source on GitHub ↗

Generate lightweight feedback insights aligned with the PDF interaction.

(selected: Set[int], skipped: Set[int], papers: List[Dict])

Source from the content-addressed store, hash-verified

434def build_learning_signals(selected: Set[int], skipped: Set[int], papers: List[Dict]) -> List[str]:
435 """Generate lightweight feedback insights aligned with the PDF interaction."""
436 selected_categories = {}
437 skipped_categories = {}
438
439 for paper_num in selected:
440 paper = papers[paper_num - 1]
441 category = paper.get("category", "unknown")
442 selected_categories[category] = selected_categories.get(category, 0) + 1
443
444 for paper_num in skipped:
445 paper = papers[paper_num - 1]
446 category = paper.get("category", "unknown")
447 skipped_categories[category] = skipped_categories.get(category, 0) + 1
448
449 signals = []
450
451 lower_bucket_selected = selected_categories.get("maybe_interested", 0) + selected_categories.get("edge_relevant", 0)
452 if lower_bucket_selected:
453 signals.append(
454 f"✓ 你选中了 {lower_bucket_selected} 篇原本靠后的候选,对应主题会被视为更强正信号"
455 )
456
457 top_bucket_skipped = skipped_categories.get("must_read", 0) + skipped_categories.get("high_relevant", 0)
458 if top_bucket_skipped:
459 signals.append(
460 f"✓ 你这次跳过了 {top_bucket_skipped} 篇 🔒/🔴 候选,我会先按弱负信号处理,不会立刻重罚"
461 )
462
463 if not selected:
464 signals.append("✓ 今天的“都不看”会被记为一次弱负信号,只有连续多天跳过同类论文才会明显降权")
465
466 if selected_categories:
467 dominant_category = max(selected_categories.items(), key=lambda item: item[1])[0]
468 dominant_label = CATEGORY_LABELS.get(dominant_category, dominant_category)
469 signals.append(f"✓ 本次选择主要集中在“{dominant_label}”分组,后续我会优先沿这条线细化推荐")
470
471 signals.extend(_build_contrastive_signals(selected, skipped, papers))
472
473 return signals[:4]
474
475
476def format_selection_summary(
477 selected: Set[int],
478 total_papers: int,

Callers 1

format_selection_summaryFunction · 0.85

Calls 2

getMethod · 0.80

Tested by

no test coverage detected