360 Secure SkillHub
360 安全技能中心

research-assistant

核心功能:从本地文件、网页、目录提取实体(人名、公司、日期等)、关系,生成摘要,构建可搜索知识库,支持搜索、主题总结、查看知识图谱等操作。典型场景:文档批量处理、网页资料整理、主题调研。通过命令行参数调用,结果持久存储于本地目录,注意不可处理涉密或含PII的内容,无URL白名单,需谨慎使用。

jlacroix82
jlacroix82
热度 24.06
最近更新 2026-07-23 06:44:31
分类:知识依赖:代码执行 / 联网浏览搜索 / 读写文件应用场景:研究 / 摘要总结 / 数据处理

安装技能

复制下面的话术发给你的 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