
GroundLens
io.github.groundlens-dev由 GitHub 帳號 groundlens-dev 發布v6.0.5更新於 Oct 24, 2026
Guardrails for LLM answers: exact checks against sources, PASS/REVIEW/FAIL, signed records.
發布方自己的服務:Ground
概覽
GroundLens 讓助理在作答前用來源段落核對草稿,給出 PASS、REVIEW 或 FAIL 結論並產生簽章記錄。
- 可以做什麼
- 用提供的段落核對草稿答案,執行精確的數字、範圍與意圖檢查,給出 PASS、REVIEW 或 FAIL 結論及原因(verify_answer)。核對整批答案,並檢視已儲存的核驗記錄,記錄以雜湊鏈串接並簽章。檢查在本機確定性執行,預設路徑不含模型;可選的評審模型只能升級結論,不能放行。
- 適用情境
- 適合助理依據文件給出數字或論斷、且希望在答案送出前做機械核對的情境,尤其是金融或受監管報告等需要簽章稽核軌跡的場合。
- 執行需求
- 以 stdio 本機程序執行,透過 uvx 從帶 mcp 附加項的 groundlens 套件啟動,需要 uv(Python 3.10+)。預設檢查無需帳號、API 金鑰、模型或網路存取。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 GroundLens,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Guardrails for LLM answers
[PyPI] [License] [OpenSSF Scorecard] [SLSA]
GroundLens checks AI answers against your documents:
the figures, who they are about, and whether they answer the question.
On financial answers it had never seen, it stopped 3 of 4 wrong ones;
on public claims with numbers, half of the unsupported ones.
About 10 ms per check, deterministic, no LLM in the loop.1
Works with
[Langfuse] [Grafana] [Model Context Protocol] [OpenClaw]
[Add GroundLens to Cursor] [Install GroundLens in VS Code] [Add the GroundLens plugin to Claude Code]
[Langfuse: the GroundLens checks of a credit assistant filtered by level, a FAIL opened with its reasons, its score and the duration of each verifier.]
Quickstart
Runs locally: no account, no API key, no model, no network. The signed record is in records/ before check returns.
Integration
The same check, wired into your stack:
Langfuse · pip install "groundlens[langfuse]"
Call check inside the observation that produced the answer, and its trace gets:
- Score
groundlens.decision: categorical,PASS,REVIEWorFAIL, on the check and on its trace. Filter traces by it, chart it, export it. - Observation
groundlens.check: typeguardrail. The reasons are its status message, one per line. Its level follows Langfuse's own scale:PASSisDEFAULT,REVIEWisWARNING,FAILisERROR. - Metadata of the check: decision, reason codes (
groundlens.scope.contradicted), policy, and the id and hash of the signed record behind it. - Judge: a
generationobservation with the model name, next to your own model calls. - Spans: one per verifier, plus the store, each with its duration. Log View shows them in milliseconds.
- SDK: Python v3 and v4. Tested on Langfuse Cloud and self-hosted Langfuse 4.58.
Grafana and OpenTelemetry · pip install "groundlens[otel]"
Spans and metrics go through the providers your application already configured: Tempo, Prometheus, or any OpenTelemetry backend.
-
Metrics:
groundlens_decisions_total{decision, policy},groundlens_reasons_total{reason, decision},groundlens_check_duration_seconds{stage}with stagetotal,engine,judge,sign,store. -
Spans:
groundlens.checkwithgroundlens.decision,groundlens.reasons, record id and hash; children per verifier, the judge (gen_ai.*) and the store. -
Dashboard: the one in the image.
gl.integrations.grafana_dashboard()returns the path of its JSON; import it in Dashboards → New → Import. -
PromQL, share of answers that failed:
-
Alert when more than 5 % fail:
-
Try it:
docker run -p 3000:3000 -p 4318:4318 grafana/otel-lgtm, thenpython examples/observability/credit_copilot.py grafana --minutes 5. Tested on Grafana 12 with Tempo and Prometheus.
Claude, Codex, Cursor, VS Code and other MCP clients · uvx --from "groundlens[mcp]" groundlens mcp
Your assistant checks its own draft before it answers. Three read-only tools over stdio: verify_answer, verify_run, verify_records. Needs uv.
[Add to Cursor] [Install in VS Code]
-
Claude Code (plugin: the MCP server plus a skill that tells Claude when to check):
-
Codex:
-
Any MCP client (Claude Desktop, Windsurf, Zed...):
With the package installed (
pip install "groundlens[mcp]"),"command": "groundlens-mcp"is enough. -
Nothing to install: the Hugging Face Space is also a remote MCP server, with
verify_answer, athttps://groundlens-groundlens.hf.space/gradio_api/mcp/.
OpenClaw · clawhub install groundlens
A skill on ClawHub, the skill registry of OpenClaw. Before your assistant sends an answer with figures taken from your documents, it runs groundlens verify on its draft:
- PASS: the answer goes out.
- FAIL: it fixes the figure from the source and checks again.
- REVIEW: the answer goes out, saying which figure it could not confirm.
Runs on your machine, with no API key and no second model. The skill is in plugins/groundlens/skills/groundlens, the same one the Claude Code plugin uses. OpenClaw can also use the MCP server directly, with openclaw mcp add.
Where records are kept · sink=
check() returns only after the signed record is stored. If it cannot be stored, check() raises and no decision comes back. Each sink keeps a chain: every record carries the hash of the one before it.
Several processes: give each its own chain (chain="worker-3") and verify them together with groundlens record verify. GroundLens depends on none of these SDKs: you pass the client you already use. Postgres, S3 Object Lock, AWS KMS, Azure Blob and PKCS#11 are tested in CI against real software (Postgres, MinIO, LocalStack, Azurite, SoftHSM); Azure Key Vault has no emulator and is experimental.
LLM-as-a-judge
The exact checks catch a figure that is wrong, miscalculated, from another company or of another kind than asked. They cannot catch a real figure taken from the wrong row of the right table, or a sentence the passages never say. For that you connect a model that reads: the judge. GroundLens ships no model; you pass the client you already use.
The shipped policies forbid a judge, so the policy that uses one says so:
The judge can escalate, never pass. It labels each sentence supported, unsupported, contradicted or uncertain. supported resolves nothing on its own, so a judge that is wrong, or that a passage has talked into agreeing, cannot let through an answer the exact checks fail. A timeout, an error or a malformed reply is REVIEW.
You see exactly what it is sent. One prompt per answer, from a fixed template (groundlens.judge/1): what PASS means for you, the scope, the question, the answer and every passage with its provenance. Passages sit between markers they cannot contain, so text inside them is data, not instructions. groundlens judge show-template prints the exact prompt before anything is sent anywhere.
The record keeps the trail. The template id, the hash of the prompt, the model the provider says answered and the hash of its reply, with each sentence's label, the passages it cited and its one-line reason. In Langfuse the judge appears as a generation, next to your own model calls.
Architecture
GroundLens splits verification into five parts that never mix: claims, verifiers, evidence, policy and record.
- The answer is cut into claims: each figure and each sentence, with its character offsets.
- Verifiers examine each claim against the passages and return evidence (
supported,contradicted,unsupported), never a verdict. The shipped ones are exact: numeric (exact fractions, locales, units, recomputed sums and ratios), scope, intent, and your rules. The judge, if you connect one, is the model you already use, asked through a fixed template. - The evidence graph keeps what each verifier said about each claim, and where they disagree.
- The policy, a YAML file you own, turns evidence into a decision:
PASS,REVIEWorFAIL, with reasons. - The record holds the input hash, the evidence, the policy hash and the decision, chained to the previous record and signed. It is stored before
checkreturns; observers are told after.
The engine is Rust, shipped as a Python wheel (abi3, Python 3.10+), with a standalone glv binary that checks records without Python. It runs in your process: no server, no network, no runtime dependencies. From Rust, cargo add groundlens; for the binary, cargo install groundlens-cli.
Parameters
Policy
The checks produce evidence. The policy decides what that evidence means for you: what fails, what goes to a person, and what PASS allows. It is a short YAML file that you own and version with your code. The same answer under two policies can get two different decisions, and both are correct; that difference is your risk appetite, written down.
Two policies ship with GroundLens:
Write your own policy
Extend a shipped policy and write only what differs:
Unknown keys are errors, not ignored: a misspelt rule never silently does nothing.
Failure is not a PASS
The final decision is the worst outcome of all checks.
Check your policy
The hash of the resolved policy goes into every record it decides, so each decision can be traced to the exact rules that produced it.
Before you change a policy,you have to measure it:
groundlens measureestimates the share of wrong answers among those that passed, from a small sample your team labels without seeing the verdicts, with a 95 % confidence interval, per risk class, and the cost per decision.groundlens replayruns past traffic under the new policy and lists the decisions that would change.
Both reports are signed. Full reference: Writing policies.
Security
GroundLens sits on the path between a model and a decision, and its records are meant to be evidence. Both make it a target: an attacker may try to get a wrong answer through, or to alter the trail afterwards.
Report vulnerabilities privately through GitHub security advisories. See SECURITY.md.
Contributing
If GroundLens got one of your answers wrong, that case is the most valuable contribution there is. Checks, connectors and documentation are welcome too; CONTRIBUTING.md explains how to start.
Open source
Apache-2.0, all of it: engine, checks, policies, connectors, command line and MCP server. Verification evidence has to be checkable by anyone, without our software or our permission, and that only holds if the verifier is open.
Contact
You can contact the developer at [email protected]
1. GroundLens 6.0.5, default policy, no judge. Financial answers: 189 real answers by Claude Haiku from a RAG over FinQA 10-K pages (e5 embeddings, top 4 passages), on multi-step questions never used while developing GroundLens. Each answer labelled twice by a language model (Claude Opus 5.5, claude-opus-5-5) against fixed written criteria, blind to GroundLens, with a third pass on the 3 disagreements; labels were frozen before GroundLens ran. 22 answers were wrong (1 in 9): 17 got FAIL or REVIEW (77 %, 95 % CI 57–90 %). Of the 129 answers that passed, 5 were wrong (3.9 %, 95 % CI 1.7–8.8 %). The price: 60 of 189 answers (32 %) went to FAIL or REVIEW, including 38 of 110 correct ones. Median 10.6 ms per check in a fresh process. Public claims: LLM-AggreFact test split (29,320 claim–document pairs from 11 sets, human labels), never used while developing GroundLens. Of the 1,616 unsupported claims that contain a number, 796 got FAIL or REVIEW (49 %, 95 % CI 47–52 %); among the claims with a number that passed, 16.3 % were unsupported, against 25.4 % before the check. Claims without a number all passed: GroundLens caught none of their errors. Median 4.0 ms per check. All results, including the sets where it does not help, in BENCHMARK.md.
Copyright Groundlens 2026
來源:README.md,提交 a479066
工具
0版本歷史
4- v6.0.5最新Oct 16, 2026
- v6.0.4Oct 15, 2026
- v6.0.1Oct 15, 2026
- v5.2.0Sep 21, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Ground 整合
Ground
fyi.ground官方發布者
Ground 是遠端 MCP 端點,讓助理取得分類系統、即時世界資料與單位換算的參考資料。

GroundLock
由 GitHub 帳號 Surface-ops 發布
GroundLock 是遠端 MCP 伺服器,唯一工具會對照公開網頁查核事實陳述,並回傳結論與來源。

Common Ground
由 GitHub 帳號 theluckystrike 發布
遠端 MCP 伺服器,透過 Qloo 品味資料替一群人挑出一部電影、影集、書、藝人或餐廳,或規劃晚餐加現場音樂的夜晚行程。
Taasky Common ground
ai.taasky
本機 Taasky 節點,讓兩個編碼代理工作階段在同一房間會合,核對彼此一致、有爭議或待定的結論。

ExactGround
由 GitHub 帳號 alidaram99 發布
託管版 ExactGround MCP 伺服器,用來檢查 npm 與 PyPI 套件是否存在,以及某個函式是否存在於指定版本的套件中。