面向生产力级 AI Agent(Qoder、WorkBuddy、TRAE Work 等)的本地 Skill。 让 Agent 在用户授权下访问、理解、检索和关联电脑上的本地文件,数据从不离开本机。
| 能力 | 说明 |
|---|---|
| 本地文件扫描 | 递归扫描 PDF / TXT / Markdown / Word,过滤隐藏文件 |
| 多格式解析 | pdfplumber / python-docx / 纯文本,统一提取为纯文本 |
| 语义切片 | 长文本切成语义连贯的小片段,保留重叠弥补上下文中断 |
| 向量索引 | chromadb 本地持久化 + sentence-transformers 语义模型(离线自动回退关键词向量) |
| 语义检索 | 按相关性返回文件、片段与匹配分数,文件名匹配叠加加权 |
| 内容摘要 | 提取式摘要:语义模型挑选全文代表性句子(离线回退词频打分) |
| 文件关联 | 基于全文向量的相似度聚类,发现可能同属一个项目的文件组 |
| 本地大模型 RAG 问答 | ask():检索相关片段 → 本地 Qwen3.5-4B 大模型生成回答(含出处),全程不出机 |
| Client/Server 服务化 | named-pipe 常驻服务(run.ps1 入口),模型常驻、随时调用 |
python -m pip install -r requirements.txt
python -m pip install pywin32 # named-pipe 服务(Windows)
python -m pip install modelscope # 模型下载工具
首次运行自动下载 all-MiniLM-L6-v2 语义模型(约 90MB)。无网络时自动回退为离线关键词向量,功能仍可用。
Qwen3.5-4B-Instruct GGUF(魔搭官方量化,约 3GB):
modelscope download --model unsloth/Qwen3.5-4B-GGUF Qwen3.5-4B-Q4_K_M.gguf --local_dir %USERPROFILE%\models\Qwen3.5-4B-GGUF
pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/vulkan
# 网络受限时:从 https://github.com/abetlen/llama-cpp-python/releases 取对应 wheel 经加速镜像下载后本地安装
.\run.ps1 start # 1) 启动常驻服务(named-pipe,模型常驻)
.\run.ps1 ask "鱼香肉丝怎么做" # 2) 本地大模型 RAG 问答(含出处)
.\run.ps1 query "机器学习资料" # 3) 语义检索
.\run.ps1 index "D:\我的文档" # 4) 建立索引
.\run.ps1 understand "D:\笔记.md" # 5) 单文件理解
.\run.ps1 status / shutdown # 状态 / 停止
之后每次直接用 run.ps1 ask/query/...,首请求加载模型约 30–60 秒,之后秒级响应。
from src.server import index_directory, query_index, analyze_directory, ask
# 索引
index_directory(root_dir="D:/我的文档", data_dir="data")
# 检索:返回相关文件 + 命中片段 + 分数
result = query_index(query="怎么用机器学习做预测", data_dir="data", top_k=5)
# 摘要与关联
analysis = analyze_directory(root_dir="D:/我的文档", threshold=0.35)
# 本地大模型 RAG 问答(检索 → 本地 Qwen3.5-4B 生成,返回 answer + evidence)
answer = ask(question="鱼香肉丝怎么做", data_dir="data", top_k=4)
把 embedding 推理编译到 OpenVINO,脱离 PyTorch 推理,适合 AI PC 本地部署:
from src.server import index_directory, query_index
# 显式指定 OpenVINO 后端与设备(索引与查询需用同一后端/设备)
index_directory("D:/我的文档", data_dir="data_ov", backend="ov", device="GPU")
result = query_index("机器学习资料", data_dir="data_ov", backend="ov", device="GPU")
需先安装 openvino;设备可用性见 openvino 返回的 available_devices。
backend 取值:auto(默认)/ ov(OpenVINO)/ kw(强制离线关键词向量)。
Skill 采用本地 named-pipe Client/Server 服务形态,Agent 只需把 run.ps1 作为唯一入口执行命令即可调用:
| Agent 意图 | Skill 调用 |
|---|---|
| "在我的文档里找机器学习资料" | run.ps1 query "机器学习资料" → 相关文件+片段+分数 |
| "基于我的资料回答:鱼香肉丝怎么做" | run.ps1 ask "鱼香肉丝怎么做" → 本地大模型生成回答+出处 |
| "总结这个文件" | run.ps1 understand "D:\报告.docx" → 摘要+片段 |
| "我的哪些文件属于同一项目" | run.ps1 analyze "D:\项目"(或 Python API) |
在真实 Agent(如 Qoder)中验证步骤:
.\run.ps1 start(或由运行目录自动拉起);run.ps1 并把返回 JSON 作为上下文生成最终回答。已自动验证通过(scripts/verify_agent.py,5/5):status / query / understand / index / ask 均走真实管道链路。
Skill 只返回"知识上下文",最终回答由 Agent 生成,符合 Skill 的定位边界。
data/ 目录(已被 .gitignore 忽略)。personal-memory-skill/
├── SKILL.md # 官方 local-ai-skill 规范入口/说明
├── info.json / meta.json # 官方运行时/商店元数据
├── run.ps1 # 固定入口(named-pipe 调用)
├── server.py # 常驻服务:named-pipe + 模型常驻
├── client.py # 短命客户端(请求/响应)
├── install-env.ps1 # 环境安装脚本
├── scripts/verify_agent.py# Agent 集成验证(5 组指令)
├── skill.yaml # Skill 描述(入口、能力、命令契约)
├── requirements.txt
├── src/
│ ├── scanner.py # 文件扫描
│ ├── parser.py # 格式解析 → 纯文本
│ ├── chunker.py # 文本切片
│ ├── indexer.py # 向量索引(embedding + chromadb)
│ ├── retriever.py # 语义检索
│ ├── summarize.py # 内容摘要(AI 理解)
│ ├── link.py # 文件关联分析(AI 理解)
│ ├── generator.py # 本地大模型推理(llamacpp Vulkan/CUDA/http/torch)
│ ├── openvino_backend.py # 可选 OpenVINO embedding 后端
│ └── server.py # Skill Python API(index/query/analyze/ask/...)
├── data/ # 索引数据(本地,不入库)
└── tests/
├── test_core.py / test_e2e.py / test_generator.py
└── samples/ # 样例文档(md/txt/pdf/docx)
13 commits
Python
89.9%
PowerShell
10.1%
面向生产力级 AI Agent(Qoder、WorkBuddy、TRAE Work 等)的本地 Skill。 让 Agent 在用户授权下访问、理解、检索和关联电脑上的本地文件,数据从不离开本机。
| 能力 | 说明 |
|---|---|
| 本地文件扫描 | 递归扫描 PDF / TXT / Markdown / Word,过滤隐藏文件 |
| 多格式解析 | pdfplumber / python-docx / 纯文本,统一提取为纯文本 |
| 语义切片 | 长文本切成语义连贯的小片段,保留重叠弥补上下文中断 |
| 向量索引 | chromadb 本地持久化 + sentence-transformers 语义模型(离线自动回退关键词向量) |
| 语义检索 | 按相关性返回文件、片段与匹配分数,文件名匹配叠加加权 |
| 内容摘要 | 提取式摘要:语义模型挑选全文代表性句子(离线回退词频打分) |
| 文件关联 | 基于全文向量的相似度聚类,发现可能同属一个项目的文件组 |
| 本地大模型 RAG 问答 | ask():检索相关片段 → 本地 Qwen3.5-4B 大模型生成回答(含出处),全程不出机 |
| Client/Server 服务化 | named-pipe 常驻服务(run.ps1 入口),模型常驻、随时调用 |
python -m pip install -r requirements.txt
python -m pip install pywin32 # named-pipe 服务(Windows)
python -m pip install modelscope # 模型下载工具
首次运行自动下载 all-MiniLM-L6-v2 语义模型(约 90MB)。无网络时自动回退为离线关键词向量,功能仍可用。
Qwen3.5-4B-Instruct GGUF(魔搭官方量化,约 3GB):
modelscope download --model unsloth/Qwen3.5-4B-GGUF Qwen3.5-4B-Q4_K_M.gguf --local_dir %USERPROFILE%\models\Qwen3.5-4B-GGUF
pip install llama-cpp-python --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/vulkan
# 网络受限时:从 https://github.com/abetlen/llama-cpp-python/releases 取对应 wheel 经加速镜像下载后本地安装
.\run.ps1 start # 1) 启动常驻服务(named-pipe,模型常驻)
.\run.ps1 ask "鱼香肉丝怎么做" # 2) 本地大模型 RAG 问答(含出处)
.\run.ps1 query "机器学习资料" # 3) 语义检索
.\run.ps1 index "D:\我的文档" # 4) 建立索引
.\run.ps1 understand "D:\笔记.md" # 5) 单文件理解
.\run.ps1 status / shutdown # 状态 / 停止
之后每次直接用 run.ps1 ask/query/...,首请求加载模型约 30–60 秒,之后秒级响应。
from src.server import index_directory, query_index, analyze_directory, ask
# 索引
index_directory(root_dir="D:/我的文档", data_dir="data")
# 检索:返回相关文件 + 命中片段 + 分数
result = query_index(query="怎么用机器学习做预测", data_dir="data", top_k=5)
# 摘要与关联
analysis = analyze_directory(root_dir="D:/我的文档", threshold=0.35)
# 本地大模型 RAG 问答(检索 → 本地 Qwen3.5-4B 生成,返回 answer + evidence)
answer = ask(question="鱼香肉丝怎么做", data_dir="data", top_k=4)
把 embedding 推理编译到 OpenVINO,脱离 PyTorch 推理,适合 AI PC 本地部署:
from src.server import index_directory, query_index
# 显式指定 OpenVINO 后端与设备(索引与查询需用同一后端/设备)
index_directory("D:/我的文档", data_dir="data_ov", backend="ov", device="GPU")
result = query_index("机器学习资料", data_dir="data_ov", backend="ov", device="GPU")
需先安装 openvino;设备可用性见 openvino 返回的 available_devices。
backend 取值:auto(默认)/ ov(OpenVINO)/ kw(强制离线关键词向量)。
Skill 采用本地 named-pipe Client/Server 服务形态,Agent 只需把 run.ps1 作为唯一入口执行命令即可调用:
| Agent 意图 | Skill 调用 |
|---|---|
| "在我的文档里找机器学习资料" | run.ps1 query "机器学习资料" → 相关文件+片段+分数 |
| "基于我的资料回答:鱼香肉丝怎么做" | run.ps1 ask "鱼香肉丝怎么做" → 本地大模型生成回答+出处 |
| "总结这个文件" | run.ps1 understand "D:\报告.docx" → 摘要+片段 |
| "我的哪些文件属于同一项目" | run.ps1 analyze "D:\项目"(或 Python API) |
在真实 Agent(如 Qoder)中验证步骤:
.\run.ps1 start(或由运行目录自动拉起);run.ps1 并把返回 JSON 作为上下文生成最终回答。已自动验证通过(scripts/verify_agent.py,5/5):status / query / understand / index / ask 均走真实管道链路。
Skill 只返回"知识上下文",最终回答由 Agent 生成,符合 Skill 的定位边界。
data/ 目录(已被 .gitignore 忽略)。personal-memory-skill/
├── SKILL.md # 官方 local-ai-skill 规范入口/说明
├── info.json / meta.json # 官方运行时/商店元数据
├── run.ps1 # 固定入口(named-pipe 调用)
├── server.py # 常驻服务:named-pipe + 模型常驻
├── client.py # 短命客户端(请求/响应)
├── install-env.ps1 # 环境安装脚本
├── scripts/verify_agent.py# Agent 集成验证(5 组指令)
├── skill.yaml # Skill 描述(入口、能力、命令契约)
├── requirements.txt
├── src/
│ ├── scanner.py # 文件扫描
│ ├── parser.py # 格式解析 → 纯文本
│ ├── chunker.py # 文本切片
│ ├── indexer.py # 向量索引(embedding + chromadb)
│ ├── retriever.py # 语义检索
│ ├── summarize.py # 内容摘要(AI 理解)
│ ├── link.py # 文件关联分析(AI 理解)
│ ├── generator.py # 本地大模型推理(llamacpp Vulkan/CUDA/http/torch)
│ ├── openvino_backend.py # 可选 OpenVINO embedding 后端
│ └── server.py # Skill Python API(index/query/analyze/ask/...)
├── data/ # 索引数据(本地,不入库)
└── tests/
├── test_core.py / test_e2e.py / test_generator.py
└── samples/ # 样例文档(md/txt/pdf/docx)
13 commits
Python
89.9%
PowerShell
10.1%