
Craft Agents v0.3.1 技术解析基于 ripgrep 的全量会话搜索与轻量 Mini Agents 架构【免费下载链接】craft-agents-oss项目地址: https://gitcode.com/GitHub_Trending/cr/craft-agents-ossCraft Agents v0.3.1代号 Session Search Mini Agents是一次聚焦检索效率与轻量任务执行能力的重要迭代它带来了基于 ripgrep 的跨会话全文搜索以及针对配置类小任务的 Mini Agents 精简执行链路。本文将以官方发布说明 0.3.1.md 为骨架结合仓库源码逐层拆解这两大特性的实现原理、交互细节与底层工程决策并同步梳理本版本的构建系统变化、Bug 修复与工程清理工作。一、Session Search全量会话即时检索1.1 能力概览会话搜索允许用户在全部历史会话中即时查找内容核心卖点包括全文搜索基于 ripgrep 的全文检索即使拥有数千个会话也能瞬间返回结果智能过滤只搜索用户消息与助手消息自动过滤掉系统噪音system noise结果预览在会话列表中直接显示匹配片段snippet实时高亮输入过程中实时高亮匹配文本快速导航通过 chevron 按钮在匹配项之间跳转自动滚动到会话中对应文本位置全局计数匹配计数器显示所有会话中的总命中次数并自动展开分页的轮次以揭示更早的匹配。1.2 入口与快捷操作按Cmd/Ctrl F或点击侧边栏中的搜索图标即可启动搜索。输入 2 个及以上字符后自动进入搜索模式isSearchMode searchActive searchQuery.length 2这一阈值定义在 useSessionSearch.ts 中可有效避免单字符查询带来的无效检索与闪烁。搜索框组件为 SessionSearchHeader.tsx其状态行会在三种状态间切换检索进行中显示 Loading 动画检索服务不可用如远程服务器未安装 ripgrep显示错误提示session.searchUnavailable检索完成显示结果数量超过展示上限时显示100。1.3 底层实现从 Hook 到 IPC 的调用链搜索能力由 renderer 侧的useSessionSearchHook 驱动其数据流清晰可循防抖与取消查询变更后经过100ms的setTimeout防抖同时生成唯一searchId用于日志追踪与过期结果丢弃cancelled标志位IPC 调用通过window.electronAPI.searchSessionContent(workspaceId, searchQuery, searchId)发起检索其方法签名定义在 apps/electron/src/shared/types.ts 的ElectronAPI接口中映射到RPC_CHANNELS.sessions.SEARCH_CONTENT通道见 channel-map.ts结果组装返回的SessionSearchResult[]被聚合为MapsessionId, { matchCount, snippet }其中 snippet 取首个匹配的文本片段用于会话列表中的预览展示错误分级错误信息中包含SearchUnavailableError或ripgrep字样时判定为搜索服务不可用典型场景是远程服务器缺少 ripgrep 二进制否则视为普通检索错误。1.4 排序与展示策略搜索结果的排序采用标题相关性优先、命中数次之的策略见 useSessionSearch.ts会话标题对查询的模糊匹配得分fuzzyScore来自craft-agent/shared/search更高的排在前面标题均不匹配时按命中次数matchCount降序排列。在展示层面有明确的性能保护机制单次最多展示100 条搜索结果MAX_SEARCH_RESULTS超出时状态行显示100初始渲染50 条INITIAL_DISPLAY_LIMIT滚动接近底部距底部不足 200px时以50 条/批BATCH_SIZE增量加载仅对可见匹配做高亮处理保证滚动流畅性搜索开启时输入框自动获得焦点searchInputRef.current?.focus()关闭搜索或新建会话时退出搜索模式。此外搜索还支持与既有过滤器联动当存在状态status、标签label或视图view等筛选条件时结果会被拆分为符合当前筛选与其他结果两组matchingFilterItems/otherResultItems避免用户在海量命中中迷失方向。1.5 与既有筛选体系的协同搜索并不独立于会话管理体系运行。Hook 内部先过滤隐藏会话、按最近活跃时间排序再叠加sessionMatchesCurrentFilter含状态、标签、视图、星标、归档等筛选逻辑实现搜索 筛选的组合查询。分组按日期/状态/未读/项目与折叠分页computeCollapsedPagination同样对搜索结果生效折叠组会以仅含头部的占位组形式呈现并计入总数保持 UI 一致。二、Mini Agents轻量化的聚焦编辑代理2.1 设计动机完整的 Claude Code 式代理对于修改状态、编辑标签这类配置小任务而言过于沉重。Mini Agents 正是为此而生使用精简的 system prompt只为特定任务保留必要工具与上下文避免无关工具和上下文对模型产生干扰从而换取更快、更便宜的执行。2.2 源码中的 Mini Agent 配置模型在 base-agent.ts 中定义了MiniAgentConfig接口它是整个 Mini Agent 能力的契约核心export interface MiniAgentConfig { /** Whether mini agent mode is enabled */ enabled: boolean; /** Allowed tools for mini agent mode */ tools: readonly string[]; /** MCP server keys to include (others filtered out) */ mcpServerKeys: readonly string[]; /** Thinking/reasoning should be minimized */ minimizeThinking: boolean; }四个字段分别对应开关、工具白名单、MCP 服务白名单、推理抑制四项约束enabled控制该模式是否生效tools限定允许调用的工具集合从源头杜绝无关工具带来的上下文污染mcpServerKeys仅注入白名单内的 MCP 服务其余被过滤minimizeThinking指示推理过程最小化配合更轻的模型实现低延迟响应。该配置在claude-agent.ts中被集中复用避免 Claude/Codex 等代理实现之间的重复说明 Mini Agent 模式是作为通用代理能力的一部分统一实现的。2.3 模型选择策略Mini Agents 可配置使用更快的模型如 Haiku来完成不需要完整推理能力的简单任务。其模型选择逻辑位于 llm-connections.ts 的getMiniModel()Anthropic 连接优先寻找 id/name 中含 haiku 的模型Pi 连接优先寻找含 mini 或 flash 的模型其他提供方取模型列表中的最后一个。该函数同时被 Mini Agent、标题生成与迷你补全mini completions复用属于一套通用的轻量模型解析机制。同文件中的isDeniedMiniModelId()还针对认证形态做了保护codex-mini-latest一律被拒绝Pi SDK 不支持而在 ChatGPT 账号piAuthProvider openai-codex下所有*codex-mini*变体都会被排除防止运行时被后端拒单。Pi 侧的适配层在 event-adapter.ts 中维护miniModel字段仅当调用方未显式指定模型时才用连接的 miniModel 填充args.model从而保证 UI 徽标展示的有效默认值同时尊重调用方的显式选择该行为有专门的回归测试守卫见event-adapter-call-llm.test.ts。2.4 内联执行 UI 与可拖动 PopoverMini Agent 的执行过程通过新的紧凑型进度面板内联展示在 popover 中展示最近3 条活动及其描述显示正在处理的文件路径与模式pattern成功/错误消息以 Markdown 渲染。同时编辑类 popover 新增了抓手grip handle可被拖放到屏幕任意位置避免遮挡正在编辑的内容。三、本版本的其他改进3.1 设置与交互打磨设置界面Settings screen的视觉与交互细节优化浏览器打开行为browser open behavior改进粘贴行为paste behavior修复。这些改动集中于 Electron 渲染层与浏览器集成相关模块属于日常体验层面的持续打磨。3.2 构建系统优化简化 CI 构建工作流开发版dev builds的构建流程得到简化新增single_targets输入支持按需构建单个平台二进制避免为一次小改动触发全平台构建显著缩短 CI 等待时间升级 Bun 1.3.7运行时与包管理器版本同步更新相关依赖以bun.lock锁定。3.3 Bug 修复清单修复项说明Microsoft OAuth必须显式配置microsoftService不再默认回退到 Outlook营销官网修复底部下载下拉框不可用的问题搜索 UX修复匹配计数闪烁错误数字的问题搜索 UX修复搜索期间切换会话时焦点被抢占的问题搜索 UX新建会话时自动退出搜索模式代码清理移除死代码重构重复逻辑其中搜索相关的三项 UX 修复与本文第一部分的内容一脉相承计数显示以100/精确数字策略避免闪烁对应 SessionSearchHeader.tsx 中的exceededLimit分支焦点管理则与 Hook 中的searchInputRef自动聚焦逻辑直接相关。3.4 版本规模本次版本共95 个文件变更、约 6,000 行新增代码并发布了自 v0.3.0 起的完整变更日志。从规模上看Session Search 与 Mini Agents 是本次迭代的绝对主体。四、总结v0.3.1 通过两条主线提升了 Craft Agents 的日常使用体验Session Search以 ripgrep 为检索引擎通过防抖 IPC 增量分页 可见高亮的完整链路把数千会话中找一句话压缩到毫秒级并将搜索结果与既有状态/标签/视图筛选体系无缝融合Mini Agents以MiniAgentConfig开关、工具白名单、MCP 白名单、推理抑制为契约配合提供方感知的 mini 模型选择策略实现了针对配置类任务的低成本、低延迟、聚焦化执行并在 popover 中提供可拖动的内联进度展示。对于希望深入理解实现细节的读者建议依次阅读 useSessionSearch.ts搜索管线、SessionSearchHeader.tsx搜索 UI、channel-map.tsIPC 通道映射、base-agent.tsMini Agent 配置契约与 llm-connections.tsmini 模型解析即可从 UI 到内核完整串起这两大特性的技术脉络。【免费下载链接】craft-agents-oss项目地址: https://gitcode.com/GitHub_Trending/cr/craft-agents-oss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考