mcpField
C
CostAffective-MCP

CostAffective-MCP

本地服务
github.com/okyashgajjar开发工具2212 周前更新

关于 CostAffective-MCP

CostAffective-MCP(CostWise)是一个本地 MCP 服务,为 AI 编码助手提供代码搜索、符号查找、调用关系和引用追踪。它通过本地索引与 stash、recall、remember 工具减少长会话中的上下文占用与提示缓存成本。

主要功能

  1. 01基于 Tree-sitter 与 SQLite 的本地符号索引
  2. 02代码搜索、符号定位与完整函数体读取
  3. 03引用查找与调用方查找
  4. 04stash_context 暂存大体积内容并返回短句柄
  5. 05remember 与 recall 持久化和检索关键事实
  6. 06支持 11 种编程语言

适用场景

  1. 01在大型仓库中快速定位符号定义与调用链
  2. 02将长构建日志暂存到上下文之外,需要时再按查询取回
  3. 03在长时间编码会话中保存架构决策与入口说明

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 search_code、find_symbol、read_symbol、remember、stash_context 和 recall 等工具,并通过 instructions 字段传递会话指引。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

CostWise — MCP

CostWise 标志

让编码 Agent 少探索、记得更多,并携带更少上下文。

Go 1.25+ Linux macOS Windows Claude Code Cursor OpenCode GitHub Stars

curl -fsSL https://raw.githubusercontent.com/okyashgajjar/costwise-mcp/main/install.sh | bash

在 Linux、macOS 或 Windows(通过 WSL)上只需一条命令。自动检测操作系统、按需安装 Go、从源代码构建,并连接你的 AI 编码客户端。

为此仓库点亮星标——这能帮助更多人发现 CostWise。

未使用 CostWise
未使用 CostWise
▶ 观看视频
使用 CostWise
使用 CostWise
▶ 观看视频

编码 Agent 应该像经验丰富的工程师一样行事

经验丰富的工程师走进一个代码库时,不会:

  • 每次回答问题时都重新阅读相同的文件。
  • 重新发现十分钟前已经找到的符号。
  • 因为可能以后用得上,就把 5,000 行构建日志都记在脑子里。
  • 永远带着每段对话中的所有细节。

他们记得各项内容的位置,只打开需要的内容。他们记住事实,而不是文件。

大多数 AI 编码 Agent 的做法恰恰相反。它们一遍又一遍地重新探索同一个仓库,把整个文件塞进上下文,不断扩张对话窗口,直到每一轮的成本都变得高昂——不是因为答案难,而是因为窗口中的其他所有内容都必须重新读取并重新缓存。

CostWise 是一个本地 MCP 服务,让编码 Agent 更像那位经验丰富的工程师。它让 Agent 能够快速访问你的仓库,并控制令牌预算——从而不必为了查找少量信息而阅读整个文件。


CostWise 如何解决这个问题

通过 MCP 连接的工具无法控制客户端何时或如何缓存。缓存断点和 TTL 由客户端决定。服务端能控制的只有一个杠杆:

最初进入常驻上下文窗口的令牌数量。

缩小这个窗口,两项成本都会降低:每一轮读取更小的窗口更便宜,缓存失效时重写窗口也更便宜。CostWise 围绕这个目标做了四件事。

1. 从本地索引获取答案,而不是读取文件

CostWise 使用 Tree-sitter 对代码仓库解析一次,并将符号、引用和调用关系存储在本地 SQLite 索引中。导航问题——“这里定义在哪里”“谁调用了它”“哪些地方引用了它”——只需几个 token 即可从索引中获取答案,无需转储源文件。

结果会根据问题类型压缩为适当范围。模型获取的是位置,而不是整个文件;是实现代码块,而不是整个模块;是调用方列表,而不是 grep 输出。

2. 记下事实,而不是反复推导

remember 工具会将一条简短且持久的事实——例如一项决策、入口点或注意事项——保存到每个代码仓库专属的存储中。之后可通过 recall 工具检索。模型原本需要在每轮对话中重新推导或粘贴的事实,只需记录一次,并且仅在相关时读取。

3. 暂存大型输出,而不是直接粘贴到对话中

stash_context 工具会将大型内容——例如文件、命令输出或测试日志——存放在对话之外,并返回一个简短句柄。完整内容会保存在磁盘上,可随时恢复。recall 工具会在 token 预算内,只提取与查询匹配的部分。

将 5,000 行构建日志直接粘贴到对话中,在本次会话的后续每一轮都会被重新读取,并可能重新写入缓存。暂存后只需约 20 个 token(即句柄),并且只会在需要时提取相应部分。

4. 具备会话感知能力的技能,让模型使用以上所有功能

一段简短的指导(约 275 个 token)会通过 MCP 协议的 instructions 字段发送给每个已连接的编辑器。它会在每次会话中教会模型如何使用精简工作流:通过 stash_context 处理大型输出,使用 remember 保存持久事实,并优先进行范围更窄的检索,而不是读取文件。

此外,它还可以安装为原生 Claude Code 技能、AGENTS.md 条目,或任何可读取此类文件的编辑器的规则文件。所有交付方式都使用同一份权威源文件。


支持的语言

CostWise 使用 Tree-sitter AST 解析器为 11 种语言建立索引——符号定义、引用和调用关系都会预先计算并存储在本地 SQLite 索引中。

语言文件扩展名解析器
Go.go原生(专用)
Python.py原生(专用)
JavaScript.js、.jsx、.mjs原生(专用)
TypeScript.ts、.tsx原生(专用)
Rust.rsTree-sitter
Java.javaTree-sitter
C.c、.hTree-sitter
C++.cpp、.cc、.cxx、.hpp、.hhTree-sitter
C#.csTree-sitter
Ruby.rbTree-sitter
PHP.phpTree-sitter

Go、Python、JavaScript 和 TypeScript 使用专用提取器进行更深入的分析;其他七种语言则使用基于 Tree-sitter 通用约定构建的通用规范驱动型提取器。所有语言都支持符号、引用、调用关系和全文搜索。


安装

安装

完整安装指南及针对不同平台的版本:costwise-mcp.vercel.app/docs/install

快速安装(Linux / macOS / Windows(通过 WSL))

推荐方式——一条命令:

curl -fsSL https://raw.githubusercontent.com/okyashgajjar/costwise-mcp/main/install.sh | bash

该脚本会完成所有操作:

  1. 在 Windows 上检测 Git Bash / MSYS,并自动通过 WSL 执行
  2. 检查是否安装了 Go,若未安装则安装
  3. 检查是否安装了 C 编译器(CGO 依赖项),若未安装则安装
  4. 克隆仓库并从源代码构建
  5. 安装到 /usr/local/bin/costwise
  6. 检测 AI 编码客户端,并询问要连接哪些客户端
  7. 为所选客户端配置 MCP(除非使用 --no-skill,否则还会安装会话技能)
Windows(原生 PowerShell)

除非你已安装 Go 和 gcc,否则不推荐此方式。请手动构建:

git clone https://github.com/okyashgajjar/costwise-mcp.git
cd costwise-mcp
$env:CGO_ENABLED=1
go build -o costwise.exe ./cmd/costwise/

或者使用推荐方式——安装 WSL(Windows 10 2004+ / Windows 11):

# In PowerShell as Administrator:
wsl --install

# Then in WSL:
curl -fsSL https://raw.githubusercontent.com/okyashgajjar/costwise-mcp/main/install.sh | bash
macOS / Linux(手动构建)

需要 Go 1.25+ 和 C 编译器(CGO 为必需项——请参阅下方的构建说明)。

git clone https://github.com/okyashgajjar/costwise-mcp.git
cd costwise-mcp
CGO_ENABLED=1 go build -o costwise ./cmd/costwise/
sudo mv costwise /usr/local/bin/
costwise --version

你将获得什么

CostWise 提供 10 个 MCP 工具,分为三类。

检索工具通过预构建的索引回答问题,而不是读取文件:

  • search_code — 根据自然语言问题进行语义搜索。
  • find_symbol — 定位符号的定义位置。
  • read_symbol — 返回符号的完整实现代码。
  • find_references — 查找符号的所有用法,这些用法已预先计算。
  • find_callers — 查找调用指定函数的函数。

维护工具确保索引保持同步:

  • get_repository_summary — 提供受 Token 预算限制的仓库概览,可按模块深入查看。
  • index_repository — 手动触发重新索引(通常由自动监视器处理)。

上下文控制工具将大量内容和持久信息移出常驻窗口:

  • remember — 持久保存一条信息,避免在行内重复。
  • stash_context — 将大块内容存放在上下文之外,并通过一个简短句柄访问。
  • recall — 在预算范围内,仅根据查询取回匹配的内容片段。
完整工具目录——每个工具的用途及使用方法

包含架构和示例的交互式工具目录:costwise-mcp.vercel.app/tools

检索工具
search_code

由原生 Bluge 倒排索引和 Tree-sitter 驱动的语义仓库搜索。

*原因:*自然语言问题(“缓存在哪里实现?”)应直接返回相关作用域,而不是列出文件让模型逐个打开。全新的 Bluge 索引原生支持快速 BM25/TF-IDF 评分、模糊匹配和同义词扩展,无需 AI 开销。

示例:Where is caching implemented?

find_symbol

查找符号的定义位置。

原因:“X 定义在哪里”是最常见的导航问题。查询结果应是一个位置,而不是一个文件。

示例:Find UserService

read_symbol

按名称返回符号的完整实现代码。

原因:“给我看看 X 是如何工作的”应只需读取索引中的一段行范围,而不是转储整个文件,或让 Agent 循环搜索来重建代码主体。

示例:Show the body of GetOrCreateRepoSession

find_references

查找符号的所有用法。

*原因:*影响分析(“这项更改会破坏什么?”)需要预先计算出所有用法,而不是实时搜索整个代码树。CostWise 现已支持标准 LSIF(dump.lsif)数据导入,可提供 100% 准确、经编译器验证的引用。如果无法使用 LSIF,则会平滑回退到 Tree-Sitter 正则表达式近似匹配。

示例:Where is UserService used?

find_callers

查找调用某个函数的函数。

*原因:*理解调用链应读取已存储的调用关系,而不是让模型通过阅读调用方文件来重建调用链。

示例:What calls processPayment()?

说明:search_code 已在内部采用精确文本/全文搜索策略,因此无需单独使用工具即可匹配字面文本。若要对文件执行原始正则表达式搜索,请使用宿主提供的原生文件搜索功能。

维护工具
get_repository_summary

仓库的令牌预算概览:语言、按符号数量排名靠前的模块,以及关键符号。传入 module 可深入查看某个目录,传入 budget(small / medium / large)可限制输出。

原因: 这通常是会话中的首次调用,因此也是最先进入缓存上下文并一直保留的内容。早期版本会为每个目录输出一行,还会输出完整的逐目录链,且没有限制——对于大型单体仓库,这会产生数万个令牌,并在整个会话中持续占用缓存。现在输出有严格上限:无论仓库有多大,输出都会保持精简;需要时可通过 module 按需获取详情。

index_repository

手动刷新或重建仓库索引。通常不需要,因为看门狗会自动重新索引。

上下文控制工具(V2)

这些工具用于解决上述缓存成本问题。它们能让模型将大量内容和持久事实无损地保留在常驻窗口之外。

remember

将一条简短的持久事实(决策、入口点或注意事项)保存到每个仓库专属的存储中,这样每次相关时就不必在对话中重复说明。

原因: 模型每轮都重新推导或重新粘贴的事实,只会徒增缓存开销。把它们记下来;需要时再读回。

stash_context

将一大段内容(整个文件、很长的命令或测试输出、生成的报告)暂存到对话之外,并返回一个简短的句柄。内容不会丢失——完整内容会写入磁盘,之后仍可重新获取。

原因: 这是最直接的窗口大小控制手段。将一份 5,000 行的日志直接粘贴到对话中,在本会话剩余的每一轮里都会被重新读取,并可能重新写入缓存。暂存后只需约 20 个令牌(句柄),且仅在需要时才取回相关片段。

示例:暂存一份 5,000 行的日志,在上下文中只保留约 20 个令牌。

recall

只取回所需内容:按句柄取回暂存内容中符合预算的片段,或取回匹配的已记忆事实,而不是重新阅读整个内容。

原因:“按需查询获取输出”是这个循环中的读取环节。与 stash_context 结合后,流程就变成:暂存庞大的内容,然后仅取回与查询匹配的行,并控制在令牌预算内。

循环:stash_context(暂存)→ recall(仅取回所需片段)→ remember(保留持久结论)。内容始终可以恢复;上下文窗口保持精简。


端到端工作流:一次真实的 CostWise 会话

了解典型会话从第一条命令到最终答案的全过程,以及有多少令牌不会进入上下文窗口。

步骤 1 — 安装并建立索引

curl -fsSL https://raw.githubusercontent.com/okyashgajjar/costwise-mcp/main/install.sh | bash
# Script detects OS, installs Go + C compiler if needed,
# builds binary, detects AI coding clients, and writes MCP config.
# The server auto-indexes your repo on first connection.

步骤 2 — 开始编码会话

你的 AI Agent 通过 MCP 连接到 CostWise。连接后,Agent 会收到约 275 个令牌的会话技能说明,从而知道要使用 stash/recall/remember,而不是将内容直接粘贴到上下文中。

步骤 3 — 提出导航问题

Agent 不会倾倒整个文件,而是调用:

find_symbol("UserService")
→ user_service.go:142

read_symbol("UserService")
→ func (s *UserService) Create(ctx context.Context, req *CreateRequest) (*User, error) {
      // full body returned, not the whole file
  }

开销:约 50 个令牌。不使用 CostWise 时,Agent 会将 user_service.go(可能超过 500 行)读入上下文窗口。

步骤 4 — 追踪影响范围

你问:“谁调用了 validateInput?”Agent 会调用:

find_callers("validateInput")
→ processPayment (payment.go:310)
  → validateOrder (order.go:88)
    → validateInput (validator.go:45)

开销:约 30 个令牌。不使用 CostWise 时,Agent 会逐个打开文件,阅读调用方并重建调用链。数百个令牌会进入上下文窗口。

步骤 5 — 运行测试并遇到失败

测试失败,并生成了 2,000 行日志。Agent 不会将整份日志直接粘贴到上下文中,而是:

stash_context(label="test-failure-output", content=<full 2000-line log>)
→ Stashed → abc123 (~28,000 tokens kept out of context)

句柄的开销:上下文中约 20 个令牌。完整日志保留在磁盘上。

步骤 6 — 调查失败原因

recall(source="abc123", query="FAIL|panic|error")
→ test_service_test.go:42: TestCreateUser FAILED
    expected: 201, got: 500
    error: database connection refused

开销:约 40 个令牌(仅包含匹配的行)。不使用 CostWise 时,Agent 会重新读取或重新粘贴整份 2,000 行日志。

步骤 7 — 记住发现

remember(key="db-conn-fix", fact="Database connection refused in tests — check DB_HOST env var in .env.test")
→ Remembered "db-conn-fix"

开销:约 20 个令牌,并会在本次会话的剩余时间以及后续会话中保留。

步骤 8 — 稍后回忆事实

recall(query="db fix")
→ db-conn-fix: Database connection refused in tests — check DB_HOST env var in .env.test

无需重新推导修复方法。开销:约 15 个令牌。

总结

步骤不使用 CostWise使用 CostWise
查找 UserService500+ 个令牌(整个文件)约 15 个令牌(位置)
阅读实现500+ 个令牌(整个文件)约 40 个令牌(仅函数体)
追踪调用链300+ 个令牌(多个文件)约 30 个令牌(预计算的边)
调查测试日志2,000+ 个令牌(直接粘贴)约 20 个令牌(句柄)+ 约 40 个令牌(recall)
记住修复方法下次重新推导约 20 个令牌(已持久保存)
上下文窗口总开销约 3,300+ 个令牌约 165 个令牌

在完整会话中,这些节省累积起来,可使常驻上下文窗口中的令牌减少 80% 以上,而且后续每一轮所需读取的缓存也更少。

令牌效率基准测试

测试不同规模仓库中 CostWise 服务端的“真实且未经修饰”的令牌占用:

小型仓库(约 50 个文件)
  • 朴素的全仓库上下文开销:约 12,500 个令牌
  • get_repository_summary(small):286 个令牌(0.01 秒)
  • search_code(精确匹配):4 个令牌(0.31 秒)
  • read_symbol:24 个令牌(0.01 秒)
  • 相比朴素读取的平均令牌节省率:99.16%
中型仓库(约 250 个文件)
  • 朴素的全仓库上下文开销:约 62,500 个令牌
  • get_repository_summary(small):528 个令牌(0.04 秒)
  • search_code(精确匹配):4 个令牌(0.60 秒)
  • read_symbol:24 个令牌(0.03 秒)
  • 相比朴素读取的平均令牌节省率:99.70%
大型仓库(约 1,000 个文件)
  • 朴素的全仓库上下文开销:约 250,000 个令牌
  • get_repository_summary(small):517 个令牌(0.18 秒)
  • search_code(精确匹配):4 个令牌(4.38 秒)
  • read_symbol:24 个令牌(0.37 秒)
  • 相比朴素读取的平均令牌节省率:99.93%
> **最适用的场景:** 大型代码库(>500 个文件),上下文限制(例如 200k 个 token)使得直接读取完整文件不可行或代价极高。无论仓库规模多大,CostWise 都能将结构理解压缩到 500 个 token 以下。 > > **不适用的场景:** 小型脚本或包含 1-3 个文件的项目。如果整个代码库轻松就能装进 2,000 个 token,那么 Tree-Sitter 索引和 SQLite 数据库创建带来的开销完全没有必要。在这种情况下,直接读取文件即可。
会话技能如何让模型自动使用上述所有功能

存在的原因: 上述上下文控制工具只有在模型实际使用它们时才有帮助。若任由模型按默认方式行事,它会毫不犹豫地把整个文件直接贴出来。costwise-session 技能是一小段会话感知指南,用来在每次会话中教会模型一次精简工作流,之后便会自动应用——将大型输出交给 stash_context / recall 处理,用 remember 持久保存重要事实,并优先进行精准检索,而不是读取整个文件。

它刻意设计得很精简(约 275 个 token)。这是每次会话固定的一次性开销,只要能避免一次大型内容块进入上下文窗口,就能收回成本。

它通过两种方式提供,因此无需你持续操作,就能在任何地方使用:

  1. 自动适用于每种编辑器。 MCP 服务通过协议的 instructions 字段提供指南。每个 MCP 客户端连接时都会加载这些指南——包括 Claude Code、Cursor、Codex、OpenCode、Antigravity,以及任何其他兼容 MCP 的客户端。无需配置,也无需为每种编辑器准备单独文件。

  2. 作为原生 Claude Code 技能。 运行 costwise install 还会写入 ~/.claude/skills/costwise-session/SKILL.md(使用 --no-skill 可选择不安装)。你可以直接管理它:

    costwise skill install      # write the skill (global)
    costwise skill install --local   # write it into the current project only
    costwise skill uninstall    # remove it
    costwise skill print        # print the guidance for manual placement in any tool
    

对于会读取自身规则或说明文件的编辑器,运行 costwise skill print 会输出相应指南,供你粘贴使用。这两种提供方式都基于同一份权威内容。

架构

交互式架构图及组件深入介绍:costwise-mcp.vercel.app/architecture

面向企业的功能:

  • 零延迟冷启动: 集成我们的 GitHub Action(costwise-action),在 CI/CD 上预先计算 SQLite cache.db。本地启动时,CostWise 会立即下载预先计算好的构建产物。
  • 团队共享缓存: 配置 COSTWISE_PG_URL,连接 Postgres 后端,而非本地 SQLite。开发者 A 暂存的内容和记住的事实,会立即对开发者 B 可用。
  • 策略引擎: 使用 costwise validate,根据集中管理的 costwise-architecture.yaml 配置执行严格的 AST 架构边界检查。
AI Client (MCP Host)
    │
    ├── stdio transport ──► costwise serve (MCP Server)
    │                           │   advertises session guidance via the MCP instructions field
    │                           │
    │                           ├── Session Manager (per-repo, persistent across tool calls)
    │                           ├── Repository State Manager
    │                           ├── Watchdog
    │                           ├── Shared Indexer
    │                           │
    │                           ├── Tree-sitter Parser
    │                           ├── Symbol Index
    │                           ├── Reference Index
    │                           ├── Call Graph Index
    │                           │
    │                           ├── search_code ───────────► tree-sitter AST match
    │                           ├── find_symbol ───────────► SymbolDB lookup
    │                           ├── read_symbol ───────────► SymbolDB body read
    │                           ├── find_references ───────► SymbolDB reference search
    │                           ├── find_callers ──────────► SymbolDB call graph
    │                           ├── get_repository_summary ► KnowledgeStore (token-budgeted)
    │                           ├── index_repository ──────► SharedIndexer
    │                           ├── remember ──────────────► per-repo durable facts
    │                           ├── stash_context ─────────► large blobs parked out of context
    │                           └── recall ────────────────► query-scoped read-back

每个仓库的所有状态(索引、暂存内容、事实)都存放在该仓库的本地索引目录中,因此不同仓库之间不会相互覆盖。

命令
| 命令 | 描述 | | -------------------------------- | ---------------------------------------- | | `costwise install` | 交互式安装 | | `costwise install --all` | 配置所有已检测到的客户端 | | `costwise install --target` | 配置指定客户端 | | `costwise install --build` | 安装前从源代码构建 | | `costwise install --repair` | 修复安装 | | `costwise install --no-skill` | 安装时不包含会话技能 | | `costwise skill install` | 安装 costwise-session 技能 | | `costwise skill uninstall` | 移除会话技能 | | `costwise skill print` | 输出手动设置指南 | | `costwise doctor` | 验证安装 | | `costwise serve` | 启动 MCP 服务 | | `costwise validate` | 根据策略验证仓库架构| | `costwise uninstall` | 移除 MCP 配置 |
卸载
  1. 移除 MCP 客户端配置(这也会移除会话技能):
costwise uninstall --all
  1. 删除二进制文件:

Linux / macOS:

rm -f "$(command -v costwise)"

Windows:

Remove-Item (Get-Command costwise).Source -Force
存储位置 — 文件在磁盘上的存放位置

所有 CostWise 数据都存放在两个位置。以下说明了需要时如何查找和删除这些数据。

仓库级存储(.mycli-fts/)

在每个已建立索引的仓库根目录下创建。包含该仓库专属的所有内容:

路径存储内容可以安全删除吗?
.mycli-fts/stash/来自 stash_context 的暂存内容 + manifest.json可以。已保存的暂存内容会丢失。
.mycli-fts/session_facts.jsonremember 工具保存的持久事实可以。已保存的事实会丢失。
.mycli-fts/symbols_*.dbTree-sitter 符号索引(定义、引用、调用)可以。下次会话时会触发重新索引。
.mycli-fts/fts_*.db全文搜索索引可以。下次会话时会触发重新索引。
.mycli-fts/cache*.db最近查询的 LRU 缓存可以。临时性能缓存。

清除某个仓库的所有数据:

rm -rf /path/to/your/repo/.mycli-fts

索引会在下次会话时自动重建。

全局存储(/tmp/)

所有仓库共用。这里有个已知的隐患——这些数据并非按仓库隔离,可能会互相覆盖:

路径存储内容可以安全删除吗?
/tmp/repo_memory.db跨会话的长期符号记忆可以。已学习的符号会丢失。
/tmp/discovery_memory.db跨会话的发现模式可以。已学习的模式会丢失。
rm -f /tmp/repo_memory.db /tmp/discovery_memory.db
贡献

欢迎各种形式的贡献,包括修复错误、新增语言解析器、改进检索器、完善文档和基准测试。

完整详情请参阅 CONTRIBUTING.md。

贡献者的重要文档:

  • 置信度与准确性评分 — 全面介绍每个检索工具如何评分、排序并应用置信度阈值。涵盖 FTS、Tree-sitter、Grep、Reference、Call Graph、Architecture、Flow Graph 以及 Query/Answer Type 分类器的精确公式、置信度上限、质量门槛和决策逻辑。

快速开始:

git clone https://github.com/okyashgajjar/costwise-mcp.git
cd costwise-mcp
CGO_ENABLED=1 go build ./...
CGO_ENABLED=1 go test ./...

适合新手的议题:

  • 为新语言添加 Tree-sitter 语法
  • 修复共享 /tmp/ 数据库路径互相覆盖的问题(需要按仓库隔离路径)
  • 改进特定答案类型的压缩
  • 为远程部署添加 SSE/HTTP 传输
  • 编写更好的基准测试

不知道从哪里开始?可以创建议题寻求指导。

开发
CGO 是必需的。该项目依赖 `go-sqlite3` 和 `go-tree-sitter`,两者都使用 C 绑定;使用 `CGO_ENABLED=0` 构建会失败。
git clone https://github.com/okyashgajjar/costwise-mcp.git
cd costwise-mcp
CGO_ENABLED=1 go build ./...
CGO_ENABLED=1 go test ./...

在 Ubuntu/Debian 上:sudo apt install gcc libsqlite3-dev。在 macOS 上:Xcode Command Line Tools。在 Windows 上:MinGW-w64。

支持的客户端和配置位置
客户端配置位置
Claude Code~/.claude.json、.mcp.json 或设置文件
Cursor~/.cursor/mcp.json 或工作区 MCP 设置
OpenCodeopencode.json
Codex CLI~/.codex/config.toml
Antigravity~/.gemini/config/mcp_config.json
MCP 兼容客户端stdio 传输
仓库状态

存在的原因: 模型应当知道它正在查询的索引是否可信。CostWise 跟踪三种状态,并据此采取相应行为。

状态含义
unindexed尚无可用索引
stale文件在上次建立索引后发生了变化
ready索引与工作树同步

Agent 模式可在需要时自动建立索引;交互模式会先提示。

使用场景

探索详细的使用场景案例:costwise-mcp.vercel.app/use-cases

  • AI 编码 Agent — 通过压缩后的作用域级查询减少令牌开销,并将大型内容移出上下文,让长会话保持低成本。
  • 大型单体仓库 — 使用 SQLite 索引以微秒级速度查询,而非扫描磁盘;预算受限的摘要无论仓库规模如何都能保持精简。
  • 代码审查 — 追踪调用方层级,审查新增变更的影响。
  • 仓库审计 — 生成文件分布、语言占比和结构摘要。
  • MCP 开发 — 为 stdio 协议、fsnotify 监视器、tree-sitter 映射和 MCP instructions 字段提供参考实现。
Doctor

costwise doctor 会检查:

  • 二进制文件是否存在及其权限
  • PATH 是否可见
  • 各客户端的 MCP 配置
  • 服务启动情况
  • 仓库状态
故障排除
症状原因解决方法
costwise: command not found二进制文件不在 PATH 中将 ~/.local/bin 或 /usr/local/bin 添加到 PATH,或使用绝对路径
服务显示“disconnected”二进制文件崩溃或缺失直接运行 costwise serve 查看错误输出
客户端中未显示工具配置语法错误验证 JSON:python3 -m json.tool ~/.claude.json
CGO_ENABLED=0 构建失败go-sqlite3 和 tree-sitter 需要 CGO始终使用 CGO_ENABLED=1
权限被拒绝二进制文件缺少执行权限chmod +x $(which costwise)
索引似乎过期文件在上次建立索引后发生了变化调用 index_repository 或等待自动看门狗运行
暂存的 Blob 缺失.mycli-fts/stash/ 已被删除重新暂存内容——旧句柄将无法使用
会话技能无法运行较旧客户端不支持 MCP instructions 字段升级到最新客户端版本,或使用 costwise skill install 手动安装技能

仍然无法解决?运行 costwise doctor,并附上输出内容提交 issue。

支持的平台

通过安装脚本(install.sh),支持所有具备 Go 1.25+ 和 C 编译器的平台;该脚本会自动完成工具链设置:

  • Linux amd64 / arm64
  • macOS amd64 / arm64(Intel 和 Apple Silicon)
  • Windows amd64

Linux amd64 和 Windows amd64 提供预构建的发布二进制文件。其他所有平台均由安装脚本从源代码构建。

了解更多
资源链接
网站和交互式工具costwise-mcp.vercel.app
完整基准测试套件costwise-mcp.vercel.app/benchmarks
开发者文档costwise-mcp.vercel.app/docs/install
MCP 工具目录costwise-mcp.vercel.app/tools
架构指南costwise-mcp.vercel.app/architecture
常见问题costwise-mcp.vercel.app/faq
博客和研究costwise-mcp.vercel.app/blog
与其他方案比较costwise-mcp.vercel.app/compare/codegraph

贡献者

感谢所有为 CostWise 做出贡献的人:

贡献者

许可证

MIT


为相信 AI 编码工具应当快速、本地运行且开源的开发者打造。
节省 Token,买杯咖啡。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。