بنقرة واحدة
ai-partner-chat
基于用户画像和向量化笔记提供个性化对话。当用户需要个性化交流、上下文感知的回应,或希望 AI 记住并引用其之前的想法和笔记时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
基于用户画像和向量化笔记提供个性化对话。当用户需要个性化交流、上下文感知的回应,或希望 AI 记住并引用其之前的想法和笔记时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | ai-partner-chat |
| description | 基于用户画像和向量化笔记提供个性化对话。当用户需要个性化交流、上下文感知的回应,或希望 AI 记住并引用其之前的想法和笔记时使用。 |
Provide personalized, context-aware conversations by integrating user persona, AI persona, and vectorized personal notes. This skill enables AI to remember and reference the user's previous thoughts, preferences, and knowledge base, creating a more coherent and personalized interaction experience.
Before first use, complete these steps in order:
Create directory structure
mkdir -p config notes vector_db scripts
Set up Python environment
python3 -m venv venv
./venv/bin/pip install -r .claude/skills/ai-partner-chat/scripts/requirements.txt
Note: First run will download embedding model (~4.3GB)
Generate persona templates
Copy from .claude/skills/ai-partner-chat/assets/ to config/:
user-persona-template.md → config/user-persona.mdai-persona-template.md → config/ai-persona.mdUser adds notes
Place markdown notes in notes/ directory (any format/structure)
Initialize vector database (see section 1.2 below)
Now proceed to Core Workflow →
Before using this skill for the first time, complete the following setup:
Create two Markdown files to define interaction parameters:
User Persona (user-persona.md):
assets/user-persona-template.mdAI Persona (ai-persona.md):
assets/ai-persona-template.mdThis skill uses AI Agent approach for intelligent note chunking:
When you initialize the vector database, Claude Code will:
<project_root>/notes/ directorychunk_schema.Chunk format<project_root>/vector_db/Key advantages:
Chunk Format Requirement:
All chunks must conform to this schema (see scripts/chunk_schema.py):
{
'content': 'chunk text content',
'metadata': {
'filename': 'note.md', # Required
'filepath': '/path/to/file', # Required
'chunk_id': 0, # Required
'chunk_type': 'date_entry', # Required
'date': '2025-11-07', # Optional
'title': 'Section title', # Optional
}
}
Location: Create <project_root>/scripts/chunk_and_index.py
Required structure:
# Import provided utilities
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent / ".claude/skills/ai-partner-chat/scripts"))
from chunk_schema import Chunk, validate_chunk
from vector_indexer import VectorIndexer
def chunk_note_file(filepath: str) -> List[Chunk]:
"""
Analyze THIS file's format and generate appropriate chunks.
Each chunk must conform to chunk_schema.Chunk format:
{
'content': 'text',
'metadata': {
'filename': 'file.md',
'filepath': '/path/to/file',
'chunk_id': 0,
'chunk_type': 'your_label'
}
}
"""
# TODO: Analyze actual file format (NOT template-based)
# TODO: Generate chunks based on analysis
# TODO: Validate each chunk with validate_chunk()
pass
def main():
# Initialize vector database
indexer = VectorIndexer(db_path="./vector_db")
indexer.initialize_db()
# Process all note files
all_chunks = []
for note_file in Path("./notes").glob("**/*"):
if note_file.is_file():
chunks = chunk_note_file(str(note_file))
all_chunks.extend(chunks)
# Index chunks
indexer.index_chunks(all_chunks)
if __name__ == "__main__":
main()
Execute: ./venv/bin/python scripts/chunk_and_index.py
Key points:
chunk_note_file() function logic should be dynamically created based on analyzing actual file contentchunk_schema.ChunkFor each user query, follow this process:
Read both persona files to understand:
Query the vector database to find the top 5 most semantically similar notes:
from scripts.vector_utils import get_relevant_notes
# Query for relevant context
relevant_notes = get_relevant_notes(
query=user_query,
db_path="./vector_db",
top_k=5
)
Or use the command-line tool:
python scripts/query_notes.py "user query text" --top-k 5
Combine the following elements to inform the response:
Synthesize a response that:
When Referencing Notes:
Example Response Pattern:
[Acknowledge user's query in preferred communication style]
[Incorporate relevant note context naturally if applicable]
"I remember you mentioned [insight from note] - this connects well with..."
[Provide main response following AI persona guidelines]
[Optional: Ask follow-up question based on user's learning style]
When the user creates new notes, add them to the vector database:
python scripts/add_note.py /path/to/new_note.md
Personas can be updated anytime by editing the Markdown files. Changes take effect in the next conversation.
To completely rebuild the vector database:
python scripts/init_vector_db.py /path/to/notes --db-path ./vector_db
This will delete the existing database and re-index all notes.
User data is stored in project root, not inside the skill directory:
<project_root>/
├── notes/ # User's markdown notes
├── vector_db/ # ChromaDB vector database
├── venv/ # Python dependencies
├── config/
│ ├── user-persona.md # User persona definition
│ └── ai-persona.md # AI persona definition
└── .claude/skills/ai-partner-chat/ # Skill code (can be deleted/reinstalled)
├── SKILL.md
└── scripts/
├── chunk_schema.py # Chunk format specification
├── vector_indexer.py # Core indexing utilities
└── vector_utils.py # Query utilities
Design principles:
Philosophy: Instead of pre-written chunking strategies, Claude Code analyzes each note and generates optimal chunking code on the fly.
How it works:
chunk_schema.Chunk formatvector_indexer.pyBenefits:
<project_root>/vector_db/)chunk_schema.py: Defines required chunk format specificationvector_indexer.py: Core utilities for embedding generation and ChromaDB indexingvector_utils.py: Query utilities for retrieving relevant chunksrequirements.txt: Python dependencies (chromadb, sentence-transformers)Note: No pre-written chunking scripts. Chunking is done by Claude Code dynamically.
<project_root>/
├── notes/ # User's notes (managed by user)
│ └── *.md
├── vector_db/ # Vector database (auto-generated)
├── venv/ # Python environment
├── config/ # User configuration
│ ├── user-persona.md
│ └── ai-persona.md
└── .claude/skills/ai-partner-chat/
├── SKILL.md # This file
├── scripts/
│ ├── chunk_schema.py # Chunk format spec
│ ├── vector_indexer.py # Indexing utilities
│ ├── vector_utils.py # Query utilities
│ └── requirements.txt # Dependencies
└── assets/
├── user-persona-template.md
└── ai-persona-template.md
<project_root>/notes/ anytimeDatabase Connection Errors:
<project_root>/vector_db/ directory exists and is writablePoor Retrieval Quality:
top_k value for more contextChunking Issues: