scplus mcp
为特工和操作员准备索引代码情报。
scplus-mcp 是的仓库和npm包 scplus,一个本地代码智能引擎,从经过验证的repo本地索引中提供结构化、精确查询、相关搜索和研究工作流。它运送三个相互连接的表面: scplus-mcp 用于编码代理的MCP服务器,用于自动化的持久本地网桥,以及 scplus-cli 人类泡泡茶操作员控制台。
该项目围绕一个操作合同构建:构建一个准备好的本地索引,一次从一个经过验证的活动生成中读取,当新鲜度或验证被破坏时,会大声失败,而不是从陈旧状态悄悄地回答。
目录
主要特点
- 为确定性查找准备了精确的查询工具,例如
symbol,word,outline,deps,status,以及changes - 对持久文件、块、标识符、结构、集群和中心工件进行排名相关搜索和广泛研究
- MCP和人类CLI共享一个后端核心,CLI通过持久化连接
bridge-serveJSON线路传输 - Repo本地SQLite机器状态根于
.scplus/,具有主动/待定代推广和明确fresh,dirty,以及blocked新鲜状态 - 无效准备状态的大声失败语义,而不是无声的回退行为
- 根据准备好的完整索引生成的建议中心和语义集群
- 阴影恢复点,用于可逆的人工智能编辑,而不会改变git历史记录
- 下一个单独的Next.js着陆/docs应用程序
landing/,在开发过程中连接到本地包 - 承诺的真实基准工件
docs/benchmarks/
命名和产品表面
此存储库使用了几个在不同上下文中很重要的名称:
| 表面 | 当前名称 |
|---|---|
| 公共npm包 | scplus-mcp |
| 公共MCP命令 | scplus-mcp |
| 公共人工CLI命令 | scplus-cli |
| 产品/品牌名称 | scplus |
| 当前源使用的Repo本地状态目录 | .scplus/ |
| 当前源使用的运行时环境前缀 | SCPLUS_ |
重要背景:
- 这 当前源代码 用途
.scplus/作为repo本地状态根src/core/project-layout.ts. - 当前代码使用的运行时环境前缀为
SCPLUS_.
如果代码和文档不一致,则将代码视为权威代码。
技术栈
- 主要语言:TypeScript(ESM)
- MCP传输:
@modelcontextprotocol/sdk超过stdio - 准备状态存储:SQLite位于
.scplus/state/index.sqlite - 解析:
web-tree-sitter和tree-sitter-wasms - 检索:词法加嵌入支持的检索持久化到SQLite向量集合中
- 嵌入后端:默认情况下为Ollama,可选择与OpenAI兼容的嵌入
- 人工CLI:Go+奶茶
- Go工具链管理:Pixi(
go = 1.24.*) - 登陆/docs应用程序:Next.js 16、React 19、顺风CSS 4、OpenNext/CCloudflare工具
- 主包管理器:npm
先决条件
在操作存储库之前安装这些:
- Node.js
- npm
- 小精灵
- Git
语义索引通常也需要:
- 奥拉玛,除非您明确选择与OpenAI兼容的嵌入后端
可选:
- 包子,如果你愿意的话
bunx生成MCP配置时,而不是npx
笔记:
- 存储库当前未发送已签入的邮件
.env.example. - 核心包的规范入职路径是安装脚本,而不是从内存中键入的手动npm和pixi命令。
入门指南
规范安装路径
对于主要的开发人员/操作员工作流程,请从安装程序开始:
git clone https://github.com/Cesar514/scplus-mcp.git
cd scplus-mcp
./install-scplus.sh对待 ./install-scplus.sh 作为包和CLI的主要本地设置路径。下面记录了手动构建步骤,以便您了解安装程序正在做什么,但预期的引导流程是通过脚本进行的。
什么 ./install-scplus.sh 做
安装程序:
- 验证
node - 验证
npm - 验证
pixi - 跑
npm install - 跑
npm run build - 跑
npm run build:cli - 跑
npm link - 验证
scplus-mcp指向build/index.js - 验证
scplus-cli指向build/cli-launcher.js - 运行轻量级
scplus-mcp tree "$ROOT_DIR"检查 - 运行轻量级
scplus-cli doctor --root "$ROOT_DIR"检查
如果缺少任何先决条件,脚本将致命退出,而不是猜测。
安装后您应该拥有什么
成功运行后:
scplus-mcp应该在你的PATHscplus-cli应该在你的PATH- TypeScript构建输出应该存在于
build/ - 泡泡茶发射器应该存在于
build/scplus-cli
快速验证:
scplus-mcp doctor .
scplus-cli doctor --root .编辑后重建
编辑TypeScript或Go源代码后,用以下代码重建两个已发布的入口点:
npm run build:all这将更新已链接的 scplus-mcp 和 scplus-cli 命令到位是因为 npm link 将它们指向此签出的构建输出。
存储库的启动准备状态
安装命令后,创建准备好的仓库本地状态:
scplus-mcp index .然后验证它:
scplus-mcp validate-index .最强的成功信号是一个有效的准备好的索引,其中:
- 一个活跃的一代
- 除非正在进行重建,否则没有待定的生成
- 食用新鲜度报告为
fresh
验证面向用户的曲面
从存储库根目录运行这些命令:
scplus-mcp tree .
scplus-mcp status .
scplus-cli snapshot --root .
scplus-cli doctor --root .这些证实了什么:
- MCP入口点可运行
- 可以访问精确的查询/git感知曲面
- 共享后端可以为Go操作员控制台提供服务
- 链接的人工CLI针对相同的后端状态工作
正在开发登陆应用程序
着陆/文档应用程序 landing/ 是一个独立的应用程序,有自己的依赖关系。仅当您正在编辑网站本身时才执行此操作:
cd landing
npm install
npm run dev着陆应用程序在 http://localhost:6767.
MCP客户端设置
支持的客户端目标
这 init 命令可以为以下对象生成MCP配置:
claudecursorvscodewindsurfopencodecodex
生成的配置路径:
| 目标 | 输出路径 |
|---|---|
claude | .mcp.json |
cursor | .cursor/mcp.json |
vscode | .vscode/mcp.json |
windsurf | .windsurf/mcp.json |
opencode | opencode.json |
codex | .codex/config.toml |
自动生成配置文件
示例:
scplus-mcp init claude
scplus-mcp init cursor
scplus-mcp init vscode
scplus-mcp init windsurf
scplus-mcp init opencode
scplus-mcp init codex跑步者选择:
- 默认情况下,该命令更喜欢
bunx当它检测到Bun并回落到npx - 你可以强迫跑步者
--runner=npx或--runner=bunx
示例:
scplus-mcp init codex --runner=npx
scplus-mcp init claude --runner=bunx手动Codex TOML配置
如果您想在使用本地安装脚本后手动配置Codex,请将其添加到 ~/.codex/config.toml:
[mcp_servers."scplus-mcp"]
command = "scplus-mcp"
args = []
[mcp_servers."scplus-mcp".env]
OLLAMA_EMBED_MODEL = "qwen3-embedding:0.6b-32k"
OLLAMA_CHAT_MODEL = "nemotron-3-nano:4b-128k"
OLLAMA_API_KEY = "YOUR_OLLAMA_API_KEY"
SCPLUS_EMBED_BATCH_SIZE = "8"如果你喜欢跑步 npx 或 bunx 生成的Codex配置遵循相同的结构,但设置如下,而不是本地链接命令:
command = "npx"和args = ["-y", "scplus-mcp"],或command = "bunx"和args = ["scplus-mcp"]
JSON样式MCP配置示例
对于使用JSON配置文件的客户端,生成的配置遵循以下一般形状:
{
"mcpServers": {
"scplus-mcp": {
"command": "bunx",
"args": ["scplus-mcp"],
"env": {
"OLLAMA_EMBED_MODEL": "qwen3-embedding:0.6b-32k",
"OLLAMA_CHAT_MODEL": "nemotron-3-nano:4b-128k",
"OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY",
"SCPLUS_EMBED_BATCH_SIZE": "8"
}
}
}
}确切的顶级密钥因客户端而异:
mcpServers克劳德/光标/风帆风格配置servers对于VS代码.vscode/mcp.jsonmcp为了opencode.json- 食品法典委员会的TOML表格
模型和嵌入提供者
关于此仓库中Ollama型号名称的重要说明
此存储库中显示的模型标签,特别是:
qwen3-embedding:0.6b-32knemotron-3-nano:4b-128k
应被解读为 在维护环境中使用的本地Olama变体,而不是声称这些是该项目发明的完全定制的模型系列。
根据当前维护人员的工作流程:
- 基本模型是从Ollama官方来源下载的
- 然后,本地设置修改了上下文窗口配置
因此,在实践中,README示例记录了项目当前的本地运行时标签和期望,而不是断言存储库本身分发新的模型架构。
提供商概述
该代码支持两种嵌入提供程序模式:
| 提供者模式 | 环境值 | 典型用途 |
|---|---|---|
| 奥拉马 | ollama | 本地/私有嵌入 |
| OpenAI兼容 | openai | 通过与OpenAI兼容的端点的API支持嵌入 |
奥拉玛之路
默认代码路径为Ollama。典型的本地设置如下:
ollama pull qwen3-embedding:0.6b
ollama pull nemotron-3-nano:4b
ollama serve然后,如果您的本地环境使用扩展上下文变量或自定义本地标记,请配置以下env值 scplus-mcp 实际上应该使用:
export OLLAMA_EMBED_MODEL=qwen3-embedding:0.6b-32k
export OLLAMA_CHAT_MODEL=nemotron-3-nano:4b-128kOpenAI兼容路径
对于API支持的嵌入:
export SCPLUS_EMBED_PROVIDER=openai
export SCPLUS_OPENAI_API_KEY=YOUR_API_KEY
export SCPLUS_OPENAI_EMBED_MODEL=text-embedding-3-small可选自定义基URL:
export SCPLUS_OPENAI_BASE_URL=https://your-proxy.example.com/v1建筑
目录结构
.
├── src/ # TypeScript MCP server, backend core, indexing, retrieval, and tool implementations
│ ├── cli/ # Shared backend core, bridge commands, doctor/report formatting
│ ├── core/ # Project layout, embeddings, parser runtime, locks, lifecycle helpers
│ ├── git/ # Shadow restore-point logic
│ └── tools/ # Public indexing, query, lint, research, hub, and recovery tools
├── cli/ # Go Bubble Tea operator console
│ ├── cmd/scplus-cli/ # Go CLI entrypoint
│ └── internal/ # Backend client, hubs flow, watcher integration, UI rendering
├── landing/ # Separate Next.js marketing/docs application
├── docs/ # Architecture notes, benchmark artifacts, snapshots, and images
├── test/ # TypeScript tests, demos, and fixtures
├── .scplus/ # Generated repo-local prepared state
├── package.json # Root package metadata and Node build/test scripts
├── pixi.toml # Project-local Go toolchain and CLI tasks
└── install-scplus.sh # Canonical local install script运行时曲面
存储库公开了三个不同但相互连接的运行时表面:
| 表面 | 目的 | 支持实施 |
|---|---|---|
scplus-mcp | 面向代理的MCP服务器和CLI风格的本地命令 | src/index.ts |
bridge / bridge-serve | 共享后端核心上的结构化本地自动化接口 | src/cli/commands.ts |
scplus-cli | 人工操作员控制台和一些直接的Go子命令 | cli/cmd/scplus-cli/main.go |
重要约束:
- Go CLI是 不 第二索引引擎
- 它是MCP服务器使用的相同后端核心的客户端
请求的生命周期
对于代理/MCP请求:
Agent or MCP client
-> scplus-mcp (src/index.ts)
-> shared backend core / tool implementation
-> prepared index in .scplus/state/index.sqlite
-> formatted MCP response对于人工操作员请求:
scplus-cli
-> Go backend client
-> persistent bridge-serve session
-> shared backend core
-> prepared index in .scplus/state/index.sqlite
-> operator UI panes / plain-text output服务和发电合同
由当前代码和架构文档记录的准备好的州合同是:
- 一个活跃的一代是真理的源泉
- 重建和维修可以先写入待定的一代
- 只有在验证成功后,才会提升待定代
- 服务新鲜度是明确的,可以
fresh,dirty,或blocked - 无效或阻塞的准备状态应该大声失败,而不是默默降级
简短的权威架构概述 architecture.md.
查询模型
代码库实现了一个双通道查询模型:
- 精确车道:
symbol,word,outline,deps,status,changes - 分级车道:
search和intent="related" - 宽阔的报告通道:
research
产品契约是,精确查找仍然是最便宜的确定性路径,更广泛的检索只有在精确查找不足时才会运行。
项目状态布局
当前代码使用此仓库本地状态根:
.scplus/
├── state/
│ └── index.sqlite
├── hubs/
│ └── suggested/
└── locks/在索引后的当前结账中观察到:
.scplus/state/index.sqlite.scplus/hubs/suggested/.scplus/locks/
当前源代码使用 .scplus/.
核心组件图
src/core/
project-layout.ts定义.scplus/布局embeddings.ts管理提供程序支持的嵌入、SQLite向量命名空间、运行时选项和生成感知缓存无效tree-sitter.ts和parser.ts提供结构解析runtime-locks.ts协调跨流程所有权process-lifecycle.ts管理空闲关机、父级监控和清理
src/tools/
index-codebase.ts,index-stages.ts,以及index-reliability.ts驱动器索引、验证和修复exact-query.ts实现快速精确查询底层query-intent.ts,unified-ranking.ts,semantic-search.ts,以及semantic-identifiers.ts实施排名搜索research.ts构建更大的有界子系统报告feature-hub.ts,hub-suggestions.ts,以及cluster-artifacts.ts实现中心和集群视图static-analysis.ts和blast-radius.ts提供诊断和使用情况跟踪propose-commit.ts和write-freshness.ts实现保护写入和同步新鲜度修复
cli/
cli/cmd/scplus-cli/main.go是Go入口点吗cli/internal/backend/是网桥客户端层cli/internal/ui/呈现操作员控制台cli/internal/hubs/支持手动创建中心
操作员控制台行为
附带的人工CLI不仅仅是一个薄薄的包装。之前的README的高价值描述仍然足够准确,可以保持较高的水平:
- 它有一个导航窗格、概述/内容窗格、详细信息窗格和作业/日志区域
- 它公开了操作员健康状况、服务状态、队列状态、历史记录和可观察性
- 它支持命令面板、过滤、导出和导航历史记录
- 它通过持久化流式传输后端事件
bridge-serve运输
提交的普通快照位于 cli-snapshot.txt.
监视器和调度器语义
后端,而不是Go前端,拥有观察者行为:
- 默认情况下不使用本机递归文件系统监视器
- 有界后端扫描程序覆盖预算目录和文件标记中的存储库
- 对突发路径更改进行重复数据消除
- 调度程序可以排队或取代过时的待处理工作
- 普通编辑可以变成刷新作业
- 依赖关系/配置更改可能升级为完整索引作业
- 作业、监视和日志事件被流式传输
bridge-serve - 诊断报告扫描程序状态、本机监视计数、扫描程序队列大小和上次完全覆盖时间
环境变量
存储库没有签入 .env.example,所以来源就是权威。下表反映了在 src/core/embeddings.ts, src/index.ts,以及生成的配置助手。
供应商选择和型号配置
| 变量 | 必需 | 目的 | 默认/来源 |
|---|---|---|---|
SCPLUS_EMBED_PROVIDER | 否 | 选择嵌入提供程序模式 | ollama |
OLLAMA_EMBED_MODEL | 否 | Ollama嵌入模型标签 | qwen3-embedding:0.6b-32k |
OLLAMA_CHAT_MODEL | 否 | 生成的配置示例中使用了聊天模型 | nemotron-3-nano:4b-128k |
OLLAMA_HOST | 否 | 覆盖Ollama主机 | 未设置 |
OLLAMA_API_KEY | 有条件 | 仅当您的Ollama设置需要身份验证时才需要 | 未设置 |
SCPLUS_OPENAI_API_KEY | 条件性 | 首选OpenAI兼容API密钥,当提供程序为 openai | 未设置 |
OPENAI_API_KEY | 条件性 | API键的回退别名 | 未设置 |
SCPLUS_OPENAI_BASE_URL | 否 | 首选OpenAI兼容基本URL | https://api.openai.com/v1 |
OPENAI_BASE_URL | 否 | 基本URL的回退别名 | https://api.openai.com/v1 |
SCPLUS_OPENAI_EMBED_MODEL | 否 | 首选的OpenAI兼容嵌入模型 | text-embedding-3-small |
OPENAI_EMBED_MODEL | 否 | 嵌入模型的回退别名 | text-embedding-3-small |
索引、分块和刷新行为
| 变量 | 必需 | 目的 | 默认/来源 |
|---|---|---|---|
SCPLUS_EMBED_BATCH_SIZE | 否 | 嵌入批量大小,夹在代码中 | 8 |
SCPLUS_EMBED_CHUNK_CHARS | 否 | 在向量合并之前阻塞字符,在代码中夹紧 | 2000 |
SCPLUS_MAX_EMBED_FILE_SIZE | 否 | 支持嵌入的搜索路径的最大文件大小 | 中的工具回退 semantic-search.ts |
SCPLUS_SCAN_MAX_DIRS_PER_TICK | 否 | 每个有界观察者标记扫描的最大目录数 | 32 |
SCPLUS_SCAN_MAX_FILES_PER_TICK | 否 | 每个有界观察者标记的指纹最大文件数 | 256 |
SCPLUS_SCAN_MAX_MS_PER_TICK | 否 | 每刻度最大扫描毫秒数 | 100 |
SCPLUS_SCAN_STAT_CONCURRENCY | 否 | 每个扫描标记的最大并发文件统计调用数 | 16 |
SCPLUS_SCAN_RESCAN_INTERVAL_MS | 否 | 观看时使用的扫描仪勾选间隔上限 | 1000 |
SCPLUS_WATCH_MAX_PENDING_PATHS | 否 | 升级到完全重建之前的最大详细待定路径 | 5000 |
SCPLUS_WATCH_EVENT_PATH_SAMPLE | 否 | 一个流式事件负载中包含的最大更改路径数 | 100 |
SCPLUS_IDLE_TIMEOUT_MS | 否 | MCP进程的空闲关机超时 | 未设置 |
SCPLUS_PARENT_POLL_MS | 否 | 父进程轮询间隔 | 未设置 |
高级Ollama运行时选项
| 变量 | 必需 | 目的 |
|---|---|---|
SCPLUS_EMBED_NUM_GPU | 否 | 通过 num_gpu 进入Ollama嵌入选项 |
SCPLUS_EMBED_MAIN_GPU | 否 | 通过 main_gpu 进入Ollama嵌入选项 |
SCPLUS_EMBED_NUM_THREAD | 否 | 通过 num_thread 进入Ollama嵌入选项 |
SCPLUS_EMBED_NUM_BATCH | 否 | 通过 num_batch 进入Ollama嵌入选项 |
SCPLUS_EMBED_NUM_CTX | 否 | 通过 num_ctx 进入Ollama嵌入选项 |
SCPLUS_EMBED_LOW_VRAM | 否 | 通过 low_vram 进入Ollama嵌入选项 |
可用脚本
根包脚本
| 命令 | 描述 |
|---|---|
npm run build | 将TypeScript MCP服务器编译为 build/ |
npm run build:cli | 使用Pixi构建Go奶茶CLI |
npm run build:all | 构建TypeScript服务器和Go CLI |
npm run dev | 在监视模式下运行TypeScript |
npm start | 启动已构建的节点入口点 |
npm test | 运行主TypeScript测试套件 |
npm run test:cli | 通过Pixi运行Go CLI测试套件 |
npm run test:demo | 运行演示/测试线束 |
npm run test:all | 运行所有Node和Go测试套件 |
登陆应用程序脚本
运行这些从 landing/:
| 命令 | 描述 |
|---|---|
npm run dev | 在端口上启动Next.js登录应用程序 6767 |
npm run build | 构建登陆应用程序 |
npm run start | 在端口上运行内置的着陆应用程序 6767 |
npm run lint | 点击着陆应用程序 |
npm run cf:build | 构建OpenNext/CCloudflare目标 |
npm run cf:preview | 构建并运行Cloudflare预览版 |
npm run cf:deploy | 构建和部署Cloudflare目标 |
scplus-mcp 本地命令界面
当你奔跑时 scplus-mcp 作为shell命令 ./install-scplus.sh,它支持CLI风格的本地命令和MCP stdio服务器模式。
| 命令 | 目的 | 重要标志/表格 |
|---|---|---|
scplus-mcp init | 为生成客户端配置 claude, cursor, vscode, windsurf, opencode,或 codex | --runner=npx, --runner=bunx |
scplus-mcp index [path] | 构建或刷新已准备好的仓库本地状态 | --mode=core, --mode=full |
scplus-mcp tree [path] | 渲染结构树 | --json, --headers-only, --max-tokens= |
scplus-mcp skeleton | 渲染文件骨架 | --root=, --json |
scplus-mcp validate-index [path] | 验证准备状态 | --mode=core, --mode=full, --json |
scplus-mcp validate_index [path] | 别名为 validate-index | 与上述旗帜相同 |
scplus-mcp repair-index [path] --target= | 维修准备状态 | --json |
scplus-mcp repair_index [path] --target= | 别名为 repair-index | --json |
scplus-mcp status [path] | 呈现支持git的状态摘要 | --limit=, --json |
scplus-mcp changes [path] | 呈现支持git的更改摘要 | --path=, --limit=, --json |
scplus-mcp cluster [path] | 呈现持久化语义集群输出 | --max-depth=, --max-clusters=, --json |
scplus-mcp hubs [path] | 渲染中心输出 | --hub-path=, --feature-name=, --query=, --ranking-mode=, --show-orphans, --json |
scplus-mcp find-hub [path] | 别名风格中心发现入口点 | 与相同的标志 hubs |
scplus-mcp restore-points [path] | 渲染还原点历史记录 | --json |
scplus-mcp restore_points [path] | 别名为 restore-points | --json |
scplus-mcp doctor [path] | 打印健康/可观察性综合报告 | --json |
scplus-mcp bridge | 运行一次性结构化后端命令 | 见下桥表 |
scplus-mcp bridge-serve | 启动持久JSON行桥服务 | 无标志 |
scplus-mcp [path] | 仅在给定路径或当前目录 | 路径上启动MCP stdio服务器 |
当前在中实现的shell条目别名 src/cli/commands.ts 是:
validate-index和validate_indexrepair-index和repair_indexrestore-points和restore_pointshubs和find-hub
MCP资源和工具目录
公共MCP资源
MCP服务器公开了一个资源:
| 资源 | URI | 目的 |
|---|---|---|
scplus_mcp_instructions | scplus-mcp://instructions | 从已发布的指令源URL获取当前的repo指令markdown |
完整的公共MCP工具列表
当前注册的公共MCP工具 src/index.ts:
索引和导航工具
| 工具 | 目的 | 关键参数 | |||||
|---|---|---|---|---|---|---|---|
index | 创建或刷新 .scplus/ 准备状态 | `mode?: "core" | "full"` | ||||
validate_index | 验证准备好的索引的一致性和版本兼容性 | `mode?: "core" | "full"` | ||||
repair_index | 修复准备好的索引阶段或完整模式,然后进行验证 | `target: "core" | "full" | "bootstrap" | "file-search" | "identifier-search" | "full-artifacts"` |
tree | 渲染结构存储库树 | target_path?, depth_limit?, include_symbols?, max_tokens? | |||||
skeleton | 显示一个文件的详细签名和类型表面 | file_path | |||||
cluster | 呈现持久的语义集群和子系统视图 | max_depth?, max_clusters? | |||||
find_hub | 列出、排名、检查或孤立检查手册/建议的中心 | hub_path?, feature_name?, query?, ranking_mode?, show_orphans? |
精确查询工具
| 工具 | 目的 | 关键参数 |
|---|---|---|
symbol | 从准备好的快速查询基板中精确查找符号 | query, top_k? |
word | 微小索引单词/短语查找 | query, top_k? |
outline | 压缩已知文件的导入/导出/符号轮廓 | file_path |
deps | 一个索引文件的直接和反向依赖关系信息 | target |
status | 小git工作树摘要 | limit? |
changes | Git更改摘要,可选范围为一个文件 | path?, limit? |
搜索和研究工具
| 工具 | 目的 | 关键参数 |
|---|---|---|
search | 意图在准备好的工件上进行精确或相关的搜索 | intent, search_type, query, retrieval_mode?, top_k?, include_kinds? |
research | 结合检索、结构、集群和中心的广义报告 | query |
evaluate | 运行内置的真实基准测试工具 | 无参数 |
分析、写入和恢复工具
| 工具 | 目的 | 关键参数 |
|---|---|---|
blast_radius | 修改或删除前跟踪符号使用情况 | symbol_name, file_context? |
lint | 运行本机linter/编译器支持的分析 | target_path? |
checkpoint | 创建还原点时保护写入路径 | file_path, new_content |
restore_points | 列出阴影还原点 | 无参数 |
restore | 从特定还原点还原文件 | point_id |
桥梁和自动化表面
存储库有两个非MCP本地自动化界面:
bridge一次性JSON输出bridge-serve用于持久JSON行会话scplus-cli以及本地工具
bridge 子指令
一枪 bridge wrapper公开了这些子命令:
| 子命令 | 目的 | 键标志/args |
|---|---|---|
doctor | 以JSON格式返回医生输出 | --root= |
tree | 以JSON格式返回树输出 | --root=, --headers-only, --max-tokens= |
status | 以JSON格式返回工作树状态 | --root=, --limit= |
changes | 以JSON格式返回更改摘要 | --root=, --path=, --limit= |
restore-points | 以JSON格式返回还原点 | --root= |
validate-index | 以JSON格式返回验证报告 | --root=, --mode= |
cluster | 以JSON格式返回集群输出 | --root=, --max-depth=, --max-clusters= |
hubs / find-hub | 以JSON格式返回集线器输出 | --root=, --hub-path=, --feature-name=, --query=, --ranking-mode=, --show-orphans |
symbol | 返回精确的符号结果和新鲜度标题 | ` 或 --query=, --root=, --top-k=` |
word | 返回单词结果加上新鲜度标题 | ` 或 --query=, --root=, --top-k=` |
outline | 返回轮廓有效载荷和新鲜度标题 | ` 或 --file-path=, --root=` |
deps | 返回依赖有效载荷加上新鲜度标头 | ` 或 --target=, --root=` |
search | 返回搜索报告和新鲜度标题 | ` 或 --query=, --root=, --intent=, --search-type=, --retrieval-mode=, --top-k=, --include-kinds=a,b` |
research | 返回研究报告和新鲜度标题 | ` 或 --query=, --root=, --top-k=, --include-kinds=a,b, --max-related=, --max-subsystems=, --max-hubs=` |
lint | 返回棉绒/静电分析报告 | --root=, `--target-path= |
| ` | ||
blast-radius | 返回爆炸半径报告 | ` 或 --symbol-name=, --root=, --file-context=` |
checkpoint | 返回检查点报告 | ` 或 --file-path=, --root=, --new-content=` |
restore | 返回恢复有效负载 | ` |
或 --point-id=, --root=` | ||
repair-index | 返回维修有效载荷 | --root=, --target= |
持久 bridge-serve 协议
bridge-serve 使用以下框架形状运行一个长期JSON行会话:
{"type":"request","id":1,"command":"doctor","args":{"root":"."}}
{"type":"response","id":1,"ok":true,"result":{...}}
{"type":"event","kind":"log","message":"..."}持久共享命令执行器支持上面列出的所有内容以及这些后端控制命令:
| 持久命令 | 目的 |
|---|---|
index | 通过共享后端触发索引或刷新工作 |
job-control | 控制排队工作 cancel-pending, retry-last,或 supersede-pending |
watch-set | 启用或禁用观看,可选地使用去抖动覆盖 |
shutdown | 请求持久网桥服务关闭 |
桥接层的别名注释:
find-hub和hubs标准化到相同的实现上- 下划线形式在适用的情况下被标准化为连字符形式
validate-index和repair-index是规范的网桥名称
仅持久化命令参数
| 命令 | 关键参数 | ||
|---|---|---|---|
index | root, `mode?: "auto" | "core" | "full"` |
job-control | root, `action: "cancel-pending" | "retry-last" | "supersede-pending"` |
watch-set | root, enabled, debounceMs? | ||
shutdown | 没有 |
人机界面
Go操作员控制台显示为 scplus-cli.
支持直接 scplus-cli 子指令
| 命令 | 目的 | 重要参数 | ||
|---|---|---|---|---|
scplus-cli | 启动交互式操作员控制台 | 可选 --root= | ||
scplus-cli doctor --root . | 打印纯文本健康报告 | --root= | ||
scplus-cli snapshot --root . | 渲染一次UI快照并退出 | --root= | ||
| `scplus-cli index --root . [auto | core | full]` | 触发器索引通过后端工作 | --root= 以及可选的位置模式 |
scplus-cli tree --root . | 打印准备好的树状图 | --root= | ||
scplus-cli hubs --root . | 打印集线器输出 | --root= | ||
scplus-cli cluster --root . | 打印集群输出 | --root= | ||
scplus-cli restore-points --root . | 打印还原点历史记录 | --root= | ||
scplus-cli hub-create --root . --title \"...\" --summary \"...\" --files \"a,b,c\" | 创建手动中心文件 | --title, --summary, --files, --root= |
scplus-cli 只有上面列出的直接shell子命令。更大的面向操作员的命令集位于交互式UI内,并通过持久化路由 bridge-serve 后端会话。
人工CLI功能
基于当前的UI实现和之前的README仍然有用的上下文:
- 动画/运营商品牌的顶部外壳
- 在概述、树、中心、还原点、集群、依赖关系、搜索、研究、lint、爆炸半径、检查点、状态和更改之间键入导航
- 所选项目和导出就绪内容的详细视图
- 由后端事件提供的作业和日志窗格
- 命令面板、筛选、历史记录和导出操作
- 共享后端会话结束
bridge-serve - 后端拥有的观察者/调度器状态在操作员体验中浮出水面
内部暴露的交互式操作员命令 scplus-cli
Bubble Tea UI公开了比直接shell子命令更广泛的动作目录。这些命令可以从命令面板和侧边栏操作列表(如适用)中获得。
| 操作员命令 | 它的作用 | 倒车面 |
|---|---|---|
exit | 退出操作员控制台 | 本地UI操作 |
activity | 返回主操作界面 | 本地UI操作 |
back | 在导航历史记录中向后移动 | 本地UI操作 |
forward | 在导航历史记录中前进 | 本地UI操作 |
overview | 打开健康和可观察性概述 | 本地UI视图 |
tree | 打开准备好的树部分 | bridge-serve tree |
hubs | 打开手册和建议的中心 | bridge-serve hubs |
issue | 打开当前问题/详细信息视图 | 本地UI视图 |
log | 打开后端日志历史窗格 | 流式传输 bridge-serve 事件 |
restore | 打开还原点和恢复状态 | bridge-serve restore-points |
cluster | 开放持久语义集群 | bridge-serve cluster |
status | 打开git工作树状态表 | bridge-serve status |
changes | 打开已更改的文件统计信息和范围 | bridge-serve changes |
search | 打开排名搜索输出 | bridge-serve search |
symbol | 打开精确符号输出 | bridge-serve symbol |
index | 通过共享后端触发索引 | bridge-serve index |
retry-index | 重新运行上次同步策略 | bridge-serve job-control |
refresh | 刷新可见的后端支持部分 | 重复的网桥刷新调用 |
cancel-pending | 在开始前放下排队的手表 | bridge-serve job-control |
supersede-pending | 用最新计划替换过时的排队工作 | bridge-serve job-control |
watch | 启用或禁用观察者驱动的刷新 | bridge-serve watch-set |
new-hub | 启动手动集线器创建流程 | 本地UI向导和集线器创建 |
export | 将活动窗格或详细信息内容导出到 .scplus/exports/ | 本地UI操作 |
help | 打开键绑定和行为帮助 | 本地UI覆盖 |
find-hub | 按自然语言查询对枢纽进行排名 | bridge-serve hubs / find-hub |
exact | 运行精确混合搜索 | bridge-serve search |
search-related | 运行相关排名搜索 | bridge-serve search |
research | 构建基于广泛解释的报告 | bridge-serve research |
file | 找到一个精确的文件/路径,并在搜索中打开它 | bridge-serve search |
go-symbol | 找到一个精确的符号并在搜索中打开它 | bridge-serve search |
symbol-lookup | 直接运行精确的符号查找 | bridge-serve symbol |
word | 直接运行精确单词查找 | bridge-serve word |
outline | 将准备好的大纲加载到一个文件中 | bridge-serve outline |
deps | 为一个文件加载直接和反向依赖关系 | bridge-serve deps |
lint | 运行本机lint诊断程序 | bridge-serve lint |
blast-radius | 跟踪整个仓库中的符号使用情况 | bridge-serve blast-radius |
checkpoint-detail | 通过检查点流将当前详细信息窗格保存到repo文件 | bridge-serve checkpoint |
restore-point | 按id还原一个阴影还原点 | bridge-serve restore |
人类CLI键绑定
当前的UI连接直接在Go操作员控制台中公开了这些交互模式:
:或Ctrl+P打开命令面板。/从部分过滤开始。b和f在导航历史中前后移动。e将当前窗格或详细信息内容导出到.scplus/exports/.?打开帮助覆盖。Tab和Shift+Tab在窗格和覆盖层之间移动焦点。- 箭头键+
j/k浏览列表和表格。 Enter打开所选行或确认活动提示操作。Esc退出覆盖、提示或聚焦模式。- 在侧边栏、内容、详细信息、作业和日志窗格中支持鼠标滚轮和指针焦点。
基准测试
已提交的基准工件是由以下实际评估工具生成的 docs/benchmarks/.
- 人类可读摘要: 最新.md
- 机器可读报告: latest.json
已检入基准汇总中的当前承诺数字:
| 车道 | 样本 | p50ms | p95ms | p99ms |
|---|---|---|---|---|
| 精确 | 5 | 3.14 | 4.07 | 4.07 |
| 相关 | 7 | 55.95 | 57.64 | 57.64 |
| 研究 | 3 | 63.52 | 64.23 | 64.23 |
| 质量类别 | 通过 | 总计 |
|---|---|---|
| 场景覆盖率 | 10 | 10 |
| 精确查找精度 | 5 | 5 |
| 相关搜索相关性 | 4 | 4 |
| 符号分辨率精度 | 3 | 3 |
| 依赖图精度 | 3 | 3 |
| 中心建议质量 | 4 | 4 |
| 研究质量 | 3 | 3 |
当前提交的运行还记录了:
22黄金操作员问题0/4写入失败后过时0/2恢复失败251树保姆解析247解析器重用
这很重要,因为基准测试套件不仅在执行索引延迟,还在执行验证质量、重命名/写入新鲜度和断开状态行为。
参考文献
- zilliztech/claude上下文:影响产品方向的代码库上下文工作流、存储库导航模式和面向代理的上下文工具的现有技术。
许可证
该项目根据MIT许可证获得许可。看 许可证 全文。
