Skip to content

Commit dd89efd

Browse files
committed
Update dependency management and installation instructions in README files
Refactor optional dependencies in pyproject.toml to consolidate the Maximal recipe into a single 'full' option, which includes all integrations. Update installation instructions in both English and Chinese README files to reflect this change, simplifying the installation process for users. Adjust example code to remove async patterns for synchronous execution.
1 parent 66ba706 commit dd89efd

3 files changed

Lines changed: 24 additions & 53 deletions

File tree

README.md

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,11 @@ Agents need one mental model for "files": one URI scheme, one tool surface, one
1313
## Install
1414

1515
```bash
16+
# Minimal — core only, no database required
1617
pip install seekvfs
1718

18-
# optional extras — required by the Maximal recipe
19-
pip install asyncmy # OceanBase connection pool
20-
pip install "seekvfs[anthropic]" # ClaudeSummarizer
21-
pip install "seekvfs[openai]" # OpenAIEmbedder
22-
pip install "seekvfs[langgraph]" # .to_langgraph()
23-
pip install "seekvfs[mcp]" # .to_mcp()
24-
pip install "seekvfs[otel]" # OpenTelemetry spans
19+
# Full — Maximal recipe + all LangChain providers + all integrations
20+
pip install "seekvfs[full]"
2521
```
2622

2723
## Pick a recipe
@@ -36,19 +32,15 @@ Recipes are NOT part of the protocol — they live under `seekvfs_recipes.*` so
3632
## 30-second quickstart
3733

3834
```python
39-
import asyncio
4035
from seekvfs import VFS
4136
from seekvfs_recipes.minimal import FileBackend
4237

43-
async def main():
44-
vfs = VFS(routes={
45-
"seekvfs://notes/": {"backend": FileBackend("/data/agent_notes")},
46-
})
47-
await vfs.write("seekvfs://notes/hello.md", "hello world")
48-
fd = await vfs.read("seekvfs://notes/hello.md")
49-
print(fd.content) # b'hello world'
50-
51-
asyncio.run(main())
38+
vfs = VFS(routes={
39+
"seekvfs://notes/": {"backend": FileBackend("/data/agent_notes")},
40+
})
41+
vfs.write("seekvfs://notes/hello.md", "hello world")
42+
fd = vfs.read("seekvfs://notes/hello.md")
43+
print(fd.content) # b'hello world'
5244
```
5345

5446
> Prefix names are yours to choose — the protocol does not recommend any naming convention.

README.zh-CN.md

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,11 @@ Agent 需要一套统一的"文件"心智模型:一个 URI scheme、一套工具
1313
## 安装
1414

1515
```bash
16+
# 最小安装 —— 仅核心,无需数据库
1617
pip install seekvfs
1718

18-
# 可选依赖 —— Maximal recipe 需要用到
19-
pip install asyncmy # OceanBase 连接池
20-
pip install "seekvfs[anthropic]" # ClaudeSummarizer
21-
pip install "seekvfs[openai]" # OpenAIEmbedder
22-
pip install "seekvfs[langgraph]" # .to_langgraph()
23-
pip install "seekvfs[mcp]" # .to_mcp()
24-
pip install "seekvfs[otel]" # OpenTelemetry spans
19+
# 全量安装 —— Maximal recipe + 全部 LangChain provider + 全部集成
20+
pip install "seekvfs[full]"
2521
```
2622

2723
## 挑一个 recipe
@@ -36,19 +32,15 @@ Recipe **不属于协议**,放在 `seekvfs_recipes.*` 下,和 `seekvfs` 核心
3632
## 30 秒快速上手
3733

3834
```python
39-
import asyncio
4035
from seekvfs import VFS
4136
from seekvfs_recipes.minimal import FileBackend
4237

43-
async def main():
44-
vfs = VFS(routes={
45-
"seekvfs://notes/": {"backend": FileBackend("/data/agent_notes")},
46-
})
47-
await vfs.write("seekvfs://notes/hello.md", "hello world")
48-
fd = await vfs.read("seekvfs://notes/hello.md")
49-
print(fd.content) # b'hello world'
50-
51-
asyncio.run(main())
38+
vfs = VFS(routes={
39+
"seekvfs://notes/": {"backend": FileBackend("/data/agent_notes")},
40+
})
41+
vfs.write("seekvfs://notes/hello.md", "hello world")
42+
fd = vfs.read("seekvfs://notes/hello.md")
43+
print(fd.content) # b'hello world'
5244
```
5345

5446
> 前缀命名由你决定 —— 协议不给出任何命名建议。

pyproject.toml

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,31 +25,18 @@ dependencies = [
2525
]
2626

2727
[project.optional-dependencies]
28-
# ── Minimal recipe ────────────────────────────────────────────────────────────
29-
# (no extra deps; uses only stdlib + anyio)
30-
31-
# ── Maximal recipe ────────────────────────────────────────────────────────────
32-
# Core maximal deps: OceanBase sync driver (pyobvector) + LangChain base interfaces
33-
maximal = ["pyobvector>=0.2.6", "langchain-core>=0.3"]
34-
35-
# LangChain provider extras — install whichever you use:
36-
langchain-openai = ["langchain-openai>=0.3"] # ChatOpenAI / OpenAIEmbeddings
37-
langchain-anthropic = ["langchain-anthropic>=0.3"] # ChatAnthropic
38-
langchain-community = ["langchain-community>=0.3"] # ChatTongyi / DashScopeEmbeddings (Qwen)
39-
40-
# Convenience bundle: maximal + all first-party LangChain providers
41-
maximal-full = [
28+
# Full — Maximal recipe (OceanBase + all LangChain providers) + all integrations
29+
full = [
4230
"pyobvector>=0.2.6",
4331
"langchain-core>=0.3",
4432
"langchain-openai>=0.3",
4533
"langchain-anthropic>=0.3",
4634
"langchain-community>=0.3",
35+
"langgraph>=0.2",
36+
"mcp",
37+
"opentelemetry-api>=1.20",
38+
"opentelemetry-sdk>=1.20",
4739
]
48-
49-
# ── Other integrations ────────────────────────────────────────────────────────
50-
langgraph = ["langgraph>=0.2", "langchain-core>=0.3"]
51-
mcp = ["mcp"]
52-
otel = ["opentelemetry-api>=1.20", "opentelemetry-sdk>=1.20"]
5340
dev = [
5441
"pytest>=7.4",
5542
"pytest-asyncio>=0.23",

0 commit comments

Comments
 (0)