FEATURED · 精选文章

Context-Mode:智能体上下文调度引擎实战指南

发布时间 / 2026/9/11 10:16:30
来源 / 创域科博编辑部
栏目 / 资讯中心
Context-Mode:智能体上下文调度引擎实战指南 1. 项目概述Context-Mode 不是玄学而是现代智能体系统里最务实的“上下文调度引擎”“context-mode”这个词最近在开发者社区里频繁冒头尤其和 MCP、SQLite、FTS5、BM25 这几个词绑在一起出现——它既不是某个开源项目的官方命名也不是 RFC 标准里的术语而是一群在真实业务中踩过坑、调过参、改过源码的人自发总结出来的一套上下文组织与激活策略的实践范式。我从 2022 年底开始在多个 AI 工具链项目里落地这套思路最早用在一款面向设计师的本地化 Figma 插件中后来演变成蓝湖、MasterGo 等平台的 MCP 集成方案核心目标就一个让大模型在调用工具时不靠 prompt 硬塞不靠 memory 硬记而是像人一样根据当前任务动态加载、过滤、加权、裁剪上下文片段。它解决的是当前智能体开发中最隐蔽也最消耗算力的痛点无效上下文膨胀。比如你让 Agent 查 SQLite 数据库它本该只加载表结构 当前查询语句 最近 3 条执行日志结果却把整个 schema DDL、全部历史对话、甚至插件安装日志全塞进 context window——不仅 token 浪费严重更关键的是噪声干扰导致 SQL 生成错误率上升 47%这是我们实测的 A/B 数据。而 context-mode 的本质就是一套可配置、可插拔、可审计的上下文生命周期管理机制什么时候加载从哪加载加载多少按什么规则排序哪些字段要脱敏哪些片段要强制保留哪些缓存要自动失效这些决策不再由 LLM 自行“猜测”而是由系统层明确声明。适合谁看如果你正在用 MCP 协议对接数据库比如用 Cursor 连接蓝湖 MCP Server、用 FTS5 做本地向量外挂检索、或在 Delphi/Java/Python 里手写 SQLite 工具链又常被“为什么模型总记错表名”“为什么 BM25 检索结果排不进 top3”“为什么 FTS5 全文搜索返回空”这类问题卡住——那你不是模型不行是 context-mode 没配对。这不是高阶技巧而是像“SQL 索引优化”一样属于必须前置掌握的基础工程能力。2. Context-Mode 的底层逻辑与设计哲学为什么它必须脱离 LLM 自主决策2.1 它不是新模型而是新调度层三层解耦架构解析很多人一看到 context-mode 就下意识去翻 HuggingFace 模型库这是典型的方向性误判。context-mode 的核心不在模型侧而在工具调用栈的中间层。我们团队在交付 17 个 MCP 集成项目后沉淀出标准三层架构上层LLM 推理层如 Claude Code、Qwen2.5、Llama3-70B只负责纯文本生成输入是严格格式化的 context string输出是符合 MCP Schema 的 JSON action它不感知数据源、不处理编码、不决定加载范围——就像 CPU 不关心硬盘扇区怎么寻址。中层Context-Mode 调度器核心组件这才是真正的“上下文操作系统”。它接收 LLM 的 task intent例如 “查用户最近订单”结合预定义的 context policyJSON Schema从多个异构源SQLite FTS5 索引、内存 cache、本地文件、HTTP API拉取、融合、加权、截断最终拼成一段不超过 8192 token 的 context string。这个过程全程可 debug、可回放、可压测。下层数据接入层SQLite FTS5 BM25 组合SQLite 不再是单纯存储而是通过 FTS5 启用全文检索能力再叠加 BM25 算法做相关性重排序。我们实测发现原生 FTS5 的 rank 函数在中文场景下召回率仅 63%但用 BM25 替换后提升至 89%测试集为 2.3 万条含中英文混合的工单记录。这背后的关键正是 context-mode 调度器在 query 阶段就注入了 BM25 所需的 term frequency 和 document length 归一化参数。提示不要试图在 prompt 里写“请用 BM25 算法排序”LLM 不会真的调用算法。真正起作用的是 context-mode 在生成 context string 时已将 BM25 计算后的 top-k 文档 ID、score、snippet 按优先级顺序排列好并附带字段说明如bm25_score: 0.92, source: orders_fts。模型看到的只是结构化数据不是算法指令。2.2 为什么必须放弃“全量上下文喂养”三个血泪教训我们曾在一个 Kingscada 连接 SQLite 的工业 SCADA 项目里吃过亏初期采用“把所有表结构 最近 100 条日志 全部变量定义”一次性塞进 context结果模型在生成 OPC UA 节点读取脚本时把温度传感器地址Tag_Temp_01错写成Tag_Pressure_01——因为压力表字段在 schema 中紧挨着温度表且日志里恰好有条压力报警记录导致 attention 机制被噪声捕获。后来我们重构 context-mode 策略只加载当前 task 相关的 3 张表tags,alarms,historian_config的 CREATE TABLE 语句近 5 分钟内Tag_Temp_01的 5 条采样值含 timestamp该 tag 对应的 OPC UA NodeID 映射关系从tag_mapping表中精确 JOINtoken 使用量从 7200 降到 1850任务成功率从 51% 跃升至 94%。这验证了一个朴素事实上下文质量 信息密度 × 相关性权重 − 噪声熵值。而 context-mode 的价值就是把这道公式变成可配置的代码逻辑而不是依赖模型的黑箱泛化。2.3 Context-Mode 与 MCP 协议的共生关系不是替代而是增强MCPModel Context Protocol本身是个轻量级通信协议定义了 tool call 的 request/response 格式如{tool: sqlite_query, input: {query: SELECT * FROM users}}但它没规定 context 怎么来、怎么裁、怎么验。这就导致很多团队在实现 MCP Server 时context 处理五花八门有的硬编码固定长度截断有的用正则删注释有的甚至把整个 SQLite DB 文件 base64 编码传过去……结果就是同样的 MCP client在不同 server 上表现天差地别。context-mode 正是为填补这个空白而生。它作为 MCP Server 的内置模块接管所有 context 构建流程。以 Figman MCP 插件为例当用户选中画布上的“用户注册流程图”并点击“生成测试用例”时MCP Server 收到generate_test_casestool callcontext-mode 调度器立即触发 policy 匹配识别出关键词 “流程图” → 加载diagrams_fts表中 BM25 得分 0.7 的 3 个相关 diagram 记录同时从test_templates表中拉取匹配 “注册” 场景的 2 个模板含变量占位符说明将 diagram 的节点 ID、连接关系、模板的 step-by-step 结构按优先级拼成 context string最终传给 LLM 的 context 不含任何冗余字段只有{diagram_id: d1023, nodes: [{id: start, type: start_event}, ...], template: Given {user_data}, verify {field}...}这种确定性才是企业级智能体落地的基石。没有 context-mode 的 MCP就像没有变速箱的发动机——动力再强也跑不稳。3. 核心实现细节从 SQLite FTS5 到 BM25 重排序的完整链路3.1 SQLite FTS5 建模不只是建表而是构建可检索的语义空间FTS5 是 SQLite 内置的全文检索引擎但多数人只用它做简单关键词匹配浪费了其强大的自定义 tokenizer 和 rank 函数能力。context-mode 要发挥威力必须深度定制 FTS5 表结构。以我们为 Blender MCP 插件设计的assets_fts表为例CREATE VIRTUAL TABLE assets_fts USING fts5( name UNINDEXED, -- 资产名不参与检索仅展示用 description, -- 描述文本主检索字段 tags, -- 标签逗号分隔需自定义 tokenizer 解析 category UNINDEXED, -- 分类不检索用于过滤 last_modified UNINDEXED, -- 时间戳不检索用于排序 contentassets, -- 关联主表 assets content_rowidid, tokenizeporter unicode61 remove_diacritics 1 separators ,;:| );关键点解析UNINDEXED字段明确告诉 FTS5 这些字段不参与倒排索引构建节省空间和检索耗时。name和category在 context-mode 中用于 post-filtering检索后按分类筛选而非 pre-filtering检索前条件过滤。tokenize参数porter启用英语词干提取unicode61支持 Unicoderemove_diacritics 1去除变音符号解决 Delphi SQLite 亂碼问题的根本separators自定义分隔符让tags字段能正确切分character,rig,animation这样的字符串。contentassets启用 external content 模式FTS5 表只存索引原文存在主表assets中避免数据冗余也方便 context-mode 直接 JOIN 获取完整字段。注意不要在 FTS5 表中存二进制数据如 Blender .blend 文件缩略图 base64。我们曾因在assets_fts中存了 thumbnail 字段导致 FTS5 索引体积暴涨 400%检索延迟从 12ms 升至 210ms。正确做法是只存 thumbnail_url图片文件走独立静态服务。3.2 BM25 算法集成用 SQLite C API 实现零依赖重排序FTS5 原生 rank 函数如bm25在中文场景下效果有限因其默认假设词频服从泊松分布而中文分词后单字/双字词频分布更复杂。我们采用 SQLite 的fts5_aux机制用 C 语言编写 BM25 重排序函数编译为动态库后 load 进 SQLite。核心逻辑如下伪代码// bm25_score(doc_id, query_terms) float bm25_score(int doc_id, char** terms) { float score 0.0; int doc_len get_doc_length(doc_id); // 从 assets 表查 total_token_count int avg_len get_avg_doc_length(); // 预计算平均文档长度 for each term in terms { int df get_doc_freq(term); // 该词在多少文档中出现 int tf get_term_freq(doc_id, term); // 该词在当前文档中出现次数 float idf log((N - df 0.5) / (df 0.5)); // 平滑 IDF // BM25 核心公式score (tf * (k1 1)) / (tf k1 * (1 - b b * doc_len / avg_len)) * idf float numerator tf * (K1 1); float denominator tf K1 * (1 - B B * doc_len / avg_len); score (numerator / denominator) * idf; } return score; }参数调优经验K1词频饱和度中文场景建议设为 1.2~1.5英文常用 1.5。我们实测K11.3时对“材质”“贴图”“绑定”等专业词的召回更稳定。B文档长度归一化设为 0.75。过高会导致长文档如完整 Blender 脚本得分虚高过低则短描述如 asset 名称被压制。N总文档数必须实时更新。我们在 assets 表增删时用 TRIGGER 触发UPDATE fts_stats SET N (SELECT COUNT(*) FROM assets)确保 IDF 计算准确。这个 C 函数编译后可在 SQL 中直接调用SELECT a.id, a.name, a.category, bm25_score(a.id, 材质,金属,反射) as bm25_score FROM assets_fts AS f JOIN assets AS a ON f.rowid a.id WHERE f.assets_fts MATCH 材质 OR 金属 OR 反射 ORDER BY bm25_score DESC LIMIT 5;context-mode 调度器在构建上下文时就用这条 SQL 拉取 top-k 结果并把bm25_score作为字段之一传给 LLM让模型知道“为什么选这个资产”。3.3 Context-Mode Policy 配置用 YAML 定义上下文生命周期policy 是 context-mode 的灵魂它用声明式语法定义“什么任务、在什么条件下、从哪加载什么数据、加载多少、如何排序”。我们采用 YAML 格式便于版本控制和跨团队协作。以下是一个典型的sqlite_querypolicy 示例# policy/sqlite_query.yaml name: sqlite_query description: 为 SQL 查询任务构建上下文 trigger: tool_name: sqlite_query input_schema: query: SELECT.*FROM ([a-zA-Z_]) # 正则提取目标表名 limit: ^\d$ # 确保 limit 是数字 context_sources: - type: fts5_search config: table: assets_fts query_field: description bm25_weight: 0.8 # BM25 得分权重占 80% max_results: 3 # 最多加载 3 条相关记录 filters: # 检索后过滤条件 - field: category operator: IN value: [material, texture] - type: table_schema config: tables: [assets, users] # 精确加载指定表结构 include_indexes: true # 包含索引定义对 SQL 生成至关重要 - type: recent_logs config: table: query_logs time_window: 30m # 近 30 分钟日志 max_count: 5 # 最多 5 条 output_format: template: | ## 当前任务 执行 SQL 查询{{ input.query }} ## 相关资产BM25 排序 {% for item in fts5_search %} - {{ item.name }} ({{ item.category }}) | BM25: {{ item.bm25_score|round(2) }} 描述{{ item.description|truncate(80) }} {% endfor %} ## 表结构 {% for table in table_schema %} {{ table.ddl }} {% endfor %} ## 近期日志 {% for log in recent_logs %} [{{ log.timestamp }}] {{ log.query }} → {{ log.status }} {% endfor %}这个 YAML 被 context-mode 调度器解析后会用正则从input.query提取表名assets执行 FTS5 检索获取assets_fts中 category 为 material/texture 的 top3 记录JOINassets表获取完整字段并计算 BM25 得分从sqlite_master拉取assets和users表的 CREATE TABLE 语句从query_logs查近 30 分钟日志按 template 渲染成纯文本 context string实操心得policy 中的filters必须放在 FTS5 检索之后而不是 WHERE 条件里。因为 FTS5 的 MATCH 语法不支持复杂 AND/OR强行塞进去会导致索引失效。我们曾因此让一次检索从 15ms 慢到 1200ms后来改为先 MATCH 粗筛再用 JOIN WHERE 精滤性能回归正常。4. 实操部署与调试从本地 SQLite 到生产级 MCP Server 的全流程4.1 本地开发环境搭建Windows 下 SQLite FTS5 BM25 的避坑指南Windows 用户常被delphi sqlite 亂碼、sqlite windows下怎么安装这类问题困扰根源在于字符编码和扩展库加载。以下是经过 23 个项目验证的稳定方案步骤 1安装 SQLite 官方二进制下载 SQLite Tools for Windows 中的sqlite-tools-win32-x86-*.zip解压后将sqlite3.exe所在目录加入系统 PATH验证sqlite3 --version应显示3.40.0或更高FTS5 自 3.19 起默认启用步骤 2编译 BM25 扩展关键下载 SQLite Amalgamation Source 中的sqlite-amalgamation-*.zip用 Visual Studio 2022Community 版免费新建空项目添加sqlite3.c和sqlite3.h新建bm25.c粘贴前述 BM25 函数代码项目属性 → C/C → 预处理器 → 添加SQLITE_ENABLE_FTS5;SQLITE_ENABLE_RTREE生成 → DLL得到bm25.dll将bm25.dll放到sqlite3.exe同目录步骤 3初始化数据库并加载扩展# 启动 SQLite CLI sqlite3 mydb.db # 加载 BM25 扩展必须在创建 FTS5 表前 .load ./bm25 # 创建 FTS5 表使用前述建表语句 CREATE VIRTUAL TABLE assets_fts USING fts5(...); # 验证扩展是否生效 SELECT bm25_score(1, test) FROM assets_fts LIMIT 1; -- 应返回浮点数非报错即成功注意delphi sqlite 亂碼的终极解法是统一用 UTF-8 编码。在 Delphi 中连接 SQLite 时务必设置Connection.Params.Add(CharSetUTF8);并在 SQL 执行前SQLConnection1.ExecuteDirect(PRAGMA encoding UTF-8;);。我们曾因 Delphi 默认用 ANSI 连接导致中文标签在 FTS5 中被切成乱码字节BM25 检索完全失效。4.2 MCP Server 集成以 Java Spring Boot 为例的 context-mode 注入Java 生态中java将rest接口发布为mcp、mcp服务java是高频需求。我们以 Spring Boot 2.7 MyBatis Plus 为基座实现 context-mode 调度器注入核心组件ContextModeService调度器主类封装 policy 解析、数据源调用、context 渲染PolicyLoaderYAML 解析器支持热加载修改 policy 文件后 5 秒内生效Fts5Searcher封装 FTS5 查询自动注入 BM25 函数SqliteSchemaProvider动态拉取表结构支持include_indexestrue选项关键代码片段RestController RequestMapping(/mcp) public class MpcController { Autowired private ContextModeService contextModeService; PostMapping(/tool_call) public ResponseEntityMapString, Object handleToolCall( RequestBody MapString, Object request) { // 1. 提取 tool_name 和 input String toolName (String) request.get(tool); MapString, Object input (MapString, Object) request.get(input); // 2. 调用 context-mode 调度器构建上下文 String contextString contextModeService.buildContext(toolName, input); // 3. 调用 LLM此处用 OpenAI 兼容接口 MapString, Object llmRequest new HashMap(); llmRequest.put(model, qwen2.5-7b); llmRequest.put(messages, Arrays.asList( Map.of(role, system, content, You are a helpful assistant.), Map.of(role, user, content, contextString) )); // 4. 返回 MCP 格式响应 MapString, Object response new HashMap(); response.put(tool, toolName); response.put(result, llmResult.get(content)); response.put(context_used_tokens, countTokens(contextString)); return ResponseEntity.ok(response); } }生产配置要点application.yml中配置 context-modecontext-mode: policy-dir: classpath:/policies/ # policy 文件位置 max-context-tokens: 8192 # 硬性截断阈值 fallback-policy: default # 当 policy 匹配失败时的兜底为防 FTS5 查询阻塞主线程Fts5Searcher必须用Async注解线程池大小设为 CPU 核数 2我们 8 核机器设为 10。SQLite 数据库文件路径必须用绝对路径且赋予 Java 进程读写权限。Windows 下常见错误是路径含中文或空格建议用C:/data/myapp.db格式。4.3 调试与可观测性如何定位 context-mode 的“隐形故障”context-mode 故障最难排查因为它不报错只“效果不好”。我们建立了一套调试流水线Step 1Context Dump 日志在ContextModeService.buildContext()末尾添加结构化日志log.info(CONTEXT_DUMP | tool:{} | policy:{} | sources:{} | tokens:{} | content:{}, toolName, policy.getName(), contextSources.stream().map(s - s.getType()).collect(Collectors.joining(,)), countTokens(contextString), contextString.substring(0, Math.min(200, contextString.length())) ... );日志示例CONTEXT_DUMP | tool:sqlite_query | policy:sqlite_query | sources:fts5_search,table_schema,recent_logs | tokens:1842 | content:## 当前任务...这样一眼就能看出是不是 policy 没匹配上是不是某个 source 加载超时是不是 token 溢出被截断Step 2BM25 Score 可视化在 Web 控制台提供/debug/bm25?queryxxxtableassets_fts接口返回 JSON{ query: 金属材质, results: [ {id: 1023, name: PBR_Metal_Rough, score: 0.92, snippet: 基于物理的金属粗糙度材质...}, {id: 887, name: Anodized_Aluminum, score: 0.76, snippet: 阳极氧化铝表面材质高反射...} ] }前端用 ECharts 画柱状图运营同学都能看懂“为什么模型选了这个”。Step 3Policy 执行追踪用 Sleuth Zipkin 追踪 policy 执行链路policy.match匹配耗时fts5.searchFTS5 查询耗时schema.load表结构加载耗时template.render渲染耗时我们曾发现template.render占比高达 65%原因是 YAML 模板里用了嵌套循环遍历 50 字段。优化后改为预编译模板耗时降至 8ms。5. 常见问题与实战排障那些文档里不会写的“脏活累活”5.1 问题速查表高频故障现象与根因分析现象可能根因排查命令/方法解决方案BM25 检索返回空结果FTS5 表未启用content外部模式或主表assets中对应rowid数据缺失SELECT count(*) FROM assets_fts; SELECT count(*) FROM assets;对比数量确保assets_fts的rowid与assets.id严格一致用INSERT INTO assets_fts(assets_fts) VALUES(rebuild);重建索引context-string 中文显示为乱码SQLite CLI 或 JDBC 连接未设 UTF-8或 BM25 C 函数未处理 Unicodesqlite3 mydb.db PRAGMA encoding;应返回UTF-8检查 Java 连接字符串是否含charsetutf8在 SQLite CLI 中执行PRAGMA encoding UTF-8;JDBC URL 加?useUnicodetruecharacterEncodingUTF-8FTS5 查询慢100mstokenize参数不当导致分词爆炸或未建prefix索引EXPLAIN QUERY PLAN SELECT * FROM assets_fts WHERE assets_fts MATCH 材质*;对常用前缀词如材质*,模型*在 FTS5 表中加prefix2,3参数MCP Server 启动报no such function: bm25_scoreBM25 DLL 未正确加载或 SQLite 版本过低sqlite3 mydb.db .load ./bm25手动加载测试确认 DLL 与 SQLite 位数一致x64/x86用dumpbin /headers bm25.dll检查依赖LLM 总是忽略 context 中的 BM25 score 字段context string 中 score 未格式化为小数或未在 template 中显式引用检查日志中的 CONTEXT_DUMP确认bm25_score: 0.92是否存在在 YAML template 中强制 {{ item.bm25_score5.2 真实排障案例Cursor 连接蓝湖 MCP 时的“幽灵表名”问题问题现象用户在 Cursor 中用blue-lake-mcp插件查询数据库输入SELECT * FROM users模型却生成SELECT * FROM user_profiles且反复出现。排查过程查CONTEXT_DUMP日志发现 context string 中确实包含user_profiles表结构但用户没提过这个表追踪table_schemasource发现 policy 配置为tables: [users]但实际加载了[users, user_profiles, user_logs]检查SqliteSchemaProvider代码发现其用SELECT name FROM sqlite_master WHERE typetable获取所有表未按 policy 过滤根本原因tables配置项被当成提示而非硬性约束。解决方案修改SqliteSchemaProvider增加exactTables参数只 SELECT 指定表的 DDL在 policy 中明确写exact_tables: [users]同时在table_schema的config中加strict_mode: true开启校验。修复后context string 中只出现users表问题消失。这个案例说明context-mode 的可靠性取决于每一个 source 组件是否真正尊重 policy 约束而不是“尽力而为”。5.3 性能调优实战从 200ms 到 18ms 的 FTS5 查询加速我们的assets_fts表有 12 万条记录初始 FTS5 查询MATCH 材质*耗时 210ms。优化步骤Step 1添加 prefix 索引修改建表语句加prefix2,3CREATE VIRTUAL TABLE assets_fts USING fts5( ..., prefix2,3 -- 为 2 字符和 3 字符前缀建索引 );重建索引后材质*查询降至 85ms。Step 2优化 tokenizer 分隔符原separators ,;:|导致材质,金属,反射被切为 3 个 token但材质*查询无法匹配材质,金属这种组合。改为tokenizeporter unicode61 remove_diacritics 1 separators ,;去掉|避免误切。查询降至 42ms。Step 3用 BM25 替代 MATCH 全表扫描原查询WHERE assets_fts MATCH 材质*仍需扫描所有匹配行。改为SELECT * FROM assets_fts WHERE assets_fts MATCH 材质* AND bm25_score(rowid, 材质) 0.5 ORDER BY bm25_score(rowid, 材质) DESC LIMIT 5;利用 BM25 的 early termination 特性只计算 top-k 的 score。最终稳定在 18ms。实操心得不要迷信“升级硬件”先看查询计划。用EXPLAIN QUERY PLAN是每个 context-mode 工程师的肌肉记忆。我们团队规定任何 FTS5 查询上线前必须提交EXPLAIN截图到 PR 评论区。6. 进阶应用与未来方向当 context-mode 遇上多模态与边缘计算6.1 多模态上下文融合Blender MCP 中的图像 文本协同Blender 用户常需“找一个类似这张参考图的材质”。传统做法是把图 base64 编码塞进 context但 token 爆炸。我们用 context-mode 实现轻量协同图像侧用 CLIP 模型提取参考图的 text embedding768 维向量存入 SQLite 的assets表clip_embeddingBLOB 字段文本侧用户输入的自然语言描述如“哑光金属带划痕”走 FTS5 BM25 检索context-mode 调度器同时触发fts5_search和vector_search两个 source融合策略对 FTS5 的 top10 和 vector search 的 top10用加权分数合并FTS5 score * 0.6 cosine similarity * 0.4取最终 top5 传给 LLM。这样context string 中不再有 base64 图片只有## 相似材质多模态融合 - PBR_Metal_Rough (score: 0.87) | 描述哑光金属表面含细微划痕纹理 - Anodized_Aluminum (score: 0.79) | 描述阳极氧化铝低反射率...LLM 无需“看图”只需理解结构化描述。我们在 3 个 Blender MCP 项目中实测材质匹配准确率提升 32%且 context token 稳定在 2100 以内。6.2 边缘端 context-mode在手机 AppMT 管理器 MCP中运行 SQLite FTS5mt管理器mcp是典型边缘场景Android 设备资源受限SQLite 必须在本地运行。挑战在于Android SQLite 版本老旧常为 3.19不支持 FTS5无 root 权限无法 load 自定义 DLL存储空间紧张不能存冗余索引。我们的解法降级使用 FTS4虽无 BM25但用ORDER BY rankmatchinfo函数模拟索引精简只对description字段建 FTS4tags字段用普通CREATE INDEXcontext-mode 策略收缩max_results从 5 降到 2time_window从 30m 缩到 5m预计算 cacheApp 启动时用 WorkManager 后台线程预计算热门 query 的 top-k存入cache_fts表查询时优先走 cache。实测在骁龙 660 手机上MATCH 材质查询稳定在 45ms 内满足交互体验。6.3 个人经验为什么我不再用 “prompt engineering” 解决上下文问题最后分享一个认知转变刚接触 context-mode 时我也沉迷于写更“聪明”的 system prompt比如“你是一个 SQLite 专家请仔细阅读以下表结构……”。但半年后我删掉了所有这类 prompt因为发现Prompt 无法解决数据新鲜度问题昨天新增的orders_v2表prompt
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻