Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器github未标认证来源可访问clear审计提醒

document-chat-interface文档聊天界面

Agent Skill

document-chat-interface 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,835

周安装

78

GitHub Stars

5

下载量

643
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:document-chat-interface(文档聊天界面)
来源仓库:https://github.com/qodex-ai/ai-agent-skills
仓库路径:skills/document-chat-interface
安装命令:
npx skills add https://github.com/qodex-ai/ai-agent-skills --skill document-chat-interface
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/qodex-ai/ai-agent-skills --skill document-chat-interface

简介

该技能构建自然语言驱动的文档交互界面,支持 PDF、邮件与知识库问答。

  • 适用于企业内部知识检索、客户支持自动化或研究资料快速定位。
  • 整合语义理解、上下文维持与多轮对话能力,提升信息获取效率。
  • 安装前请确认文档预处理已完成,并评估计算资源是否满足向量索引需求。
  • document-chat-interface 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Document Chat Interface

Build intelligent chat interfaces that allow users to query and interact with documents using natural language, transforming static documents into interactive knowledge sources.

Overview

A document chat interface combines three capabilities:

  1. Document Processing - Extract and prepare documents
  2. Semantic Understanding - Understand questions and find relevant content
  3. Conversational Interface - Maintain context and provide natural responses

Common Applications

  • PDF Q&A: Answer questions about research papers, reports, books
  • Email Search: Find information in email archives conversationally
  • GitHub Explorer: Ask questions about code repositories
  • Knowledge Base: Interactive access to company documentation
  • Contract Review: Query legal documents with natural language
  • Research Assistant: Explore academic papers interactively

Architecture

Document Source
    ↓
Document Processor
    ├→ Extract text
    ├→ Process content
    └→ Generate embeddings
    ↓
Vector Database
    ↓
Chat Interface ← User Question
    ├→ Retrieve relevant content
    ├→ Maintain conversation history
    └→ Generate response

Core Components

1. Document Sources

See examples/document_processors.py for implementations:

PDF Documents

  • Extract text from PDF pages
  • Preserve document structure and metadata
  • Handle scanned PDFs with OCR (pytesseract)
  • Extract tables (pdfplumber)

GitHub Repositories

  • Extract code files from repositories
  • Parse repository structure
  • Process multiple file types

Email Archives

  • Extract email metadata (from, to, subject, date)
  • Parse email body content
  • Handle multiple mailbox formats

Web Pages

  • Extract page text and structure
  • Preserve heading hierarchy
  • Extract links and navigation

YouTube/Audio

  • Get transcripts from YouTube videos
  • Transcribe audio files
  • Handle multiple formats

2. Document Processing

See examples/text_processor.py for implementations:

Text Extraction & Cleaning

  • Remove extra whitespace and special characters
  • Smart text chunking with overlap
  • Intelligent sentence boundary detection

Metadata Extraction

  • Extract title, author, date, language
  • Calculate word count and document statistics
  • Track document source and format

Structure Preservation

  • Keep heading hierarchy in chunks
  • Preserve section context
  • Enable hierarchical retrieval

3. Chat Interface Design

See examples/conversation_manager.py for implementations:

Conversation Management

  • Maintain conversation history with size limits
  • Track message metadata (timestamps, roles)
  • Provide context for LLM integration
  • Clear history as needed

Question Refinement

  • Expand implicit references in questions
  • Handle pronouns and context references
  • Improve question clarity with previous context

Response Generation

  • Use document context for answering
  • Maintain conversation history in prompts
  • Provide source citations
  • Handle out-of-scope questions

4. User Experience Features

Citation & Sources

def format_response_with_citations(response: str, sources: List[Dict]) -> str:
    """Add source citations to response"""

    formatted = response + "\n\n**Sources:**\n"
    for i, source in enumerate(sources, 1):
        formatted += f"[{i}] Page {source['page']} of {source['source']}\n"
        if 'excerpt' in source:
            formatted += f"    \"{source['excerpt'][:100]}...\"\n"

    return formatted

Clarifying Questions

def generate_follow_up_questions(context: str, response: str) -> List[str]:
    """Suggest follow-up questions to user"""

    prompt = f"""
    Based on this Q&A, generate 3 relevant follow-up questions:
    Context: {context[:500]}
    Response: {response[:500]}
    """

    follow_ups = llm.generate(prompt)
    return follow_ups

Error Handling

def handle_query_failure(question: str, error: Exception) -> str:
    """Handle when no relevant documents found"""

    if isinstance(error, NoRelevantDocuments):
        return (
            "I couldn't find information about that in the documents. "
            "Try asking about different topics like: "
            + ", ".join(get_main_topics())
        )
    elif isinstance(error, ContextTooLarge):
        return (
            "The answer requires too much context. "
            "Can you be more specific about what you'd like to know?"
        )
    else:
        return f"I encountered an issue: {str(error)[:100]}"

Implementation Frameworks

Using LangChain

from langchain.document_loaders import PDFLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationalRetrievalChain

# Load document
loader = PDFLoader("document.pdf")
documents = loader.load()

# Split into chunks
splitter = CharacterTextSplitter(chunk_size=1000)
chunks = splitter.split_documents(documents)

# Create embeddings
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings)

# Create chat chain
llm = ChatOpenAI(model="gpt-4")
qa = ConversationalRetrievalChain.from_llm(
    llm=llm,
    retriever=vectorstore.as_retriever(),
    return_source_documents=True
)

# Chat interface
chat_history = []
while True:
    question = input("You: ")
    result = qa({"question": question, "chat_history": chat_history})
    print(f"Assistant: {result['answer']}")
    chat_history.append((question, result['answer']))

Using LlamaIndex

from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader, ChatMemoryBuffer
from llama_index.llms import ChatMessage, MessageRole

# Load documents
documents = SimpleDirectoryReader("./docs").load_data()

# Create index
index = GPTVectorStoreIndex.from_documents(documents)

# Create chat engine with memory
chat_engine = index.as_chat_engine(
    memory=ChatMemoryBuffer.from_defaults(token_limit=3900),
    llm="gpt-4"
)

# Chat loop
while True:
    question = input("You: ")
    response = chat_engine.chat(question)
    print(f"Assistant: {response}")

Using RAG-Based Approach

from sentence_transformers import SentenceTransformer
import faiss
import numpy as np

# Load and embed documents
model = SentenceTransformer('all-MiniLM-L6-v2')
documents = load_documents("document.pdf")
embeddings = model.encode(documents)

# Create FAISS index
dimension = embeddings.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(np.array(embeddings).astype('float32'))

# Chat function
def chat(question):
    # Embed question
    q_embedding = model.encode(question)

    # Retrieve documents
    k = 5
    distances, indices = index.search(
        np.array([q_embedding]).astype('float32'), k
    )

    # Get relevant documents
    context = " ".join([documents[i] for i in indices[0]])

    # Generate response
    response = llm.generate(
        f"Context: {context}\nQuestion: {question}\nAnswer:"
    )
    return response

Best Practices

Document Handling

  • ✓ Support multiple formats (PDF, TXT, docx, etc.)
  • ✓ Handle large documents efficiently
  • ✓ Preserve document structure
  • ✓ Extract metadata
  • ✓ Handle multiple languages
  • ✓ Implement OCR for scanned PDFs

Conversation Quality

  • ✓ Maintain conversation context
  • ✓ Ask clarifying questions
  • ✓ Cite sources
  • ✓ Handle ambiguity
  • ✓ Suggest follow-up questions
  • ✓ Handle out-of-scope questions

Performance

  • ✓ Optimize retrieval speed
  • ✓ Implement caching
  • ✓ Handle large document sets
  • ✓ Batch process documents
  • ✓ Monitor latency
  • ✓ Implement pagination

User Experience

  • ✓ Clear response formatting
  • ✓ Ability to cite sources
  • ✓ Document browser/explorer
  • ✓ Search suggestions
  • ✓ Query history
  • ✓ Export conversations

Common Challenges & Solutions

Challenge: Irrelevant Answers

Solutions:

  • Improve retrieval (more context, better embeddings)
  • Validate answer against context
  • Ask clarifying questions
  • Implement confidence scoring
  • Use hybrid search

Challenge: Lost Context Across Turns

Solutions:

  • Maintain conversation memory
  • Update retrieval based on history
  • Summarize long conversations
  • Re-weight previous queries

Challenge: Handling Long Documents

Solutions:

  • Hierarchical chunking
  • Summarize first
  • Question refinement
  • Multi-hop retrieval
  • Document navigation

Challenge: Limited Context Window

Solutions:

  • Compress retrieved context
  • Use document summarization
  • Hierarchical retrieval
  • Focus on most relevant sections
  • Iterative refinement

Advanced Features

Multi-Document Analysis

def compare_documents(question: str, documents: List[str]):
    """Analyze and compare across multiple documents"""
    results = []

    for doc in documents:
        response = query_document(doc, question)
        results.append({
            "document": doc.name,
            "answer": response
        })

    # Compare and synthesize
    comparison = llm.generate(
        f"Compare these answers: {results}"
    )
    return comparison

Interactive Document Exploration

class DocumentExplorer:
    def __init__(self, documents):
        self.documents = documents

    def browse_by_topic(self, topic):
        """Find documents by topic"""
        pass

    def get_related_documents(self, doc_id):
        """Find similar documents"""
        pass

    def get_key_terms(self, document):
        """Extract key terms and concepts"""
        pass

Resources

Document Processing Libraries

  • PyPDF: PDF handling
  • python-docx: Word document handling
  • BeautifulSoup: Web scraping
  • youtube-transcript-api: YouTube transcripts

Chat Frameworks

  • LangChain: Comprehensive framework
  • LlamaIndex: Document-focused
  • RAG libraries: Vector DB integration

Implementation Checklist

  • Choose document source(s) to support
  • Implement document loading and processing
  • Set up vector database/embeddings
  • Build chat interface
  • Implement conversation management
  • Add source citation
  • Handle edge cases (large docs, OCR, etc.)
  • Implement error handling
  • Add performance monitoring
  • Test with real documents
  • Deploy and monitor

Getting Started

  1. Start Simple: Single PDF, basic chat
  2. Add Features: Multi-document, conversation history
  3. Improve Quality: Better chunking, retrieval
  4. Scale: Support more formats, larger documents
  5. Polish: UX improvements, error handling

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

26.01%
按下载量换算167

Codex

23.04%
按下载量换算148

trae

17.78%
按下载量换算114

OpenCode

10.87%
按下载量换算70

Antigravity

7.74%
按下载量换算50

windsurf

3.34%
按下载量换算21

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills