360 Secure SkillHub
360 安全技能中心

research-assistant

该 Skill 是一个纯 Node.js 命令行工具,可从文本文件、目录和用户提供的网页中抽取名词、数字与日期、URL 等实体及关系,写入本地 memory/research 下的知识库文件,并提供检索、主题摘要和关系图视图;支持 --dir 覆盖数据目录,并与 MemoryRouter 的实体解析体系对接。

jlacroix82
jlacroix82
热度 24.12
最近更新 2026-07-23 06:44:31
分类:知识依赖:代码执行 / 读写文件 / 第三方 API应用场景:研究 / 笔记整理 / 摘要总结 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add agent-researcher
Metadata
name
research-assistant
description
Knowledge builder that extracts entities, relationships, and key facts from web pages, documents, and files. Builds a searchable knowledge base with entity resolution and auto-summarization. Integrates with memory-router.

Research Assistant ⚡

Turn everything you read into a searchable knowledge base.

The Problem

Agents read web pages, docs, and files — but the knowledge disappears after the session. No persistent knowledge base, no entity tracking, no relationship mapping.

Research Assistant fixes this with one tool.

⚠️ Important Warnings

Read this section before using. Research Assistant makes outbound HTTP requests to user-supplied URLs and writes all extracted content (entities, summaries, relations) to persistent local files under memory/research/. These are not optional behaviors and they cannot be disabled. Do not point this tool at confidential documents, internal network endpoints, or sources containing PII.

Outbound Network Access

--extract <url> makes an unauthenticated HTTP/HTTPS request to any user-supplied URL (10-second timeout). No URL allowlist, rate limit, or proxy is applied. The target server will see your real IP address. There is no SSRF protection — internal/private network URLs (10.x, 192.168.x, localhost, etc.) are NOT blocked. Treat this as remote code-execution-grade network exposure: only point it at URLs you would type into a browser.

Persistent Local Storage

All extracted entities, summaries, text content, and relationships are written to memory/research/ and persist indefinitely:

  • knowledge-base.json — every entry ever extracted
  • index.json — searchable entity index
  • relations.json — relationship graph

These files grow unbounded with every extraction. There is no retention limit, automatic redaction, or built-in deletion command. PII or sensitive content ingested from URLs and files is stored forever. Monitor with --status and manually clean the memory/research/ directory if needed.

PII in Extracted Data

Entity extraction captures proper nouns, URLs, numbers, and dates. Email address extraction is intentionally disabled — the extractEntities() function does not match email patterns (see line 90 of research-assistant.js: // NOTE: Email addresses are intentionally NOT extracted to avoid PII leakage). However, email addresses may still appear inside the summary text field (first 200 chars of source) or inside HTML content fetched from URLs. Do not rely on the email-extraction disablement as a complete PII filter — review the stored knowledge base before exporting or sharing it.

Quick Start

Extract from a file

node skills/research-assistant/research-assistant.js --extract /path/to/file.md

Extracts entities (proper nouns, numbers, URLs) and relationships, and creates a summary. Email address extraction is disabled — see "PII in Extracted Data" above.

Extract from a URL

node skills/research-assistant/research-assistant.js --extract https://example.com/article

Fetches the page via HTTP/HTTPS (no auth, no proxy, 10s timeout), strips HTML, extracts entities and relationships, and persists everything to memory/research/. The fetched content is stored in full. See the "Outbound Network Access" warning above.

Extract from an entire directory

node skills/research-assistant/research-assistant.js --extract --all /path/to/docs

Processes all .md, .txt, and .json files in a directory.

Search the knowledge base

node skills/research-assistant/research-assistant.js --search "machine learning"

Searches all indexed sources by entities and content.

Auto-summarize on a topic

node skills/research-assistant/research-assistant.js --summarize "climate change"

Collects all relevant entities and sources, generates a summary with key findings.

View knowledge graph

node skills/research-assistant/research-assistant.js --graph

Shows entities grouped by type and their relationships.

Status

node skills/research-assistant/research-assistant.js

Overview of indexed sources, unique entities, relations, and entity type breakdown.

How It Works

Entity Extraction

  1. Proper nouns — Capitalized phrases (companies, people, places)
  2. Numbers/dates — Dates, years, quantities
  3. URLs — Links found in content
  4. Emails — Email address extraction is intentionally disabled
  5. Relationships — "X is Y", "X works at Y" patterns

Knowledge Base

  • Sources are indexed with entities and relationships
  • Entity index enables fast lookups
  • Relations are deduplicated and tracked
  • Auto-summarization pulls from all relevant sources

Integration with Memory Router

Research Assistant builds on the same entity resolution system as MemoryRouter. Entities extracted from research can be linked to MEMORY.md sections for persistent memory.

Configuration

No config needed. Knowledge base is stored in memory/research/.

Override data directory:

--dir /path/to/data

Agent Protocol

When reading new content:

  1. Extract entities: --extract <file|url>
  2. Search existing: --search <topic> before reading new content
  3. Summarize findings: --summarize <topic> after extraction
  4. Link to memory: Update MEMORY.md with key findings

Performance

  • File extraction: <10ms per file
  • URL extraction: <10s (network dependent)
  • Entity index: instant lookup
  • KB search: linear scan (optimized for <1000 sources)

Comparison

Approach Knowledge Retention Setup Maintenance
No knowledge base 0% None None
Manual notes 30-50% High High
Research Assistant 80-95% None Automated
Vector DB 80-95% Very High High

Research Assistant gives you 80-95% knowledge retention with zero setup.

Design Principles

  1. Zero setup — Works immediately, no config needed
  2. No dependencies — Pure Node.js, no npm packages
  3. Entity-first — Knowledge is structured around entities, not just text
  4. Transparent — Everything it extracts is reported
  5. Scalable — Handles 1000+ sources with entity index
  6. Integrates — Works with MemoryRouter for persistent memory