release: prepare OpenNexus 0.5.2-alpha1

This commit is contained in:
OpenNexus Release Bot
2026-09-18 20:41:21 +08:00
parent 32bc2ddccb
commit 5c3cb8003c
51 changed files with 590 additions and 9327 deletions
+1 -13
View File
@@ -1,7 +1,5 @@
# NotesAgent Backend
> 第二阶段收尾:标准 Agent/RAG Benchmark 与报告页、函数图预览、三格式快照导出及真实 Provider/MCP 结果见[实现与验收记录](../docs/development/第二阶段收尾实现与验收-2026-09-07.md)。当前分支尚未合并,不更改下文历史 main 基线。
NotesAgent Backend 是基于 Python 3.11+、FastAPI、Pydantic v2 和 SQLite 的本地 AI Core / Agent Core,使用 uv 管理 API 依赖和虚拟环境。
当前实现包含 Knowledge/Retrieval、Chat、Agent、Tool/Permission、Skill/Plugin、MCP、模型提供商、RAG Benchmark、多模态任务、本地模型调度、Token/音频用量和运行诊断。数据持久化位于后端 SQLite 与 VaultTauri Sidecar 生命周期、Stronghold 和操作系统级 Plugin 沙箱属于后续桌面阶段。
@@ -92,20 +90,10 @@ uv run pytest
.venv/Scripts/python scripts/local-model-smoke.py eres2netv2 --download --audio C:/path/to/speech.wav --reference C:/path/to/reference.wav
```
## 相关文档
- [后端接口契约](../docs/contracts/后端接口契约-开发版.md)
- [第二阶段接口契约](../docs/contracts/第二阶段接口契约-开发版.md)
- [多模态管线与模型运行](../docs/development/多模态管线与模型运行开发说明.md)
- [阶段 F 收尾验收](../docs/development/阶段F收尾验收记录.md)
- [AI Core 与 Agent Core](../docs/development/AI-Core与Agent-Core开发说明.md)
- [Knowledge 与 Retrieval Core](../docs/development/Knowledge与Retrieval-Core开发说明.md)
- [阶段 FEmbedding 与知识库问题](../docs/retrospectives/阶段F-Embedding与知识库问题与解决方案.md)
机器可读接口以运行中的 `/openapi.json` 为准。
## 工作区保存与扩展恢复(2026-09-06)
HTTP 保存先写正文、元数据及 FTS,再调度后台向量更新;打开 Vault 的向量计算也不再阻塞入口。手动全量重建接口仍等待完成。待处理标记持久化,重新打开 Vault 可恢复处理;任务详情不是完整持久化队列。
实现与验证见 [工作区后台索引与保存](../docs/development/工作区后台索引与保存开发说明.md)。扩展安装日志、ZIP 限制和社区包测试见 [扩展安装持久化与社区包](../docs/development/扩展安装持久化与社区包开发说明.md)
扩展安装日志、ZIP 限制和社区包行为由自动化测试覆盖
+1 -1
View File
@@ -33,7 +33,7 @@ def get_settings() -> Settings:
data_dir = Path(os.getenv("APP_DATA_DIR", str(BACKEND_DIR / "data")))
return Settings(
name=os.getenv("APP_NAME", "OpenNexus AI Core"),
version=os.getenv("APP_VERSION", "0.5.1-alpha"),
version=os.getenv("APP_VERSION", "0.5.2-alpha1"),
environment=os.getenv("APP_ENVIRONMENT", "development"),
host=os.getenv("APP_HOST", "127.0.0.1"),
port=int(os.getenv("APP_PORT", "8000")),
+32 -7
View File
@@ -11,6 +11,10 @@ import sys
import tempfile
from app.export.document import ExportResult
PDF_RENDER_WORKER = '--opennexus-pdf-render'
PDF_RENDER_TIMEOUT_SECONDS = 120
PAGE_RENDER_TIMEOUT_MS = 60_000
def browser_executable():
"""优先使用显式配置,再查找系统已安装的 Chromium 系浏览器。"""
@@ -27,18 +31,39 @@ def browser_executable():
return next((p for name in ('chromium','chromium-browser','google-chrome','microsoft-edge') if (p := shutil.which(name))), None)
def renderer_command(source: Path, output: Path, page_size: str) -> list[str]:
"""开发环境使用 Python 模块;PyInstaller 冻结版交回固定入口分派。"""
if getattr(sys, 'frozen', False):
return [sys.executable, PDF_RENDER_WORKER, str(source), str(output), page_size]
return [sys.executable, '-m', 'app.export.browser_pdf', str(source), str(output), page_size]
def render_snapshot(snapshot: str, page_size: str) -> ExportResult:
"""在隔离子进程中打印快照,避免阻塞或污染服务进程的事件循环。"""
with tempfile.TemporaryDirectory(prefix='notes-pdf-') as directory:
source = Path(directory) / 'snapshot.html'
output = Path(directory) / 'document.pdf'
source.write_text(snapshot, encoding='utf-8')
process = subprocess.run([sys.executable, '-m', 'app.export.browser_pdf', str(source), str(output), page_size],
capture_output=True, text=True, encoding='utf-8', errors='replace',
creationflags=getattr(subprocess, 'CREATE_NO_WINDOW', 0),
cwd=Path(__file__).resolve().parents[2])
try:
process = subprocess.run(renderer_command(source, output, page_size),
stdin=subprocess.DEVNULL, capture_output=True, text=True,
encoding='utf-8', errors='replace', timeout=PDF_RENDER_TIMEOUT_SECONDS,
creationflags=getattr(subprocess, 'CREATE_NO_WINDOW', 0),
cwd=Path(__file__).resolve().parents[2])
except subprocess.TimeoutExpired as exc:
raise RuntimeError('PDF browser rendering timed out.') from exc
if process.returncode:
raise RuntimeError('PDF browser rendering failed: ' + process.stderr[-2000:])
# 某些 Windows 桌面会话会阻止冻结程序再次启动自身,但相同的
# Playwright 运行时仍可从当前导出工作线程正常启动浏览器。
# 独立 Worker 仍是首选;只有它明确失败时才回退一次。
try:
print_snapshot(source, output, page_size)
except Exception as fallback:
detail = process.stderr[-1200:].strip()
raise RuntimeError(
'PDF browser rendering failed'
+ (f': {detail}' if detail else '.')
) from fallback
return ExportResult(content=output.read_bytes(), mime_type='application/pdf', warnings=[])
@@ -51,10 +76,10 @@ def print_snapshot(source: Path, output: Path, page_size: str):
context = browser.new_context(java_script_enabled=False, offline=True)
context.route('**/*', lambda route: route.abort())
page = context.new_page()
page.set_default_timeout(0)
page.set_default_timeout(PAGE_RENDER_TIMEOUT_MS)
page.emulate_media(media='screen')
csp = "default-src 'none'; script-src 'none'; style-src 'unsafe-inline'; img-src data:; font-src data:; connect-src 'none'; frame-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'"
page.set_content('<meta http-equiv="Content-Security-Policy" content="'+csp+'">'+source.read_text(encoding='utf-8'), wait_until='load', timeout=0)
page.set_content('<meta http-equiv="Content-Security-Policy" content="'+csp+'">'+source.read_text(encoding='utf-8'), wait_until='load', timeout=PAGE_RENDER_TIMEOUT_MS)
page.evaluate('async () => { await document.fonts.ready; await Promise.all([...document.images].map(image => image.decode().catch(() => {}))); }')
page.pdf(path=str(output), format='Letter' if page_size.lower()=='letter' else 'A4',
print_background=True, display_header_footer=False, prefer_css_page_size=False)
@@ -1,89 +0,0 @@
{
"dataset_id": "agent-core-v1",
"kind": "agent",
"version": "1.0.0",
"description": "受限真实 Runtime 工具选择、参数、无需调用和 Markdown 目录基线;不等同于复杂任务验收",
"cases": [
{
"case_id": "arithmetic",
"prompt": "必须调用 math.add 计算 17 + 25,并报告结果。",
"allowed_tools": [
"math.add",
"system.echo"
],
"expected_tools": [
{
"name": "math.add",
"arguments": {
"left": 17,
"right": 25
}
}
],
"output_contains": [
"42"
],
"tags": [
"tool-selection",
"arguments"
]
},
{
"case_id": "echo",
"prompt": "调用 system.echo 原样回显字符串 phase2-check,然后回答原文。",
"allowed_tools": [
"math.add",
"system.echo"
],
"expected_tools": [
{
"name": "system.echo",
"arguments": {
"text": "phase2-check"
}
}
],
"output_contains": [
"phase2-check"
],
"tags": [
"exact-arguments"
]
},
{
"case_id": "no-tool",
"prompt": "不调用任何工具,只回答:验收就绪",
"allowed_tools": [
"math.add",
"system.echo"
],
"expected_tools": [],
"output_contains": [
"验收就绪"
],
"tags": [
"unnecessary-tools"
]
},
{
"case_id": "markdown-catalog",
"prompt": "使用 markdown.catalog 查询支持的 Markdown 语法,指出函数图像围栏的名称。",
"allowed_tools": [
"markdown.catalog"
],
"expected_tools": [
{
"name": "markdown.catalog",
"arguments": {}
}
],
"output_contains": [
"function-plot"
],
"tags": [
"markdown",
"integration"
]
}
]
}
@@ -1,18 +0,0 @@
{
"version": "1.0.0",
"description": "手工编写的中文工程笔记检索集;每篇含关键词与改写问法,混淆主题分别建篇。用于小规模质量对照,不代表生产分布。",
"notes": [
{"id":"deadlock","title":"死锁的必要条件","text":"死锁需要互斥、占有并等待、不可抢占、循环等待四个条件同时成立。规定所有线程按相同顺序申请锁,可以破坏循环等待条件。","queries":["死锁有哪些必要条件","几个线程各占一把锁并等待对方释放,怎样避免一直卡住"]},
{"id":"starvation","title":"饥饿与公平调度","text":"饥饿指某个任务长期得不到资源,即使其他任务仍能运行。优先级老化会逐渐提高等待任务的优先级;公平队列可以减少长期等待。饥饿不等于所有进程互相等待的死锁。","queries":["优先级老化怎样缓解饥饿","系统一直有任务在跑,但一个低优先级任务永远轮不到怎么办"]},
{"id":"rrf","title":"RRF 排名融合","text":"RRF 使用每个候选在各通道中的名次进行融合,单通道贡献为 1/(k+rank)。它避免直接比较全文检索与向量余弦相似度的原始分数。k 越大,头部名次的差距越平缓。","queries":["RRF 的融合公式是什么","全文分数和向量分数尺度不同,如何按排名合并结果"]},
{"id":"rerank","title":"召回后的重排","text":"重排只重新排列已召回的候选,不能找回不在候选池中的相关段落。扩大候选池可能提高质量,但会增加精排成本。LexicalReranker 根据词面重合打分,不是 Cross-Encoder 神经模型。","queries":["重排能否找回未召回的文档","精排前候选池太小会导致什么问题"]},
{"id":"optimistic","title":"笔记的乐观并发控制","text":"保存笔记时携带读取时的内容摘要。服务端比较当前摘要,若已变化则拒绝覆盖并报告冲突。用户应重新加载或合并修改,避免把另一个窗口的新内容静默覆盖。","queries":["保存时为什么比较内容摘要","两个窗口同时修改同一篇笔记,怎样避免后保存者覆盖新内容"]},
{"id":"idempotency","title":"重复提交的幂等键","text":"客户端为一次逻辑上传创建唯一幂等键。网络重试使用相同的键和内容,服务端返回原附件编号;同键不同内容必须拒绝,防止错误复用。新的逻辑上传使用新的键。","queries":["幂等键如何处理重复上传","上传成功但响应丢失,重试怎样不生成两个附件"]},
{"id":"sse","title":"事件流断线续读","text":"SSE 事件携带递增 sequence。客户端保存最后接收的序号,重连后请求后续事件并去重。终止事件只能出现一次;连接中断本身不代表后台任务被取消。","queries":["SSE 重连如何去重","页面断网后任务仍在运行,如何恢复之前错过的进度"]},
{"id":"cancel","title":"后台任务取消边界","text":"取消标志由运行循环和工具边界检查。排队任务可以立即结束;正在同步渲染的工作应在安全边界检查取消,并丢弃产物。取消后不能发布完成事件或允许下载未完成文件。","queries":["导出任务取消后怎样处理产物","用户停止渲染时工作线程还没返回,应当如何收尾"]},
{"id":"embedding","title":"向量空间隔离","text":"不同 Embedding 模型或维度产生的向量属于不同空间,不能直接比较。索引按模型、版本、维度隔离;切换模型后需要重建对应索引。向量不可用时的全文回退必须在报告中明确记录。","queries":["Embedding 模型切换后为什么要重建索引","两个模型生成的向量长度一样就能混着搜索吗"]},
{"id":"citation","title":"引用定位与块标识","text":"引用记录笔记编号、块编号以及起止偏移。点击引用可定位原文。候选搜索结果不等于回答实际引用的来源;引用质量需要核对正文标记对应的支持性内容。","queries":["引用如何定位到原文","搜索返回十段资料,是否都应该算作回答已引用的来源"]},
{"id":"zip","title":"ZIP 安装路径检查","text":"解压前检查每个条目的规范路径,拒绝绝对路径、父目录穿越、符号链接和超出解压大小预算的条目。安装完成保存包摘要,重启时复核,包被修改后重新审查。","queries":["ZIP 安装如何阻止路径穿越","扩展包里有指向安装目录外的文件名,为什么必须拒绝"]},
{"id":"plot","title":"函数图像的安全解析","text":"function-plot 围栏支持 y = x^2 和 y = sin(x),可以设置 domain 和 range。解析器只允许数学语法,不执行任意代码。函数采样应限制表达式节点和求值次数,渐近线处断开曲线。","queries":["函数图像怎样处理渐近线","让用户输入公式绘图时如何避免执行任意程序"]}
]
}
-48
View File
@@ -1,48 +0,0 @@
{
"dataset_id": "rag-core-v1",
"kind": "rag",
"version": "1.0.0",
"description": "基础中文笔记检索集(对应 backend/data/vault 内置语料,重建索引后即可复现)",
"cases": [
{
"case_id": "rag-vector-sim",
"query": "向量数据库如何进行相似度检索",
"expected_note_ids": ["note_c1454740a0e55ef5"],
"expected_block_ids": ["blk_07c4c6bce0ec4d12", "blk_605fb3593809f224"],
"citation_required": true,
"tags": ["向量数据库", "检索"]
},
{
"case_id": "rag-python-func",
"query": "Python 如何定义函数",
"expected_note_ids": ["note_424c3742c6f0e555"],
"expected_block_ids": ["blk_45d48cae2fed40fe", "blk_0768d9c25c2ecf07"],
"citation_required": true,
"tags": ["python"]
},
{
"case_id": "rag-citation",
"query": "搜索结果如何定位到原文位置",
"expected_note_ids": ["note_0c619caa30b1614c"],
"expected_block_ids": ["blk_3f6fcead71c25fc6", "blk_9af7b12e9ce909fc"],
"citation_required": true,
"tags": ["RAG"]
},
{
"case_id": "rag-hybrid",
"query": "混合检索怎么融合全文和向量",
"expected_note_ids": ["note_c1454740a0e55ef5"],
"expected_block_ids": ["blk_82b45418dba9f720"],
"citation_required": true,
"tags": ["检索"]
},
{
"case_id": "rag-tech-stack",
"query": "这个项目用什么后端和检索技术",
"expected_note_ids": ["note_3327e6cf18f3701f"],
"expected_block_ids": ["blk_feb2a9c42e7d31ad"],
"citation_required": false,
"tags": ["项目"]
}
]
}
-368
View File
@@ -1,368 +0,0 @@
{
"dataset_id": "rag-phase2-v1",
"kind": "rag",
"version": "1.0.0",
"description": "手工编写的中文工程笔记检索集;每篇含关键词与改写问法,混淆主题分别建篇。用于小规模质量对照,不代表生产分布。",
"cases": [
{
"case_id": "deadlock-0",
"query": "死锁有哪些必要条件",
"expected_note_ids": [
"note_894ec7d0760d0cd6"
],
"expected_block_ids": [
"blk_748b1be4cee7cb9b"
],
"citation_required": true,
"tags": [
"keyword",
"deadlock"
]
},
{
"case_id": "deadlock-1",
"query": "几个线程各占一把锁并等待对方释放,怎样避免一直卡住",
"expected_note_ids": [
"note_894ec7d0760d0cd6"
],
"expected_block_ids": [
"blk_748b1be4cee7cb9b"
],
"citation_required": true,
"tags": [
"paraphrase",
"deadlock"
]
},
{
"case_id": "starvation-0",
"query": "优先级老化怎样缓解饥饿",
"expected_note_ids": [
"note_da790c1c3b905f26"
],
"expected_block_ids": [
"blk_d15c420ab15ba221"
],
"citation_required": true,
"tags": [
"keyword",
"starvation"
]
},
{
"case_id": "starvation-1",
"query": "系统一直有任务在跑,但一个低优先级任务永远轮不到怎么办",
"expected_note_ids": [
"note_da790c1c3b905f26"
],
"expected_block_ids": [
"blk_d15c420ab15ba221"
],
"citation_required": true,
"tags": [
"paraphrase",
"starvation"
]
},
{
"case_id": "rrf-0",
"query": "RRF 的融合公式是什么",
"expected_note_ids": [
"note_1acd666aa1e79f96"
],
"expected_block_ids": [
"blk_abe4534c5c35b694"
],
"citation_required": true,
"tags": [
"keyword",
"rrf"
]
},
{
"case_id": "rrf-1",
"query": "全文分数和向量分数尺度不同,如何按排名合并结果",
"expected_note_ids": [
"note_1acd666aa1e79f96"
],
"expected_block_ids": [
"blk_abe4534c5c35b694"
],
"citation_required": true,
"tags": [
"paraphrase",
"rrf"
]
},
{
"case_id": "rerank-0",
"query": "重排能否找回未召回的文档",
"expected_note_ids": [
"note_df8b1e8216af7f9a"
],
"expected_block_ids": [
"blk_064caf4b9c2e2518"
],
"citation_required": true,
"tags": [
"keyword",
"rerank"
]
},
{
"case_id": "rerank-1",
"query": "精排前候选池太小会导致什么问题",
"expected_note_ids": [
"note_df8b1e8216af7f9a"
],
"expected_block_ids": [
"blk_064caf4b9c2e2518"
],
"citation_required": true,
"tags": [
"paraphrase",
"rerank"
]
},
{
"case_id": "optimistic-0",
"query": "保存时为什么比较内容摘要",
"expected_note_ids": [
"note_04142ad0124ae76d"
],
"expected_block_ids": [
"blk_3f8c19cf88a03805"
],
"citation_required": true,
"tags": [
"keyword",
"optimistic"
]
},
{
"case_id": "optimistic-1",
"query": "两个窗口同时修改同一篇笔记,怎样避免后保存者覆盖新内容",
"expected_note_ids": [
"note_04142ad0124ae76d"
],
"expected_block_ids": [
"blk_3f8c19cf88a03805"
],
"citation_required": true,
"tags": [
"paraphrase",
"optimistic"
]
},
{
"case_id": "idempotency-0",
"query": "幂等键如何处理重复上传",
"expected_note_ids": [
"note_cdc416a180e5099b"
],
"expected_block_ids": [
"blk_b68f6945024f098d"
],
"citation_required": true,
"tags": [
"keyword",
"idempotency"
]
},
{
"case_id": "idempotency-1",
"query": "上传成功但响应丢失,重试怎样不生成两个附件",
"expected_note_ids": [
"note_cdc416a180e5099b"
],
"expected_block_ids": [
"blk_b68f6945024f098d"
],
"citation_required": true,
"tags": [
"paraphrase",
"idempotency"
]
},
{
"case_id": "sse-0",
"query": "SSE 重连如何去重",
"expected_note_ids": [
"note_5cf7aef15e17bd32"
],
"expected_block_ids": [
"blk_f6328254ea8624a1"
],
"citation_required": true,
"tags": [
"keyword",
"sse"
]
},
{
"case_id": "sse-1",
"query": "页面断网后任务仍在运行,如何恢复之前错过的进度",
"expected_note_ids": [
"note_5cf7aef15e17bd32"
],
"expected_block_ids": [
"blk_f6328254ea8624a1"
],
"citation_required": true,
"tags": [
"paraphrase",
"sse"
]
},
{
"case_id": "cancel-0",
"query": "导出任务取消后怎样处理产物",
"expected_note_ids": [
"note_48f96c75ea97d552"
],
"expected_block_ids": [
"blk_efa6b9f6210964c2"
],
"citation_required": true,
"tags": [
"keyword",
"cancel"
]
},
{
"case_id": "cancel-1",
"query": "用户停止渲染时工作线程还没返回,应当如何收尾",
"expected_note_ids": [
"note_48f96c75ea97d552"
],
"expected_block_ids": [
"blk_efa6b9f6210964c2"
],
"citation_required": true,
"tags": [
"paraphrase",
"cancel"
]
},
{
"case_id": "embedding-0",
"query": "Embedding 模型切换后为什么要重建索引",
"expected_note_ids": [
"note_6e13fbe17c9f7a30"
],
"expected_block_ids": [
"blk_dc2b0771ea50c3a4"
],
"citation_required": true,
"tags": [
"keyword",
"embedding"
]
},
{
"case_id": "embedding-1",
"query": "两个模型生成的向量长度一样就能混着搜索吗",
"expected_note_ids": [
"note_6e13fbe17c9f7a30"
],
"expected_block_ids": [
"blk_dc2b0771ea50c3a4"
],
"citation_required": true,
"tags": [
"paraphrase",
"embedding"
]
},
{
"case_id": "citation-0",
"query": "引用如何定位到原文",
"expected_note_ids": [
"note_a0b8289f7f334952"
],
"expected_block_ids": [
"blk_5eac426f6220ca29"
],
"citation_required": true,
"tags": [
"keyword",
"citation"
]
},
{
"case_id": "citation-1",
"query": "搜索返回十段资料,是否都应该算作回答已引用的来源",
"expected_note_ids": [
"note_a0b8289f7f334952"
],
"expected_block_ids": [
"blk_5eac426f6220ca29"
],
"citation_required": true,
"tags": [
"paraphrase",
"citation"
]
},
{
"case_id": "zip-0",
"query": "ZIP 安装如何阻止路径穿越",
"expected_note_ids": [
"note_4a26a95db9b832fc"
],
"expected_block_ids": [
"blk_ce08f371b1dcf2c5"
],
"citation_required": true,
"tags": [
"keyword",
"zip"
]
},
{
"case_id": "zip-1",
"query": "扩展包里有指向安装目录外的文件名,为什么必须拒绝",
"expected_note_ids": [
"note_4a26a95db9b832fc"
],
"expected_block_ids": [
"blk_ce08f371b1dcf2c5"
],
"citation_required": true,
"tags": [
"paraphrase",
"zip"
]
},
{
"case_id": "plot-0",
"query": "函数图像怎样处理渐近线",
"expected_note_ids": [
"note_bfd65995af95a6a6"
],
"expected_block_ids": [
"blk_c4644f51b0853ef2"
],
"citation_required": true,
"tags": [
"keyword",
"plot"
]
},
{
"case_id": "plot-1",
"query": "让用户输入公式绘图时如何避免执行任意程序",
"expected_note_ids": [
"note_bfd65995af95a6a6"
],
"expected_block_ids": [
"blk_c4644f51b0853ef2"
],
"citation_required": true,
"tags": [
"paraphrase",
"plot"
]
}
]
}
@@ -1,20 +0,0 @@
---
title: RAG 检索增强与引用定位
tags: RAG, 产品
---
# RAG 概述
检索增强生成先检索相关文档块,再交给大模型生成回答。
## Citation 引用
每个搜索结果附带 Citation,包含文件路径与起止偏移量。
前端可根据偏移量跳转到笔记中的原始位置。
## Reranker 精排
粗排后使用 Reranker 对候选块重新打分,提升相关性。
<br />
@@ -1,36 +0,0 @@
---
title: mermaid格式测试
tags: 产品, mermaid
---
<br />
```mermaid
graph TD
A[开始] --> B[用户输入账号密码]
B --> C{系统验证}
C -- 验证通过 --> D[跳转至首页]
C -- 验证失败 --> E[提示错误信息]
E --> B
D --> F[结束]
style A fill:#f9f,stroke:#333,stroke-width:2px
style D fill:#9f6,stroke:#333,stroke-width:2px
style E fill:#f66,stroke:#333,stroke-width:2px
```
```mermaid
sequenceDiagram
participant 用户 as 用户(浏览器)
participant 前端 as Vue/React 前端
participant 后端 as Java/Go 后端
participant DB as 数据库
用户 ->> 前端: 点击“获取数据”按钮
前端 ->> 后端: 发送 GET /api/data 请求
后端 ->> DB: 执行 SQL 查询
DB -->> 后端: 返回查询结果集
后端 -->> 前端: 返回 JSON 数据
前端 -->> 用户: 渲染并展示数据列表
```
@@ -1,38 +0,0 @@
---
title: 功能演示导航
tags: 演示, 入门
---
# 功能演示导航
这组笔记用于在真实工作区查看 Markdown、代码高亮、图表和检索效果。文中的项目、日期和数据均为演示内容。
## 建议阅读顺序
| 笔记 | 可以查看的功能 |
| ----------------------------- | ---------------------- |
| 01 Markdown 与大纲 | 元数据、标题层级、列表、引用、表格与行内代码 |
| 02 多语言代码与公式 | Shiki 语言配色、代码块标签、数学公式 |
| 03 Mermaid 图表集 | 六种常用图型、主题颜色和大图查看 |
| 04 星灯项目资料 | 全文搜索、知识库问答与引用定位 |
| 05 Skill 与 Plugin 操作样例 | 扩展安装、选区命令和只读笔记检查 |
| [06 警告框与提示框](06%20警告框与提示框.md) | 类型与别名、标题、折叠、嵌套和主题配色 |
## 工作区操作
1. 在文件树打开一篇演示笔记。
2. 切换顶部“文件 / 大纲”,查看标题层级与跳转。
3. 拖动侧栏边缘,观察正文随可用宽度变化。
4. 在主题页选择不同主题,再回到笔记查看配色。
5. 编辑后保存,刷新页面确认内容仍然存在。
## 手动体验清单
- [ ] 添加一个标签,再删除它。
- [ ] 在正文键入一段行内代码。
- [ ] 将一个代码块切换为另一种语言。
- [ ] 打开 Mermaid 大图并缓慢滚轮缩放。
- [ ] 搜索“星灯资料站”,打开结果并定位原文。
- [ ] 在已配置模型后进行一次带知识库检索的问答。
> 上述清单供体验时自行勾选,不是自动验收结果。模型调用可能产生费用,图表与代码示例本身不会执行代码。
@@ -1,61 +0,0 @@
---
title: Markdown 与大纲演示
tags: 演示, Markdown, 编辑器
---
# Markdown 与大纲
普通正文可以包含 **重点内容**、*强调内容*、~~已经废弃的说法~~,以及行内代码 `notes.search`
## 列表与引用
1. 新建一篇笔记。
2. 输入标题和正文。
3. 保存后使用搜索查找它。
- 文件夹用于组织主题。
- 标签用于跨文件夹分类。
- 同一篇笔记可以拥有多个标签。
- 本文包含“演示”和“编辑器”标签。
> 一条清晰的笔记应该能说明问题、保留依据,并在以后被找到。
>
> 引用块中的内容仍是笔记正文,不会自动成为 AI 的系统提示词。
## 标题层级
### 第三级:准备资料
这里是 H3。打开“大纲”面板,观察字号、粗细与缩进。
#### 第四级:整理来源
将待整理的资料名称写在这里。
##### 第五级:补充细节
这一节用于检查深层标题的展开与收起。
###### 第六级:最小标题
再点击较高层标题,确认正文能够跳转到对应位置。
## 表格和待办
| 项目 | 状态 | 说明 |
| :--- | :---: | ---: |
| 写下问题 | 已整理 | 1 条 |
| 补充证据 | 待整理 | 3 条 |
| 形成结论 | 待整理 | 1 条 |
- [x] 本文已经包含六级标题示例。
- [ ] 自己添加一段引用。
- [ ] 自己添加一行表格。
---
## 行内代码输入练习
现成的行内代码:`const title = "我的笔记"`
可以在下一段先输入两个反引号,再把光标移到中间填入内容,观察写作模式是否识别为行内代码;也可以逐个输入完整的反引号与文本。
@@ -1,89 +0,0 @@
---
title: 多语言代码与公式
tags: 演示, 代码, 数学
---
# 多语言代码与公式
代码块用于展示源码,不会在工作区自动执行。切换明暗主题时,可以观察关键字、字符串和注释的配色。
## Python:安全计算平均值
```python
def average(scores: list[float]) -> float | None:
"""空列表没有平均值。"""
if not scores:
return None
return sum(scores) / len(scores)
print(average([72, 86, 94]))
```
## TypeScript:整理标签
```typescript
interface Note {
title: string
tags: string[]
}
const note: Note = {
title: '星灯资料站',
tags: ['演示', '项目', '演示'],
}
const uniqueTags = [...new Set(note.tags)]
console.log(uniqueTags)
```
## Rust:只读文本处理
```rust
fn main() {
let title = "星灯资料站";
let count = title.chars().count();
println!("标题包含 {count} 个字符");
}
```
## SQL:演示查询
下面是虚构表结构的查询示例,不表示应用数据库的实际表名。
```sql
SELECT title, updated_at
FROM demo_notes
WHERE category = '演示'
ORDER BY updated_at DESC;
```
## JSON 与 YAML
```json
{
"project": "星灯资料站",
"offlineFirst": true,
"reviewDays": 7
}
```
```yaml
project: 星灯资料站
milestones:
- 收集资料
- 完成校对
- 整理索引
```
## 数学公式
行内公式:当 $n > 0$ 时,均值为 $\bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_i$。
块级公式:
$$
\operatorname{cos}(\mathbf{a},\mathbf{b})
=\frac{\mathbf{a}\cdot\mathbf{b}}
{\lVert\mathbf{a}\rVert\lVert\mathbf{b}\rVert}
$$
两个向量都非零时,上式表示余弦相似度。本文只演示公式显示,不执行向量检索。
@@ -1,90 +0,0 @@
---
title: Mermaid 六种图表演示
tags: 演示, Mermaid, 可视化
---
# Mermaid 图表集
以下图表没有指定节点颜色,便于查看默认配色如何跟随主题。把鼠标移到预览区域可查看缩放工具,并进入大图查看。
## 流程图:资料整理
```mermaid
flowchart TD
A[收集资料] --> B{内容是否完整}
B -->|是| C[整理笔记]
B -->|否| D[补充来源]
D --> B
C --> E[保存并检索]
```
## 时序图:打开笔记
```mermaid
sequenceDiagram
participant U as 用户
participant W as 工作区
participant S as 本地服务
U->>W: 选择文件
W->>S: 请求笔记内容
S-->>W: 返回 Markdown
W-->>U: 显示正文与大纲
```
## 类图:演示数据关系
```mermaid
classDiagram
class Notebook {
+String name
}
class Note {
+String title
+String content
}
Notebook "1" --> "many" Note : contains
```
## 状态图:一份草稿
```mermaid
stateDiagram-v2
[*] --> Draft
Draft --> Reviewing: 提交校对
Reviewing --> Draft: 补充内容
Reviewing --> Complete: 校对完成
Complete --> [*]
```
## ER 图:虚构资料目录
```mermaid
erDiagram
NOTEBOOK ||--o{ NOTE : contains
NOTE ||--o{ SOURCE : references
NOTEBOOK {
string name
}
NOTE {
string title
}
SOURCE {
string label
}
```
## 甘特图:演示排期
```mermaid
gantt
title 资料整理演示排期
dateFormat YYYY-MM-DD
section 准备
收集资料 :a, 2026-09-07, 2d
section 整理
编写笔记 :b, after a, 3d
section 校对
检查来源 :c, after b, 1d
```
这些日期仅用于显示图表,不会创建真实任务或提醒。
@@ -1,40 +0,0 @@
---
title: 星灯资料站项目简报
tags: 演示, 星灯项目, 检索
---
# 星灯资料站
星灯资料站是本组演示中的虚构项目,目标是为一个读书小组建立离线可用的学习资料目录。项目代号为 ST-27。
## 范围
第一批资料包含 12 篇读书笔记、8 份讨论提纲和 4 份术语表,共 24 份文档。第一批不包含录音和视频。
资料分为“入门阅读”“专题讨论”“术语速查”三个目录。每份文档至少包含标题、两个标签和一段内容摘要。
## 时间安排
资料收集截止日为 2026 年 9 月 10 日;校对截止日为 9 月 13 日;演示展示安排在 9 月 15 日。
## 校对约定
检查顺序为:标题与标签、正文完整性、引用来源、重复内容。引用缺少来源时,标记为“待补充”,不把推测写成原文结论。
## 独特检索词
本项目的检索口令是“蓝鹭书签”。它只用于演示搜索定位,不是密码或访问凭据。
## 可尝试的问题
配置并启用模型后,在 AI 对话中开启知识库检索,可以询问:
- 星灯资料站第一批一共有多少份文档?分别是什么类型?
- ST-27 的资料收集和校对截止日期是什么?
- 找到提到“蓝鹭书签”的段落。
- 第一批资料是否包含视频?请给出笔记依据。
- 星灯资料站的负责人是谁?
最后一个问题在本笔记中没有答案。检查回答是否说明资料不足,而不是编造负责人。其他问题可以对照正文并点击引用定位核实。
> 新建笔记需要完成索引后才能参与检索。没有模型配置时,也可以先在搜索页使用项目名、代号或独特检索词查找原文。
@@ -1,53 +0,0 @@
---
title: Skill 与 Plugin 操作样例
tags: 演示, Skill, Plugin
---
# Skill 与 Plugin 操作样例
本页提供可选中的测试文本和操作步骤。写下扩展 ID 不会自动安装或启用扩展。
## 内置 Plugin:选区命令
确认 `text-tools` 已启用,选中下一行英文,然后打开编辑器右键菜单或工作区“扩展命令”工具栏,选择“转为大写”。
hello notes agent
预期收到大写文本通知 `HELLO NOTES AGENT`。此命令显示处理结果,不会自动替换笔记正文。
没有选区时,依赖 `editor.has_selection` 的命令不应出现。停用对应 Plugin 后,该命令也不应继续执行。
## 社区准备包:Markdown 检查
仓库内提供 `markdown-workbench` Plugin 和依赖它的 `note-reviewer` Skill。先导入并启用 Plugin,再导入和启用 Skill;缺少依赖时应查看管理页提示。
可以选中下面代码块中的纯文本内容,再运行 Markdown 检查命令。代码块中的标题是检查输入,不属于本页的大纲。
```markdown
# 资料整理
### 跳级标题
- [ ] 补充资料来源
- [x] 整理已有术语
### 跳级标题
这里故意重复标题,供检查工具报告。
```
检查结果应包含标题跳级和重复标题信息,以及待办统计。工具采用行级分析,报告不等于完整 Markdown 标准校验。
## Skill:只读检查
在可选择 Skill 的智能体运行入口中,选择已启用的 `note-reviewer`,使用下面的请求:
> 请查找“星灯资料站”笔记,读取原文,检查标题和待办结构,给出可核对的问题与来源。不要修改笔记,也不要补写原文没有的信息。
运行需要可用模型及对应工具权限。可在 Trace 中查看实际工具调用;没有发生的调用不能当作已经检查。
## 安装状态恢复
通过当前版本安装的扩展会登记到本地安装库。关闭并重新启动服务后,可以回到管理页检查安装和启停状态。包文件被移动或修改时,应看到恢复提示并重新检查安装来源。
从目录安装仍依赖原目录;ZIP 导入使用应用管理目录。卸载 ZIP 包会清理对应管理资源,目录安装的源码不会被删除。
@@ -1,150 +0,0 @@
---
title: 警告框与提示框演示
tags: 演示, Markdown, 警告框, 主题
---
# 警告框与提示框
本页展示 GitHub 警告框和 Obsidian 提示框的类型、标题、折叠、嵌套及正文格式。打开工作区写作模式查看效果;切换源码模式查看原始语法。
## 五种常用警告框
> [!NOTE]
> 记录补充信息:这份笔记中的内容都是功能演示,不会执行代码或调用模型。
> [!TIP] 小技巧:快速插入
> 点击编辑器顶部的“提示框”选择器,选择类型后替换模板内容。
> [!IMPORTANT] 保存与显示状态
> 点击标题展开或收起,只改变本次显示状态。要修改默认状态,请在源码中的类型标记后添加 `+` 或 `-`。
> [!WARNING] 修改前保留原文
> 在演示笔记中练习时,可以先复制一段内容;需要恢复时使用撤销。
> [!CAUTION] 需要重点关注的说明
> `CAUTION` 与 `WARNING` 使用同一警告配色。提示框是笔记内容,不是应用报错弹窗。
## 更多类型
> [!ABSTRACT] 本页摘要
> 类型区分语义,标题说明重点,正文保留详细信息。
> [!INFO] 环境信息
> 警告框的边框、标题和背景随主题变化。
> [!TODO] 待办
> - [ ] 展开下方折叠示例。
> - [ ] 切换深色主题。
> - [ ] 保存后重新打开本页。
> [!SUCCESS] 已完成
> 本段展示成功状态,不代表自动测试或实际任务已经完成。
> [!QUESTION] 可以嵌套吗?
> 可以。增加一级引用符号即可在提示框中嵌入另一个提示框。
> [!FAILURE] 未达到预期
> 示例:资料中缺少日期,需要补充后再归档。
> [!DANGER] 风险提示
> 示例:不要把唯一一份原始资料直接覆盖为整理结果。
> [!BUG] 问题记录
> 示例:发现显示异常时,记录主题、操作步骤和对应 Markdown 源码。
> [!EXAMPLE] 示例
> 将提示内容写成一句明确的说明,比只写“注意”更容易理解。
> [!QUOTE] 摘录
> 一条笔记既要保留结论,也要保留形成结论的依据。
## 默认展开与默认折叠
> [!TIP]+ 默认展开:点击标题试试
> 类型后的 `+` 表示默认展开。点击标题可收起,再次点击可展开。
> [!WARNING]- 默认折叠:点击查看内容
> 你已经展开了这段说明。类型后的 `-` 表示重新渲染时默认收起。
>
> 正文可以包含 **加粗**、*斜体*、~~删除线~~ 和 `行内代码`。
## 嵌套与混合格式
> [!INFO]+ 一次资料整理
> 先整理来源,再检查缺漏。
>
> 1. 收集原始资料。
> 2. 按主题分组。
> 3. 为尚未确认的内容添加说明。
>
> > [!SUCCESS] 已收集
> > 原始笔记、会议纪要和参考链接已放入同一文件夹。
>
> > [!WARNING]- 尚待确认
> > 一条资料缺少发布日期,需要补充来源。
>
> | 项目 | 状态 |
> | --- | --- |
> | 原始资料 | 已归档 |
> | 日期核对 | 待补充 |
>
> ```python
> notes = ["原始资料", "整理结果"]
> print(len(notes))
> ```
>
> 行内公式:$a^2 + b^2 = c^2$。
## 类型别名
别名不区分大小写。下面的表格列出兼容关系。
| 类型 | 别名 |
| --- | --- |
| abstract | summary、tldr |
| tip | hint |
| success | check、done |
| question | help、faq |
| warning | caution、attention |
| failure | fail、missing |
| danger | error |
| quote | cite |
> [!summary] 摘要别名
> 这段使用 `summary`,外观与 `abstract` 一致。
> [!check] 成功别名
> 这段使用 `check`,外观与 `success` 一致。
> [!custom-demo] 未知类型的回退
> 自定义类型暂时使用 note 外观,源文件中的类型名仍然保留。
## 语法对照
以下围栏中的内容应当保持为代码,不渲染成警告框。
```markdown
> [!NOTE] 自定义标题
> 正文内容。
> [!WARNING]- 默认折叠
> 点击标题查看正文。
> [!TIP]+ 默认展开
> 默认可见的正文。
```
普通行内代码也保持原样:`[!WARNING]`
> 这是一段普通引用,没有提示类型标记,因此不应显示为警告框。
## 主题与保存体验清单
- [ ] 在浅色、深色、护眼主题下区分信息、成功、警告与危险颜色。
- [ ] 使用纸间时光,查看纸张虚线边框和嵌套层次。
- [ ] 使用 Ocean Blue 与 Midnight Purple,检查标题和正文是否清晰。
- [ ] 点击折叠标题,并使用 Tab、Enter 或空格体验键盘操作。
- [ ] 在源码模式修改一个类型或标题,再切回写作模式。
- [ ] 保存并重新打开,确认类型、标题、正文与默认折叠状态保持一致。
这是一份手动体验清单,未勾选不表示功能失败。桌面容器的原生格式快捷键与元数据转换仍属于第三阶段规划。
@@ -1,138 +0,0 @@
# function-plot 功能演示
这份笔记展示函数图像的写法、编辑刷新、坐标设置和错误反馈。在 NotesAgent 中打开后,切换到「写作」查看图像;「源码」模式可查看和修改下面的代码块。
## 1. 从一条抛物线开始
`domain` 设置横轴范围,`range` 设置纵轴显示范围。`xlabel``ylabel` 设置坐标轴标签。
```function-plot
domain: -4, 4
range: -2, 18
xlabel: 横坐标 x
ylabel: 函数值 y
grid: true
y = x^2
```
试着将 `y = x^2` 改为 `y = (x-1)^2 + 2`,观察顶点从 `(0, 0)` 移到 `(1, 2)`。修改后切回写作模式即可查看结果。
## 2. 多函数同图
一个代码块内每行写一个函数,曲线按顺序分配颜色,并显示对应图例。三角函数的输入单位是弧度。
```function-plot
domain: -6.2832, 6.2832
range: -2.2, 2.2
xlabel: x / 弧度
ylabel: y
y = sin(x)
y = cos(x)
y = 2sin(x)
```
将第三条函数改为 `y = sin(2x)`,比较振幅变化和周期变化。
## 3. 隐式乘法与交点
支持 `2x`、`2(x+1)`、`(x+1)(x-1)` 等写法。乘号也可以显式写成 `*`,幂可以使用 `^`。
```function-plot
domain: -3, 4
range: -5, 12
xlabel: x
ylabel: y
y = (x+1)(x-1)
y = 2x + 1
```
两条曲线的交点满足 `x^2 - 1 = 2x + 1`,横坐标约为 `-0.732` 和 `2.732`。
## 4. 指数、对数与参考直线
支持常量 `e`、`pi`,以及 `exp`、`ln`、`log10` 等函数。这里把横轴限定在正数范围,保证对数有定义。
```function-plot
domain: -3, 3
range: -3, 8
xlabel: x
ylabel: y
y = exp(x)
y = ln(x)
y = x
```
超出纵轴显示范围的曲线会被裁切。把 `range` 改为 `-3, 22`,可以查看更完整的指数曲线。
## 5. 绝对值与平方根
```function-plot
domain: -4, 4
range: -0.5, 4.5
xlabel: x
ylabel: y
y = abs(x)
y = sqrt(abs(x))
```
这里用 `sqrt(abs(x))`,所以负半轴也有定义;它与 `sqrt(x)` 的定义域不同。
## 6. 间断点与显示范围
```function-plot
domain: -5, 5
range: -5, 5
xlabel: x
ylabel: y
y = 1/x
```
`x = 0` 处无定义,图像应分成左右两支,而不是跨过间断点连线。可缩放或打开大图查看原点附近;曲线是有限采样的可视化,不代替数学定义。
## 7. 关闭网格
```function-plot
domain: -6, 6
range: -0.2, 1.2
xlabel: x
ylabel: y
grid: false
y = exp(-x^2/2)
```
将 `grid: false` 改为 `grid: true`,比较有无网格的效果。
## 8. 错误反馈演示(故意写错)
下面的 `sinn` 不是支持的函数名,预期显示错误诊断,不生成曲线。这是本节的演示内容。把它改为 `sin` 即可恢复图像;若希望导出一份没有错误警告的文档,请先修正这一行。
```function-plot
domain: -3.14, 3.14
y = sinn(x)
```
## 交互与导出检查
- 将鼠标移到图表区域,试用缩小、放大、重置和大图查看;只读预览也可切换源码。
- 在窄窗口中横向滚动函数图,检查坐标刻度和右侧图例。
- 依次切换 `light`、`dark`、`sepia`、`paper-moments`、`ocean-blue`、`midnight-purple`;社区主题需先安装并启用。检查背景、网格、文字和曲线的对比度。
- 修改第一节函数后不保存,点击编辑器顶部「导出」,分别选择 HTML、PDF、DOCX,验证文件采用点击时的编辑内容。
- HTML 保留支持的主题配色;PDF、DOCX 使用浅色打印样式。HTML 的函数图为 SVG,PDF 为矢量图,DOCX 为静态图片。
## 写法速查
| 项目 | 示例 |
| ----- | ------------------------------------------------- |
| 代码块语言 | `function-plot` |
| 函数表达式 | `y = x^2 + 2x + 1` |
| 横轴范围 | `domain: -5, 5` |
| 纵轴范围 | `range: -2, 10`,省略时自动估计 |
| 坐标标签 | `xlabel: 时间`、`ylabel: 数值` |
| 网格开关 | `grid: true` / `grid: false` |
| 数学常量 | `pi`、`e` |
| 常用函数 | `sin`、`cos`、`tan`、`sqrt`、`abs`、`exp`、`ln`、`log10` |
| 注释 | 单独一行以 `#` 开头 |
范围端点使用数值,例如 `domain: -3.1416, 3.1416`;表达式中可以使用 `pi`。当前只绘制以 `x` 为自变量的二维函数,不支持任意脚本、参数曲线或三维曲面。
每个图块最多 16 条表达式;每份导出文档最多 16 个函数图、累计 8000 个表达式节点。本文件包含 7 个正常示例和 1 个有意保留的错误示例。
@@ -1,12 +0,0 @@
---
title: 周会纪要
tags: 会议, 日记
---
# 周会纪要
今天讨论了三件事:索引重建、混合检索、前端联调。
Vector index rebuild 任务需要支持增量更新。
下次会议在周五,记得同步接口契约。
@@ -1,958 +0,0 @@
# 长文渲染压力测试
## 第 1 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 1
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 2 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 2
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 3 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 3
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 4 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 4
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 5 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 5
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 6 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 6
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 7 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 7
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 8 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 8
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 9 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 9
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 10 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 10
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 11 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 11
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 12 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 12
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 13 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 13
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 14 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 14
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 15 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 15
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 16 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 16
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 17 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 17
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 18 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 18
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 19 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 19
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 20 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 20
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 21 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 21
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 22 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 22
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 23 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 23
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 24 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 24
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 25 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 25
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 26 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 26
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 27 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 27
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 28 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 28
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 29 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 29
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 30 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 30
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 31 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 31
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 32 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 32
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 33 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 33
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 34 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 34
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 35 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 35
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 36 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 36
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 37 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 37
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 38 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 38
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 39 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 39
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 40 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 40
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 41 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 41
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 42 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 42
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 43 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 43
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 44 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 44
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 45 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 45
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 46 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 46
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 47 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 47
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 48 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 48
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 49 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 49
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 50 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 50
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 51 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 51
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 52 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 52
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 53 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 53
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 54 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 54
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 55 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 55
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 56 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 56
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 57 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 57
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 58 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 58
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 59 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 59
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 60 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 60
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 61 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 61
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 62 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 62
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 63 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 63
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 64 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 64
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 65 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 65
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 66 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 66
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 67 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 67
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 68 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 68
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 69 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 69
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 70 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 70
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 71 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 71
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 72 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 72
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 73 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 73
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 74 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 74
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 75 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 75
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 76 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 76
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 77 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 77
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 78 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 78
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 79 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 79
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 80 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 80
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 81 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 81
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 82 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 82
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 83 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 83
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 84 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 84
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 85 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 85
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 86 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 86
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 87 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 87
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 88 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 88
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 89 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 89
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 90 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 90
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 91 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 91
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 92 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 92
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 93 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 93
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 94 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 94
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 95 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 95
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 96 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 96
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
> [!TIP] 验收提示
> 内容需要保留,折叠后仍可展开。
| 项目 | 状态 |
| --- | --- |
| 渲染 | 待验证 |
```javascript
const note = { title: "长文测试", ready: true };
console.log(note);
```
## 第 97 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 97
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 98 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 98
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 99 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 99
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 100 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 100
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 第 101 节:知识整理
本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。本地知识库保存课程记录与项目思考,编辑时需要稳定响应。长篇文档包含章节结构和引用信息,阅读过程中可以随时折叠展开。这里使用生成的测试内容验证渲染性能,不读取真实笔记。
### 小结 101
重点包含 **强调文字**`inlineCode` 和 [链接](https://example.com)。
## 文末校验
结束标记:长文内容完整。
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,50 +0,0 @@
***
title: Python 基础语法
tags: python, 编程
----------------
# 变量与类型
Python 是动态类型语言,变量无需声明类型。
整数、浮点数、字符串、布尔值是四种基本类型。
## 列表与字典
列表用方括号,字典用花括号。列表推导式非常常用。
### 函数定义
使用 def 关键字定义函数,支持默认参数与关键字参数。
```python
n = int(input())
total = 0
count_above_60 = 0
scores = []
min_score = float('inf')
max_score = -float('inf')
for i in range(n):
while True:
items = int(input(f"请输入第{i+1}个学生的成绩: "))
if 0 <= items <= 100:
break
print("分数无效,请重新输入")
scores.append(items)
total += items
if items > max_score:
max_score = items
if items < min_score:
min_score = items
if items > 60:
count_above_60 += 1
print("=====成绩统计结果=====")
print(f"所有成绩: {scores}")
print(f"最高分: {max_score}")
print(f"最低分: {min_score}")
print(f"平均分: {total / n}")
print(f"60分以上学生人数: {count_above_60}")
print(f"60分以上学生占比: {count_above_60 / n * 100}%")
```
@@ -1,23 +0,0 @@
***
title: 向量数据库与相似度检索
tags: 向量数据库, 检索
---------------
# 向量数据库
向量数据库用于存储高维向量并支持近似最近邻检索。
常用相似度度量有余弦相似度与欧氏距离。
## sqlite-vec
sqlite-vec 是一个轻量的 SQLite 向量扩展,支持 vec0 虚拟表。
可以存储 float32 向量,并通过 KNN 查询相近向量。
## 混合检索
结合全文检索与向量检索,用 RRF 融合排序结果。
-10
View File
@@ -1,10 +0,0 @@
---
title: Notes Agentic 项目说明
tags: 项目
---
# 项目说明
这是一个 AI 笔记软件,支持 Markdown 块级索引与混合检索。
后端基于 FastAPI,检索使用 SQLite FTS5 与 sqlite-vec 向量检索。
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "notes-agent-backend"
version = "0.5.1-alpha"
version = "0.5.2-alpha1"
description = "Notes Agent 的 FastAPI 基础壳子"
readme = "README.md"
requires-python = ">=3.11"
+21 -2
View File
@@ -1,5 +1,24 @@
"""PyInstaller 条目;应用程序包包含在构建脚本中"""
from app.sidecar import main
"""PyInstaller 条目;分派桌面 Core 与受限的内部工作进程"""
from __future__ import annotations
from pathlib import Path
import sys
PDF_RENDER_WORKER = "--opennexus-pdf-render"
def main(argv: list[str] | None = None) -> int:
"""冻结程序不能使用 ``python -m``,因此在固定入口显式分派 PDF Worker。"""
args = sys.argv if argv is None else argv
if len(args) == 5 and args[1] == PDF_RENDER_WORKER:
from app.export.browser_pdf import print_snapshot
print_snapshot(Path(args[2]), Path(args[3]), args[4])
return 0
from app.sidecar import main as sidecar_main
return sidecar_main()
if __name__ == "__main__":
raise SystemExit(main())
+56
View File
@@ -1,12 +1,68 @@
import asyncio
from pathlib import Path
import subprocess
import sys
import pytest
from app.contracts import ExportRequest
from app.export import service
from app.export.document import ExportResult
from app.export import browser_pdf
from app.export.browser_pdf import render_snapshot, browser_executable
def test_renderer_command_dispatches_frozen_build_to_sidecar_entry(monkeypatch, tmp_path):
source, output = tmp_path / 'snapshot.html', tmp_path / 'document.pdf'
monkeypatch.setattr(sys, 'frozen', True, raising=False)
assert browser_pdf.renderer_command(source, output, 'A4') == [
sys.executable, '--opennexus-pdf-render', str(source), str(output), 'A4'
]
def test_frozen_render_worker_isolated_from_core_bootstrap(monkeypatch):
calls = []
monkeypatch.setattr(sys, 'frozen', True, raising=False)
def run(command, **kwargs):
calls.append((command, kwargs))
Path(command[3]).write_bytes(b'%PDF-frozen')
return subprocess.CompletedProcess(command, 0, '', '')
monkeypatch.setattr(browser_pdf.subprocess, 'run', run)
result = render_snapshot('<h1>Frozen</h1>', 'A4')
command, kwargs = calls[0]
assert command[1] == '--opennexus-pdf-render'
assert kwargs['stdin'] is subprocess.DEVNULL
assert kwargs['timeout'] == browser_pdf.PDF_RENDER_TIMEOUT_SECONDS
assert result.content == b'%PDF-frozen'
def test_browser_render_timeout_is_bounded(monkeypatch):
def run(command, **kwargs):
raise subprocess.TimeoutExpired(command, kwargs['timeout'])
monkeypatch.setattr(browser_pdf.subprocess, 'run', run)
with pytest.raises(RuntimeError, match='timed out'):
render_snapshot('<h1>Timeout</h1>', 'A4')
def test_browser_render_falls_back_in_process_when_worker_fails(monkeypatch):
class Failed:
returncode = 1
stderr = 'desktop child launch failed'
monkeypatch.setattr(browser_pdf.subprocess, 'run', lambda *args, **kwargs: Failed())
called = {}
def fallback(source, output, page_size):
called['page_size'] = page_size
output.write_bytes(b'%PDF-fallback')
monkeypatch.setattr(browser_pdf, 'print_snapshot', fallback)
result = render_snapshot('<h1>Fallback</h1>', 'Letter')
assert result.content == b'%PDF-fallback'
assert called == {'page_size': 'Letter'}
def test_browser_snapshot_uses_print_pipeline(monkeypatch):
calls=[]
def render(html,size):
+21
View File
@@ -0,0 +1,21 @@
from pathlib import Path
import sidecar_entry
from app.export import browser_pdf
def test_frozen_entry_dispatches_pdf_worker_before_core_bootstrap(monkeypatch, tmp_path):
source = tmp_path / 'snapshot.html'
output = tmp_path / 'document.pdf'
source.write_text('<h1>Worker</h1>', encoding='utf-8')
calls = []
def print_snapshot(source_path: Path, output_path: Path, page_size: str):
calls.append((source_path, output_path, page_size))
monkeypatch.setattr(browser_pdf, 'print_snapshot', print_snapshot)
result = sidecar_entry.main([
'opennexus-core.exe', '--opennexus-pdf-render', str(source), str(output), 'A4'
])
assert result == 0
assert calls == [(source, output, 'A4')]
+1 -1
View File
@@ -1108,7 +1108,7 @@ wheels = [
[[package]]
name = "notes-agent-backend"
version = "0.5.1-alpha"
version = "0.5.2a1"
source = { virtual = "." }
dependencies = [
{ name = "cryptography" },