Codeweb

io.github.GhostlyGawd由 GitHub 账号 GhostlyGawd 发布v0.15.0更新于 Oct 24, 2026

See what your AI edits affect. Structural checks for AI code changes. 28 MCP tools, no LLM.

已验证STDIO仅桌面开发者工具数据与分析

概览

AI 生成的概览

Codeweb 是一个本地静态分析 MCP 服务器,为代码库建立符号与调用关系图,让 AI 助手在修改前了解改动会影响哪些代码。

可以做什么
在代码库中定位并查找符号,可按名称或结构相似度检索,返回结果有长度上限以节省上下文。在编辑前查询调用者、依赖方和影响范围,并检查是否已有现成实现。先采集基线,再把改动与基线对比,标出新出现的依赖环、重复代码或失去调用者的符号。按证据排序重复代码、热点和死代码等清理工作,并通过生成的 HTML 或 Markdown 报告查看同一份代码地图。
适用场景
适合在助手修改或重构代码库时使用,让它看到调用者和传递影响,而不是只依赖文本搜索。也适合审查拉取请求的结构性回归,或在采用某个陌生仓库前先做评估。
运行要求
通过 npx 以 stdio 在本地运行,需要 Node.js 22 或更高版本;无需账号、API 密钥、服务器或遥测。可选的 web-tree-sitter 语法包能改善提取效果,但并非必需。查询前需先为目标仓库生成代码地图;若不存在,服务器会提示助手调用建图工具。
安装前请注意
它会读取源代码并把输出写入目标仓库的 .codeweb 目录,但不会执行被分析的代码。结构检查通过并不代表行为正确,被跳过的检查不等于通过,静态提取也可能漏掉动态调用,因此仍需运行项目测试。刷新基线会替换原有基线,基线缺失后无法从已修改的源码重建。计划中的托管付费版本不属于此软件包。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Codeweb,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[codeweb — See what your AI edits affect.]

[CI] [npm] [license: MIT]

Free & MIT-licensed. Runs entirely on your machine — no account, no server, no telemetry. Reads your code; never executes it.

Website · Gate every PR · See it in action · Install · Use · For agents (MCP: Model Context Protocol) · How it works · Free forever · Changelog

[Try it with npx] [Open the live demo] [Install the Claude Code plugin]

See what your AI edits affect.

bash
npx -y @ghostlygawd/codeweb .
[Latest seven-day npm download total with a line chart of completed daily downloads for @ghostlygawd/codeweb, generated from the public npm downloads API]
The large number is the latest seven completed days; the line shows daily downloads. Package downloads are retrievals, not a count of users. Select the chart for the live data and reporting cutoff.

Structural checks for AI code changes. codeweb's gate builds the call graph before and after a change, then fails the pull request on three regressions: a new dependency cycle, a new body-confirmed duplication, or an existing non-exported symbol that becomes an orphan with no mapped callers. Gate conditions and limits.

No LLM is in the checks. The gate uses zero model tokens for its static analysis. A passing check does not prove the program works. Analysis can miss dynamic relationships; inspect unresolved results and run the relevant tests. Pure removals pass the structural rules.

The verdict uses the mapped graph, not a model, and costs zero LLM tokens. Exported symbols are exempt from the diff’s orphan check. Inspect analysis.checks: skipped checks are not passes, and refresh drops the evidence needed to evaluate duplication.

A green result does not establish complete dependency coverage or behavioral correctness. Pure removals do not count as structural regressions. Put it on your PRs →

The gate needs a map to compare, and that map is worth reading on its own.

codeweb reads your code. It maps supported functions and the calls it can resolve between them. It maps 3,000 symbols in approximately 3 seconds. Static analysis produces the same map from the same code. No LLM is in the mapping loop.

Static extraction can omit unsupported layouts, ambiguous calls, and runtime dispatch; the map is not a completeness guarantee.

Your coding agents query the map instead of using grep. In measured tests, agents that used grep missed more than half of a function's real callers (see the measurements). An incomplete caller list can cause an agent to break code that it did not inspect.

  • Give agents structural data: The Model Context Protocol (MCP) server provides 28 tools, including codeweb_impact, codeweb_callers, and codeweb_find_similar.
  • Keep answers small: Each query returns a bounded structural answer. Your agents can use their remaining context for implementation work.
  • Inspect the same data: The interactive report shows the extracted codebase map.

The map also shows relationships that are not visible in one file. These relationships include duplicated logic, dead code, hotspots, and tangled domains.


Try it on your repo

cd your-projectnpx -y @ghostlygawd/codeweb .

For a repository with 3,000 symbols, the first map takes approximately 3 seconds. Open .codeweb/report.html to inspect the map.

[Condensed real terminal run of codeweb 0.12.0 on Zod commit 912f0f5: 1,388 symbols and 1,616 edges from 409 files, followed by 66 actionable findings]
Real run against Zod at commit 912f0f5, captured 2026-07-29. The replay shortens the absolute local path to .codeweb; the displayed values are unchanged.

Gate every pull request

From a Codeweb source checkout, run the verdict locally; the GitHub Action can run it on every pull request:

node scripts/ci-gate.mjs --base origin/main --target src   # exit 1 on a structural regression

The gate builds the graph from the pull request base and from its head, then diffs them. It posts a sticky structural review comment either way, so reviewers see the blast radius without installing anything.

Pin the Action to a release tag, not a moving branch: a floating ref can change your gate's verdict semantics under you. Pin codeweb-ref to the same tag so the engine is fixed too. The workflow YAML, the monorepo matrix form, and every input live in docs/ci-gate.md.

Want the gate hosted — no workflow YAML, cached base graphs, and history across every repo in the org? That is the planned scope of codeweb Teams, the paid half of the boundary. Running it yourself stays free forever.

See it in action

Each screenshot below shows a generated report for axios (280 symbols, 7 domains). The screenshots are not mockups.

codeweb found 3 real duplications in axios and rejected 12 false positives. Read the case study, or inspect the live map.

Know what an edit breaks — before you write

Select a function in the live map. The map highlights the function's blast radius and shows the symbols that the change can affect.

Your agents can get the same answer from the codeweb_impact MCP tool before they edit the code.

[codeweb blast radius: AxiosError selected in the axios graph, with its mapped users highlighted in the inspector]
AxiosError has 20 callers across the domains that depend on it; reference and import users are separate mapped relationships. Explore them in the living map.

Navigate the whole system

The force-directed map shows the extracted symbols. You can collapse symbols into domains. Search, drag, zoom, or select a node to trace its callers and dependencies.

[codeweb Graph tab on axios: domain blocks (helpers, core, adapters, cancel, defaults, platform) sized by symbol count and linked by stippled call edges]

Findings — stop guessing what to refactor

The Findings tab ranks duplication, highly connected hotspots, and likely dead code. Select a row to inspect the symbol's callers and dependencies.

[codeweb Findings tab on axios: ranked duplication, hotspots, and likely-dead code, with a clickable detail panel]

See duplication density, and where domains tangle

[codeweb Treemap on axios: every file sized by lines of code, duplication density carried by a dark-to-lime lightness ramp]
Treemap — The size of each block shows the file's lines of code. A brighter block contains more duplicated code. Use the bright blocks to identify possible consolidation targets.
[codeweb Matrix on axios: a heatmap of call coupling between domains]
Matrix — The matrix shows coupling between domains. A large off-diagonal cell shows strong coupling. You can merge the domains or add a clear interface between them.
[The codeweb pipeline: extract → cluster → overlap → render, looping]
The deterministic pipeline, looping: extract → cluster → overlap → render.

codeweb works at symbol resolution. It maps functions, classes, methods, and the call and import edges between them. A file-level scanner can show that two modules are similar. codeweb can show that two functions do the same work, identify their callers, and calculate the effect of a merge.

Benchmarks

  • Find callers before an edit: In the v0.9.0 efficiency pilot, agents found 74% of a function's real callers with codeweb and 44% with grep at the same context spend. A missed caller can cause an edit to break working code.
  • Calculate the effect of a change: One codeweb call returned one small answer. A simulated graph-assisted grep loop used 126 times the context size in the recorded comparison. This measures context-size differences, not total agent-session token savings.
  • Detect duplicate code: codeweb found every planted duplicate with zero false alarms, including renamed copies. Text search found 0% of the renamed copies.
  • Check deterministic results: Tests compared codeweb with the TypeScript compiler and other independent implementations more than 490,000 times, with zero disagreements.
  • Map and query quickly: The first map takes approximately 3 seconds for a repository with 3,000 symbols. Queries take approximately 0.1 seconds. A repository with twice as many symbols takes approximately 1.3 times as long to map.
  • Understand the limits: A new map after a very large edit can take more time. Agents also completed simple tasks successfully without codeweb.

Methodology, raw data, and per-claim receipts: the evidence ledger. Benchmark your own repo from a Codeweb source checkout: npm run bench -- <path>/.codeweb/graph.json. CI re-runs the performance budgets on every PR; breaking a published number fails the build.

codeweb also keeps a local activity tally. From a Codeweb source checkout, run npm run stats to see it:

codeweb this month: 41 pre-edit card(s) · 5 card-named caller(s) followed · 2 regression(s) flagged · 120 queries served

To evaluate a dependency, point codeweb at a repository that you do not own: /codeweb https://github.com/owner/repo. codeweb makes a read-only clone, maps the clone, and adds an adoption review. codeweb does not execute the target code.

Install

Free & MIT-licensed. Runs entirely on your machine — no account, no server, no telemetry. Reads your code; never executes it.

  • codeweb requires Node.js ≥ 22.
  • codeweb has zero required dependencies. CI verifies operation with an empty node_modules directory.
  • The optional web-tree-sitter wasm grammar improves extraction. codeweb does not require it.
  • CI publishes releases with npm provenance. Run npm audit signatures to verify a release.

Using Claude Code? Install the plugin to add the /codeweb command, automatic pre-edit impact cards, and all 28 tools:

/plugin marketplace add GhostlyGawd/codeweb/plugin install codeweb

Restart Claude Code to register the /codeweb command, agents, and skill.

Using Codex? Install the bundled coding skill and local MCP server:

bash
codex plugin marketplace add GhostlyGawd/codewebcodex plugin add codeweb@codeweb

Reload Codex, then use $codeweb to inspect callers before an edit, compare existing implementations, or review a structural change. The plugin uses your existing tool permissions.

The plugin/MCP workflow is verified with Codex CLI 0.159.2 and 0.160.0. If a client does not expose bundled tools, use the standalone MCP recipe below with the coding skill. Manage each configured entry when disabling or removing Codeweb. This workflow does not claim automatic hook delivery.

Choose your MCP client: The setup page provides one recipe for Claude Code, Cursor, Windsurf, Gemini CLI, or Codex. Print a recipe and check local setup from your project:

bash
npx -y @ghostlygawd/codeweb setup --client cursornpx -y @ghostlygawd/codeweb doctor

Setup prints configuration without replacing files. Doctor checks the local server and graph; a successful local check does not prove an editor connection. Restart your client, ask your agents to run codeweb_callers, and check a returned source location.

Map a repository without an AI agent: Run one command from your project directory:

cd your-projectnpx -y @ghostlygawd/codeweb .    # ~3 s for 3,000 symbols — then open .codeweb/report.html

For a temporary evaluation, use the npx command. It creates the map without a permanent installation.

Run the engine from a clone:

git clone https://github.com/GhostlyGawd/codeweb.gitnode codeweb/scripts/run.mjs /path/to/your/project

docs/cli.md lists each executable, flag, and exit code.

VS Code: editor/vscode-codeweb shows an N callers · blast M lens above each mapped symbol. Select the lens to open the report.

What you can do

Each link lands on full docs, flags, and examples in the reference.

Use

/codeweb                                  # map the current project/codeweb src/payments --depth symbol      # deep-dive one subsystem/codeweb https://github.com/owner/repo    # external review before adopting/codeweb owner/repo --open                # clone, map, and open the report

Available flags include --depth module|symbol|auto, --engine hybrid|read|tools, --focus <glob>, --mode internal|external, and --open. See commands/codeweb.md for details.

codeweb writes all outputs to <target>/.codeweb/. Agents and other tools can read graph.json. You can open report.html. codeweb also creates Markdown versions. See the description of each output file.

Use it as an MCP tool

scripts/mcp-server.mjs is a zero-dependency Model Context Protocol (MCP) stdio server. It gives MCP clients access to 28 tools. The tools help the client orient, read the structure, check before writing, gate an edit, and plan cleanup.

The September 14 packaged assessment exercised the baseline loop with Codex CLI 0.154.0; it did not certify every tool in every client. Claude runtime compatibility and other clients were not tested in that assessment. See the recorded scope.

The plugin registers the server automatically. To register the standalone server, run:

claude mcp add codeweb -- npx -y -p @ghostlygawd/codeweb codeweb-mcp

Requires Codeweb 0.15.0 or later. Use the installed MCP server, or register a source checkout using its absolute path as shown in the reference.

The loop an agent runs:

  1. Orient with codeweb_brief (or codeweb_find when no symbol name is known).
  2. Before editing, call codeweb_refresh {baseline:true} once to capture fresh source. Ask codeweb_explain, then codeweb_context, codeweb_impact, or codeweb_dependents about the symbol before changing it.
  3. After editing, call codeweb_diff {before:"baseline",refresh:true}.
  4. If red, repair the code and repeat that same diff against the same baseline. Do not capture another baseline during repair: baseline:true replaces the original. Ordinary and automatic refreshes preserve it. Start a new baseline for the next task.

Known unsupported same-line JS/TS declarations produce status: "inconclusive" and ok:false instead of a clean gate. Inspect the diagnostic locations and callers in source. The detector covers known layouts; no diagnostic does not prove complete extraction.

Read analysis.checks: a skipped check is not a pass. Refresh drops overlap evidence, so this loop does not evaluate duplication; structural green does not prove behavioral correctness. Run the project's tests too. If the baseline is missing, edited source cannot reconstruct it — recover the pre-edit source before beginning again.

For npm v0.14.0, use the snapshot quickstart. For the unreleased checkout, try the tiny cycle → repair → green walkthrough. Clients that hide the server's built-in instructions can paste the rules snippet instead.

The server includes these agent-specific features:

  • Optional graph argument: The server finds the nearest map when you omit graph. If no map exists, the error directs the agent to codeweb_map.
  • Budgeted responses: Responses include the highest-ranked items and the true totals. A context response that was approximately 300 KB is now approximately 10 KB.
  • Staleness information: A stale result identifies its state and directs the agent to codeweb_refresh — on the orient tools and on every spawned advisor answer.

All 28 tools, grouped and explained →

How it works

For JavaScript, TypeScript, Python, Rust, Go, Java, C#, Ruby, PHP, Kotlin, Swift, C, and C++, codeweb uses a deterministic Node pipeline by default. One command creates the map. No LLM is in the pipeline, and the same input produces the same bytes.

The map pipeline has the four stages in the following diagram. scripts/run.mjs also creates optimize.md after overlap analysis and before report rendering.

  1. Extract (extract-symbols.mjs) parses each source file into atomic nodes such as functions, classes, and methods. It also records call and import edges. If a bare call can refer to more than one definition, codeweb omits the edge instead of guessing. Per-file caching makes extraction incremental and byte-identical to a full rebuild. An imported .json file enters the map as a file-level node without being parsed. An unreferenced .json file stays out of the map, which prevents lock-file noise.
  2. Cluster (cluster3.mjs) removes genuine utility hubs and groups the remaining nodes into directory-anchored semantic domains.
  3. Overlap (overlap.mjs) detects duplicated logic and parallel implementations. It compares each candidate with the actual function bodies by using token-shingle similarity. This check prevents name coincidences from becoming findings. A structural pass over identifier-normalized skeletons also finds renamed Type-2 clones (find-similar --structural).
  4. Render (build-report.mjs) converts graph.json into the self-contained report.html and report.md files.

For a language that the extractor cannot parse, codeweb uses the agent path. codeweb-dissector agents extract nodes and edges for each subsystem. codeweb-domain-mapper then assigns domains and overlaps.

Both paths produce the same graph.json schema. In external mode, each path also adds an adoption verdict.

Versus a language server (LSP): an LSP answers one hop on demand — definitions, direct references — inside an editor session. codeweb builds one deterministic whole-graph artifact: transitive impact, duplication with body evidence, dead code, and domain coupling.

Agents query that artifact over MCP, and CI diffs it to gate a PR. The two compose — codeweb replaces the grep loop, not your language server.

Choose a reading path in the documentation index, which also explains repository ownership. The component map details the engine.

Roadmap

  • Support more first-class languages: codeweb currently supports thirteen native languages: JavaScript, TypeScript, Python, Rust, Go, Java, C#, Ruby, PHP, Kotlin, Swift, C, and C++. Other languages use the agent fallback. Dynamic-dispatch AST tiers cover JS/TS, Java, C#, Python, Go, Rust, Ruby, PHP, C, and C++. Kotlin and Swift dispatch requires a trusted wasm grammar at the pinned ABI. See scripts/grammars/PROVENANCE.md.

Recent releases added the agent-intelligence suite (hotspots, campaign, reading-order, Type-2 clone detection, and suppression memory), a live interactive demo, Go and Rust on the fast path, duplication trend data, and the one-command CI regression gate with a GitHub Action. codeweb currently provides 28 tools.

Versioning & releases

The maintenance commands below require a Codeweb source checkout.

codeweb follows Semantic Versioning. It records changes in CHANGELOG.md, which uses the Keep a Changelog format. Each capability, benchmark, and fix ships in a tagged GitHub release.

package.json is the source of truth for the version. scripts/mcp-server.mjs is the source of truth for the MCP tool count. The release tools derive and verify the other values:

bash
npm run version-sync        # propagate version + tool count -> plugin.json, SKILL.md, README badgenpm run check-consistency   # fail if any public-facing surface has driftednpm run build:site          # regenerate the docs/ website (zero-dependency, deterministic)npm run release -- --minor  # roll the changelog, bump, sync, rebuild; prints the git/tag steps

check-consistency runs in CI. It gates version strings on every surface, recognized prose patterns for the tool and language counts, the CHANGELOG entry for the current version, and every evidence file the ledger cites.

About

Built by GhostlyGawd. AI agents helped write much of the code. The commit co-author trailers identify those contributions. Open an issue for questions or problems. Use SECURITY.md to report a security issue.

Stay current: codeweb does not contact an update service. To receive release notifications, select Watch → Custom → Releases on GitHub.

Free forever, and where the paid line sits

The rule, ratified in CHARTER.md: anything that runs on one laptop against one repo is free forever; money buys hosting, multi-repo aggregation, and human attention.

Everything in this repository is that free half — the map, the MCP tools, the hooks, the report, the CLI, the self-hosted gate Action, and every language codeweb learns. MIT, no accounts, no telemetry, no license keys. Nothing here moves behind a payment later.

The planned paid half is a separate hosted service, codeweb Teams: the gate run for you, and history held across every repo in an org. Billing lives only in that service, so a payment problem degrades the hosted tier and never breaks your local tooling or your CI.

Hosted availability is not established by this repository’s local checks. The pricing page retains the sign-up doorway.

Read the full contract on the boundary page, and the planned Teams price on the pricing page.

Support the project

Sponsoring supports the project. Sponsorship also provides advertising. Top sponsors can put their logo at the top of this README, and each sponsor can join the supporters list. See the support page for details.

Running codeweb at an organization and need help? Send email through the GitHub profile.

Handoffs

You can send codeweb outputs to refactor-cleaner, codebase-onboarding, or code-tour if you have those tools. codeweb does not require them.

For a useful next step, apply the highest-ranked ready merge from optimize.md. Then run codeweb again and compare the findings count.

来源:README.md,提交 b35aa80

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.15.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分