{"adoption": {"forks": 351, "observed_at": "2026-08-28T04:06:42.759311+00:00", "stars": 2388}, "canonical_url": "https://ross.abutalabs.com/products/sharingan", "card": {"archived": true, "artifact_type": "library", "description": "Sharingan（写轮眼）是一个基于golang的流量录制回放工具，适合项目重构、回归测试等。", "domain": ["testing", "developer-tools", "backend", "microservices"], "enriched": true, "function": ["testing", "mocking", "e2e-testing"], "health_score": 10, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["didi/sharingan"], "name": "didi/sharingan", "platform": ["go", "cli"], "pushed_at": "2023-09-29T04:22:23+00:00", "repo": "didi/sharingan", "stars": 2388, "tags": ["traffic-recording", "traffic-replay", "regression-testing", "mock-server", "golang", "linux", "macos"], "topics": ["golang", "mock-server", "recorder", "replayer", "smoke-test", "testing-tools"], "urls": [], "use_cases": ["record production traffic for regression testing", "replay recorded traffic after refactoring a service", "mock downstream service calls during offline testing", "generate coverage reports from replayed traffic", "replay write traffic without polluting data", "batch replay traffic for smoke testing"], "what_it_is": "Sharingan is a Go-based traffic recording and replay tool that captures real production request traffic (including downstream calls) and replays it offline with mocked downstream responses. It is designed for regression testing and project refactoring, offering noise removal, time resetting, batch replay, and coverage reports.", "when_to_avoid": ["your services are not written in Go (it requires a patched Go toolchain, go1.10–go1.15)", "you need traffic mirroring to a live environment rather than offline replay", "you need support for modern Go versions"], "when_to_choose": ["you maintain Go services and need realistic regression tests without hand-built fixtures", "downstream dependencies make test environments unstable", "you are refactoring a microservice and want to verify behavior against real traffic"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sharingan", "repo": "didi/sharingan", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:42.759311+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:34:33.238436+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "0769fd9e20b6789b2a3a77408ea1bb32ce1624a9b22b27eb744872b00f1db65f", "fetched_at": "2026-08-28T04:06:42.759311+00:00", "kind": "readme", "missing": false, "url": "https://github.com/didi/sharingan"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2334, "days_push": 1069, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}