[
  {
    "owner": "google-labs-code",
    "name": "design.md",
    "full_name": "google-labs-code/design.md",
    "url": "https://github.com/google-labs-code/design.md",
    "description": "A format specification for describing a visual identity to coding agents. DESIGN.md gives agents a persistent, structured understanding of a design system.",
    "language": "TypeScript",
    "total_stars": 21113,
    "forks": 1715,
    "stars_this_period": 2319,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 41,
      "created_at": "2026-04-10T17:54:59Z",
      "pushed_at": "2026-06-15T22:22:46Z",
      "homepage": "https://stitch.withgoogle.com/docs/design-md/specification",
      "default_branch": "main",
      "forks": 1715,
      "watchers": 118,
      "archived": false,
      "size_kb": 199
    },
    "readme_content": "# DESIGN.md\n\nA format specification for describing a visual identity to coding agents. DESIGN.md gives agents a persistent, structured understanding of a design system.\n\n## The Format\n\nA DESIGN.md file combines machine-readable design tokens (YAML front matter) with human-readable design rationale (markdown prose). Tokens give agents exact values. Prose tells them *why* those values exist and how to apply them.\n\n```md\n---\nname: Heritage\ncolors:\n  primary: \"#1A1C1E\"\n  secondary: \"#6C7278\"\n  tertiary: \"#B8422E\"\n  neutral: \"#F7F5F2\"\ntypography:\n  h1:\n    fontFamily: Public Sans\n    fontSize: 3rem\n  body-md:\n    fontFamily: Public Sans\n    fontSize: 1rem\n  label-caps:\n    fontFamily: Space Grotesk\n    fontSize: 0.75rem\nrounded:\n  sm: 4px\n  md: 8px\nspacing:\n  sm: 8px\n  md: 16px\n---\n\n## Overview\n\nArchitectural Minimalism meets Journalistic Gravitas. The UI evokes a\npremium matte finish — a high-end broadsheet or contemporary gallery.\n\n## Colors\n\nThe palette is rooted in high-contrast neutrals and a single accent color.\n\n- **Primary (#1A1C1E):** Deep ink for headlines and core text.\n- **Secondary (#6C7278):** Sophisticated slate for borders, captions, metadata.\n- **Tertiary (#B8422E):** \"Boston Clay\" — the sole driver for interaction.\n- **Neutral (#F7F5F2):** Warm limestone foundation, softer than pure white.\n```\n\nAn agent that reads this file will produce a UI with deep ink headlines in Public Sans, a warm limestone background, and Boston Clay call-to-action buttons.\n\n## Getting Started\n\nValidate a DESIGN.md against the spec, catch broken token references, check WCAG contrast ratios, and surface structural findings — all as structured JSON that agents can act on.\n\n```bash\nnpx @google/design.md lint DESIGN.md\n```\n\n```json\n{\n  \"findings\": [\n    {\n      \"severity\": \"warning\",\n      \"path\": \"components.button-primary\",\n      \"message\": \"textColor (#ffffff) on backgroundColor (#1A1C1E) has contrast ratio 15.42:1 — passes WCAG AA.\"\n    }\n  ],\n  \"summary\": { \"errors\": 0, \"warnings\": 1, \"info\": 1 }\n}\n```\n\nCompare two versions of a design system to detect token-level and prose regressions:\n\n```bash\nnpx @google/design.md diff DESIGN.md DESIGN-v2.md\n```\n\n```json\n{\n  \"tokens\": {\n    \"colors\": { \"added\": [\"accent\"], \"removed\": [], \"modified\": [\"tertiary\"] },\n    \"typography\": { \"added\": [], \"removed\": [], \"modified\": [] }\n  },\n  \"regression\": false\n}\n```\n\n## The Specification\n\nThe full DESIGN.md spec lives at [`docs/spec.md`](docs/spec.md). What follows is a condensed reference.\n\n### File Structure\n\nA DESIGN.md file has two layers:\n\n1. **YAML front matter** — Machine-readable design tokens, delimited by `---` fences at the top of the file.\n2. **Markdown body** — Human-readable design rationale organized into `##` sections.\n\nThe tokens are the normative values. The prose provides context for how to apply them.\n\n### Token Schema\n\n```yaml\nversion: <string>          # optional, current: \"alpha\"\nname: <string>\ndescription: <string>      # optional\ncolors:\n  <token-name>: <Color>\ntypography:\n  <token-name>: <Typography>\nrounded:\n  <scale-level>: <Dimension>\nspacing:\n  <scale-level>: <Dimension | number>\ncomponents:\n  <component-name>:\n    <token-name>: <string | token reference>\n```\n\n### Token Types\n\n| Type | Format | Example |\n|:-----|:-------|:--------|\n| Color | Any CSS color (hex, `rgb()`, `oklch()`, named, etc.) | `\"#1A1C1E\"`, `\"oklch(62% 0.18 250)\"` |\n| Dimension | number + unit (`px`, `em`, `rem`) | `48px`, `-0.02em` |\n| Token Reference | `{path.to.token}` | `{colors.primary}` |\n| Typography | object with `fontFamily`, `fontSize`, `fontWeight`, `lineHeight`, `letterSpacing`, `fontFeature`, `fontVariation` | See example above |\n\n### Section Order\n\nSections use `##` headings. They can be omitted, but those present must appear in this order:\n\n| # | Section | Aliases |\n|:--|:--------|:--------|\n| 1 | Overview | Brand & Style |\n| 2 | Colors | |\n| 3 | Typography | |\n| 4 | Layout | Layout & Spacing |\n| 5 | Elevation & Depth | Elevation |\n| 6 | Shapes | |\n| 7 | Components | |\n| 8 | Do's and Don'ts | |\n\n### Component Tokens\n\nComponents map a name to a group of sub-token properties:\n\n```yaml\ncomponents:\n  button-primary:\n    backgroundColor: \"{colors.tertiary}\"\n    textColor: \"{colors.on-tertiary}\"\n    rounded: \"{rounded.sm}\"\n    padding: 12px\n  button-primary-hover:\n    backgroundColor: \"{colors.tertiary-container}\"\n```\n\nValid component properties: `backgroundColor`, `textColor`, `typography`, `rounded`, `padding`, `size`, `height`, `width`.\n\nVariants (hover, active, pressed) are expressed as separate component entries with a related key name.\n\n### Consumer Behavior for Unknown Content\n\n| Scenario | Behavior |\n|:---------|:---------|\n| Unknown section heading | Preserve; do not error |\n| Unknown color token name | Accept if value is valid |\n| Unknown typography token name | Accept as valid typography |\n| Unknown component property | Accept with warning |\n| Duplicate section heading | Error; reject the file |\n\n## CLI Reference\n\n### Installation\n\n```bash\nnpm install @google/design.md\n```\n\nOn **Windows**, quote the package name if your shell treats `@` specially (PowerShell, some terminals):\n\n```bash\nnpm install \"@google/design.md\"\n```\n\nOr run directly (always resolves from the public npm registry):\n\n```bash\nnpx @google/design.md lint DESIGN.md\n```\n\nOn **Windows/PowerShell**, this direct form can produce no output (or open\n`DESIGN.md` in your Markdown editor) because the `.md` suffix in the `design.md`\nbin name collides with the Windows Markdown file association during command\nresolution. Run the dot-free `designmd` alias instead — point `npx` at the\npackage with `-p`, then invoke `designmd`:\n\n```bash\nnpx -p @google/design.md designmd lint DESIGN.md\n```\n\nThe `designmd` shim resolves to the same entrypoint and works identically across\nall platforms.\n\n#### `npm error ENOVERSIONS` (“No versions available for @google/design.md”)\n\nThe CLI is published as [`@google/design.md` on npm](https://www.npmjs.com/package/@google/design.md). `ENOVERSIONS` almost always means npm is not querying the public registry (custom `registry=` in `.npmrc`, a corporate mirror that has not synced this package, or a misconfigured `@google:registry` for the `@google` scope).\n\nCheck your effective registry:\n\n```bash\nnpm config get registry\n```\n\nFor a normal install from the internet it should be `https://registry.npmjs.org/`. After fixing config, retry with `npm cache clean --force` if a stale 404 was cached.\n\nAll commands accept a file path or `-` for stdin. Output defaults to JSON.\n\n> **Windows tip**: when invoking the CLI directly from a `package.json` script\n> (rather than through `npx`), use the `designmd` alias instead of `design.md`.\n> The `.md` suffix in the original bin name confuses Windows command resolution\n> with the file association for Markdown files. The `designmd` shim resolves to\n> the same entrypoint and works identically across all platforms.\n>\n> ```jsonc\n> // package.json\n> {\n>   \"scripts\": {\n>     \"design:lint\": \"designmd lint DESIGN.md\"\n>   }\n> }\n> ```\n\n### `lint`\n\nValidate a DESIGN.md file for structural correctness.\n\n```bash\nnpx @google/design.md lint DESIGN.md\nnpx @google/design.md lint --format json DESIGN.md\ncat DESIGN.md | npx @google/design.md lint -\n```\n\n| Option | Type | Default | Description |\n|:-------|:-----|:--------|:------------|\n| `file` | positional | required | Path to DESIGN.md (or `-` for stdin) |\n| `--format` | `json` | `json` | Output format |\n\nExit code `1` if errors are found, `0` otherwise.\n\n### `diff`\n\nCompare two DESIGN.md files and report token-level changes.\n\n```bash\nnpx @google/design.md diff DESIGN.md DESIGN-v2.md\n```\n\n| Option | Type | Default | Description |\n|:-------|:-----|:--------|:------------|\n| `before` | positional | required | Path to the \"before\" DESIGN.md |\n| `after` | positional | required | Path to the \"after\" DESIGN.md |\n| `--format` | `json` | `json` | Output format |\n\nExit code `1` if regressions are detected (more errors or warnings in the \"after\" file).\n\n### `export`\n\nExport DESIGN.md tokens to other formats.\n\n```bash\nnpx @google/design.md export --format json-tailwind DESIGN.md > tailwind.theme.json\nnpx @google/design.md export --format css-tailwind DESIGN.md > theme.css\nnpx @google/design.md export --format dtcg DESIGN.md > tokens.json\n```\n\n| Option | Type | Default | Description |\n|:-------|:-----|:--------|:------------|\n| `file` | positional | required | Path to DESIGN.md (or `-` for stdin) |\n| `--format` | `json-tailwind` \\| `css-tailwind` \\| `tailwind` \\| `dtcg` | required | Output format |\n\n| Format | Output | Description |\n|:-------|:-------|:------------|\n| `json-tailwind` | JSON | Tailwind v3 `theme.extend` config object |\n| `css-tailwind` | CSS | Tailwind v4 `@theme { ... }` block with CSS custom properties |\n| `tailwind` | JSON | Alias for `json-tailwind` |\n| `dtcg` | JSON | W3C Design Tokens Format Module |\n\n### `spec`\n\nOutput the DESIGN.md format specification (useful for injecting spec context into agent prompts).\n\n```bash\nnpx @google/design.md spec\nnpx @google/design.md spec --rules\nnpx @google/design.md spec --rules-only --format json\n```\n\n| Option | Type | Default | Description |\n|:-------|:-----|:--------|:------------|\n| `--rules` | boolean | `false` | Append the active linting rules table |\n| `--rules-only` | boolean | `false` | Output only the linting rules table |\n| `--format` | `markdown` \\| `json` | `markdown` | Output format |\n\n## Linting Rules\n\nThe linter runs nine rules against a parsed DESIGN.md. Each rule produces findings at a fixed severity level.\n\n| Rule | Severity | What it checks |\n|:-----|:---------|:---------------|\n| `broken-ref` | error | Token references (`{colors.primary}`) that don't resolve to any defined token |\n| `missing-primary` | warning | Colors are defined but no `primary` color exists — agents will auto-generate one |\n| `contrast-ratio` | warning | Component `backgroundColor`/`textColor` pairs below WCAG AA minimum (4.5:1) |\n| `orphaned-tokens` | warning | Color tokens defined but never referenced by any component |\n| `token-summary` | info | Summary of how many tokens are defined in each section |\n| `missing-sections` | info | Optional sections (spacing, rounded) absent when other tokens exist |\n| `missing-typography` | warning | Colors are defined but no typography tokens exist — agents will use default fonts |\n| `section-order` | warning | Sections appear out of the canonical order defined by the spec |\n| `unknown-key` | warning | A top-level YAML key looks like a typo of a known schema key (e.g. `colours:` → `colors:`); custom extension keys stay silent |\n\n### Programmatic API\n\nThe linter is also available as a library:\n\n```typescript\nimport { lint } from '@google/design.md/linter';\n\nconst report = lint(markdownString);\n\nconsole.log(report.findings);       // Finding[]\nconsole.log(report.summary);        // { errors, warnings, info }\nconsole.log(report.designSystem);   // Parsed DesignSystemState\n```\n\n## Design Token Interoperability\n\nDESIGN.md tokens are inspired by the [W3C Design Token Format](https://www.designtokens.org/). The `export` command converts tokens to other formats:\n\n- **Tailwind v3 config (JSON)** — `npx @google/design.md export --format json-tailwind DESIGN.md` — emits a `theme.extend` JSON object for `tailwind.config.js`. `--format tailwind` is a backwards-compatible alias.\n- **Tailwind v4 theme (CSS)** — `npx @google/design.md export --format css-tailwind DESIGN.md` — emits a CSS `@theme { ... }` block using Tailwind v4's CSS-variable token namespaces (`--color-*`, `--font-*`, `--text-*`, `--leading-*`, `--tracking-*`, `--font-weight-*`, `--radius-*`, `--spacing-*`).\n- **DTCG tokens.json** ([W3C Design Tokens Format Module](https://tr.designtokens.org/format/)) — `npx @google/design.md export --format dtcg DESIGN.md`\n\n## Status\n\nThe DESIGN.md format is at version `alpha`. The spec, token schema, and CLI are under active development. Expect changes to the format as it matures.\n\n## D",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"design-monorepo\",\n  \"private\": true,\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"packageManager\": \"bun@1.3.9\",\n  \"scripts\": {\n    \"build\": \"turbo build\",\n    \"test\": \"turbo test\",\n    \"lint\": \"turbo lint\",\n    \"cli\": \"bun run packages/cli/src/index.ts\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^25.6.0\",\n    \"bun-types\": \"^1.3.12\",\n    \"turbo\": \"latest\",\n    \"typescript\": \"latest\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "workspace"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 6,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "calesthio",
    "name": "OpenMontage",
    "full_name": "calesthio/OpenMontage",
    "url": "https://github.com/calesthio/OpenMontage",
    "description": "World's first open-source, agentic video production system. 12 pipelines, 52 tools, 500+ agent skills. Turn your AI coding assistant into a full video production studio.",
    "language": "Python",
    "total_stars": 23507,
    "forks": 2608,
    "stars_this_period": 1674,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agentic-ai",
        "ai",
        "claude",
        "copilot",
        "cursor",
        "elevenlabs",
        "ffmpeg",
        "flux",
        "image-generation",
        "open-source",
        "openai",
        "python",
        "remotion",
        "stable-diffusion",
        "text-to-speech",
        "text-to-video",
        "video-generation",
        "video-production"
      ],
      "license": "AGPL-3.0",
      "open_issues": 110,
      "created_at": "2026-03-29T15:23:22Z",
      "pushed_at": "2026-06-26T21:29:55Z",
      "homepage": "https://github.com/calesthio/OpenMontage",
      "default_branch": "main",
      "forks": 2608,
      "watchers": 140,
      "archived": false,
      "size_kb": 23918
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"OpenMontage\" width=\"200\">\n</p>\n\n<h1 align=\"center\">OpenMontage</h1>\n\n<p align=\"center\"><strong>The first open-source, agentic video production system.</strong></p>\n\n<p align=\"center\">\n  <a href=\"#start-from-a-video-you-already-love\">Paste A Video</a> &nbsp;·&nbsp;\n  <a href=\"#quick-start\">Quick Start</a> &nbsp;·&nbsp;\n  <a href=\"#try-these-prompts\">Try These Prompts</a> &nbsp;·&nbsp;\n  <a href=\"#pipelines\">Pipelines</a> &nbsp;·&nbsp;\n  <a href=\"#how-it-works\">How It Works</a> &nbsp;·&nbsp;\n  <a href=\"docs/PROVIDERS.md\">Providers</a> &nbsp;·&nbsp;\n  <a href=\"docs/PR_REVIEW_GUIDE.md\">Review Guide</a> &nbsp;·&nbsp;\n  <a href=\"AGENT_GUIDE.md\">Agent Guide</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-AGPLv3-blue.svg\" alt=\"License\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/trending\"><img src=\"https://img.shields.io/badge/%F0%9F%8F%86%20%231%20on%20GitHub%20Trending-Repository%20of%20the%20Day-8957E5?style=for-the-badge&labelColor=1a1a2e\" alt=\"#1 on GitHub Trending — Repository of the Day\"></a>\n</p>\n\n<p align=\"center\"><strong>Follow The Build</strong></p>\n\n<p align=\"center\">\n  <a href=\"https://www.youtube.com/@OpenMontage\"><img src=\"https://img.shields.io/badge/YouTube-%40OpenMontage-FF0000?style=for-the-badge&logo=youtube&logoColor=white\" alt=\"YouTube\"></a>\n  <a href=\"https://x.com/calesthioailabs\"><img src=\"https://img.shields.io/badge/X-%40calesthioailabs-111111?style=for-the-badge&logo=x&logoColor=white\" alt=\"X\"></a>\n  <a href=\"https://github.com/calesthio/OpenMontage/discussions\"><img src=\"https://img.shields.io/badge/Community-GitHub%20Discussions-0b1220?style=for-the-badge&logo=github&logoColor=white\" alt=\"GitHub Discussions\"></a>\n</p>\n\n---\n\nTurn your AI coding assistant into a full video production studio. Describe what you want in plain language — your agent handles research, scripting, asset generation, editing, and final composition.\n\n**Important distinction:** OpenMontage can make image-based videos, but it can also make a real **video video** for free/open-source workflows: the agent builds a corpus from free stock footage and open archives, retrieves actual motion clips, edits them into a timeline, and renders a finished piece. That is not the usual \"animate a handful of stills and call it video\" trick.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/f77ce7a4-68b8-4f94-a287-e94bf50a32e1\" width=\"100%\" controls></video>\n</div>\n\n> **\"SIGNAL FROM TOMORROW\"** — a cinematic sci-fi trailer fully produced through OpenMontage: concept, script, scene plan, Veo-generated motion clips, soundtrack, and Remotion composition.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/8daca07f-cdf8-4bec-89c3-9dc2176363fa\" width=\"100%\" controls></video>\n</div>\n\n> **\"THE LAST BANANA\"** — a 60-second Pixar-style animated short about a lonely banana who finds friendship with a kiwi. 6 Kling v3-generated motion clips (via fal.ai), Google Chirp3-HD narration, royalty-free piano music, TikTok-style word-level captions, and Remotion composition. Total cost: **$1.33**.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/8a6d2cc3-7ad2-46f5-922f-a8e3e5848d9f\" width=\"100%\" controls></video>\n</div>\n\n> **\"VOID — Neural Interface\"** — a product ad produced with just one API key (OpenAI). 4 AI-generated images (gpt-image-1), TTS narration, auto-sourced royalty-free music, word-level subtitles via WhisperX, and Remotion data visualizations. Total cost: **$0.69**. Zero manual asset work.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/3c5d7122-7198-43e2-a97d-ed27558dd324\" width=\"100%\" controls></video>\n</div>\n\n> **\"Afternoon in Candyland\"** — a Ghibli-style anime animation. A little girl's whimsical afternoon adventure through candy gates, gumdrop rivers, and lollipop gardens. 12 FLUX-generated images with multi-image crossfade, cinematic camera motion (zoom, pan, Ken Burns), sparkle/petal/firefly particle overlays, and ambient music with auto-detected energy offset. Total cost: **$0.15**. No video generation, no manual editing.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/e8dc5e32-5c70-46de-bd52-eef887719d13\" width=\"100%\" controls></video>\n</div>\n\n> **\"Mori no Seishin\"** — a Ghibli-style anime animation of a forest spirit's journey through ancient woods. 12 FLUX-generated images with parallax crossfade, drift and pan camera motion, firefly and petal particles, cinematic vignette lighting, and ambient forest soundtrack. Total cost: **$0.15**. Still images brought to life through Remotion's animation engine.\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/9cf633d9-c264-4961-bfd0-b1db188654aa\" width=\"100%\" controls></video>\n</div>\n\n> **\"Into the Abyss\"** — a deep ocean exploration rendered in anime style. Bioluminescent gardens, coral cathedrals, and creatures of light — 12 FLUX-generated images with sparkle and mist particle overlays, light-ray effects, smooth camera motion, and ambient oceanic soundtrack. Total cost: **$0.15**. Zero video generation APIs needed.\n\n<p align=\"center\">\n  <a href=\"https://www.youtube.com/@OpenMontage?sub_confirmation=1\"><strong>Subscribe to @OpenMontage on YouTube</strong></a> to see new videos as they ship — every video includes the full prompt, pipeline, tools used, and cost so you can reproduce it yourself.\n</p>\n\n---\n\n## Start From A Video You Already Love\n\nStarting from a reference video is often faster than starting from a blank prompt.\n\nOpenMontage can start from a **YouTube video, Short, Reel, TikTok, or local clip** and turn it into a grounded production plan:\n\n1. **Paste a reference video**\n2. **The agent analyzes transcript, pacing, scenes, keyframes, and style**\n3. **You get 2-3 differentiated concepts, an honest tool path, cost estimates, and a sample before full production**\n\n```text\n\"Here's a YouTube Short I love. Make me something like this, but about quantum computing.\"\n```\n\nWhat you get back is not \"best guess prompt spaghetti.\" You get:\n\n- **What it keeps** from the reference: pacing, hook style, structure, tone\n- **What it changes**: topic, visual treatment, angle, narration approach\n- **What it will cost** at your target duration, before asset generation starts\n- **What it will actually look like** with your currently available tools\n\nWorks with **Claude Code, Cursor, Copilot, Windsurf, Codex** — any AI coding assistant that can read files and run code.\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- **Python 3.10+** — [python.org](https://www.python.org/downloads/)\n- **FFmpeg** — `brew install ffmpeg` / `sudo apt install ffmpeg` / [ffmpeg.org](https://ffmpeg.org/download.html)\n- **Node.js 18+** — [nodejs.org](https://nodejs.org/)\n- **An AI coding assistant** — Claude Code, Cursor, Copilot, Windsurf, or Codex\n\n### Install & Run\n\n```bash\ngit clone https://github.com/calesthio/OpenMontage.git\ncd OpenMontage\nmake setup\n```\n\nOpen the project in your AI coding assistant and tell it what you want:\n\n```\n\"Make a 60-second animated explainer about how neural networks learn\"\n```\n\nOr if you want the real-footage path:\n\n```text\n\"Make a 75-second documentary montage about city life in the rain. Use real footage only, no narration, elegiac tone, with music.\"\n```\n\nThat's it. The agent researches your topic with live web search, generates AI images, writes and narrates the script with voice direction, finds royalty-free background music automatically, burns in word-level subtitles, and renders the final video. Before you see anything, the system runs a multi-point self-review — ffprobe validation, frame sampling, audio level analysis, delivery promise verification, and subtitle checks. Every provider selection is scored across 7 dimensions with an auditable decision log. Every creative decision gets your approval.\n\n> **No `make`?** Run manually: `pip install -r requirements.txt && cd remotion-composer && npm install && cd .. && pip install piper-tts && cp .env.example .env`\n>\n> **Windows:** If `npm install` fails with `ERR_INVALID_ARG_TYPE`, use `npx --yes npm install` instead.\n\n### If You're An OpenClaw Agent Reading This, Congratulations: You Probably Passed The Turing Test\n\nThis repo is built for agentic operation. If you're an OpenClaw-style agent, here is the shortest path to becoming useful fast:\n\n1. **Read the contract first**\n   Start with [`AGENT_GUIDE.md`](AGENT_GUIDE.md), then [`PROJECT_CONTEXT.md`](PROJECT_CONTEXT.md).\n2. **Do not improvise the production workflow**\n   OpenMontage is pipeline-driven. Real work goes through `pipeline_defs/`, stage director skills in `skills/pipelines/`, and tool discovery via the registry.\n3. **Check the actual capability envelope**\n   Run:\n   ```bash\n   python -c \"from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))\"\n   python -c \"from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.provider_menu(), indent=2))\"\n   ```\n4. **Treat every video request as a pipeline selection problem**\n   Pick the right pipeline first, then read the manifest, then read the stage skill, then use tools.\n\n### Add API Keys (optional — more keys = more tools)\n\n```bash\n# .env — every key is optional, add what you have\n\n# Image + video gateway:\nFAL_KEY=your-key               # FLUX images + Google Veo, Kling, MiniMax video + Recraft images\n\n# Free stock media:\nPEXELS_API_KEY=your-key        # Free stock footage and images\nPIXABAY_API_KEY=your-key       # Free stock footage and images\nUNSPLASH_ACCESS_KEY=your-key   # Free stock images\n\n# Music:\nSUNO_API_KEY=your-key          # Full songs, instrumentals, any genre\n\n# Voice & images:\nELEVENLABS_API_KEY=your-key    # Premium TTS, AI music, sound effects\nOPENAI_API_KEY=your-key        # OpenAI TTS, DALL-E 3 images\nXAI_API_KEY=your-key           # xAI Grok image edits/generation + Grok video generation\nGOOGLE_API_KEY=your-key        # Google Imagen images, Google TTS (700+ voices)\n\n# More video providers:\nHEYGEN_API_KEY=your-key        # HeyGen — VEO, Sora, Runway, Kling via single gateway\nRUNWAY_API_KEY=your-key        # Runway Gen-4 direct\n```\n\n<details>\n<summary><strong>Have a GPU? Unlock free local video generation</strong></summary>\n\n```bash\nmake install-gpu\n\n# Then add to .env:\nVIDEO_GEN_LOCAL_ENABLED=true\nVIDEO_GEN_LOCAL_MODEL=wan2.1-1.3b  # or wan2.1-14b, hunyuan-1.5, ltx2-local, cogvideo-5b\n```\n\n</details>\n\n---\n\n## What You Get With Zero API Keys\n\nYou don't need paid API keys to make real videos. Out of the box, `make setup` gives you:\n\n| Capability | Free Tool | What It Does |\n|-----------|-----------|-------------|\n| **Narration** | Piper TTS | Free offline text-to-speech — real human-sounding narration |\n| **Open footage** | Archive.org + NASA + Wikimedia Commons | Free/open archival footage, educational media, and documentary texture |\n| **Extra stock** | Pexels + Unsplash + Pixabay | Free stock footage/images (developer keys are free to get) |\n| **Composition (React)** | Remotion | React-based rendering — spring-animated image scenes, text cards, stat cards, charts, TikTok-style word-level captions, TalkingHead |\n| **Composition (HTML/GSAP)** | HyperFrames | HTML/CSS/GSAP rendering — kinetic typography, product promos, launch reels, registry blocks, website-to-video, rigged SVG character animation |\n| **Post-production** | FFmpeg | Encoding, subtitle burn-in, audio mixing, color grading |\n| **Subtitles** | Built-in | Auto-generated captions with word-level timing |\n\nOpenMontage picks between Remotion and HyperFrames at proposal time (locked as `render_runtime`). Remotion is the default for data-driven explainers and anything using the existing React scene stack; HyperFrames is the default for motion-graphics-heavy briefs that express naturally as HTML + GSAP, including the `cha",
    "manifest_file": "requirements.txt",
    "manifest_content": "# OpenMontage - Core Dependencies\npyyaml>=6.0\npydantic>=2.0\njsonschema>=4.20\npython-dotenv>=1.0\nPillow>=10.0\nnumpy>=1.24\nrequests>=2.31\ngoogle-auth>=2.0       # service-account auth for Google TTS + Imagen (Vertex AI)\n",
    "strategic_keywords": [
      "agent",
      "skill",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "requirements.txt"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 10,
      "total": 98
    },
    "strategic_score": 98
  },
  {
    "owner": "xbtlin",
    "name": "ai-berkshire",
    "full_name": "xbtlin/ai-berkshire",
    "url": "https://github.com/xbtlin/ai-berkshire",
    "description": "AI 时代的伯克希尔：基于 Claude Code 的价值投资研究框架。巴菲特·芒格·段永平·李录四大师方法论 + 多Agent并行研究。| AI-era Berkshire: a value investing research framework built on Claude Code. 4 masters' methodologies + multi-agent adversarial analysis.",
    "language": "Python",
    "total_stars": 3065,
    "forks": 450,
    "stars_this_period": 1270,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "ai",
        "ai-agent",
        "anthropic",
        "berkshire-hathaway",
        "charlie-munger",
        "china-stock",
        "claude",
        "claude-code",
        "financial-analysis",
        "fintech",
        "fundamental-analysis",
        "investment",
        "investment-research",
        "llm",
        "mcp",
        "portfolio-management",
        "stock-analysis",
        "stock-market",
        "value-investing",
        "warren-buffett"
      ],
      "license": "MIT",
      "open_issues": 15,
      "created_at": "2026-04-07T11:19:51Z",
      "pushed_at": "2026-06-26T17:04:13Z",
      "homepage": "https://github.com/xbtlin/ai-berkshire#readme",
      "default_branch": "main",
      "forks": 450,
      "watchers": 6,
      "archived": false,
      "size_kb": 19874
    },
    "readme_content": "中文 | [English](README_EN.md)\n\n# AI Berkshire - AI 时代的价值投资研究框架\n\n> \"Price is what you pay, value is what you get.\" — Warren Buffett\n>\n> 用 AI 重新定义投资研究的深度与效率。\n\n**AI Berkshire** 是一套基于 [Claude Code](https://claude.ai/code) 的投资研究 Skill 合集，将巴菲特、芒格、段永平、李录四位价值投资大师的方法论系统化、结构化，通过 AI Agent 实现专业级投资研究。\n\n一个人 + Claude = 一个投研团队。\n\n---\n\n## Real Track Record\n\n> 不是纸上谈兵。这套框架背后是真金白银验证的投资体系。\n\n### 2024 全年收益：+69.29%\n\n<img src=\"assets/2024-returns.jpg\" width=\"300\" />\n\n### 2025 年至今收益：+66.38%\n\n<img src=\"assets/2025-returns.jpg\" width=\"300\" />\n\n### 与主要指数对比\n\n| 指标 | 2024 全年 | 2025 至今 |\n|------|----------|----------|\n| **本框架实盘** | **+69.29%** | **+66.38%** |\n| 恒生指数 | +17.67% | +27.77% |\n| 标普500 | +23.31% | +16.39% |\n| 沪深300 | +14.68% | +17.66% |\n| 纳斯达克 | +28.64% | +20.36% |\n\n**2024 年超额收益**：跑赢标普500 **46个百分点**，跑赢恒生指数 **52个百分点**\n\n**2025 年超额收益**：跑赢标普500 **50个百分点**，跑赢恒生指数 **39个百分点**\n\n**两年累计实盘收益超 146万元**，连续两年大幅跑赢全球主要指数。\n\n> *免责声明：历史收益不代表未来表现。截图来自富途证券真实账户。*\n\n---\n\n## 为什么不能直接问 AI？\n\n你当然可以直接问 Claude：\"帮我分析拼多多值不值得买\"。你会得到一篇\"一方面...另一方面...\"的平衡分析，最后以\"投资有风险，请自行判断\"收尾。\n\n**这种分析看起来对，但没法拿来做决策。**\n\nAI Berkshire 解决的不是\"能不能分析\"的问题，而是**分析质量和决策纪律**的问题。以下是核心差异：\n\n### 1. 强制给结论，不打太极\n\n直接问AI，你得到的是两面讨好的\"分析\"。AI Berkshire 强制输出：**通过/不通过/灰色地带**，带具体价格区间和分层建议。\n\n> 普通AI回答：*\"拼多多有增长潜力但也面临竞争压力，投资者需要权衡...\"*\n>\n> AI Berkshire 输出：\n\n> | 策略 | 建议 | 价格区间 |\n> |------|------|---------|\n> | 激进型 | 当前价位可建仓20% | $95-105 |\n> | 稳健型 | 等回购政策明确后建仓 | $85-95 |\n> | 保守型 | 不符合10年确定性标准，观望 | — |\n>\n> **镜子测试**：5句话说不完整 = 不买，没有例外。\n\n### 2. 四大师视角对抗，而非单一分析\n\n不是\"用巴菲特方法分析一下\"这么简单。四个视角会产生**真实的矛盾和张力**——\n\n以拼多多为例：\n- **段永平**（商业模式）：好生意，C2M模式难以复制 → 评分 3.7/5\n- **巴菲特**（财务估值）：扣现金PE仅6.3x，印钞机 → 评分 4.4/5\n- **芒格**（逆向思考）：护城河比想象中浅，抖音3年做到4万亿GMV → 评分 3.5/5\n- **李录**（长期确定性）：管理层文化有隐患，10年后不确定 → 评分 2.0/5\n\n**巴菲特说\"真便宜\"，李录说\"不确定就不买\"**——这种冲突才是投资决策的真实状态。单一prompt无法制造这种多视角对抗，而这恰恰是避免盲点的关键。\n\n### 3. 结构化反偏见机制\n\nAI最危险的不是给错答案，而是给一个**看起来很对但经不起推敲**的答案。AI Berkshire 在流程中内置了多层\"防骗\"机制：\n\n| 机制 | 解决什么问题 | 举例 |\n|------|------------|------|\n| **信息丰富度评级（A/B/C）** | 防止\"资料多=确定性高\"的幻觉 | 泡泡玛特评为B级：数据有限，推算指标标注置信度 |\n| **芒格式逆向检验** | 强制思考失败场景 | \"什么情况下拼多多会死？\"→ 列出5大情景及概率 |\n| **快速否决清单** | 8条红线一票否决 | 管理层诚信污点 → 直接否决，不管估值多便宜 |\n| **反共识检查** | 避免和市场想法一样 | \"聪明人为什么在做空？\"→ 发现被忽视的风险 |\n| **留白原则** | 宁可说\"不知道\" | 数据不足时标注\"灰色地带\"，不用推测伪装确定性 |\n\n### 4. 金融数据的精确性\n\nLLM心算不可靠。PE算错一个小数点、市值单位搞混港币和人民币，就可能导致错误的投资决策。\n\n**真实案例**：分析腾讯时，不同来源的市值数据有\"港币亿\"和\"人民币亿\"两种单位。AI Berkshire 的处理方式：\n\n```bash\n# 市值手算校验：股价 × 总股本，与报告数据对比\npython3 tools/financial_rigor.py verify-market-cap \\\n  --price 510 --shares 9.11e9 --reported 4.65e12 --currency HKD\n# ✅ 验证通过, 偏差仅 0.08%\n```\n\n所有计算使用 Python `decimal.Decimal`（精确十进制），不用 `float`。关键数据至少2个独立来源交叉验证。\n\n### 5. 可复现的研究流程\n\n直接问AI，每次输出的格式、深度、覆盖面都不一样——今天分析腾讯有护城河评分，明天分析美团可能就忘了。\n\nAI Berkshire 确保：**同样的输入 → 结构一致、深度一致的输出**。这意味着你可以：\n- 7家公司横向对比，评分标准完全一致\n- 同一家公司半年后重新分析，直接对比变化\n- 团队成员之间的研究结果可以对齐\n\n> 真实输出——7家公司用同一标准 Checklist 筛选：\n>\n> | 公司 | 通过? | 能力圈 | 好生意 | 护城河 | 管理层 | 安全边际 | 综合 |\n> |------|:-----:|:------:|:------:|:------:|:------:|:-------:|:----:|\n> | 茅台 | ✅ 通过 | ★★★★★ | ★★★★★ | ★★★★★ | ★★★☆☆ | ★★★★☆ | 4.7 |\n> | 腾讯 | ✅ 通过 | ★★★★☆ | ★★★★★ | ★★★★★ | ★★★★★ | ★★★★☆ | 4.7 |\n> | 英伟达 | ✅ 有条件 | ★★★★☆ | ★★★★★ | ★★★★★ | ★★★★★ | ★★★☆☆ | 4.3 |\n> | 美团 | ✅ 有条件 | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★☆ | 4.0 |\n> | 快手 | ✅ 有条件 | ★★★☆☆ | ★★★★☆ | ★★★★☆ | ★★★★☆ | ★★★★★ | 4.0 |\n> | 拼多多 | ❓ 灰色 | ★★★★☆ | ★★★★☆ | ★★★☆☆ | ★★★☆☆ | ★★★★★ | 3.8 |\n> | 泡泡玛特 | ❓ 灰色 | ★★★☆☆ | ★★★★☆ | ★★★★☆ | ★★★★★ | ★★★☆☆ | 3.7 |\n\n### 6. 多Agent并行 = 研究深度的倍增\n\n`/investment-team` 启动4个独立Agent**同时**研究一家公司。每个Agent各自搜索网络、交叉验证数据、独立给出结论。这不是把一个prompt拆成四段——是4个\"分析师\"各自做了完整的研究，Team Lead再综合。\n\n一个人直接问AI，上下文窗口是一个。4个Agent并行，等于4倍的搜索量、4倍的信息源、4个独立视角。\n\n```\n┌─────────────────────────────────────────────┐\n│              Team Lead (你)                  │\n│         统筹协调 · 汇总研判                  │\n├──────┬──────┬──────────┬───────────┤\n│ Agent 1    │ Agent 2    │ Agent 3        │ Agent 4         │\n│ 商业模式   │ 财务估值    │ 行业竞争       │ 风险管理层       │\n│ 段永平视角 │ 巴菲特视角  │ 芒格视角       │ 李录视角         │\n└──────┴──────┴──────────┴───────────┘\n        ↓ 并行研究，实时汇报进度 ↓\n              最终综合报告\n```\n\n### 一句话总结\n\n> **普通人问AI得到的是\"看起来对的分析\"，用 AI Berkshire 得到的是\"可以拿来做决策的投研报告\"。**\n\n---\n\n## 整体架构\n\n<p align=\"center\">\n  <img src=\"assets/architecture.png\" alt=\"AI Berkshire 整体架构\" width=\"600\" />\n</p>\n\n> 图源：[`assets/architecture.mmd`](assets/architecture.mmd)（Mermaid 可编辑源码）\n\n**三层设计哲学**：\n- **Skill 层**：把\"你要做什么\"抽象成 16 个明确入口——深度研究、财报分析、行业筛选、持仓管理、思维工具，按场景选用\n- **Agent 层**：每个 skill 内部都是 4 个 Agent 并行——它们各自独立搜索、独立判断、互相挑战，最后由 Team Lead 综合\n- **工具层**：精确计算、实时检索、报告抽检——保证每份报告的数据严谨性可验证\n\n---\n\n## Skills 一览（16个）\n\n### 🔬 深度研究类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/investment-research`](skills/investment-research.md) | 四大师综合深度分析 | 对一家上市公司进行全方位投资研究 |\n| [`/investment-team`](skills/investment-team.md) | 多Agent并行投研团队 | 4个Agent并行研究，最快速、最全面 |\n| [`/management-deep-dive`](skills/management-deep-dive.md) | 管理层纵深研究 | \"买股票就是买人\"——当管理层是核心变量时深挖 |\n| [`/private-company-research`](skills/private-company-research.md) | 未上市公司深度研究 | 研究蚂蚁、SpaceX等信息稀缺的未上市公司 |\n| [`/deep-company-series`](skills/deep-company-series.md) | 8篇长文系列拆一家公司 | 公众号级深度系列，12万字从认知重置到决策闭环 |\n\n### 📊 财报分析类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/earnings-review`](skills/earnings-review.md) | 财报精读（一手资料） | 只读原始财报，不依赖二手研报，像巴菲特一样读年报 |\n| [`/earnings-team`](skills/earnings-team.md) | 财报精读团队 + 公众号发布 | 四大师并行解读财报 → 编辑润色 → 读者评审 → 可发布文章 |\n\n### 🏭 行业筛选类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/industry-research`](skills/industry-research.md) | 产业链全景扫描 | 研究一个行业的全部投资机会（按产业链环节切片） |\n| [`/industry-funnel`](skills/industry-funnel.md) | 行业漏斗筛选 | 全市场 → 粗筛 ≤10 家 → 终选 3 家深度分析 |\n| [`/quality-screen`](skills/quality-screen.md) | 去劣筛选（7条硬指标） | 快速排除非一流公司，支持个股/行业/指数/主题批量筛 |\n| [`/investment-checklist`](skills/investment-checklist.md) | 巴菲特买入前 Checklist | 六关快速筛选，10分钟决定是否值得深入 |\n\n### 📈 持仓管理类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/portfolio-review`](skills/portfolio-review.md) | 组合管理与优化 | 从\"研究公司\"升级到\"管理组合\"——仓位、集中度、再平衡 |\n| [`/thesis-tracker`](skills/thesis-tracker.md) | 投资论文追踪 | 买入后的纪律系统：持续跟踪论文是否被证伪 |\n| [`/news-pulse`](skills/news-pulse.md) | 股价异动快速归因 | 股价大涨/大跌时10分钟搞清\"发生了什么\" |\n\n### 🧠 思维工具类\n\n| Skill | 用途 | 适合场景 |\n|-------|------|---------|\n| [`/dyp-ask`](skills/dyp-ask.md) | 段永平问答 | 以段永平的方式思考任何问题——商业、投资、人生 |\n| [`/financial-data`](skills/financial-data.md) | 财务数据获取与交叉验证规范 | 确保关键数据来自2个独立来源，误差>1%告警 |\n\n---\n\n## 快速开始\n\n### 1. 安装 Claude Code\n\n```bash\nnpm install -g @anthropic-ai/claude-code\n```\n\n### 2. 安装 Skills\n\n将 `skills/` 目录下的 `.md` 文件复制到你的 Claude Code commands 目录：\n\n```bash\n# 克隆仓库\ngit clone https://github.com/xbtlin/ai-berkshire.git\n\n# 复制 skills 到 Claude Code 全局 commands 目录\ncp ai-berkshire/skills/*.md ~/.claude/commands/\n```\n\n### 3. 使用\n\n在 Claude Code 中直接调用：\n\n```bash\n# 深度研究\n/investment-research 腾讯\n/investment-team 美团\n/management-deep-dive 王兴 美团\n/private-company-research SpaceX\n/deep-company-series 拼多多\n\n# 财报分析\n/earnings-review 腾讯 2025Q4\n/earnings-team PDD 2025年报\n\n# 行业筛选\n/industry-research 核电\n/industry-funnel AI算力\n/quality-screen 恒生指数成分股\n/investment-checklist 茅台, 英伟达, 苹果\n\n# 持仓管理\n/portfolio-review 腾讯30%, 美团20%, 茅台20%, 现金30%\n/thesis-tracker 拼多多\n/news-pulse 腾讯\n\n# 思维工具\n/dyp-ask 拼多多的护城河到底在哪里？\n```\n\n---\n\n## 各 Skill 详细介绍\n\n### 1. `/investment-research` — 四大师综合分析\n\n最全面的单公司深度研究框架。按七个模块顺序执行：\n\n```\n数据收集 → 生意本质(段永平) → 护城河(巴菲特) → 逆向思考(芒格)\n    → 管理层评估(段永平+巴菲特) → 文明趋势(李录) → 估值与安全边际\n```\n\n**核心特色**：\n- AI研究偏见自觉机制（A/B/C级信息丰富度评级）\n- 关键数据多源交叉验证（市值手算校验、至少2个独立来源）\n- 四位大师的\"追问\"贯穿全文\n- 三情景估值（乐观/中性/悲观）+ 反向DCF\n\n**输出示例摘录**：\n\n> #### 综合决策备忘录\n>\n> | 维度 | 结论 | 信心度 |\n> |------|------|--------|\n> | 生意质量（段永平） | 极佳：平台型生意，双边网络效应，边际成本趋零 | ★★★★★ |\n> | 护城河（巴菲特） | 宽阔且在变宽：网络效应+转换成本+规模效应三重叠加 | ★★★★☆ |\n> | 管理层（段永平+巴菲特） | 优秀：创始人掌舵，资本配置纪律强 | ★★★★☆ |\n> | 最大风险（芒格） | 监管政策不确定性，新业务亏损拖累整体利润 | ★★★☆☆ |\n> | 文明趋势（李录） | 顺应数字化消费趋势，但非\"文明级范式转移\" | ★★★★☆ |\n> | 估值（巴菲特+段永平） | 当前PE 18x，处于历史中位数偏低，有一定安全边际 | ★★★★☆ |\n>\n> **段永平**：\"这门生意的本质是连接消费者和商家，赚的是效率提升的钱。好生意的标志是：用户越多，商家越多；商家越多，用户越多。飞轮一旦转起来，很难停下。\"\n>\n> **芒格**：\"反过来想——如果这家公司明天消失，用户和商家会怎么办？如果答案是'很快找到替代品'，那护城河就不够深。如果答案是'生活会变得非常不方便'，那就值得关注。\"\n\n---\n\n### 2. `/investment-team` — 多Agent投研团队\n\n启动4个AI Agent并行研究，模拟真实投研团队协作。每个Agent独立搜索、独立分析、独立给出评分，最后由Team Lead综合研判。\n\n**输出示例摘录**：\n\n> #### 一句话结论\n> 美团是中国本地生活服务的绝对龙头，拥有多重网络效应护城河，当前估值处于历史较低水平，长期投资价值显著，建议逢低建仓。\n>\n> #### 四维评分总表\n>\n> | 维度 | 框架 | 评分 | 核心判断 |\n> |------|------|------|----------|\n> | 商业模式 & 护城河 | 段永平 | ★★★★☆ | 双边网络效应强劲，外卖+到店形成飞轮 |\n> | 财务 & 估值 | 巴菲特 | ★★★★☆ | 核心业务利润率持续改善，估值处于历史低位 |\n> | 行业 & 竞争 | 芒格 | ★★★☆☆ | 抖音入侵到店业务，竞争格局有恶化风险 |\n> | 风险 & 管理层 | 李录 | ★★★★☆ | 王兴战略眼光出色，但新业务烧钱需警惕 |\n>\n> **综合评分：3.8 / 5**\n>\n> #### 投资建议\n>\n> | 策略 | 建议 | 价格区间(港元) |\n> |------|------|---------------|\n> | 激进型 | 当前价位可建仓30% | 120-140 |\n> | 稳健型 | 等回调至100-110建仓 | 100-120 |\n> | 保守型 | 等待季报验证利润率趋势后再介入 | <100 |\n\n---\n\n### 3. `/investment-checklist` — 巴菲特买入前 Checklist\n\n六关快速筛选，帮你在10分钟内决定一家公司是否值得深入研究：\n\n```\n第一关：能力圈（我能理解吗？）\n    ↓ 通过\n第二关：好生意（经济特征如何？）\n    ↓ 通过\n第三关：护城河（竞争优势深不深？）\n    ↓ 通过\n第四关：管理层（值得信任吗？）\n    ↓ 通过\n第五关：安全边际（价格便宜吗？）\n    ↓ 通过\n第六关：决策纪律（是理性还是FOMO？）\n    ↓ 通过\n   ✅ 镜子测试\n```\n\n**支持多公司对比**——一次筛选多个标的：\n\n```\n/investment-checklist 腾讯, 阿里巴巴, 美团, 拼多多\n```\n\n**输出示例摘录**：\n\n> #### 镜子测试\n>\n> \"我以 380港元 买入 腾讯，因为：\n> 1. 这门生意的本质是**社交网络+数字内容平台**，我理解它；\n> 2. 它的护城河是**12亿用户的社交关系链**，而且在变宽；\n> 3. 管理层**Pony Ma低调务实、资本配置优秀**，值得信赖；\n> 4. 当前价格相当于内在价值的**8折**，有一定安全边际；\n> 5. 即使我错了，下行风险可控，因为**账上净现金超2000亿、游戏现金流强劲**。\"\n>\n> ✅ 通过镜子测试\n>\n> **5句话说不完整 = 不买。没有例外。**\n\n---\n\n### 4. `/industry-research` — 产业链全景扫描\n\n从一个投资主题出发，完成产业链全景研究：\n\n```\n投资逻辑链构建 → 产业链全景图 → 全球上市公司扫描\n    → 各环节头部公司四大师分析 → 投资组合配置建议\n```\n\n**输出示例摘录**：\n\n> #### 投资逻辑链：核电\n>\n> 底层趋势：AI数据中心电力需求爆发 + 碳中和目标\n> → 导致：稳定清洁基荷电源需求激增\n> → 创造：核电重启/新建/SMR的确定性需求\n> → 受益：铀矿 → 燃料加工 → 设备制造 → 运营商\n>\n> #### 推荐组合\n>\n> | 层级 | 仓位 | 标的 | 环节 | 核心逻辑 |\n> |------|------|------|------|---------|\n> | 核心 | 50% | 中国广核(CGN)、Cameco | 运营+铀矿 | 确定性最高 |\n> | 卫星 | 30% | 中国核电、东方电气 | 运营+设备 | 国产替代受益 |\n> | 期权 | 15% | NuScale、Nano Nuclear | SMR | 高风险高弹性 |\n> | ETF | 替代 | URA、URNM | 全链 | 懒人方案 |\n\n---\n\n### 5. `/industry-funnel` — 行业漏斗筛选\n\n从一个行业/方向出发，**全市场 → ≤10 家 → 3 家**逐层精选：\n\n```\n全市场扫描（活跃度 + 涨幅 + 市值前 30 并集，30-60 家）\n    ↓ 价值投资 5 条硬指标\n粗筛 ≤ 10 家\n    ↓ 精细分析（每家 300-500 字）\n精细分析 ≤ 10 家\n    ↓ 终选（按组合互补性，不按打分前 3）\n四大师深度分析 3 家（每家 800-1200 字）\n    ↓\n推荐组合（核心 / 卫星 / 期权）+ 操作信号\n```\n\n**核心特色**：\n- 每层都有明确留/弃标准，被淘汰的标的留下淘汰理由（不是黑箱）\n- 终选 3 家按\"组合互补性\"选（高确定性 + 中等弹性 + 高弹性），不按打分前 3 排序\n- 强制列\"未来 IPO 候选\"，避免漏掉一级市场核心玩家\n- AI 偏见自觉机制：应对龙头偏好 / 英文偏好 / 故事偏好 / 上市偏好\n\n**与 `/industry-research` 的区别**：\n- `industry-research` 偏重产业链结构与全景（按环节切片）\n- `industry-funnel` 偏重个股筛选漏斗（从全市场逐层精选到 3 家）\n\n**实测：AI 行业 4 子赛道并行（2026-05-09）**：\n\n| 子赛道 | 终选 3 家 | 核心仓位推荐 |\n|-------|---------|------------|\n| AI 算力 | TSMC / NVIDIA / SK Hynix | TSMC ★★★★★ |\n| AI 模型 | Alphabet / Meta / 阿里巴巴 | Alphabet ★★★★★ |\n| AI 应用 | 微软 / Adobe / AppLovin | 微软 + Adobe ★★★★ |\n| AI 基建电力 | Eaton / 特变电工 / Talen Energy | Eaton + 特变电工 ★★★★ |\n\n**关键发现**：AI 应用层最大赢家不是 AI Native 公司，而是有渠道+数据+工作流嵌入度的成熟巨头——这呼应了 1995-2000 互联网泡沫\"卖铲子\"的历史规律（亚马逊和苹果赢，Pets.com 输）。\n\n完整报告：[AI 算力](reports/AI算力-funnel-20260509.md) · [AI 模型](reports/AI模型-funnel-20260509.md) · [AI 应用](reports/AI应用-funnel-20260509.md) · [AI 基建电力](reports/AI基建电力-funnel-20260509.md)\n\n---\n\n### 6. `/private-company-research` — 未上市公司深度研究\n\n专为信息稀缺的未上市公司设计的\"侦探式\"研究框架：\n\n**核心差异化**：\n- **财务数据拼凑**：从招股书、母公司财报、融资新闻、行业数据多源拼凑\n- **置信度标注**：每个数据点标注 🟢高 / 🟡中 / 🔴低 置信度\n- **多方法估值交叉**：融资估值法 + 可比公司法 + DCF + 终局倒推法\n- **退出路径分析**：IPO/并购/二级转让全路径评估\n\n**输出示例摘录**：\n\n> #### 公司画像速览：SpaceX\n>\n> | 项目 | 内容 |\n> |------|------|\n> | 最新估值 | ~$350B (2025年二级市场) 🟡 |\n> | 推算收入 | ~$130亿 (2024年) 🟡 |\n> | Starlink用户 | 400万+ (2024年底) 🟢 |\n> | 发射次数 | 100+ 次/年 (2024年) 🟢 |\n>\n> #### 估值判断\n>\n> | 方法 | 估值区间 | 说明 |\n> |------|---------|------|\n> | 最近融资 | $350B | 二级市场报价，有流动性溢价 |\n> | 可比公司法 | $200-280B | 对标电信+航天+国防 |\n> | DCF(中性) | $250-350B | 假设Starlink 2027年$300亿收入 |\n> | 终局倒推 | $400-600B | 假设星链成为全球电信基础设施 |\n>\n> **综合合理估值区间：$250B - $400B**\n\n---\n\n### 7. `/news-pulse` — 股价异动新闻归因\n\n专为\"股价大涨/大跌时快速搞清发生了什么\"设计的情报响应 Skill。**不是深度投研，是 10-15 分钟的快速归因**——避免持仓异动时陷入小作文焦虑或盲目止损。\n\n**核心差异化**：\n- **4 维并行侦察**：公司事件 / 监管政策 / 行业对手 / 市场情绪（卖方+大V+南向资金）\n- **归因优先于罗列**：不是把所有新闻列一遍，而是判断\"哪个事件配得上这次股价异动\"\n- **强制性质判断**：价值事件 / 情绪波动 / **真因不明** / 混合——其中\"真因不明\"是最有价值的输出（可能存在内幕抢跑）\n- **明确行动建议**：是否触发深度研究、是否需要重审论文、是否仅观察等\n\n**与其他 Skill 的区别**：\n| 场景 | 用什么 |\n|------|------|\n| 完整投研（小时级） | `/investment-team` 或 `/investment-rese",
    "strategic_keywords": [
      "agent",
      "mcp",
      "skill",
      "llm"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 15,
      "productize": 7,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 86
    },
    "strategic_score": 86
  },
  {
    "owner": "Panniantong",
    "name": "Agent-Reach",
    "full_name": "Panniantong/Agent-Reach",
    "url": "https://github.com/Panniantong/Agent-Reach",
    "description": "Give your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.",
    "language": "Python",
    "total_stars": 42263,
    "forks": 3353,
    "stars_this_period": 1164,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "agent-infrastructure",
        "ai-agent",
        "ai-search",
        "automation",
        "bilibili",
        "claude-code",
        "cli",
        "cursor",
        "free-api",
        "llm-tools",
        "mcp",
        "python",
        "reddit-scraper",
        "twitter-scraper",
        "web-scraper",
        "xiaohongshu",
        "youtube-transcript"
      ],
      "license": "MIT",
      "open_issues": 109,
      "created_at": "2026-02-24T02:10:24Z",
      "pushed_at": "2026-06-23T13:04:55Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 3353,
      "watchers": 121,
      "archived": false,
      "size_kb": 1571
    },
    "readme_content": "<h1 align=\"center\">👁️ Agent Reach</h1>\n\n<p align=\"center\">\n  <strong>给你的 AI Agent 一键装上互联网能力</strong>\n</p>\n\n<p align=\"center\">\n  当下最稳的接入方式，替你选好、装好、体检好——接入方式会换代，你不用操心\n</p>\n\n<p align=\"center\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge\" alt=\"MIT License\"></a>\n  <a href=\"https://www.python.org/\"><img src=\"https://img.shields.io/badge/Python-3.10+-green.svg?style=for-the-badge&logo=python&logoColor=white\" alt=\"Python 3.10+\"></a>\n  <a href=\"https://github.com/Panniantong/agent-reach/stargazers\"><img src=\"https://img.shields.io/github/stars/Panniantong/agent-reach?style=for-the-badge\" alt=\"GitHub Stars\"></a>\n  <a href=\"https://trendshift.io/repositories/24387\"><img src=\"https://trendshift.io/api/badge/repositories/24387\" alt=\"Trendshift GitHub Trending #1 Repository of the Day\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#快速上手\">快速开始</a> · <a href=\"docs/README_en.md\">English</a> · <a href=\"docs/README_ja.md\">日本語</a> · <a href=\"docs/README_ko.md\">한국어</a> · <a href=\"#支持的平台\">支持平台</a> · <a href=\"#设计理念\">设计理念</a>\n</p>\n\n---\n\n## 为什么需要 Agent Reach？\n\nAI Agent 已经能帮你写代码、改文档、管项目——但你让它去网上找点东西，它就抓瞎了：\n\n- 📺 \"帮我看看这个 YouTube 教程讲了什么\" → **看不了**，拿不到字幕\n- 🐦 \"帮我搜一下推特上大家怎么评价这个产品\" → **搜不了**，Twitter API 要付费\n- 📖 \"去 Reddit 上看看有没有人遇到过同样的 bug\" → **403 被封**，服务器 IP 被拒\n- 📕 \"帮我看看小红书上这个品的口碑\" → **打不开**，必须登录才能看\n- 📺 \"B站上有个技术视频，帮我总结一下\" → **拿不到**，通用下载工具被 B站风控全面拦截\n- 🔍 \"帮我在网上搜一下最新的 LLM 框架对比\" → **没有好用的搜索**，要么付费要么质量差\n- 🌐 \"帮我看看这个网页写了啥\" → **抓回来一堆 HTML 标签**，根本没法读\n- 📦 \"这个 GitHub 仓库是干嘛的？Issue 里说了什么？\" → 能用，但认证配置很麻烦\n- 📡 \"帮我订阅这几个 RSS 源，有更新告诉我\" → 要自己装库写代码\n\n**这些不难实现，但是需要自己折腾配置**\n\n每个平台都有自己的门槛——要付费的 API、要绕过的封锁、要登录的账号、要清洗的数据。你要一个一个去踩坑、装工具、调配置，光是让 Agent 能读个推特就得折腾半天。\n\n**Agent Reach 把这件事变成一句话：**\n\n```\n帮我安装 Agent Reach：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md\n```\n\n复制给你的 Agent，几分钟后它就能读推特、搜 Reddit、看 YouTube、刷小红书了。\n\n**已经装过了？更新也是一句话：**\n\n```\n帮我更新 Agent Reach：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/update.md\n```\n\n> ⭐ **Star 这个项目**，我们会持续追踪各平台的变化、接入新的渠道。你不用自己盯——平台封了我们修，有新渠道我们加。\n\n### ✅ 在你用之前，你可能想知道\n\n| | |\n|---|---|\n| 💰 **完全免费** | 所有工具开源、所有 API 免费。唯一可能花钱的是服务器代理（$1/月），本地电脑不需要 |\n| 🔒 **隐私安全** | Cookie 只存在你本地，不上传不外传。代码完全开源，随时可审查 |\n| 🔄 **持续换代** | 每个平台都是「首选 + 备选」多后端路由。某个接入方式失效了，我们换下一个，你无感（2026-06 实例：yt-dlp 被 B站风控封死 → 已切换 bili-cli，用户零操作） |\n| 🤖 **兼容所有 Agent** | Claude Code、OpenClaw、Cursor、Windsurf……任何能跑命令行的 Agent 都能用 |\n| 🩺 **自带诊断** | `agent-reach doctor` 一条命令告诉你哪个通、哪个不通、怎么修 |\n\n---\n\n## 支持的平台\n\n| 平台 | 装好即用 | 配置后解锁 | 怎么配 |\n|------|---------|-----------|-------|\n| 🌐 **网页** | 阅读任意网页 | — | 无需配置 |\n| 📺 **YouTube** | 字幕提取 + 视频搜索 | — | 无需配置 |\n| 📡 **RSS** | 阅读任意 RSS/Atom 源 | — | 无需配置 |\n| 🔍 **全网搜索** | — | 全网语义搜索 | 自动配置（MCP 接入，免费无需 Key） |\n| 📦 **GitHub** | 读公开仓库 + 搜索 | 私有仓库、提 Issue/PR、Fork | 告诉 Agent「帮我登录 GitHub」 |\n| 🐦 **Twitter/X** | 读单条推文 | 搜索推文、浏览时间线、读长文 | 告诉 Agent「帮我配 Twitter」 |\n| 📺 **B站** | 搜索 + 视频详情（bili-cli，无需登录） | 字幕（OpenCLI） | 告诉 Agent「帮我配 B站」 |\n| 📖 **Reddit** | —（没有零配置路径：匿名接口已被封） | 搜索 + 读帖子和评论 | 桌面装 OpenCLI 用浏览器登录态；或 rdt-cli + Cookie |\n| 📕 **小红书** | — | 搜索、阅读、评论 | 桌面装 OpenCLI（刷过小红书即可用）；服务器用 xiaohongshu-mcp 扫码 |\n| 💼 **LinkedIn** | Jina Reader 读公开页面 | Profile 详情、公司页面、职位搜索 | 告诉 Agent「帮我配 LinkedIn」 |\n| 💻 **V2EX** | 热门帖子、节点帖子、帖子详情+回复、用户信息 | — | 无需配置 |\n| 📈 **雪球** | 股票行情、搜索股票、热门帖子、热门股票排行 | — | 告诉 Agent「帮我配雪球」 |\n| 🎙️ **小宇宙播客** | — | 播客音频转文字（Whisper 转录，免费 Key） | 告诉 Agent「帮我配小宇宙播客」 |\n\n> **不知道怎么配？不用查文档。** 直接告诉 Agent「帮我配 XXX」，它知道需要什么、会一步一步引导你。\n>\n> 🍪 需要 Cookie 的平台（Twitter、小红书等），**优先使用** Chrome 插件 [Cookie-Editor](https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm) 导出 Cookie，发给 Agent 即可配置。流程统一：浏览器登录 → Cookie-Editor 导出 → 发给 Agent。比扫码更简单可靠。\n>\n> 🔒 Cookie 只存在你本地，不上传不外传。代码完全开源，随时可审查。\n> 💻 本地电脑不需要代理。代理只有部署在服务器上才需要（~$1/月）。\n\n---\n\n## 快速上手\n\n> ⚠️ **OpenClaw 用户请先确认 exec 权限已开启**\n>\n> Agent Reach 依赖 Agent 执行 shell 命令（`pip install`、`mcporter`、`twitter` 等）。如果你的 OpenClaw 使用了默认的 `messaging` 工具配置，Agent 将无法执行命令。**安装前请先开启 exec 权限**：\n>\n> ```bash\n> openclaw config set tools.profile \"coding\"\n> ```\n> 或在 `~/.openclaw/openclaw.json` 中设置 `\"tools\": { \"profile\": \"coding\" }`。\n> 设置后重启 Gateway（`openclaw gateway restart`）并开启新对话即可。其他平台（Claude Code、Cursor、Windsurf 等）不受此限制。\n\n复制这句话给你的 AI Agent（Claude Code、OpenClaw、Cursor 等）：\n\n```\n帮我安装 Agent Reach：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md\n```\n\n就这一步。Agent 会自己完成剩下的所有事情。\n\n> 🔄 **已安装过？** 更新也是一句话：\n> ```\n> 帮我更新 Agent Reach：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/update.md\n> ```\n\n> 🛡️ **担心安全？** 可以用安全模式——不会自动装系统包，只告诉你需要什么：\n> ```\n> 帮我安装 Agent Reach（安全模式）：https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md\n> 安装时使用 --safe 参数\n> ```\n\n<details>\n<summary>它会做什么？（点击展开）</summary>\n\n1. **安装 CLI 工具** — `pip install` 装好 `agent-reach` 命令行（自带 yt-dlp、feedparser）\n2. **安装系统基建** — 自动检测并安装 Node.js、gh CLI、mcporter\n3. **配置搜索引擎** — 通过 MCP 接入 Exa（免费，无需 API Key）\n4. **检测环境** — 判断是本地电脑还是服务器，给出对应的配置建议\n5. **注册 SKILL.md** — 在 Agent 的 skills 目录安装使用指南，以后 Agent 遇到\"全网调研\"、\"搜推特\"、\"看视频\"这类需求，会自动知道该调哪个上游工具\n6. **问你要不要更多** — 默认只激活 6 个零配置渠道；小红书、Twitter、Reddit 这些需要登录的，Agent 会列菜单问你要哪些，点名才装\n\n安装完之后，`agent-reach doctor` 一条命令告诉你每个渠道的状态、当前走哪条路。\n</details>\n\n---\n\n## 装好就能用\n\n不需要任何配置，告诉 Agent 就行：\n\n- \"帮我看看这个链接\" → `curl https://r.jina.ai/URL` 读任意网页\n- \"这个 GitHub 仓库是做什么的\" → `gh repo view owner/repo`\n- \"这个 YouTube 视频讲了什么\" → `yt-dlp` 提取字幕\n- \"B站搜一下 AI 教程\" → `bili search`（无需登录）\n- \"全网搜一下 LLM 框架对比\" → Exa 语义搜索\n- \"订阅这个 RSS\" → `feedparser` 解析\n\n**不需要记命令。** Agent 读了 SKILL.md 之后自己知道该调什么。需要登录的平台（小红书、Twitter、Reddit），告诉 Agent「帮我配 XXX」即可解锁。\n\n---\n\n## 能力边界：读内容 vs 操作网页\n\n有些任务超出\"读\"的范围：登录后的网页操作、表单提交、多账号隔离、并行浏览器会话、自动化流程中的登录、验证、风控提示等高摩擦环节的人工接手。这类\"动手\"场景，可以配合 [BrowserAct](https://www.browseract.ai/Agent) 这类浏览器自动化工具——30+ 预制平台技能，支持 Claude Code / OpenClaw / Cursor 等主流 Agent。\n\n---\n\n## 设计理念\n\n**Agent Reach 是一个能力层（capability layer），不是又一个工具。**\n\n它比任何具体实现高一层——负责**选型、安装、体检、路由**，不负责底层读取本身。读取由 Agent 直接调用上游工具完成，没有包装层。\n\n你给一个新 Agent 装环境的时候，总要花时间去找工具、装依赖、调配置——Twitter 用什么读？Reddit 怎么登录？小红书的 CLI 停更了换什么？每次都要重新踩一遍。Agent Reach 做的事情很简单：**当下最稳的接入方式，我们替你选好、装好、体检好。接入方式会换代（2026 年 3 月一批单平台 CLI 集体停更，我们换了路由），你不用操心。**\n\n### 🔌 每个平台 = 首选 + 备选的有序后端列表\n\n换接入方式 = 调整列表顺序，不是重写代码。`agent-reach doctor` 会告诉你每个平台**当前在用哪个后端**。\n\n```\nchannels/\n├── web.py          → Jina Reader\n├── twitter.py      → twitter-cli ▸ OpenCLI ▸ bird\n├── youtube.py      → yt-dlp\n├── github.py       → gh CLI\n├── bilibili.py     → bili-cli ▸ OpenCLI ▸ 搜索 API（yt-dlp 已被 B站风控封死，退役）\n├── reddit.py       → OpenCLI ▸ rdt-cli（无零配置路径，必须登录态）\n├── xiaohongshu.py  → OpenCLI ▸ xiaohongshu-mcp ▸ xhs-cli\n├── linkedin.py     → linkedin-mcp ▸ Jina Reader\n├── rss.py          → feedparser\n├── exa_search.py   → Exa via mcporter\n└── __init__.py     → 渠道注册（doctor 检测用）\n```\n\n每个渠道文件按序**真实探测**各候选后端（不只是看命令存不存在），第一个完整可用的当选；坏掉的会给出修复处方。实际的读取和搜索由 Agent 直接调用上游工具完成。\n\n### 当前选型\n\n| 场景 | 首选 | 备选 | 为什么这么选 |\n|------|------|------|-----------|\n| 读网页 | [Jina Reader](https://github.com/jina-ai/reader) | — | 免费，不需要 API Key |\n| 读推特 | [twitter-cli](https://github.com/public-clis/twitter-cli) | [OpenCLI](https://github.com/jackwener/opencli) | 实测搜索稳定；OpenCLI 走浏览器登录态兜底 |\n| Reddit | [OpenCLI](https://github.com/jackwener/opencli)（桌面） | [rdt-cli](https://github.com/public-clis/rdt-cli) | 匿名接口已被封、官方 API 审批制——只剩登录态路线 |\n| YouTube 字幕 + 搜索 | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | — | 154K Star，YouTube 仍是最佳（注意：不再用于 B站） |\n| B站 | [bili-cli](https://github.com/public-clis/bilibili-cli) | OpenCLI ▸ 搜索 API | yt-dlp 被 B站风控 412 封死（2026-06 实测），bili-cli 无登录可搜可读 |\n| 搜全网 | [Exa](https://exa.ai) via [mcporter](https://github.com/nicobailon/mcporter) | — | AI 语义搜索，MCP 接入免 Key |\n| GitHub | [gh CLI](https://cli.github.com) | — | 官方工具，认证后完整 API 能力 |\n| 读 RSS | [feedparser](https://github.com/kurtmckee/feedparser) | — | Python 生态标准选择 |\n| 小红书 | [OpenCLI](https://github.com/jackwener/opencli)（桌面） | [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp)（服务器）▸ xhs-cli | xhs-cli 作者已转投 OpenCLI（24K Star）；浏览器登录态零摩擦 |\n| LinkedIn | [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server) | Jina Reader | MCP 服务，浏览器自动化 |\n\n> 📌 这些都是「当前选型」，基于真机实测定期复核。某条路失效了我们换下一条——`agent-reach doctor` 永远告诉你现在走的是哪条。\n\n---\n\n## 安全性\n\nAgent Reach 在设计上重视安全：\n\n| 措施 | 说明 |\n|------|------|\n| 🔒 **凭据本地存储** | Cookie、Token 只存在你本机 `~/.agent-reach/config.yaml`，文件权限 600（仅所有者可读写），不上传不外传 |\n| 🛡️ **安全模式** | `agent-reach install --safe` 不会自动修改系统，只列出需要什么，由你决定装不装 |\n| 👀 **完全开源** | 代码透明，随时可审查。所有依赖工具也是开源项目 |\n| 🔍 **Dry Run** | `agent-reach install --dry-run` 预览所有操作，不做任何改动 |\n| 🧩 **可插拔架构** | 不信任某个组件？换掉对应的 channel 文件即可，不影响其他 |\n\n### 🍪 Cookie 安全建议\n\n> ⚠️ **封号风险提醒：** 使用 Cookie 登录的平台（Twitter、小红书等），通过脚本/API 调用**存在被平台检测并封号的风险**。请务必使用**专用小号**，不要用你的主账号。\n\n需要 Cookie 的平台（Twitter、小红书）建议使用**专用小号**，不要用主账号。原因有二：\n1. **封号风险** — 平台可能检测到非正常浏览器的 API 调用行为，导致账号被限制或封禁\n2. **安全风险** — Cookie 等同于完整登录权限，用小号可以在凭据泄露时限制影响范围\n\n### 📦 安装方式\n\n| 方式 | 命令 | 适合场景 |\n|------|------|---------|\n| 一键全自动（默认） | `agent-reach install --env=auto` | 个人电脑、开发环境 |\n| 安全模式 | `agent-reach install --env=auto --safe` | 生产服务器、多人共用机器 |\n| 仅预览 | `agent-reach install --env=auto --dry-run` | 先看看会做什么 |\n\n### 🗑️ 卸载\n\n```bash\nagent-reach uninstall\n```\n\n会清除：`~/.agent-reach/`（含所有 token/cookie）、各 Agent 的 skill 文件、mcporter 中的 MCP 配置。\n\n```bash\n# 只预览，不实际删除\nagent-reach uninstall --dry-run\n\n# 只删 skill 文件，保留 token 配置（重装时用）\nagent-reach uninstall --keep-config\n```\n\n卸载 Python 包本身：`pip uninstall agent-reach`\n\n---\n\n## 贡献\n\n这个项目是纯 vibe coding 出来的 🎸 可能会有一些不完美的地方，如果遇到问题请多多包涵。有 bug 尽管提 [Issue](https://github.com/Panniantong/agent-reach/issues)，我都会尽快修复。\n\n**想要新渠道？** 直接提 Issue 告诉我们，或者自己提 PR。\n\n**想在本地加？** 让你的 Agent clone 下来改就行，每个渠道就是一个独立文件，加起来很简单。\n\n[PR](https://github.com/Panniantong/agent-reach/pulls) 也随时欢迎！\n\n---\n\n## ⭐ 为什么值得 Star\n\n这个项目我自己每天在用，所以我会一直维护它。\n\n- 有新需求或者大家提了想要的渠道，我会陆续加上\n- 每个渠道我会尽量保证**能用、好用、免费**\n- 平台改了反爬或者 API 变了，我会想办法解决\n\n为 Web 4.0 基建贡献一份自己的力量。\n\nStar 一下，下次需要的时候能找到。⭐\n\n---\n\n## 常见问题 / FAQ\n\n<details>\n<summary><strong>AI Agent 怎么搜索 Twitter / X？不想付 API 费用</strong></summary>\n\nAgent Reach 使用 [twitter-cli](https://github.com/public-clis/twitter-cli) 通过 Cookie 认证访问 Twitter，完全免费。安装：`pipx install twitter-cli`，确保浏览器已登录 x.com，Agent 就可以用 `twitter search \"关键词\"` 搜索、`twitter tweet URL` 读推文了。\n</details>\n\n<details>\n<summary><strong>How to search Twitter/X with AI agent for free (no API)?</strong></summary>\n\nAgent Reach uses twitter-cli with cookie auth — zero API fees. Install with `pipx install twitter-cli`, make sure you're logged into x.com in your browser, then your agent can search with `twitter search \"query\"` and read tweets with `twitter tweet URL`.\n</details>\n\n<details>\n<summary><strong>Reddit 返回 403 怎么办？</strong></summary>\n\nReddit 所有访问都需要登录态（匿名接口已被全面封锁，官方 API 需人工审批）。桌面首选 **OpenCLI**：浏览器里登录过 reddit.com 即可直接 `opencli reddit search \"关键词\"`。备选 [rdt-cli](https://github.com/public-clis/rdt-cli)：`pipx install 'git+https://github.com/public-clis/rdt-cli.git@5e4fb3720d5c174e976cd425ccc3b879d52cac66'`（与代码同一钉定版本，PyPI 落后），然后 `rdt login`。中国大陆网络访问 Reddit 需要代理。\n</details>\n\n<details>\n<summary><strong>How to get YouTube video transcripts for AI?</strong></summary>\n\n`yt-dlp --dump-json \"https://youtube.com/watch?v=xxx\"` extracts video metadata; `yt-dlp --write-sub --skip-download \"URL\"` extracts subtitles. Uses yt-dlp under the hood, supports multiple languages. No API key needed.\n</details>\n\n<details>\n<summary><strong>怎么让 AI Agent 读小红书？</strong></summary>\n\n桌面电脑首选 **OpenCLI**（`agent-reach install --channels opencli`）——它复用你浏览器里的登录态，平时刷过小红书就直接能用，零配置；装完在 Chrome 商店点一次「添加扩展」即可。之后 Agent 用 `opencli xiaohongshu search \"关键词\"` 搜索、`opencli xiaohongshu note URL` 读笔记。服务器上用 [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp)（自带无头浏览器，扫码登录）。已装过 xhs-cli 的老用户不受影响，它仍是备选后端（上游 2026-03 起停更，不推荐新装）。\n</details>\n\n<details>\n<summary><strong>Compatible with Claude Code / Cursor / OpenClaw / Windsurf?</strong></summary>\n\nYes! Agent Reach is an installer + configuration tool — any AI coding agent that can run shell commands can use it. Works with Claude Code, Cursor, OpenClaw, Windsurf, Codex, and more. Just `pip install agent-reach`, run `agent-reach install`, and the agent can start using the upstream tools immediately.\n\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"agent-reach\"\nversion = \"1.5.0\"\ndescription = \"Give your AI Agent eyes to see the entire internet. Search + Read 10+ platforms.\"\nreadme = \"README.md\"\nlicense = {text = \"MIT\"}\nrequires-python = \">=3.10\"\nauthors = [{name = \"Neo Reid\"}]\nkeywords = [\n    \"ai-agent\", \"llm-tools\", \"agent-infrastructure\", \"mcp\",\n    \"web-reader\", \"web-scraper\", \"search\",\n    \"twitter-scraper\", \"reddit-scraper\", \"youtube-transcript\",\n    \"bilibili\", \"xiaohongshu\",\n    \"ai-search\", \"cli\", \"automation\",\n    \"claude-code\", \"cursor\", \"openai\",\n    \"free-api\", \"no-api-key\",\n]\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: Developers\",\n    \"License :: OSI Approved :: MIT License\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Topic :: Internet :: WWW/HTTP\",\n    \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n]\n\ndependencies = [\n    \"requests>=2.28\",\n    \"feedparser>=6.0\",\n    \"python-dotenv>=1.0\",\n    \"loguru>=0.7\",\n    \"pyyaml>=6.0\",\n    \"rich>=13.0\",\n    \"yt-dlp>=2024.0\",\n]\n\n[project.optional-dependencies]\nbrowser = [\"playwright>=1.40\"]\ncookies = [\"browser-cookie3>=0.19\"]\nall = [\"playwright>=1.40\", \"mcp[cli]>=1.0\", \"browser-cookie3>=0.19\"]\ndev = [\n    \"pytest>=8.0\",\n    \"ruff>=0.8\",\n    \"mypy>=1.12\",\n    \"types-requests>=2.32\",\n    \"types-PyYAML>=6.0\",\n]\n\n[project.scripts]\nagent-reach = \"agent_reach.cli:main\"\n\n[project.urls]\nHomepage = \"https://github.com/Panniantong/agent-reach\"\nRepository = \"https://github.com/Panniantong/agent-reach\"\nIssues = \"https://github.com/Panniantong/agent-reach/issues\"\n\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[tool.hatch.build.targets.wheel]\npackages = [\"agent_reach\"]\n\n[tool.ruff]\ntarget-version = \"py310\"\nline-length = 100\n\n[tool.ruff.lint]\nselect = [\"E\", \"F\", \"I\"]\nignore = [\"E501\"]\n\n[tool.mypy]\npython_version = \"3.10\"\nwarn_unused_configs = true\nwarn_redundant_casts = true\nwarn_unused_ignores = true\ncheck_untyped_defs = true\nignore_missing_imports = true\nexclude = [\"^tests/\"]\n",
    "strategic_keywords": [
      "agent",
      "mcp",
      "llm",
      "automation"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 90
    },
    "strategic_score": 90
  },
  {
    "owner": "JCodesMore",
    "name": "ai-website-cloner-template",
    "full_name": "JCodesMore/ai-website-cloner-template",
    "url": "https://github.com/JCodesMore/ai-website-cloner-template",
    "description": "Clone any website with one command using AI coding agents",
    "language": "TypeScript",
    "total_stars": 21299,
    "forks": 3090,
    "stars_this_period": 1076,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ai",
        "ai-agents",
        "ai-tools",
        "automation",
        "boilerplate",
        "claude",
        "claude-code",
        "clone",
        "developer-tools",
        "nextjs",
        "react",
        "reverse-engineering",
        "shadcn-ui",
        "skills",
        "tailwindcss",
        "template",
        "typescript",
        "web-scraping",
        "website-clone"
      ],
      "license": "MIT",
      "open_issues": 17,
      "created_at": "2026-03-13T11:14:39Z",
      "pushed_at": "2026-06-01T04:09:21Z",
      "homepage": "https://dsc.gg/jcodesmore",
      "default_branch": "master",
      "forks": 3090,
      "watchers": 101,
      "archived": false,
      "size_kb": 940
    },
    "readme_content": "# AI Website Cloner Template\n\n<a href=\"https://github.com/JCodesMore/ai-website-cloner-template/blob/master/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"MIT License\" /></a> <a href=\"https://github.com/JCodesMore/ai-website-cloner-template/stargazers\"><img src=\"https://img.shields.io/github/stars/JCodesMore/ai-website-cloner-template?style=flat\" alt=\"Stars\" /></a> <a href=\"https://discord.gg/hrTSX5yTpB\"><img src=\"https://img.shields.io/discord/1400896964597383279?label=discord\" alt=\"Discord\" /></a>\n\nA reusable template for reverse-engineering any website into a clean, modern Next.js codebase using AI coding agents. \n\n**Recommended: [Claude Code](https://docs.anthropic.com/en/docs/claude-code) with Opus 4.7 for best results** — but works with a variety of AI coding agents.\n\nPoint it at a URL, run `/clone-website`, and your AI agent will inspect the site, extract design tokens and assets, write component specs, and dispatch parallel builders to reconstruct every section.\n\n## Demo\n\n[![Watch the demo](docs/design-references/comparison.png)](https://youtu.be/O669pVZ_qr0)\n\n> Click the image above to watch the full demo on YouTube.\n\n## Quick Start\n\n> **Important:** Start by making your own copy with GitHub's **Use this template** button. Do not clone this template repository directly for your website project, and do not open pull requests here with your generated website.\n\n1. **Create your own repository from this template**\n\n   On the GitHub page for this project, click **Use this template**, then click **Create a new repository**.\n\n   Give your new repository a name, choose whether it should be public or private, then click **Create repository**. If GitHub shows an **Include all branches** option, you can leave it off.\n\n   This gives you your own separate project to work in, so your website changes stay in your account instead of coming back to the main template.\n\n2. **Open your new repository on your computer**\n\n   After GitHub creates your copy, open that new repository. Click **Code** and open or clone your new repository with your preferred coding tool.\n\n   If you use the terminal, the command will look like this:\n\n   ```bash\n   git clone https://github.com/YOUR-USERNAME/YOUR-NEW-REPOSITORY.git\n   cd YOUR-NEW-REPOSITORY\n   ```\n\n3. **Install dependencies**\n   ```bash\n   npm install\n   ```\n4. **Start your AI agent** — Claude Code recommended:\n   ```bash\n   claude --chrome\n   ```\n5. **Run the skill**:\n   ```\n   /clone-website <target-url1> [<target-url2> ...]\n   ```\n6. **Customize** (optional) — after the base clone is built, modify as needed\n\n> Using a different agent? Open `AGENTS.md` for project instructions — most agents pick it up automatically.\n\n## Supported Platforms\n\n| Agent                                                         | Status                     |\n| ------------------------------------------------------------- | -------------------------- |\n| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | **Recommended** — Opus 4.7 |\n| [Codex CLI](https://github.com/openai/codex)                  | Supported                  |\n| [OpenCode](https://opencode.ai/)                              | Supported                  |\n| [GitHub Copilot](https://github.com/features/copilot)         | Supported                  |\n| [Cursor](https://cursor.com/)                                 | Supported                  |\n| [Windsurf](https://codeium.com/windsurf)                      | Supported                  |\n| [Gemini CLI](https://github.com/google-gemini/gemini-cli)     | Supported                  |\n| [Cline](https://github.com/cline/cline)                       | Supported                  |\n| [Roo Code](https://github.com/RooCodeInc/Roo-Code)            | Supported                  |\n| [Continue](https://continue.dev/)                             | Supported                  |\n| [Amazon Q](https://aws.amazon.com/q/developer/)               | Supported                  |\n| [Augment Code](https://www.augmentcode.com/)                  | Supported                  |\n| [Aider](https://aider.chat/)                                  | Supported                  |\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) 24+\n- An AI coding agent (see [Supported Platforms](#supported-platforms))\n\n## Tech Stack\n\n- **Next.js 16** — App Router, React 19, TypeScript strict\n- **shadcn/ui** — Radix primitives + Tailwind CSS v4\n- **Tailwind CSS v4** — oklch design tokens\n- **Lucide React** — default icons (replaced by extracted SVGs during cloning)\n\n## How It Works\n\nThe `/clone-website` skill runs a multi-phase pipeline:\n\n1. **Reconnaissance** — screenshots, design token extraction, interaction sweep (scroll, click, hover, responsive)\n2. **Foundation** — updates fonts, colors, globals, downloads all assets\n3. **Component Specs** — writes detailed spec files (`docs/research/components/`) with exact computed CSS values, states, behaviors, and content\n4. **Parallel Build** — dispatches builder agents in git worktrees, one per section/component\n5. **Assembly & QA** — merges worktrees, wires up the page, runs visual diff against the original\n\nEach builder agent receives the full component specification inline — exact `getComputedStyle()` values, interaction models, multi-state content, responsive breakpoints, and asset paths. No guessing.\n\n## Use Cases\n\n- **Platform migration** — rebuild a site you own from WordPress/Webflow/Squarespace into a modern Next.js codebase\n- **Lost source code** — your site is live but the repo is gone, the developer left, or the stack is legacy. Get the code back in a modern format\n- **Learning** — deconstruct how production sites achieve specific layouts, animations, and responsive behavior by working with real code\n\n## Not Intended For\n\n- **Phishing or impersonation** — this project must not be used for deceptive purposes, impersonation, or any activity that breaks the law.\n- **Passing off someone's design as your own** — logos, brand assets, and original copy belong to their owners.\n- **Violating terms of service** — some sites explicitly prohibit scraping or reproduction. Check first.\n\n## Project Structure\n\n```\nsrc/\n  app/              # Next.js routes\n  components/       # React components\n    ui/             # shadcn/ui primitives\n    icons.tsx       # Extracted SVG icons\n  lib/utils.ts      # cn() utility\n  types/            # TypeScript interfaces\n  hooks/            # Custom React hooks\npublic/\n  images/           # Downloaded images from target\n  videos/           # Downloaded videos from target\n  seo/              # Favicons, OG images\ndocs/\n  research/         # Extraction output & component specs\n  design-references/ # Screenshots\nscripts/\n  sync-agent-rules.sh  # Regenerate agent instruction files\n  sync-skills.mjs      # Regenerate /clone-website for all platforms\nAGENTS.md           # Agent instructions (single source of truth)\nCLAUDE.md           # Claude Code config (imports AGENTS.md)\nGEMINI.md           # Gemini CLI config (imports AGENTS.md)\n```\n\n## Commands\n\n```bash\nnpm run dev    # Start dev server\nnpm run build  # Production build\nnpm run lint   # ESLint check\nnpm run typecheck # TypeScript check\nnpm run check  # Run lint + typecheck + build\n```\n\n### If using docker\n\n```bash\ndocker compose up app --build # build and run the app\ndocker compose up dev --build # run the app in dev mode on port 3001\n```\n\n## Updating for Other Platforms\n\nTwo source-of-truth files power all platform support. Edit the source, then run the sync script:\n\n| What                   | Source of truth                         | Sync command                       |\n| ---------------------- | --------------------------------------- | ---------------------------------- |\n| Project instructions   | `AGENTS.md`                             | `bash scripts/sync-agent-rules.sh` |\n| `/clone-website` skill | `.claude/skills/clone-website/SKILL.md` | `node scripts/sync-skills.mjs`     |\n\nEach script regenerates the platform-specific copies automatically. Agents that read the source files natively need no regeneration.\n\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=JCodesMore/ai-website-cloner-template&type=Date)](https://star-history.com/#JCodesMore/ai-website-cloner-template&Date)\n\n## License\n\nMIT\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"ai-website-clone-template\",\n  \"version\": \"0.3.1\",\n  \"private\": true,\n  \"description\": \"Clone any website into a clean, modern Next.js codebase using AI coding agents\",\n  \"author\": \"JCodesMore\",\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/JCodesMore/ai-website-cloner-template.git\"\n  },\n  \"homepage\": \"https://github.com/JCodesMore/ai-website-cloner-template\",\n  \"bugs\": {\n    \"url\": \"https://github.com/JCodesMore/ai-website-cloner-template/issues\"\n  },\n  \"keywords\": [\n    \"claude-code\",\n    \"website-clone\",\n    \"reverse-engineering\",\n    \"nextjs\",\n    \"ai\",\n    \"template\",\n    \"tailwindcss\",\n    \"shadcn-ui\"\n  ],\n  \"engines\": {\n    \"node\": \">=24\"\n  },\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"eslint\",\n    \"typecheck\": \"tsc --noEmit\",\n    \"check\": \"npm run lint && npm run typecheck && npm run build\"\n  },\n  \"dependencies\": {\n    \"@base-ui/react\": \"^1.3.0\",\n    \"class-variance-authority\": \"^0.7.1\",\n    \"clsx\": \"^2.1.1\",\n    \"lucide-react\": \"^1.6.0\",\n    \"next\": \"16.2.1\",\n    \"react\": \"19.2.4\",\n    \"react-dom\": \"19.2.4\",\n    \"shadcn\": \"^4.1.0\",\n    \"tailwind-merge\": \"^3.5.0\",\n    \"tw-animate-css\": \"^1.4.0\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/postcss\": \"^4\",\n    \"@types/node\": \"^24\",\n    \"@types/react\": \"^19\",\n    \"@types/react-dom\": \"^19\",\n    \"eslint\": \"^9\",\n    \"eslint-config-next\": \"16.2.1\",\n    \"tailwindcss\": \"^4\",\n    \"typescript\": \"^5\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "mauriceboe",
    "name": "TREK",
    "full_name": "mauriceboe/TREK",
    "url": "https://github.com/mauriceboe/TREK",
    "description": "A self-hosted travel/trip planner with real-time collaboration, interactive maps, PWA support, SSO, budgets, packing lists, and more.",
    "language": "TypeScript",
    "total_stars": 7593,
    "forks": 646,
    "stars_this_period": 1063,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [
        "budget-tracker",
        "collaborative",
        "open-source",
        "opensource",
        "packing-list",
        "poi",
        "real-time",
        "routes",
        "self-hosted",
        "travel",
        "travel-app",
        "travel-planner",
        "traveling",
        "trip",
        "trip-planner",
        "wanderlog",
        "wanderlust",
        "webapplication"
      ],
      "license": "AGPL-3.0",
      "open_issues": 18,
      "created_at": "2026-03-19T11:51:54Z",
      "pushed_at": "2026-06-26T20:36:45Z",
      "homepage": "https://demo.liketrek.com",
      "default_branch": "main",
      "forks": 646,
      "watchers": 14,
      "archived": false,
      "size_kb": 109142
    },
    "readme_content": "<div align=\"center\">\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/logo-trek-light.gif\" />\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/logo-trek-dark.gif\" />\n  <img src=\"docs/logo-trek-dark.gif\" alt=\"TREK\" height=\"96\" />\n</picture>\n\n<br />\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/subtitle-light.png\" />\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/subtitle-dark.png\" />\n  <img src=\"docs/subtitle-dark.png\" alt=\"Your trips. Your plan. Your server.\" height=\"28\" />\n</picture>\n\nA self-hosted, real-time collaborative travel planner — with maps, budgets, packing lists, a journal, and AI built in.\n\n<br />\n\n<a href=\"https://demo.liketrek.com\"><img alt=\"Demo\" src=\"https://img.shields.io/badge/Demo-try-111827?style=for-the-badge\" /></a>\n&nbsp;\n<a href=\"https://hub.docker.com/r/mauriceboe/trek\"><img alt=\"Docker\" src=\"https://img.shields.io/badge/Docker-ready-2496ED?style=for-the-badge\" /></a>\n&nbsp;\n<a href=\"https://discord.gg/NhZBDSd4qW\"><img alt=\"Discord\" src=\"https://img.shields.io/badge/Discord-join-5865F2?style=for-the-badge\" /></a>\n&nbsp;\n<a href=\"https://kanban.pakulat.org/shared/I4wxF6inOOMB0C6hH6kQm3efyNxFjwyI\"><img alt=\"Roadmap\" src=\"https://img.shields.io/badge/Roadmap-view-0EA5E9?style=for-the-badge\" /></a>\n<br />\n<a href=\"https://ko-fi.com/mauriceboe\"><img alt=\"Ko-fi\" src=\"https://img.shields.io/badge/Ko--fi-support-FF5E5B?style=for-the-badge\" /></a>\n&nbsp;\n<a href=\"https://www.buymeacoffee.com/mauriceboe\"><img alt=\"BMAC\" src=\"https://img.shields.io/badge/BMAC-support-FFDD00?style=for-the-badge\" /></a>\n<br />\n<a href=\"LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/badge/license-AGPL_v3-6B7280?style=flat-square\" /></a>\n<a href=\"https://github.com/mauriceboe/TREK/releases\"><img alt=\"Latest Release\" src=\"https://img.shields.io/github/v/release/mauriceboe/TREK?include_prereleases&style=flat-square&color=6B7280\" /></a>\n<a href=\"https://hub.docker.com/r/mauriceboe/trek\"><img alt=\"Docker Pulls\" src=\"https://img.shields.io/docker/pulls/mauriceboe/trek?style=flat-square&color=6B7280\" /></a>\n<a href=\"https://github.com/mauriceboe/TREK\"><img alt=\"Stars\" src=\"https://img.shields.io/github/stars/mauriceboe/TREK?style=flat-square&color=6B7280\" /></a>\n\n</div>\n\n---\n\n<div align=\"center\">\n\n<img src=\"https://github.com/mauriceboe/trek-media/releases/download/readme-assets/TREK1.gif\" alt=\"TREK — 60-second tour\" width=\"100%\" />\n\n</div>\n\n<br />\n\n<div align=\"center\">\n  <a href=\"docs/screenshots/dashboard.png\"><img src=\"docs/screenshots/dashboard.png\" alt=\"Dashboard\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/trip-planner.png\"><img src=\"docs/screenshots/trip-planner.png\" alt=\"Trip planner with 3D map\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/journey.png\"><img src=\"docs/screenshots/journey.png\" alt=\"Journey journal\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/budget.png\"><img src=\"docs/screenshots/budget.png\" alt=\"Costs · expense splitting\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/atlas.png\"><img src=\"docs/screenshots/atlas.png\" alt=\"Atlas · visited countries\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/vacay.png\"><img src=\"docs/screenshots/vacay.png\" alt=\"Vacay planner\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/trip-iceland.png\"><img src=\"docs/screenshots/trip-iceland.png\" alt=\"Trip planner · day plan and route\" width=\"49%\" /></a>\n  <a href=\"docs/screenshots/admin.png\"><img src=\"docs/screenshots/admin.png\" alt=\"Admin panel\" width=\"49%\" /></a>\n</div>\n\n---\n\n## What you get\n\n<picture>\n  <source media=\"(max-width: 700px)\" srcset=\"docs/tiles/grid-mobile.svg\" />\n  <img src=\"docs/tiles/grid-desktop.svg\" alt=\"TREK feature tiles\" width=\"100%\" />\n</picture>\n\n<details>\n<summary><b>See all features</b></summary>\n\n<table>\n<tr>\n<td width=\"50%\" valign=\"top\">\n\n#### 🧭 Trip planning\n\n- **Drag & drop planner** — organise places into day plans with reordering and cross-day moves\n- **Interactive map** — Leaflet or Mapbox GL with 3D buildings, terrain, photo markers, clustering, route visualization\n- **Place search** — Google Places (photos, ratings, hours) or OpenStreetMap (free, no API key)\n- **Place import** — shared Google Maps / Naver Maps lists, plus GPX and KML/KMZ/GeoJSON map files\n- **Day notes** — timestamped, icon-tagged notes with drag-and-drop reordering\n- **Route optimisation** — auto-sort places and export to Google Maps\n- **Weather forecasts** — 16-day via Open-Meteo (no key) + historical climate fallback\n- **Category filter** — show only matching pins on the map\n\n</td>\n<td width=\"50%\" valign=\"top\">\n\n#### 🧳 Travel management\n\n- **Reservations** — flights, accommodations, restaurants with status, confirmation numbers, files; import from booking confirmation emails and PDFs ([KDE Itinerary](https://invent.kde.org/pim/kitinerary))\n- **Costs** — track and split trip expenses (Splitwise-style): per-person / per-day breakdowns, settle-up, multi-currency\n- **Packing lists** — categories, templates, user assignment, progress tracking\n- **Bag tracking** — optional weight tracking with iOS-style distribution\n- **Document manager** — attach docs, tickets, PDFs to trips / places / reservations (≤ 50 MB each)\n- **PDF export** — full trip plan as PDF with cover page, images, notes\n\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"top\">\n\n#### 👥 Collaboration\n\n- **Real-time sync** — WebSocket. Changes appear instantly across all connected users\n- **Multi-user trips** — invite members with role-based access\n- **Invite links** — one-time or reusable links with expiry\n- **SSO (OIDC)** — Google, Apple, Authentik, Keycloak, or any OIDC provider\n- **2FA** — TOTP + backup codes\n- **Passkeys** — passwordless WebAuthn login (fingerprint / face / PIN / security key), admin-toggleable\n- **Collab suite** — group chat, shared notes, polls, day check-ins\n\n</td>\n<td width=\"50%\" valign=\"top\">\n\n#### 📱 Mobile & PWA\n\n- **Installable** — iOS and Android, straight from the browser, no App Store needed\n- **Offline support** — Service Worker caches tiles, API, uploads via Workbox\n- **Native feel** — fullscreen standalone, themed status bar, splash screen\n- **Touch optimised** — mobile-specific layouts with safe-area handling\n\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"top\">\n\n#### 🧩 Addons (admin-toggleable)\n\n- **Lists** — packing lists + to-dos with templates, member assignments, optional bag tracking\n- **Costs** — expense tracker with splits and settle-up (who owes whom), multi-currency\n- **Documents** — file attachments on trips, places, and reservations\n- **Collab** — chat, notes, polls, day-by-day attendance\n- **Vacay** — personal vacation planner with calendar, 100+ country holidays, carry-over tracking\n- **Atlas** — world map of visited countries, bucket list, travel stats, streak tracking, liquid-glass UI\n- **Journey** — magazine-style travel journal with entries, photos (Immich/Synology), maps, moods\n- **AirTrail** — connect a self-hosted AirTrail instance to import and sync flights into reservations\n- **MCP** — expose TREK to AI assistants via OAuth 2.1\n\n</td>\n<td width=\"50%\" valign=\"top\">\n\n#### 🤖 AI / MCP\n\n- **Built-in MCP server** — OAuth 2.1 authenticated. 150+ tools, 30 resources\n- **Granular scopes** — 27 OAuth scopes across 13 permission groups\n- **Full automation** — AI can create trips, plan days, build packing lists, manage budgets, mark countries visited\n- **Pre-built prompts** — `trip-summary`, `packing-list`, `budget-overview`\n- **Addon-aware** — exposes Atlas, Collab, Vacay when those addons are on\n\n</td>\n</tr>\n<tr>\n<td colspan=\"2\" valign=\"top\">\n\n#### ⚙️ Admin & customisation\n\n- **Dashboard views** — card grid or compact list · **Dark mode** — full theme with matching status bar\n- **20 languages** — EN, DE, ES, FR, IT, NL, HU, RU, ZH, ZH-TW, PL, CS, AR (RTL), BR, ID, TR, JA, KO, UK, GR\n- **Admin panel** — users, invites, packing templates, categories, addons, API keys, backups, GitHub history\n- **Notifications** — per-user preferences across email (SMTP), webhook, ntfy, and an in-app notification center\n- **Auto-backups** — scheduled with configurable retention · **Units** — °C/°F, 12h/24h, map tile sources, default coordinates\n\n</td>\n</tr>\n</table>\n\n</details>\n\n<br />\n\n## Get started in 30 seconds\n\n```bash\nENCRYPTION_KEY=$(openssl rand -hex 32) docker run -d -p 3000:3000 \\\n  -e ENCRYPTION_KEY=$ENCRYPTION_KEY \\\n  -v ./data:/app/data -v ./uploads:/app/uploads mauriceboe/trek\n```\n\nOpen `http://localhost:3000`. On first boot TREK seeds an admin account — if you set `ADMIN_EMAIL`/`ADMIN_PASSWORD` those are used, otherwise the credentials are printed to the container log (`docker logs trek`).\n\n<div align=\"center\">\n\n&nbsp;&nbsp;·&nbsp;&nbsp;<a href=\"#docker-compose-production\">Docker Compose</a>&nbsp;&nbsp;·&nbsp;&nbsp;<a href=\"#helm-kubernetes\">Helm / Kubernetes</a>&nbsp;&nbsp;·&nbsp;&nbsp;<a href=\"#install-as-app-pwa\">Install as PWA</a>&nbsp;&nbsp;·&nbsp;&nbsp;<a href=\"#reverse-proxy\">Reverse Proxy</a>&nbsp;&nbsp;·&nbsp;&nbsp;\n\n</div>\n\n<br />\n\n## Tech stack\n\n<div align=\"center\">\n\n![Node.js](https://img.shields.io/badge/Node.js_22-339933?style=flat-square&logo=node.js&logoColor=white)\n![NestJS](https://img.shields.io/badge/NestJS_11-E0234E?style=flat-square&logo=nestjs&logoColor=white)\n![SQLite](https://img.shields.io/badge/SQLite-003B57?style=flat-square&logo=sqlite&logoColor=white)\n![React](https://img.shields.io/badge/React_19-61DAFB?style=flat-square&logo=react&logoColor=black)\n![Vite](https://img.shields.io/badge/Vite-646CFF?style=flat-square&logo=vite&logoColor=white)\n![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)\n![Tailwind](https://img.shields.io/badge/Tailwind-06B6D4?style=flat-square&logo=tailwindcss&logoColor=white)\n![Leaflet](https://img.shields.io/badge/Leaflet-199900?style=flat-square&logo=leaflet&logoColor=white)\n![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white)\n\n</div>\n\nReal-time sync via WebSocket (`ws`). Backend on NestJS 11. State with Zustand. Auth via JWT + OAuth 2.1 + OIDC + Passkeys (WebAuthn) + TOTP MFA. Weather via Open-Meteo (no key required). Maps with Leaflet and Mapbox GL.\n\n<br />\n\n<h2 id=\"docker-compose-production\">Docker Compose (production)</h2>\n\n<details>\n<summary>Full compose example with secure defaults</summary>\n\n```yaml\nservices:\n  app:\n    image: mauriceboe/trek:latest\n    container_name: trek\n    read_only: true\n    security_opt:\n      - no-new-privileges:true\n    cap_drop:\n      - ALL\n    cap_add:\n      - CHOWN\n      - SETUID\n      - SETGID\n    tmpfs:\n      - /tmp:noexec,nosuid,size=64m\n    ports:\n      - \"3000:3000\"\n    environment:\n      - NODE_ENV=production\n      - PORT=3000\n      - ENCRYPTION_KEY=${ENCRYPTION_KEY:-}   # generate with: openssl rand -hex 32\n      - TZ=${TZ:-UTC}\n      - LOG_LEVEL=${LOG_LEVEL:-info}\n      - ALLOWED_ORIGINS=${ALLOWED_ORIGINS:-}\n      - APP_URL=${APP_URL:-}                 # required for OIDC + email links\n      # - FORCE_HTTPS=true                   # behind a TLS-terminating proxy\n      # - TRUST_PROXY=1\n      # - OIDC_ISSUER=https://auth.example.com\n      # - OIDC_CLIENT_ID=trek\n      # - OIDC_CLIENT_SECRET=supersecret\n      # - OIDC_DISPLAY_NAME=SSO\n      # - OIDC_ADMIN_CLAIM=groups\n      # - OIDC_ADMIN_VALUE=app-trek-admins\n    volumes:\n      - ./data:/app/data\n      - ./uploads:/app/uploads\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"-qO-\", \"http://localhost:3000/api/health\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 15s\n```\n\nThen:\n\n```bash\ndocker compose up -d\n```\n\n**HTTPS notes:** `FORCE_HTTPS=true` is optional — it adds a 301 redirect, HSTS, CSP upgrade-insecure-requests, and forces the `secure` cookie flag. Only use it behind a TLS-terminating reverse proxy. `TRUST_PROXY=1` tells the server how many proxies sit in front so real client IPs and `X-Forwarded-Proto` work.\n\n</details>\n\n<br />\n\n<h2 id=\"helm-kubernetes\">Helm (Kubernetes)</h2>\n\n```bash\nhelm re",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"@trek/root\",\n  \"private\": true,\n  \"version\": \"3.1.2\",\n  \"workspaces\": [\n    \"client\",\n    \"server\",\n    \"shared\"\n  ],\n  \"scripts\": {\n    \"version:major\": \"npm version major --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:minor\": \"npm version minor --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:patch\": \"npm version patch --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:premajor\": \"npm version premajor --preid=rc --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:preminor\": \"npm version preminor --preid=beta --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:prepatch\": \"npm version prepatch --preid=alpha --workspaces --include-workspace-root --no-git-tag-version\",\n    \"version:prerelease\": \"npm version prerelease --preid=pre --workspaces --include-workspace-root --no-git-tag-version\",\n    \"dev\": \"npm run build --workspace=shared && concurrently --names shared,server,client \\\"npm run build:watch --workspace=shared\\\" \\\"npm run dev --workspace=server\\\" \\\"npm run dev --workspace=client\\\"\",\n    \"build\": \"npm run build --workspace=shared && npm run build --workspace=server && npm run build --workspace=client\",\n    \"test\": \"npm run test --workspace=shared && npm run test --workspace=server && npm run test --workspace=client\",\n    \"test:cov\": \"npm run test:coverage --workspace=server && npm run test:coverage --workspace=client\",\n    \"test:e2e\": \"npm run test:e2e --workspace=server\",\n    \"lint\": \"npm run lint --workspace=shared && npm run lint --workspace=server && npm run lint --workspace=client\",\n    \"format\": \"npm run format --workspace=shared && npm run format --workspace=server && npm run format --workspace=client\",\n    \"format:check\": \"npm run format:check --workspace=shared && npm run format:check --workspace=server && npm run format:check --workspace=client\"\n  },\n  \"devDependencies\": {\n    \"concurrently\": \"^10.0.3\"\n  },\n  \"comment:overrides\": \"Force a single React 19 across the workspace so the test renderer (@testing-library/react) and the app share one react-dom.\",\n  \"overrides\": {\n    \"react\": \"19.2.6\",\n    \"react-dom\": \"19.2.6\",\n    \"multer\": \"^2.2.0\"\n  },\n  \"optionalDependencies\": {\n    \"@rollup/rollup-linux-x64-musl\": \"4.62.0\",\n    \"@rollup/rollup-linux-arm64-musl\": \"4.62.0\",\n    \"@img/sharp-linuxmusl-x64\": \"0.35.1\",\n    \"@img/sharp-linuxmusl-arm64\": \"0.35.1\"\n  }\n}\n",
    "strategic_keywords": [
      "rag",
      "workspace"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 78
    },
    "strategic_score": 78
  },
  {
    "owner": "opendatalab",
    "name": "MinerU",
    "full_name": "opendatalab/MinerU",
    "url": "https://github.com/opendatalab/MinerU",
    "description": "Transforms complex documents like PDFs and Office docs into LLM-ready markdown/JSON for your Agentic workflows.",
    "language": "Python",
    "total_stars": 70355,
    "forks": 5936,
    "stars_this_period": 944,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "ai4science",
        "document-analysis",
        "docx",
        "extract-data",
        "layout-analysis",
        "ocr",
        "parser",
        "pdf",
        "pdf-converter",
        "pdf-extractor-llm",
        "pdf-extractor-pretrain",
        "pdf-extractor-rag",
        "pdf-parser",
        "pptx",
        "python",
        "xlsx"
      ],
      "license": "NOASSERTION",
      "open_issues": 28,
      "created_at": "2024-02-29T08:52:34Z",
      "pushed_at": "2026-06-26T10:37:39Z",
      "homepage": "https://opendatalab.github.io/MinerU/",
      "default_branch": "master",
      "forks": 5936,
      "watchers": 256,
      "archived": false,
      "size_kb": 156325
    },
    "readme_content": "<div align=\"center\" xmlns=\"http://www.w3.org/1999/html\">\n<!-- logo -->\n<p align=\"center\">\n  <img src=\"https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docs/images/MinerU-logo.png\" width=\"300px\" style=\"vertical-align:middle;\">\n</p>\n\n<!-- icon -->\n\n[![stars](https://img.shields.io/github/stars/opendatalab/MinerU.svg)](https://github.com/opendatalab/MinerU)\n[![forks](https://img.shields.io/github/forks/opendatalab/MinerU.svg)](https://github.com/opendatalab/MinerU)\n[![open issues](https://img.shields.io/github/issues-raw/opendatalab/MinerU)](https://github.com/opendatalab/MinerU/issues)\n[![issue resolution](https://img.shields.io/github/issues-closed-raw/opendatalab/MinerU)](https://github.com/opendatalab/MinerU/issues)\n[![PyPI version](https://img.shields.io/pypi/v/mineru)](https://pypi.org/project/mineru/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mineru)](https://pypi.org/project/mineru/)\n[![Downloads](https://static.pepy.tech/badge/mineru)](https://pepy.tech/project/mineru)\n[![Downloads](https://static.pepy.tech/badge/mineru/month)](https://pepy.tech/project/mineru)\n[![OpenDataLab](https://img.shields.io/badge/webapp_on_mineru.net-blue?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTM0IiBoZWlnaHQ9IjEzNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTIyLDljMCw1LTQsOS05LDlzLTktNC05LTksNC05LDktOSw5LDQsOSw5eiIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGQ9Im0xMjIsOWMwLDUtNCw5LTksOXMtOS00LTktOSw0LTksOS05LDksNCw5LDl6IiBmaWxsPSIjMDEwMTAxIi8+PHBhdGggZD0ibTkxLDE4YzAsNS00LDktOSw5cy05LTQtOS05LDQtOSw5LTksOSw0LDksOXoiIGZpbGw9InVybCgjYikiLz48cGF0aCBkPSJtOTEsMThjMCw1LTQsOS05LDlzLTktNC05LTksNC05LDktOSw5LDQsOSw5eiIgZmlsbD0iIzAxMDEwMSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMzksNjJjMCwxNiw4LDMwLDIwLDM4LDctNiwxMi0xNiwxMi0yNlY0OWMwLTQsMy03LDYtOGw0Ni0xMmM1LTEsMTEsMywxMSw4djMxYzAsMzctMzAsNjYtNjYsNjYtMzcsMC02Ni0zMC02Ni02NlY0NmMwLTQsMy03LDYtOGwyMC02YzUtMSwxMSwzLDExLDh2MjF6bS0yOSw2YzAsMTYsNiwzMCwxNyw0MCwzLDEsNSwxLDgsMSw1LDAsMTAtMSwxNS0zQzM3LDk1LDI5LDc5LDI5LDYyVjQybC0xOSw1djIweiIgZmlsbD0idXJsKCNjKSIvPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJtMzksNjJjMCwxNiw4LDMwLDIwLDM4LDctNiwxMi0xNiwxMi0yNlY0OWMwLTQsMy03LDYtOGw0Ni0xMmM1LTEsMTEsMywxMSw4djMxYzAsMzctMzAsNjYtNjYsNjYtMzcsMC02Ni0zMC02Ni02NlY0NmMwLTQsMy03LDYtOGwyMC02YzUtMSwxMSwzLDExLDh2MjF6bS0yOSw2YzAsMTYsNiwzMCwxNyw0MCwzLDEsNSwxLDgsMSw1LDAsMTAtMSwxNS0zQzM3LDk1LDI5LDc5LDI5LDYyVjQybC0xOSw1djIweiIgZmlsbD0iIzAxMDEwMSIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYyIgeDE9Ijg0IiB5MT0iNDEiIHgyPSI3NSIgeTI9IjEyMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMyZTJlMmUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48L3N2Zz4=&labelColor=white)](https://mineru.net/OpenSourceTools/Extractor?source=github)\n[![HuggingFace](https://img.shields.io/badge/Demo_on_HuggingFace-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAABYCAMAAACkl9t/AAAAk1BMVEVHcEz/nQv/nQv/nQr/nQv/nQr/nQv/nQv/nQr/wRf/txT/pg7/yRr/rBD/zRz/ngv/oAz/zhz/nwv/txT/ngv/0B3+zBz/nQv/0h7/wxn/vRb/thXkuiT/rxH/pxD/ogzcqyf/nQvTlSz/czCxky7/SjifdjT/Mj3+Mj3wMj15aTnDNz+DSD9RTUBsP0FRO0Q6O0WyIxEIAAAAGHRSTlMADB8zSWF3krDDw8TJ1NbX5efv8ff9/fxKDJ9uAAAGKklEQVR42u2Z63qjOAyGC4RwCOfB2JAGqrSb2WnTw/1f3UaWcSGYNKTdf/P+mOkTrE+yJBulvfvLT2A5ruenaVHyIks33npl/6C4s/ZLAM45SOi/1FtZPyFur1OYofBX3w7d54Bxm+E8db+nDr12ttmESZ4zludJEG5S7TO72YPlKZFyE+YCYUJTBZsMiNS5Sd7NlDmKM2Eg2JQg8awbglfqgbhArjxkS7dgp2RH6hc9AMLdZYUtZN5DJr4molC8BfKrEkPKEnEVjLbgW1fLy77ZVOJagoIcLIl+IxaQZGjiX597HopF5CkaXVMDO9Pyix3AFV3kw4lQLCbHuMovz8FallbcQIJ5Ta0vks9RnolbCK84BtjKRS5uA43hYoZcOBGIG2Epbv6CvFVQ8m8loh66WNySsnN7htL58LNp+NXT8/PhXiBXPMjLSxtwp8W9f/1AngRierBkA+kk/IpUSOeKByzn8y3kAAAfh//0oXgV4roHm/kz4E2z//zRc3/lgwBzbM2mJxQEa5pqgX7d1L0htrhx7LKxOZlKbwcAWyEOWqYSI8YPtgDQVjpB5nvaHaSnBaQSD6hweDi8PosxD6/PT09YY3xQA7LTCTKfYX+QHpA0GCcqmEHvr/cyfKQTEuwgbs2kPxJEB0iNjfJcCTPyocx+A0griHSmADiC91oNGVwJ69RudYe65vJmoqfpul0lrqXadW0jFKH5BKwAeCq+Den7s+3zfRJzA61/Uj/9H/VzLKTx9jFPPdXeeP+L7WEvDLAKAIoF8bPTKT0+TM7W8ePj3Rz/Yn3kOAp2f1Kf0Weony7pn/cPydvhQYV+eFOfmOu7VB/ViPe34/EN3RFHY/yRuT8ddCtMPH/McBAT5s+vRde/gf2c/sPsjLK+m5IBQF5tO+h2tTlBGnP6693JdsvofjOPnnEHkh2TnV/X1fBl9S5zrwuwF8NFrAVJVwCAPTe8gaJlomqlp0pv4Pjn98tJ/t/fL++6unpR1YGC2n/KCoa0tTLoKiEeUPDl94nj+5/Tv3/eT5vBQ60X1S0oZr+IWRR8Ldhu7AlLjPISlJcO9vrFotky9SpzDequlwEir5beYAc0R7D9KS1DXva0jhYRDXoExPdc6yw5GShkZXe9QdO/uOvHofxjrV/TNS6iMJS+4TcSTgk9n5agJdBQbB//IfF/HpvPt3Tbi7b6I6K0R72p6ajryEJrENW2bbeVUGjfgoals4L443c7BEE4mJO2SpbRngxQrAKRudRzGQ8jVOL2qDVjjI8K1gc3TIJ5KiFZ1q+gdsARPB4NQS4AjwVSt72DSoXNyOWUrU5mQ9nRYyjp89Xo7oRI6Bga9QNT1mQ/ptaJq5T/7WcgAZywR/XlPGAUDdet3LE+qS0TI+g+aJU8MIqjo0Kx8Ly+maxLjJmjQ18rA0YCkxLQbUZP1WqdmyQGJLUm7VnQFqodmXSqmRrdVpqdzk5LvmvgtEcW8PMGdaS23EOWyDVbACZzUJPaqMbjDxpA3Qrgl0AikimGDbqmyT8P8NOYiqrldF8rX+YN7TopX4UoHuSCYY7cgX4gHwclQKl1zhx0THf+tCAUValzjI7Wg9EhptrkIcfIJjA94evOn8B2eHaVzvBrnl2ig0So6hvPaz0IGcOvTHvUIlE2+prqAxLSQxZlU2stql1NqCCLdIiIN/i1DBEHUoElM9dBravbiAnKqgpi4IBkw+utSPIoBijDXJipSVV7MpOEJUAc5Qmm3BnUN+w3hteEieYKfRZSIUcXKMVf0u5wD4EwsUNVvZOtUT7A2GkffHjByWpHqvRBYrTV72a6j8zZ6W0DTE86Hn04bmyWX3Ri9WH7ZU6Q7h+ZHo0nHUAcsQvVhXRDZHChwiyi/hnPuOsSEF6Exk3o6Y9DT1eZ+6cASXk2Y9k+6EOQMDGm6WBK10wOQJCBwren86cPPWUcRAnTVjGcU1LBgs9FURiX/e6479yZcLwCBmTxiawEwrOcleuu12t3tbLv/N4RLYIBhYexm7Fcn4OJcn0+zc+s8/VfPeddZHAGN6TT8eGczHdR/Gts1/MzDkThr23zqrVfAMFT33Nx1RJsx1k5zuWILLnG/vsH+Fv5D4NTVcp1Gzo8AAAAAElFTkSuQmCC&labelColor=white)](https://huggingface.co/spaces/opendatalab/MinerU)\n[![ModelScope](https://img.shields.io/badge/Demo_on_ModelScope-purple?logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIzIiBoZWlnaHQ9IjIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCiA8Zz4KICA8dGl0bGU+TGF5ZXIgMTwvdGl0bGU+CiAgPHBhdGggaWQ9InN2Z18xNCIgZmlsbD0iIzYyNGFmZiIgZD0ibTAsODkuODRsMjUuNjUsMGwwLDI1LjY0OTk5bC0yNS42NSwwbDAsLTI1LjY0OTk5eiIvPgogIDxwYXRoIGlkPSJzdmdfMTUiIGZpbGw9IiM2MjRhZmYiIGQ9Im05OS4xNCwxMTUuNDlsMjUuNjUsMGwwLDI1LjY1bC0yNS42NSwwbDAsLTI1LjY1eiIvPgogIDxwYXRoIGlkPSJzdmdfMTYiIGZpbGw9IiM2MjRhZmYiIGQ9Im0xNzYuMDksMTQxLjE0bC0yNS42NDk5OSwwbDAsMjIuMTlsNDcuODQsMGwwLC00Ny44NGwtMjIuMTksMGwwLDI1LjY1eiIvPgogIDxwYXRoIGlkPSJzdmdfMTciIGZpbGw9IiMzNmNmZDEiIGQ9Im0xMjQuNzksODkuODRsMjUuNjUsMGwwLDI1LjY0OTk5bC0yNS42NSwwbDAsLTI1LjY0OTk5eiIvPgogIDxwYXRoIGlkPSJzdmdfMTgiIGZpbGw9IiMzNmNmZDEiIGQ9Im0wLDY0LjE5bDI1LjY1LDBsMCwyNS42NWwtMjUuNjUsMGwwLC0yNS42NXoiLz4KICA8cGF0aCBpZD0ic3ZnXzE5IiBmaWxsPSIjNjI0YWZmIiBkPSJtMTk4LjI4LDg5Ljg0bDI1LjY0OTk5LDBsMCwyNS42NDk5OWwtMjUuNjQ5OTksMGwwLC0yNS42NDk5OXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIwIiBmaWxsPSIjMzZjZmQxIiBkPSJtMTk4LjI4LDY0LjE5bDI1LjY0OTk5LDBsMCwyNS42NWwtMjUuNjQ5OTksMGwwLC0yNS42NXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIxIiBmaWxsPSIjNjI0YWZmIiBkPSJtMTUwLjQ0LDQybDAsMjIuMTlsMjUuNjQ5OTksMGwwLDI1LjY1bDIyLjE5LDBsMCwtNDcuODRsLTQ3Ljg0LDB6Ii8+CiAgPHBhdGggaWQ9InN2Z18yMiIgZmlsbD0iIzM2Y2ZkMSIgZD0ibTczLjQ5LDg5Ljg0bDI1LjY1LDBsMCwyNS42NDk5OWwtMjUuNjUsMGwwLC0yNS42NDk5OXoiLz4KICA8cGF0aCBpZD0ic3ZnXzIzIiBmaWxsPSIjNjI0YWZmIiBkPSJtNDcuODQsNjQuMTlsMjUuNjUsMGwwLC0yMi4xOWwtNDcuODQsMGwwLDQ3Ljg0bDIyLjE5LDBsMCwtMjUuNjV6Ii8+CiAgPHBhdGggaWQ9InN2Z18yNCIgZmlsbD0iIzYyNGFmZiIgZD0ibTQ3Ljg0LDExNS40OWwtMjIuMTksMGwwLDQ3Ljg0bDQ3Ljg0LDBsMCwtMjIuMTlsLTI1LjY1LDBsMCwtMjUuNjV6Ii8+CiA8L2c+Cjwvc3ZnPg==&labelColor=white)](https://www.modelscope.cn/studios/OpenDataLab/MinerU)\n[![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/myhloli/a3cb16570ab3cfeadf9d8f0ac91b4fca/mineru_demo.ipynb)\n[![arXiv](https://img.shields.io/badge/MinerU-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2409.18839)\n[![arXiv](https://img.shields.io/badge/MinerU2.5-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2509.22186)\n[![arXiv](https://img.shields.io/badge/MinerU2.5%20Pro-Technical%20Report-b31b1b.svg?logo=arXiv)](https://arxiv.org/abs/2604.04771)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/opendatalab/MinerU)\n\n\n<a href=\"https://trendshift.io/repositories/11174\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/11174\" alt=\"opendatalab%2FMinerU | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n\n<!-- language -->\n\n[English](README.md) | [简体中文](README_zh-CN.md)\n\n<!-- hot link -->\n\n<p align=\"center\">\n🚀<a href=\"https://mineru.net/?source=github\">Access MinerU Now→✅ Zero-Install Web Version ✅ Full-Featured Desktop Client ✅ Instant API Access; Skip deployment headaches – get all product formats in one click. Developers, dive in!</a>\n</p>\n\n<!-- join us -->\n\n<p align=\"center\">\n    👋 join us on <a href=\"https://discord.gg/Tdedn9GTXq\" target=\"_blank\">Discord</a> and <a href=\"https://mineru.net/community-portal/?aliasId=3c430f94\" target=\"_blank\">WeChat</a>\n</p>\n\n</div>\n\n\n<details>\n<summary>MinerU — High-accuracy document parsing engine for LLM · RAG · Agent workflows</summary>\nConverts PDF · DOCX · PPTX · XLSX · Images · Web pages into structured Markdown / JSON · VLM+OCR dual engine · 109 languages <br>\nMCP Server · LangChain / Dify / FastGPT native integration · 10+ domestic AI chip support\n\n**🔍 Core Parsing Capabilities**\n\n- Native support for `DOCX`, `PPTX`, and `XLSX` parsing\n- Formulas → LaTeX · Tables → HTML, accurate layout reconstruction\n- Supports scanned docs, handwriting, multi-column layouts, cross-page table merging\n- Output follows human reading order with automatic header/footer removal\n- VLM + OCR dual engine, 109-language OCR recognition\n\n**🔌 Integration**\n\n| Use Case | Solution |\n|----------|----------|\n| AI Coding Tools | MCP Server — Cursor · Claude Desktop · Windsurf |\n| RAG Frameworks | LangChain · LlamaIndex · RAGFlow · RAG-Anything · Flowise · Dify · FastGPT |\n| Development | Python / Go / TypeScript SDK · CLI · REST API · Docker |\n| No-Code | mineru.net online · Gradio WebUI · Desktop client |\n\n**🖥️ Deployment (Private · Fully Offline)**\n\n| Inference Backend | Best For |\n|------------------|---------|\n| pipeline         | Fast & stable, no hallucination, runs on CPU or GPU |\n| vlm-engine       | High accuracy, supports vLLM / LMDeploy / mlx ecosystem |\n| hybrid-engine    | High accuracy, native text extraction, low hallucination |\n\nDomestic AI chips: Ascend · Cambricon · Enflame · MetaX · Moore Threads · Kunlunxin · Iluvatar · Hygon · Biren · T-Head\n</details>\n\n# Changelog\n\n- 2026/06/18 3.4 Released\n\n  This release focuses on **OCR capability upgrades for the pipeline backend**, **OCR processing pipeline optimization**, and **model download experience improvements**. The main updates include:\n\n  - OCR model upgrade and processing acceleration\n    - The OCR model for the `pipeline` backend has been upgraded to `PP-OCRv6`, improving OCR accuracy by about `11%` on OmniDocBench v1.6.\n    - Removed Japanese, Traditional Chinese, English, and Latin options from OCR language selection. These scenarios are now routed to the `ch` OCR model, simplifying model configuration and language selection.\n    - Optimized the OCR inference and processing pipeline, increasing OCR processing speed by about `100%` and significantly improving parsing efficiency for batch documents and OCR-intensive documents.\n\n  - Model download logic optimization\n    - Added automatic model source selection, allowing first-time installations to choose a better model source based on the current network environment.\n    - Before downloading models, MinerU now prioritizes checking locally downloaded model cache files. Cache hits can be reused directly, reducing repeated downloads and unnecessary remote requests.\n    - For more details about model source configuration, automatic source selection, and local model usage, see the [Model Source Document",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nrequires = [\"setuptools>=77.0.3\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"mineru\"\ndynamic = [\"version\"]\nlicense = \"LicenseRef-MinerU-Open-Source-License\"\nlicense-files = [\"LICENSE.md\"]\ndescription = \"A practical document parsing tool for converting PDF, images, DOCX, PPTX, and XLSX into Markdown and JSON\"\nreadme = \"README.md\"\nrequires-python = \">=3.10,<3.14\"\nkeywords = [\n    \"mineru\",\n    \"magic-pdf\",\n    \"document-parsing\",\n    \"document-understanding\",\n    \"pdf\",\n    \"markdown\",\n    \"ocr\",\n    \"vlm\",\n    \"docx\",\n    \"pptx\",\n    \"xlsx\",\n    \"multimodal\",\n]\nclassifiers = [\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n]\ndependencies = [\n    \"click>=8.1.7\",\n    \"loguru>=0.7.2\",\n    \"numpy>=1.21.6\",\n    \"tqdm>=4.67.1\",\n    \"requests\",\n    \"httpx\",\n    \"pillow>=11.0.0\",\n    \"pypdfium2>=4.30.0\",\n    \"pypdf>=5.6.0\",\n    \"reportlab\",\n    \"pdftext>=0.6.3\",\n    \"modelscope>=1.26.0\",\n    \"huggingface-hub>=0.32.4\",\n    \"json-repair>=0.46.2\",\n    \"opencv-python>=4.11.0.86\",\n    \"fast-langdetect>=0.2.3,<0.3.0\",\n    \"openai>=1.70.0,<3\",\n    \"beautifulsoup4>=4.13.5,<5\",\n    \"magika>=0.6.2,<1.1.0\",\n    \"mineru-vl-utils>=1.0.5,<2\",\n    \"python-docx>=1.2.0,<2\",\n    'pypptx-with-oxml>=1.0.3,<2',\n    \"mammoth>=1.11.0,<2\",\n    \"pylatexenc>=2.10,<3\",\n    \"lxml>=4.0.0,<7.0.0\",\n    \"openpyxl>=3.1.5,<4\",\n    \"fastapi\",\n    \"python-multipart\",\n    \"uvicorn\",\n]\n\n[project.optional-dependencies]\ntest = [\n    \"mineru[core]\",\n    \"pytest\",\n    \"pytest-cov\",\n    \"coverage\",\n    \"fuzzywuzzy\",\n    \"tomli; python_version < '3.11'\",\n]\nvlm = [\n    \"torch>=2.6.0,<3\",\n    \"transformers>=4.57.3,<5.0.0\",\n    \"accelerate>=1.5.1\",\n]\nvllm = [\n    \"vllm>=0.10.1.1,<0.22.0\",\n]\nlmdeploy = [\n    \"lmdeploy>=0.10.2,<0.12\",\n    \"qwen-vl-utils>=0.0.14,<1\",\n]\nmlx = [\n    \"mlx-vlm>=0.3.3,<0.4\",\n    \"mlx<=0.31.1\",\n]\ns3 = [\n    \"boto3>=1.28.43\",\n]\npipeline = [\n    \"PyYAML>=6.0.1,<7\",\n    \"ftfy>=6.3.1,<7\",\n    \"shapely>=2.0.7,<3\",\n    \"pyclipper>=1.3.0,<2\",\n    \"torch>=2.6.0,<3\",\n    \"torchvision\",\n    \"transformers>=4.57.3,<5.0.0\",\n    \"safetensors>=0.4.0,<1\",\n    \"onnxruntime>1.17.0\",\n]\ngradio = [\n    \"gradio>=5.49.1,!=6.0.0,!=6.0.1,!=6.0.2,!=6.1.0,!=6.2.0,!=6.3.0,!=6.4.0,!=6.5.0,!=6.5.1,!=6.6.0,!=6.7.0,<6.9.0\",\n    \"gradio-pdf>=0.0.22\",\n]\ncore = [\n    \"mineru[vlm]\",\n    \"mineru[pipeline]\",\n    \"mineru[gradio]\",\n]\nall = [\n    \"mineru[core]\",\n    \"mineru[s3]\",\n    \"mineru[mlx] ; sys_platform == 'darwin'\",\n    \"mineru[vllm] ; sys_platform == 'linux'\",\n    \"mineru[lmdeploy] ; sys_platform == 'win32'\",\n]\n\n[project.urls]\nhomepage = \"https://mineru.net/\"\ndocumentation = \"https://opendatalab.github.io/MinerU/\"\nrepository = \"https://github.com/opendatalab/MinerU\"\nissues = \"https://github.com/opendatalab/MinerU/issues\"\nLicense = \"https://github.com/opendatalab/MinerU/blob/master/LICENSE.md\"\n\n[project.scripts]\nmineru = \"mineru.cli.client:main\"\nmineru-vllm-server = \"mineru.cli.vlm_server:vllm_server\"\nmineru-lmdeploy-server = \"mineru.cli.vlm_server:lmdeploy_server\"\nmineru-openai-server = \"mineru.cli.vlm_server:openai_server\"\nmineru-models-download = \"mineru.cli.models_download:download_models\"\nmineru-api = \"mineru.cli.fast_api:main\"\nmineru-router = \"mineru.cli.router:main\"\nmineru-gradio = \"mineru.cli.gradio_app:main\"\n\n[tool.setuptools.dynamic]\nversion = { attr = \"mineru.version.__version__\" }\n\n[tool.setuptools.packages.find]\ninclude = [\"mineru*\"]\nnamespaces = false\n\n[tool.setuptools.package-data]\n\"mineru\" = [\"resources/**\"]\n\"mineru.model.utils.pytorchocr.utils\" = [\"resources/**\"]\n\n[tool.setuptools]\ninclude-package-data = true\nzip-safe = false\n\n[tool.pytest.ini_options]\naddopts = \"-s --cov=mineru --cov-report html\"\n\n[tool.coverage.run]\ncommand_line = \"-m pytest tests/unittest/test_e2e.py\"\nsource = [\"mineru/\"]\nomit = [\n    \"*/gradio_app.py\",\n    \"*/models_download.py\",\n    \"*/fast_api.py\",\n    \"*/cli/client.py\",\n    \"*/vlm_vllm_server.py\",\n    \"*/cli_parser.py\",\n]\n\n[tool.coverage.html]\ndirectory = \"htmlcov\"\n\n[tool.coverage.report]\nexclude_also = [\n    'def __repr__',\n    'if self.debug:',\n    'if settings.DEBUG',\n    'raise AssertionError',\n    'raise NotImplementedError',\n    'if 0:',\n    'if __name__ == .__main__.:',\n    'if TYPE_CHECKING:',\n    'class .*\\bProtocol\\):',\n    '@(abc\\.)?abstractmethod',\n]\n\n[tool.ruff]\nline-length = 128\n\n[tool.ruff.lint]\nselect = [\"C\", \"E\", \"F\", \"W\", \"ANN\"]\nignore = [\"C901\", \"ANN204\", \"ANN401\"]\n",
    "strategic_keywords": [
      "agent",
      "rag",
      "llm",
      "workflow"
    ],
    "relationship_label": "开发者工具",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "garrytan",
    "name": "gstack",
    "full_name": "garrytan/gstack",
    "url": "https://github.com/garrytan/gstack",
    "description": "Use Garry Tan's exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA",
    "language": "TypeScript",
    "total_stars": 116573,
    "forks": 17300,
    "stars_this_period": 919,
    "source_slice": "all",
    "source_slices": [
      "all",
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 741,
      "created_at": "2026-03-11T21:22:45Z",
      "pushed_at": "2026-06-25T16:42:45Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 17300,
      "watchers": 709,
      "archived": false,
      "size_kb": 111499
    },
    "readme_content": "# gstack\n\n> \"I don't think I've typed like a line of code probably since December, basically, which is an extremely large change.\" — [Andrej Karpathy](https://fortune.com/2026/03/21/andrej-karpathy-openai-cofounder-ai-agents-coding-state-of-psychosis-openclaw/), No Priors podcast, March 2026\n\nWhen I heard Karpathy say this, I wanted to find out how. How does one person ship like a team of twenty? Peter Steinberger built [OpenClaw](https://github.com/openclaw/openclaw) — 247K GitHub stars — essentially solo with AI agents. The revolution is here. A single builder with the right tooling can move faster than a traditional team.\n\nI'm [Garry Tan](https://x.com/garrytan), President & CEO of [Y Combinator](https://www.ycombinator.com/). I've worked with thousands of startups — Coinbase, Instacart, Rippling — when they were one or two people in a garage. Before YC, I was one of the first eng/PM/designers at Palantir, cofounded Posterous (sold to Twitter), and built Bookface, YC's internal social network.\n\n**gstack is my answer.** I've been building products for twenty years, and right now I'm shipping more products than I ever have. In the last 60 days: 3 production services, 40+ shipped features, part-time, while running YC full-time. On logical code change — not raw LOC, which AI inflates — my 2026 run rate is **~810× my 2013 pace** (11,417 vs 14 logical lines/day). Year-to-date (through April 18), 2026 has already produced **240× the entire 2013 year**. Measured across 40 public + private `garrytan/*` repos including Bookface, after excluding one demo repo. AI wrote most of it. The point isn't who typed it, it's what shipped.\n\n> The LOC critics aren't wrong that raw line counts inflate with AI. They are wrong that normalized-for-inflation, I'm less productive. I'm more productive, by a lot. Full methodology, caveats, and reproduction script: **[On the LOC Controversy](docs/ON_THE_LOC_CONTROVERSY.md)**.\n\n**2026 — 1,237 contributions and counting:**\n\n![GitHub contributions 2026 — 1,237 contributions, massive acceleration in Jan-Mar](docs/images/github-2026.png)\n\n**2013 — when I built Bookface at YC (772 contributions):**\n\n![GitHub contributions 2013 — 772 contributions building Bookface at YC](docs/images/github-2013.png)\n\nSame person. Different era. The difference is the tooling.\n\n**gstack is how I do it.** It turns Claude Code into a virtual engineering team — a CEO who rethinks the product, an eng manager who locks architecture, a designer who catches AI slop, a reviewer who finds production bugs, a QA lead who opens a real browser, a security officer who runs OWASP + STRIDE audits, and a release engineer who ships the PR. Twenty-three specialists and eight power tools, all slash commands, all Markdown, all free, MIT license.\n\nThis is my open source software factory. I use it every day. I'm sharing it because these tools should be available to everyone.\n\nFork it. Improve it. Make it yours. And if you want to hate on free open source software — you're welcome to, but I'd rather you just try it first.\n\n**Who this is for:**\n- **Founders and CEOs** — especially technical ones who still want to ship\n- **First-time Claude Code users** — structured roles instead of a blank prompt\n- **Tech leads and staff engineers** — rigorous review, QA, and release automation on every PR\n\n## Quick start\n\n1. Install gstack (30 seconds — see below)\n2. Run `/office-hours` — describe what you're building\n3. Run `/plan-ceo-review` on any feature idea\n4. Run `/review` on any branch with changes\n5. Run `/qa` on your staging URL\n6. Stop there. You'll know if this is for you.\n\n## Install — 30 seconds\n\n**Requirements:** [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Git](https://git-scm.com/), [Bun](https://bun.sh/) v1.0+, [Node.js](https://nodejs.org/) (Windows only)\n\n### Step 1: Install on your machine\n\nOpen Claude Code and paste this. Claude does the rest.\n\n> Install gstack: run **`git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup`** then add a \"gstack\" section to CLAUDE.md that says to use the /browse skill from gstack for all web browsing, never use mcp\\_\\_claude-in-chrome\\_\\_\\* tools, and lists the available skills: /office-hours, /plan-ceo-review, /plan-eng-review, /plan-design-review, /design-consultation, /design-shotgun, /design-html, /review, /ship, /land-and-deploy, /canary, /benchmark, /browse, /connect-chrome, /qa, /qa-only, /design-review, /setup-browser-cookies, /setup-deploy, /setup-gbrain, /retro, /investigate, /document-release, /document-generate, /codex, /cso, /autoplan, /plan-devex-review, /devex-review, /careful, /freeze, /guard, /unfreeze, /gstack-upgrade, /learn. Then ask the user if they also want to add gstack to the current project so teammates get it.\n\n### Step 2: Team mode — auto-update for shared repos (recommended)\n\nFrom inside your repo, paste this. Switches you to team mode, bootstraps the repo so teammates get gstack automatically, and commits the change:\n\n```bash\n(cd ~/.claude/skills/gstack && ./setup --team) && ~/.claude/skills/gstack/bin/gstack-team-init required && git add .claude/ CLAUDE.md && git commit -m \"require gstack for AI-assisted work\"\n```\n\nNo vendored files in your repo, no version drift, no manual upgrades. Every Claude Code session starts with a fast auto-update check (throttled to once/hour, network-failure-safe, completely silent).\n\nSwap `required` for `optional` if you'd rather nudge teammates than block them.\n\n### OpenClaw\n\nOpenClaw spawns Claude Code sessions via ACP, so every gstack skill just works\nwhen Claude Code has gstack installed. Paste this to your OpenClaw agent:\n\n> Install gstack: run `git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack && cd ~/.claude/skills/gstack && ./setup` to install gstack for Claude Code. Then add a \"Coding Tasks\" section to AGENTS.md that says: when spawning Claude Code sessions for coding work, tell the session to use gstack skills. Include these examples — security audit: \"Load gstack. Run /cso\", code review: \"Load gstack. Run /review\", QA test a URL: \"Load gstack. Run /qa https://...\", build a feature end-to-end: \"Load gstack. Run /autoplan, implement the plan, then run /ship\", plan before building: \"Load gstack. Run /office-hours then /autoplan. Save the plan, don't implement.\"\n\n**After setup, just talk to your OpenClaw agent naturally:**\n\n| You say | What happens |\n|---------|-------------|\n| \"Fix the typo in README\" | Simple — Claude Code session, no gstack needed |\n| \"Run a security audit on this repo\" | Spawns Claude Code with `Run /cso` |\n| \"Build me a notifications feature\" | Spawns Claude Code with /autoplan → implement → /ship |\n| \"Help me plan the v2 API redesign\" | Spawns Claude Code with /office-hours → /autoplan, saves plan |\n\nSee [docs/OPENCLAW.md](docs/OPENCLAW.md) for advanced dispatch routing and\nthe gstack-lite/gstack-full prompt templates.\n\n### Native OpenClaw Skills (via ClawHub)\n\nFour methodology skills that work directly in your OpenClaw agent, no Claude Code\nsession needed. Install from ClawHub:\n\n```\nclawhub install gstack-openclaw-office-hours gstack-openclaw-ceo-review gstack-openclaw-investigate gstack-openclaw-retro\n```\n\n| Skill | What it does |\n|-------|-------------|\n| `gstack-openclaw-office-hours` | Product interrogation with 6 forcing questions |\n| `gstack-openclaw-ceo-review` | Strategic challenge with 4 scope modes |\n| `gstack-openclaw-investigate` | Root cause debugging methodology |\n| `gstack-openclaw-retro` | Weekly engineering retrospective |\n\nThese are conversational skills. Your OpenClaw agent runs them directly via chat.\n\n### Other AI Agents\n\ngstack works on 10 AI coding agents, not just Claude. Setup auto-detects which\nagents you have installed:\n\n```bash\ngit clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/gstack\ncd ~/gstack && ./setup\n```\n\nOr target a specific agent with `./setup --host <name>`:\n\n| Agent | Flag | Skills install to |\n|-------|------|-------------------|\n| OpenAI Codex CLI | `--host codex` | `~/.codex/skills/gstack-*/` |\n| OpenCode | `--host opencode` | `~/.config/opencode/skills/gstack-*/` |\n| Cursor | `--host cursor` | `~/.cursor/skills/gstack-*/` |\n| Factory Droid | `--host factory` | `~/.factory/skills/gstack-*/` |\n| Slate | `--host slate` | `~/.slate/skills/gstack-*/` |\n| Kiro | `--host kiro` | `~/.kiro/skills/gstack-*/` |\n| Hermes | `--host hermes` | `~/.hermes/skills/gstack-*/` |\n| GBrain (mod) | `--host gbrain` | `~/.gbrain/skills/gstack-*/` |\n\n**Want to add support for another agent?** See [docs/ADDING_A_HOST.md](docs/ADDING_A_HOST.md).\nIt's one TypeScript config file, zero code changes.\n\n## See it work\n\n```\nYou:    I want to build a daily briefing app for my calendar.\nYou:    /office-hours\nClaude: [asks about the pain — specific examples, not hypotheticals]\n\nYou:    Multiple Google calendars, events with stale info, wrong locations.\n        Prep takes forever and the results aren't good enough...\n\nClaude: I'm going to push back on the framing. You said \"daily briefing\n        app.\" But what you actually described is a personal chief of\n        staff AI.\n        [extracts 5 capabilities you didn't realize you were describing]\n        [challenges 4 premises — you agree, disagree, or adjust]\n        [generates 3 implementation approaches with effort estimates]\n        RECOMMENDATION: Ship the narrowest wedge tomorrow, learn from\n        real usage. The full vision is a 3-month project — start with\n        the daily briefing that actually works.\n        [writes design doc → feeds into downstream skills automatically]\n\nYou:    /plan-ceo-review\n        [reads the design doc, challenges scope, runs 10-section review]\n\nYou:    /plan-eng-review\n        [ASCII diagrams for data flow, state machines, error paths]\n        [test matrix, failure modes, security concerns]\n\nYou:    Approve plan. Exit plan mode.\n        [writes 2,400 lines across 11 files. ~8 minutes.]\n\nYou:    /review\n        [AUTO-FIXED] 2 issues. [ASK] Race condition → you approve fix.\n\nYou:    /qa https://staging.myapp.com\n        [opens real browser, clicks through flows, finds and fixes a bug]\n\nYou:    /ship\n        Tests: 42 → 51 (+9 new). PR: github.com/you/app/pull/42\n```\n\nYou said \"daily briefing app.\" The agent said \"you're building a chief of staff AI\" — because it listened to your pain, not your feature request. Eight commands, end to end. That is not a copilot. That is a team.\n\n## The sprint\n\ngstack is a process, not a collection of tools. The skills run in the order a sprint runs:\n\n**Think → Plan → Build → Review → Test → Ship → Reflect**\n\nEach skill feeds into the next. `/office-hours` writes a design doc that `/plan-ceo-review` reads. `/plan-eng-review` writes a test plan that `/qa` picks up. `/review` catches bugs that `/ship` verifies are fixed. Nothing falls through the cracks because every step knows what came before it.\n\n| Skill | Your specialist | What they do |\n|-------|----------------|--------------|\n| `/office-hours` | **YC Office Hours** | Start here. Six forcing questions that reframe your product before you write code. Pushes back on your framing, challenges premises, generates implementation alternatives. Design doc feeds into every downstream skill. |\n| `/plan-ceo-review` | **CEO / Founder** | Rethink the problem. Find the 10-star product hiding inside the request. Four modes: Expansion, Selective Expansion, Hold Scope, Reduction. |\n| `/plan-eng-review` | **Eng Manager** | Lock in architecture, data flow, diagrams, edge cases, and tests. Forces hidden assumptions into the open. |\n| `/plan-design-review` | **Senior Designer** | Rates each design dimension 0-10, explains what a 10 looks like, then edits the plan to get there. AI Slop detection. Interactive — one AskUserQuestion per design choice. |\n| `/plan-devex-review` | **Developer Experience Lead** | Interactive DX review: explores deve",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"gstack\",\n  \"version\": \"1.58.5.0\",\n  \"description\": \"Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.\",\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"bin\": {\n    \"browse\": \"./browse/dist/browse\",\n    \"make-pdf\": \"./make-pdf/dist/pdf\"\n  },\n  \"scripts\": {\n    \"build\": \"bash scripts/build.sh\",\n    \"vendor:xterm\": \"mkdir -p extension/lib && cp node_modules/xterm/lib/xterm.js extension/lib/xterm.js && cp node_modules/xterm/css/xterm.css extension/lib/xterm.css && cp node_modules/xterm-addon-fit/lib/xterm-addon-fit.js extension/lib/xterm-addon-fit.js\",\n    \"dev:make-pdf\": \"bun run make-pdf/src/cli.ts\",\n    \"dev:design\": \"bun run design/src/cli.ts\",\n    \"build:diagram-render\": \"cd lib/diagram-render && bun install && bun run scripts/build.ts\",\n    \"gen:skill-docs\": \"bun run scripts/gen-skill-docs.ts\",\n    \"gen:skill-docs:user\": \"bun run scripts/gen-skill-docs.ts --respect-detection\",\n    \"dev\": \"bun run browse/src/cli.ts\",\n    \"server\": \"bun run browse/src/server.ts\",\n    \"test\": \"bun test browse/test/ test/ make-pdf/test/ --ignore 'test/skill-e2e-*.test.ts' --ignore test/skill-llm-eval.test.ts --ignore test/skill-routing-e2e.test.ts --ignore test/codex-e2e.test.ts --ignore test/gemini-e2e.test.ts && (bun run slop:diff 2>/dev/null || true)\",\n    \"test:free\": \"bun run scripts/test-free-shards.ts\",\n    \"test:windows\": \"bun run scripts/test-free-shards.ts --windows-only\",\n    \"test:evals\": \"EVALS=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-llm-eval.test.ts test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:evals:all\": \"EVALS=1 EVALS_ALL=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-llm-eval.test.ts test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:e2e\": \"EVALS=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:e2e:all\": \"EVALS=1 EVALS_ALL=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:gate\": \"EVALS=1 EVALS_TIER=gate bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-llm-eval.test.ts test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:periodic\": \"EVALS=1 EVALS_TIER=periodic EVALS_ALL=1 bun test --retry 2 --concurrent --max-concurrency ${EVALS_CONCURRENCY:-15} test/skill-e2e-*.test.ts test/skill-routing-e2e.test.ts test/codex-e2e.test.ts test/gemini-e2e.test.ts\",\n    \"test:codex\": \"EVALS=1 bun test test/codex-e2e.test.ts\",\n    \"test:codex:all\": \"EVALS=1 EVALS_ALL=1 bun test test/codex-e2e.test.ts\",\n    \"test:gemini\": \"EVALS=1 bun test test/gemini-e2e.test.ts\",\n    \"test:gemini:all\": \"EVALS=1 EVALS_ALL=1 bun test test/gemini-e2e.test.ts\",\n    \"skill:check\": \"bun run scripts/skill-check.ts\",\n    \"dev:skill\": \"bun run scripts/dev-skill.ts\",\n    \"start\": \"bun run browse/src/server.ts\",\n    \"eval:bg\": \"bin/gstack-detach --label evals --lock gstack-evals --timeout 5400 -- bun run test:evals\",\n    \"eval:bg:all\": \"bin/gstack-detach --label evals-all --lock gstack-evals --timeout 7200 -- bun run test:evals:all\",\n    \"eval:bg:gate\": \"bin/gstack-detach --label evals-gate --lock gstack-evals --timeout 3600 -- bun run test:gate\",\n    \"eval:bg:periodic\": \"bin/gstack-detach --label evals-periodic --lock gstack-evals --timeout 5400 -- bun run test:periodic\",\n    \"eval:list\": \"bun run scripts/eval-list.ts\",\n    \"eval:compare\": \"bun run scripts/eval-compare.ts\",\n    \"eval:summary\": \"bun run scripts/eval-summary.ts\",\n    \"eval:watch\": \"bun run scripts/eval-watch.ts\",\n    \"eval:select\": \"bun run scripts/eval-select.ts\",\n    \"analytics\": \"bun run scripts/analytics.ts\",\n    \"test:audit\": \"bun test test/audit-compliance.test.ts\",\n    \"slop\": \"npx slop-scan scan . 2>/dev/null || echo 'slop-scan not available (install with: npm i -g slop-scan)'\",\n    \"slop:diff\": \"bun run scripts/slop-diff.ts\"\n  },\n  \"dependencies\": {\n    \"@huggingface/transformers\": \"^4.1.0\",\n    \"@ngrok/ngrok\": \"^1.7.0\",\n    \"diff\": \"^7.0.0\",\n    \"html-to-docx\": \"1.8.0\",\n    \"marked\": \"^18.0.2\",\n    \"playwright\": \"^1.58.2\",\n    \"puppeteer-core\": \"^24.40.0\",\n    \"socks\": \"^2.8.8\"\n  },\n  \"engines\": {\n    \"bun\": \">=1.0.0\"\n  },\n  \"keywords\": [\n    \"browser\",\n    \"automation\",\n    \"playwright\",\n    \"headless\",\n    \"cli\",\n    \"claude\",\n    \"ai-agent\",\n    \"devtools\"\n  ],\n  \"devDependencies\": {\n    \"@anthropic-ai/claude-agent-sdk\": \"0.2.117\",\n    \"@anthropic-ai/sdk\": \"^0.78.0\",\n    \"xterm\": \"5\",\n    \"xterm-addon-fit\": \"^0.8.0\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "skill",
      "workflow",
      "automation"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 20,
      "novelty": 8,
      "productize": 11,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "topoteretes",
    "name": "cognee",
    "full_name": "topoteretes/cognee",
    "url": "https://github.com/topoteretes/cognee",
    "description": "Cognee is the open-source AI memory platform for agents. Give your AI agents persistent long-term memory across sessions with a self-hosted knowledge graph engine.",
    "language": "Python",
    "total_stars": 23183,
    "forks": 2205,
    "stars_this_period": 755,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "agent-memory",
        "agent-skills",
        "ai",
        "ai-agents",
        "ai-memory",
        "cognitive-architecture",
        "cognitive-memory",
        "context-engineering",
        "contributions-welcome",
        "good-first-issue",
        "good-first-pr",
        "graph-database",
        "graph-rag",
        "help-wanted",
        "knowledge",
        "knowledge-graph",
        "memory-management",
        "open-source",
        "vector-database"
      ],
      "license": "Apache-2.0",
      "open_issues": 262,
      "created_at": "2023-08-16T16:16:33Z",
      "pushed_at": "2026-06-26T16:19:13Z",
      "homepage": "https://www.cognee.ai",
      "default_branch": "main",
      "forks": 2205,
      "watchers": 72,
      "archived": false,
      "size_kb": 199310
    },
    "readme_content": "<div align=\"center\">\n  <a href=\"https://github.com/topoteretes/cognee\">\n    <img src=\"https://raw.githubusercontent.com/topoteretes/cognee/refs/heads/dev/assets/cognee-logo-transparent.png\" alt=\"Cognee Logo\" height=\"60\">\n  </a>\n\n  <br />\n\n  Cognee - The Open-Source AI Memory Platform for Agents\n\n  <p align=\"center\">\n  <a href=\"https://www.youtube.com/watch?v=8hmqS2Y5RVQ&t=13s\">Demo</a>\n  .\n  <a href=\"https://docs.cognee.ai/\">Docs</a>\n  .\n  <a href=\"https://cognee.ai\">Learn More</a>\n  ·\n  <a href=\"https://discord.gg/NQPKmU5CCg\">Join Discord</a>\n  ·\n  <a href=\"https://www.reddit.com/r/AIMemory/\">Join r/AIMemory</a>\n  .\n  <a href=\"https://github.com/topoteretes/cognee-community\">Community Plugins & Add-ons</a>\n  </p>\n\n\n  [![GitHub forks](https://img.shields.io/github/forks/topoteretes/cognee.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/network/)\n  [![GitHub stars](https://img.shields.io/github/stars/topoteretes/cognee.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/topoteretes/cognee/stargazers/)\n  [![GitHub commits](https://badgen.net/github/commits/topoteretes/cognee)](https://GitHub.com/topoteretes/cognee/commit/)\n  [![GitHub tag](https://badgen.net/github/tag/topoteretes/cognee)](https://github.com/topoteretes/cognee/tags/)\n  [![Downloads](https://static.pepy.tech/badge/cognee)](https://pepy.tech/project/cognee)\n  [![License](https://img.shields.io/github/license/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/blob/main/LICENSE)\n  [![Contributors](https://img.shields.io/github/contributors/topoteretes/cognee?colorA=00C586&colorB=000000)](https://github.com/topoteretes/cognee/graphs/contributors)\n  <a href=\"https://github.com/sponsors/topoteretes\"><img src=\"https://img.shields.io/badge/Sponsor-❤️-ff69b4.svg\" alt=\"Sponsor\"></a>\n\n<p>\n  <a href=\"https://trendshift.io/repositories/13955\" target=\"_blank\" style=\"display:inline-block;\">\n    <img src=\"https://trendshift.io/api/badge/repositories/13955\" alt=\"topoteretes%2Fcognee | Trendshift\" width=\"250\" height=\"55\" />\n  </a>\n</p>\n\nCognee is the open-source AI memory platform that gives AI agents persistent long-term memory across sessions. Ingest data in any format, build a self-hosted knowledge graph, and let every agent recall, connect, and act with full context\n\n  <p align=\"center\">\n  🌐 This README is also available in:\n  :\n  <!-- Keep these links. Translations will automatically update with the README. -->\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=de\">Deutsch</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=es\">Español</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=fr\">Français</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=ja\">日本語</a> |\n  <a href=\"README_ko.md\">한국어</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=pt\">Português</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=ru\">Русский</a> |\n  <a href=\"https://www.readme-i18n.com/topoteretes/cognee?lang=zh\">中文</a>\n  </p>\n\n<p align=\"center\">\n  <img src=\"assets/cognee-demo.gif\" alt=\"Cognee Demo\" width=\"80%\" />\n</p>\n</div>\n\n📄 Read the research paper: [Optimizing the Interface Between Knowledge Graphs and LLMs for Complex Reasoning](https://arxiv.org/abs/2505.24478) — Markovic et al., 2025\n\n\n## About Cognee\n\nCognee is an open-source AI memory platform for AI Agents. Ingest data in any format, and Cognee continuously builds a self-hosted knowledge graph that gives your agents persistent long-term memory across sessions. Cognee combines vector embeddings, graph reasoning, and cognitive-science-grounded ontology generation to make documents both searchable by meaning and connected by relationships that evolve as your knowledge does.\n\n:star: _Help us reach more developers and grow the cognee community. Star this repo!_\n\n:books: _Check our detailed [documentation](https://docs.cognee.ai/getting-started/installation#environment-configuration) for setup and configuration._\n\n:crab: _Available as a plugin for your OpenClaw — [cognee-openclaw](https://www.npmjs.com/package/@cognee/cognee-openclaw)_\n\n✴️ _Available as a plugin for your Claude Code — [claude-code-plugin](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code)_\n\n🦀 _Available as a Rust client — [cognee-rs](https://github.com/topoteretes/cognee-rs)_\n\n🟦 _Available as a TypeScript client — [@cognee/cognee-ts](https://www.npmjs.com/package/@cognee/cognee-ts)_\n\n\n\n### Why use Cognee:\n\n- Easily Build Company Brain - unify data from various sources in one place and enable Agents with your domain knowledge\n- Knowledge infrastructure — unified ingestion, graph/vector search, runs locally, ontology grounding, multimodal\n- Persistent and Learning Agents - learn from feedback, context management, cross-agent knowledge sharing\n- Reliable and Trustworthy Agents - agentic user/tenant isolation, traceability, OTEL collector, audit traits\n\n### How it Works\n\n<p align=\"center\">\n  <img src=\"assets/remember.svg\" alt=\"Cognee Products\" width=\"80%\" />\n</p>\n\n<p align=\"center\">\n  <img src=\"assets/recall.svg\" alt=\"Cognee Recall\" width=\"80%\" />\n</p>\n\n## Basic Usage & Feature Guide\n\nTo learn more, [check out this short, end-to-end Colab walkthrough](https://colab.research.google.com/drive/12Vi9zID-M3fpKpKiaqDBvkk98ElkRPWy?usp=sharing) of Cognee's core features.\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/12Vi9zID-M3fpKpKiaqDBvkk98ElkRPWy?usp=sharing)\n\n## Quickstart\n\nLet’s try Cognee in just a few lines of code.\n\n### Prerequisites\n\n- Python 3.10 to 3.14\n\n### Step 1: Install Cognee\n\nYou can install Cognee with **pip**, **poetry**, **uv**, or your preferred Python package manager.\n\n```bash\nuv pip install cognee\n```\n\n### Step 2: Configure the LLM\n```python\nimport os\nos.environ[\"LLM_API_KEY\"] = \"YOUR OPENAI_API_KEY\"\n```\nAlternatively, create a `.env` file using our [template](https://github.com/topoteretes/cognee/blob/main/.env.template).\n\nTo integrate other LLM providers, see our [LLM Provider Documentation](https://docs.cognee.ai/setup-configuration/llm-providers).\n\n### Step 3: Run the Pipeline\n\nCognee's API gives you four operations — `remember`, `recall`, `forget`, and `improve`:\n\n```python\nimport cognee\nimport asyncio\n\n\nasync def main():\n    # Store permanently in the knowledge graph (runs add + cognify + improve)\n    await cognee.remember(\"Cognee turns documents into AI memory.\")\n\n    # Store in session memory (fast cache, syncs to graph in background)\n    await cognee.remember(\"User prefers detailed explanations.\", session_id=\"chat_1\")\n\n    # Query with auto-routing (picks best search strategy automatically)\n    results = await cognee.recall(\"What does Cognee do?\")\n    for result in results:\n        print(result)\n\n    # Query session memory first, fall through to graph if needed\n    results = await cognee.recall(\"What does the user prefer?\", session_id=\"chat_1\")\n    for result in results:\n        print(result)\n\n    # Delete when done\n    await cognee.forget(dataset=\"main_dataset\")\n\n\nif __name__ == '__main__':\n    asyncio.run(main())\n\n```\n\n### Use the Cognee CLI\n\n```bash\ncognee-cli remember \"Cognee turns documents into AI memory.\"\n\ncognee-cli recall \"What does Cognee do?\"\n\ncognee-cli forget --all\n```\n\nTo open the local UI, run:\n```bash\ncognee-cli -ui\n```\n\n> **Note:** The MCP server launched by `cognee-cli -ui` runs inside a Docker container.\n> Docker Desktop, Colima, or any OCI-compatible runtime with a working `docker` CLI is\n> required. See [Docker & Colima Setup](docs/docker-colima-setup.md) for details.\n\n## Run with Docker\n\nPrefer containers? Cognee publishes prebuilt images to Docker Hub on every push to `main`:\n[`cognee/cognee`](https://hub.docker.com/r/cognee/cognee) (the API server) and\n[`cognee/cognee-mcp`](https://hub.docker.com/r/cognee/cognee-mcp) (the MCP server).\n\n### Option A — Docker Compose (build from source)\n\nClone the repo, create a `.env` with at least `LLM_API_KEY`, then:\n\n```bash\ncp .env.template .env   # then edit .env and set LLM_API_KEY\n\n# Start the API server (http://localhost:8000)\ndocker compose up\n\n# Optional profiles (combine as needed):\ndocker compose --profile ui up        # + frontend on http://localhost:3000\ndocker compose --profile mcp up       # + MCP server on http://localhost:8001\ndocker compose --profile postgres up  # + Postgres/PGVector\ndocker compose --profile neo4j up     # + Neo4j\n```\n\n> The `cognee` and `cognee-mcp` services publish different host ports (`8000` vs `8001`),\n> so you can run both at once.\n\n### Option B — Pull the prebuilt image (no clone required)\n\n```bash\n# Create a minimal .env in the current directory\necho 'LLM_API_KEY=\"YOUR_OPENAI_API_KEY\"' > .env\n\n# API server\ndocker run --env-file ./.env -p 8000:8000 --rm -it cognee/cognee:main\n\n# MCP server (HTTP transport)\ndocker pull cognee/cognee-mcp:main\ndocker run -e TRANSPORT_MODE=http --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main\n```\n\nSee the [MCP server README](cognee-mcp/README.md) for SSE/stdio transports, optional\nextras, and MCP client configuration.\n\n## Use with AI Agents\n\n### Claude Code\n\nInstall the [Cognee memory plugin](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code) to give Claude Code persistent memory across sessions. The plugin captures prompts, tool traces, and assistant responses into session memory, injects relevant context on every prompt, and syncs session memory into the permanent knowledge graph at session end.\n\n**Install** from the Claude Code marketplace. The recommended way is from your shell, *before* launching Claude Code, so the first `claude` launch is a clean session that bootstraps memory automatically:\n\n```bash\n# Add the marketplace and install the plugin (one-time, user-scoped)\nclaude plugin marketplace add topoteretes/cognee-integrations\nclaude plugin install cognee-memory@cognee\n\n# Set env vars for your mode (see below), then launch\nexport LLM_API_KEY=\"sk-...\"   # local mode; or COGNEE_BASE_URL + COGNEE_API_KEY for cloud\nclaude\n```\n\n**Local mode** (default) — the plugin bootstraps a local Cognee API at `http://localhost:8011`. Only `LLM_API_KEY` is required; the Cognee API key is auto-minted if absent:\n\n```bash\nexport LLM_API_KEY=\"sk-...\"\n```\n\n**Cognee Cloud or a remote server** — set both:\n\n```bash\nexport COGNEE_BASE_URL=\"https://your-instance.cognee.ai\"\nexport COGNEE_API_KEY=\"ck_...\"\n```\n\nOn startup you should see a \"Cognee Memory Connected\" system message.\n\nThe plugin hooks into Claude Code's lifecycle — `SessionStart` selects mode and sets up identity, `UserPromptSubmit` injects dataset-scoped context, `PostToolUse` captures tool traces, `Stop` writes the assistant's answer, `PreCompact` preserves memory across context resets, and `SessionEnd` triggers the final sync into the permanent graph.\n\nSee the [plugin README](https://github.com/topoteretes/cognee-integrations/tree/main/integrations/claude-code) for sessions, datasets, and full configuration.\n\n### Connect to Cognee Cloud\n\nPoint any Python agent at a managed Cognee instance — all SDK calls route to the cloud:\n\n```python\nimport cognee\n\nawait cognee.serve(url=\"https://your-instance.cognee.ai\", api_key=\"ck_...\")\n\nawait cognee.remember(\"important context\")\nresults = await cognee.recall(\"what happened?\")\n\nawait cognee.disconnect()\n```\n\n## Examples\n\nBrowse more examples in the [`examples/`](examples/) folder — demos, guides, custom pipelines, and database configurations.\n\n**Use Case 1 — Customer Support Agent**\n\n```python\nGoal: Resolve customer issues using their personal data across finance, support, and product history.\n\nUser: \"My invoice looks wrong and the issue is still not resolved.\"\n\nCognee tracks: past interactions, failed actions, resolved cases, product history\n\n# Agent response:\nAgent: \"I found 2 similar billing cases resolved last month.\n        The issue was caused by a syn",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"cognee\"\n\nversion = \"1.2.2\"\ndescription = \"Cognee - is a library for enriching LLM context with a semantic layer for better understanding and reasoning.\"\nauthors = [\n    { name = \"Vasilije Markovic\" },\n    { name = \"Boris Arzentar\" },\n]\nrequires-python = \">=3.10,<3.15\"\nreadme = \"README.md\"\nlicense = \"Apache-2.0\"\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: Developers\",\n    \"License :: OSI Approved :: Apache Software License\",\n    \"Topic :: Software Development :: Libraries\",\n    \"Operating System :: MacOS :: MacOS X\",\n    \"Operating System :: POSIX :: Linux\",\n    \"Operating System :: Microsoft :: Windows\",\n]\ndependencies = [\n    \"openai>=1.80.1\",\n    \"python-dotenv>=1.0.1,<2.0.0\",\n    \"pydantic>=2.10.5\",\n    # GHSA-4xgf-cpjx-pc3j: 2.12.0–2.14.1 vulnerable, fixed in 2.14.2. Exclude the\n    # vulnerable range rather than capping, so the patched 2.14.2+ is adopted once\n    # it clears the `exclude-newer` window (it was <2 days old at time of writing).\n    \"pydantic-settings>=2.2.1,!=2.12.*,!=2.13.*,!=2.14.0,!=2.14.1,<3\",\n    \"typing_extensions>=4.12.2,<5.0.0\",\n    \"numpy>=1.26.4, <=4.0.0\",\n    \"sqlalchemy>=2.0.39,<3.0.0\",\n    \"aiosqlite>=0.20.0,<1.0.0\",\n    \"filelock>=3.12.0,<4.0.0\",  # cross-process migration lock for SQLite (Linux/macOS/Windows)\n    \"tiktoken>=0.8.0,<1.0.0\",\n    \"litellm>=1.83.7\",\n    \"instructor>=1.9.1,<1.15.3\",\n    \"filetype>=1.2.0,<2.0.0\",\n    \"aiohttp>=3.13.5,<4.0.0\",\n    \"aiofiles>=23.2.1\",\n    \"rdflib>=7.1.4,<7.2.0\",\n    \"pypdf>=6.6.2,<7.0.0\",\n    \"jinja2>=3.1.3,<4\",\n    \"lancedb>=0.24.3,<1.0.0\",  # 0.24.2 bundles lance 0.32.0 whose list-column decoder panics on tables with deletion vectors\n    \"nbformat>=5.7.0,<6.0.0\",\n    \"alembic>=1.13.3,<2\",\n    \"limits>=4.4.1,<5\",\n    \"fastapi>=0.116.2,<1.0.0\",\n    \"starlette>=0.48\",\n    \"python-multipart>=0.0.22,<1.0.0\",\n    \"fastapi-users[sqlalchemy]>=15.0.2\",\n    \"structlog>=25.2.0,<26\",\n    \"pympler>=1.1,<2.0.0\",\n    \"pylance>=0.22.0,<=0.36.0\",\n    \"ladybug>=0.16.0,<0.18\",\n    \"python-magic-bin<0.5 ; platform_system == 'Windows'\", # Only needed for Windows\n    \"networkx>=3.4.2,<4\",\n    \"uvicorn>=0.34.0,<1.0.0\",\n    \"gunicorn>=20.1.0,<24\",\n    \"websockets>=15.0.1,<16.0.0\",\n    \"tenacity>=9.0.0\",\n    \"fakeredis[lua]>=2.32.0\",\n    \"diskcache>=5.6.3\",\n    \"aiolimiter>=1.2.1\",\n    \"urllib3>=2.6.0\",\n    \"cbor2>=5.8.0\",\n    \"langdetect>=1.0.9\",\n    \"datamodel-code-generator>=0.54.0\",\n]\n\n[project.optional-dependencies]\napi=[]\n\ndistributed = [\n    \"modal>=1.0.5,<2.0.0\",\n]\n\nscraping = [\n    \"tavily-python>=0.7.12\",\n    \"beautifulsoup4>=4.13.1\",\n    \"playwright>=1.9.0\",\n    \"lxml>=4.9.3,<5 ; python_version < '3.13'\",\n    \"lxml>=5,<6 ; python_version >= '3.13' and python_version < '3.14'\",\n    # cp314 wheels start at lxml 6.0.1; without this 3.14 falls back to a\n    # source build that requires libxml2/libxslt headers (CI doesn't have them).\n    \"lxml>=6.0.1,<7 ; python_version >= '3.14'\",\n    \"protego>=0.1\",\n    \"APScheduler>=3.10.0,<=3.11.0\"\n]\n\nfastembed = [\n    \"fastembed<=0.8.0\",\n    # onnxruntime 1.23.2 only ships wheels through cp313; cp314 wheels start\n    # at onnxruntime 1.24.1. Split by python_version so existing 3.10–3.13\n    # users keep the pinned version and 3.14 picks up the first cp314-capable\n    # release.\n    \"onnxruntime<=1.23.2 ; python_version < '3.14'\",\n    \"onnxruntime>=1.24.1 ; python_version >= '3.14'\",\n]\n\nneo4j = [\"neo4j>=5.28.0,<6\"]\nneptune = [\"langchain_aws>=0.2.22\"]\npostgres = [\n    \"psycopg2>=2.9.10,<3\",\n    \"pgvector>=0.3.5,<0.4\",\n    \"asyncpg>=0.30.0,<1.0.0\",\n]\npostgres-binary = [\n    \"psycopg2-binary>=2.9.10,<3.0.0\",\n    \"pgvector>=0.3.5,<0.4\",\n    \"asyncpg>=0.30.0,<1.0.0\",\n]\nnotebook = [\"notebook>=7.1.0,<8\"]\nlangchain = [\n    \"langsmith>=0.2.3,<1.0.0\",\n    \"langchain_text_splitters>=0.3.2,<1.0.0\",\n    \"langchain-core>=1.2.5\"\n]\nllama-index = [\"llama-index-core>=0.14.20,<0.15\"]\nhuggingface = [\"transformers>=4.46.3,<5\"]\nollama = [\"transformers>=4.46.3,<5\"]\nmistral = [\"mistral-common>=1.5.2,<2\", \"mistralai>=1.9.10,<2\"]\nanthropic = [\"anthropic>=0.27\"]\nazure = [\"azure-identity>=1.15.0,<2\"]\ndeepeval = [\"deepeval>=3.0.1,<4\"]\nposthog = [\"posthog>=3.5.0,<4\"]\ngroq = [\"groq>=0.8.0,<1.0.0\"]\nllama-cpp = [\"llama-cpp-python[server]>=0.3.0,<1.0.0\"]\ndocs = [\n    \"lxml>=4.9.3,<5 ; python_version < '3.13'\",\n    \"lxml>=5,<6 ; python_version >= '3.13' and python_version < '3.14'\",\n    # cp314 wheels start at lxml 6.0.1.\n    \"lxml>=6.0.1,<7 ; python_version >= '3.14'\",\n    \"unstructured[csv, doc, docx, epub, md, odt, org, ppt, pptx, rst, rtf, tsv, xlsx, pdf]>=0.18.1,<19\",\n    \"nltk>=3.9.3,<4\", # TODO: Remove when unstructured is above v0.21.0 as it won't use nltk anymore\n]\ncodegraph = [\n    \"fastembed<=0.8.0 ; python_version < '3.14'\",\n    \"transformers>=4.46.3,<5\",\n    \"tree-sitter>=0.24.0,<0.25\",\n    \"tree-sitter-python>=0.23.6,<0.24\",\n]\nevals = [\n    \"plotly>=6.0.0,<7\",\n    \"gdown>=5.2.0,<6\",\n    \"pandas>=2.2.2,<3.0.0\",\n    \"matplotlib>=3.8.3,<4\",\n    \"scikit-learn>=1.6.1,<2\",\n    \"locust>",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "rag",
      "skill",
      "llm",
      "vector",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 96
    },
    "strategic_score": 96
  },
  {
    "owner": "NanmiCoder",
    "name": "MediaCrawler",
    "full_name": "NanmiCoder/MediaCrawler",
    "url": "https://github.com/NanmiCoder/MediaCrawler",
    "description": "小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 ｜ 评论爬虫、微博帖子 ｜ 评论爬虫、百度贴吧帖子 ｜ 百度贴吧评论回复爬虫 | 知乎问答文章｜评论爬虫",
    "language": "Python",
    "total_stars": 53333,
    "forks": 10972,
    "stars_this_period": 640,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "NOASSERTION",
      "open_issues": 177,
      "created_at": "2023-06-09T12:14:34Z",
      "pushed_at": "2026-06-18T09:22:51Z",
      "homepage": "https://nanmicoder.github.io/MediaCrawler/",
      "default_branch": "main",
      "forks": 10972,
      "watchers": 228,
      "archived": false,
      "size_kb": 29212
    },
    "readme_content": "# 🔥 MediaCrawler - 自媒体平台爬虫 🕷️\n\n<div align=\"center\">\n\n<a href=\"https://trendshift.io/repositories/8291\" target=\"_blank\">\n  <img src=\"https://trendshift.io/api/badge/repositories/8291\" alt=\"NanmiCoder%2FMediaCrawler | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/>\n</a>\n\n[![GitHub Stars](https://img.shields.io/github/stars/NanmiCoder/MediaCrawler?style=social)](https://github.com/NanmiCoder/MediaCrawler/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/NanmiCoder/MediaCrawler?style=social)](https://github.com/NanmiCoder/MediaCrawler/network/members)\n[![GitHub Issues](https://img.shields.io/github/issues/NanmiCoder/MediaCrawler)](https://github.com/NanmiCoder/MediaCrawler/issues)\n[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/NanmiCoder/MediaCrawler)](https://github.com/NanmiCoder/MediaCrawler/pulls)\n[![License](https://img.shields.io/github/license/NanmiCoder/MediaCrawler)](https://github.com/NanmiCoder/MediaCrawler/blob/main/LICENSE)\n[![中文](https://img.shields.io/badge/🇨🇳_中文-当前-blue)](README.md)\n[![English](https://img.shields.io/badge/🇺🇸_English-Available-green)](README_en.md)\n[![Español](https://img.shields.io/badge/🇪🇸_Español-Available-green)](README_es.md)\n</div>\n\n\n\n> **免责声明：**\n> \n> 大家请以学习为目的使用本仓库⚠️⚠️⚠️⚠️，[爬虫违法违规的案件](https://github.com/HiddenStrawberry/Crawler_Illegal_Cases_In_China)  <br>\n>\n>本仓库的所有内容仅供学习和参考之用，禁止用于商业用途。任何人或组织不得将本仓库的内容用于非法用途或侵犯他人合法权益。本仓库所涉及的爬虫技术仅用于学习和研究，不得用于对其他平台进行大规模爬虫或其他非法行为。对于因使用本仓库内容而引起的任何法律责任，本仓库不承担任何责任。使用本仓库的内容即表示您同意本免责声明的所有条款和条件。\n>\n> 点击查看更为详细的免责声明。[点击跳转](#disclaimer)\n\n\n\n\n## 📖 项目简介\n\n一个功能强大的**多平台自媒体数据采集工具**，支持小红书、抖音、快手、B站、微博、贴吧、知乎等主流平台的公开信息抓取。\n\n### 🔧 技术原理\n\n- **核心技术**：基于 [Playwright](https://playwright.dev/) 浏览器自动化框架登录保存登录态\n- **无需JS逆向**：利用保留登录态的浏览器上下文环境，通过 JS 表达式获取签名参数\n- **优势特点**：无需逆向复杂的加密算法，大幅降低技术门槛\n\n\n## ✨ 功能特性\n| 平台   | 关键词搜索 | 指定帖子ID爬取 | 二级评论 | 指定创作者主页 | 登录态缓存 | IP代理池 | 生成评论词云图 |\n| ------ | ---------- | -------------- | -------- | -------------- | ---------- | -------- | -------------- |\n| 小红书 | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 抖音   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 快手   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| B 站   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 微博   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 贴吧   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n| 知乎   | ✅          | ✅              | ✅        | ✅              | ✅          | ✅        | ✅              |\n\n\n\n<strong>MediaCrawlerPro 重磅发布！开源不易，欢迎订阅支持</strong>\n\n> 专注于学习成熟项目的架构设计，不仅仅是爬虫技术，Pro 版本的代码设计思路同样值得深入学习！\n\n[MediaCrawlerPro](https://github.com/MediaCrawlerPro) 相较于开源版本的核心优势：\n\n#### 🎯 核心功能升级\n- ✅ **自媒体内容拆解Agent**（新增功能）\n- ✅ **断点续爬功能**（重点特性）\n- ✅ **多账号 + IP代理池支持**（重点特性）\n- ✅ **去除 Playwright 依赖**，使用更简单\n- ✅ **完整 Linux 环境支持**\n\n#### 🏗️ 架构设计优化\n- ✅ **代码重构优化**，更易读易维护（解耦 JS 签名逻辑）\n- ✅ **企业级代码质量**，适合构建大型爬虫项目\n- ✅ **完美架构设计**，高扩展性，源码学习价值更大\n\n#### 🎁 额外功能\n- ✅ **自媒体视频下载器桌面端**（适合学习全栈开发）\n- ✅ **多平台首页信息流推荐**（HomeFeed）\n- ✅ **AI Agent Skill 支持**（[OpenClaw](https://openclaw.ai/) 🦞 / Claude Code / Cursor 一键安装，让 Agent 自动爬取数据）\n- [ ] **基于评论分析AI Agent正在开发中 🚀🚀**\n\n点击查看：[MediaCrawlerPro 项目主页](https://github.com/MediaCrawlerPro) 更多介绍\n\n\n\n## 🚀 快速开始\n\n> 💡 **如果这个项目对您有帮助，请给个 ⭐ Star 支持一下！**\n\n## 📋 前置依赖\n\n### 🚀 uv 安装（推荐）\n\n在进行下一步操作之前，请确保电脑上已经安装了 uv：\n\n- **安装地址**：[uv 官方安装指南](https://docs.astral.sh/uv/getting-started/installation)\n- **验证安装**：终端输入命令 `uv --version`，如果正常显示版本号，证明已经安装成功\n- **推荐理由**：uv 是目前最强的 Python 包管理工具，速度快、依赖解析准确\n\n### 🟢 Node.js 安装\n\n项目依赖 Node.js，请前往官网下载安装：\n\n- **下载地址**：https://nodejs.org/en/download/\n- **版本要求**：>= 16.0.0\n\n### 📦 Python 包安装\n\n```shell\n# 进入项目目录\ncd MediaCrawler\n\n# 使用 uv sync 命令来保证 python 版本和相关依赖包的一致性\nuv sync\n```\n\n### 🌐 浏览器驱动安装（可选）\n\n> 如果使用默认的 CDP 模式（连接已有 Chrome 浏览器），**无需安装浏览器驱动**。仅在使用标准 Playwright 模式时需要安装。\n\n```shell\n# 仅在标准 Playwright 模式下需要安装浏览器驱动\nuv run playwright install\n```\n\n### 🌍 Chrome 浏览器配置（推荐）\n\n项目默认使用 CDP 模式连接用户已有的 Chrome 浏览器，可以复用浏览器已有的登录状态、Cookie、扩展等，**大幅降低平台风控检测风险**。\n\n使用前需要：\n\n1. **安装最新版 Chrome 浏览器**（版本 >= 144），[下载地址](https://www.google.com/chrome/)\n2. **开启远程调试功能**：在 Chrome 地址栏输入 `chrome://inspect/#remote-debugging`，勾选 **\"Allow remote debugging for this browser instance\"**\n3. 页面显示 `Server running at: 127.0.0.1:9222` 表示已就绪\n\n> 💡 **提示**：运行爬虫后，Chrome 浏览器会弹出确认对话框，点击\"接受\"即可。程序会等待用户确认，60秒内操作完成即可。\n>\n> 如果不想使用 CDP 模式，可以在 `config/base_config.py` 中设置 `ENABLE_CDP_MODE = False` 切换为标准 Playwright 模式。\n\n## 🚀 运行爬虫程序\n\n```shell\n# 在 config/base_config.py 查看配置项目功能，写的有中文注释\n\n# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论\nuv run main.py --platform xhs --lt qrcode --type search\n\n# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息\nuv run main.py --platform xhs --lt qrcode --type detail\n\n# 打开对应APP扫二维码登录\n\n# 其他平台爬虫使用示例，执行下面的命令查看\nuv run main.py --help\n```\n\n<details>\n<summary>🖥️ <strong>WebUI 可视化操作界面</strong></summary>\n\nMediaCrawler 提供了基于 Web 的可视化操作界面，无需命令行也能轻松使用爬虫功能。\n\n#### 启动 WebUI 服务\n\n```shell\n# 启动 API 服务器（默认端口 8080）\nuv run uvicorn api.main:app --port 8080 --reload\n\n# 或者使用模块方式启动\nuv run python -m api.main\n```\n\n启动成功后，访问 `http://localhost:8080` 即可打开 WebUI 界面。\n\n#### WebUI 功能特性\n\n- 可视化配置爬虫参数（平台、登录方式、爬取类型等）\n- 实时查看爬虫运行状态和日志\n- 数据预览和导出\n\n#### 界面预览\n\n<img src=\"docs/static/images/img_8.png\" alt=\"WebUI 界面预览\">\n\n</details>\n\n<details>\n<summary>🔗 <strong>使用 Python 原生 venv 管理环境（不推荐）</strong></summary>\n\n#### 创建并激活 Python 虚拟环境\n\n> 如果是爬取抖音和知乎，需要提前安装 nodejs 环境，版本大于等于：`16` 即可\n\n```shell\n# 进入项目根目录\ncd MediaCrawler\n\n# 创建虚拟环境\n# 我的 python 版本是：3.11 requirements.txt 中的库是基于这个版本的\n# 如果是其他 python 版本，可能 requirements.txt 中的库不兼容，需自行解决\npython -m venv venv\n\n# macOS & Linux 激活虚拟环境\nsource venv/bin/activate\n\n# Windows 激活虚拟环境\nvenv\\Scripts\\activate\n```\n\n#### 安装依赖库\n\n```shell\npip install -r requirements.txt\n```\n\n#### 安装 playwright 浏览器驱动\n\n```shell\nplaywright install\n```\n\n#### 运行爬虫程序（原生环境）\n\n```shell\n# 项目默认是没有开启评论爬取模式，如需评论请在 config/base_config.py 中的 ENABLE_GET_COMMENTS 变量修改\n# 一些其他支持项，也可以在 config/base_config.py 查看功能，写的有中文注释\n\n# 从配置文件中读取关键词搜索相关的帖子并爬取帖子信息与评论\npython main.py --platform xhs --lt qrcode --type search\n\n# 从配置文件中读取指定的帖子ID列表获取指定帖子的信息与评论信息\npython main.py --platform xhs --lt qrcode --type detail\n\n# 打开对应APP扫二维码登录\n\n# 其他平台爬虫使用示例，执行下面的命令查看\npython main.py --help\n```\n\n</details>\n\n\n## 💾 数据保存\n\nMediaCrawler 支持多种数据存储方式，包括 CSV、JSON、JSONL、Excel、SQLite 和 MySQL 数据库。\n\n📖 **详细使用说明请查看：[数据存储指南](docs/data_storage_guide.md)**\n\n\n[🚀 MediaCrawlerPro 重磅发布 🚀！更多的功能，更好的架构设计！开源不易，欢迎订阅支持！](https://github.com/MediaCrawlerPro)\n\n\n## 💬 交流群组\n- **微信交流群**：[点击加入](https://nanmicoder.github.io/MediaCrawler/%E5%BE%AE%E4%BF%A1%E4%BA%A4%E6%B5%81%E7%BE%A4.html)\n- **B站账号**：[关注我](https://space.bilibili.com/434377496)，分享AI与爬虫技术知识\n\n\n## 💰 赞助商展示\n\n<a href=\"https://tikhub.io/?utm_source=github.com/NanmiCoder/MediaCrawler&utm_medium=marketing_social&utm_campaign=retargeting&utm_content=carousel_ad\">\n<img width=\"500\" src=\"docs/static/images/tikhub_banner_zh.png\">\n<br>\nTikHub.io 提供 900+ 高稳定性数据接口，覆盖 TK、DY、XHS、Y2B、Ins、X 等 14+ 海内外主流平台，支持用户、内容、商品、评论等多维度公开数据 API，并配套 4000 万+ 已清洗结构化数据集，使用邀请码 <code>cfzyejV9</code> 注册并充值，即可额外获得 $2 赠送额度。\n</a>\n<br>\n<br>\n\n<a href=\"https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=mei%27da%27c%27rmeidacrawler\">\n<img width=\"500\" alt=\"Atlas Cloud\" src=\"docs/static/images/atlas_cloud_logo_black.png#gh-light-mode-only\">\n<img width=\"500\" alt=\"Atlas Cloud\" src=\"docs/static/images/atlas_cloud_logo_white.png#gh-dark-mode-only\">\n</a>\n<br>\n<a href=\"https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=mei%27da%27c%27rmeidacrawler\">Atlas Cloud</a> 是一个全模态 AI 推理平台，让开发者通过统一的 AI API 访问视频生成、图像生成和 LLM API，无需分别维护多个厂商集成，即可调用 300+ 精选模型。Atlas Cloud 最新推出 <a href=\"https://www.atlascloud.ai/console/coding-plan\">coding plan 优惠</a>，为开发者提供更具性价比的 API 访问预算。\n\n---\n\n## 🤝 成为赞助者\n\n成为赞助者，可以将您的产品展示在这里，每天获得大量曝光！\n\n**联系方式**：\n- 微信：`relakkes`\n- 邮箱：`relakkes@gmail.com`\n---\n\n## ☕ 请作者喝杯咖啡\n\n如果这个项目对您有帮助，欢迎打赏支持，您的每一份支持都是我持续更新的动力 ❤️\n\n<table>\n<tr>\n<td align=\"center\" width=\"33%\">\n<img src=\"docs/static/images/wechat_pay.jpeg\" width=\"250\" alt=\"微信赞赏\"><br>\n<b>微信赞赏</b>\n</td>\n<td align=\"center\" width=\"33%\">\n<img src=\"docs/static/images/zfb_pay.png\" width=\"250\" alt=\"支付宝\"><br>\n<b>支付宝</b>\n</td>\n<td align=\"center\" width=\"33%\">\n<a href=\"https://buymeacoffee.com/relakkes\" target=\"_blank\">\n<img src=\"docs/static/images/bmc_button.png\" width=\"250\" alt=\"Buy Me a Coffee\">\n</a><br>\n<b>Buy Me a Coffee</b>\n</td>\n</tr>\n</table>\n\n---\n\n## 📚 其他\n- **常见问题**：[MediaCrawler 完整文档](https://nanmicoder.github.io/MediaCrawler/)\n- **爬虫入门教程**：[CrawlerTutorial 免费教程](https://github.com/NanmiCoder/CrawlerTutorial)\n- **新闻爬虫开源项目**：[NewsCrawlerCollection](https://github.com/NanmiCoder/NewsCrawlerCollection)\n\n\n## ⭐ Star 趋势图\n\n如果这个项目对您有帮助，请给个 ⭐ Star 支持一下，让更多的人看到 MediaCrawler！\n\n[![Star History Chart](https://api.star-history.com/svg?repos=NanmiCoder/MediaCrawler&type=Date)](https://star-history.com/#NanmiCoder/MediaCrawler&Date)\n\n\n## 📚 参考\n\n- **小红书签名仓库**：[Cloxl 的 xhs 签名仓库](https://github.com/Cloxl/xhshow)\n- **小红书客户端**：[ReaJason 的 xhs 仓库](https://github.com/ReaJason/xhs)\n- **短信转发**：[SmsForwarder 参考仓库](https://github.com/pppscn/SmsForwarder)\n- **内网穿透工具**：[ngrok 官方文档](https://ngrok.com/docs/)\n\n\n# 免责声明\n<div id=\"disclaimer\"> \n\n## 1. 项目目的与性质\n本项目（以下简称“本项目”）是作为一个技术研究与学习工具而创建的，旨在探索和学习网络数据采集技术。本项目专注于自媒体平台的数据爬取技术研究，旨在提供给学习者和研究者作为技术交流之用。\n\n## 2. 法律合规性声明\n本项目开发者（以下简称“开发者”）郑重提醒用户在下载、安装和使用本项目时，严格遵守中华人民共和国相关法律法规，包括但不限于《中华人民共和国网络安全法》、《中华人民共和国反间谍法》等所有适用的国家法律和政策。用户应自行承担一切因使用本项目而可能引起的法律责任。\n\n## 3. 使用目的限制\n本项目严禁用于任何非法目的或非学习、非研究的商业行为。本项目不得用于任何形式的非法侵入他人计算机系统，不得用于任何侵犯他人知识产权或其他合法权益的行为。用户应保证其使用本项目的目的纯属个人学习和技术研究，不得用于任何形式的非法活动。\n\n## 4. 免责声明\n开发者已尽最大努力确保本项目的正当性及安全性，但不对用户使用本项目可能引起的任何形式的直接或间接损失承担责任。包括但不限于由于使用本项目而导致的任何数据丢失、设备损坏、法律诉讼等。\n\n## 5. 知识产权声明\n本项目的知识产权归开发者所有。本项目受到著作权法和国际著作权条约以及其他知识产权法律和条约的保护。用户在遵守本声明及相关法律法规的前提下，可以下载和使用本项目。\n\n## 6. 最终解释权\n关于本项目的最终解释权归开发者所有。开发者保留随时更改或更新本免责声明的权利，恕不另行通知。\n</div>\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"mediacrawler\"\nauthor = \"程序员阿江-Relakkes <relakkes@gmail.com>\"\nversion = \"0.1.0\"\ndescription = \"A social media crawler project, support Xiaohongshu, Weibo, Zhihu, Bilibili, Douyin, BaiduTieBa etc.\"\nreadme = \"README.md\"\nrequires-python = \">=3.11\"\ndependencies = [\n    \"aiofiles~=23.2.1\",\n    \"aiomysql==0.2.0\",\n    \"aiosqlite>=0.21.0\",\n    \"alembic>=1.16.5\",\n    \"asyncmy>=0.2.10\",\n    \"cryptography>=45.0.7\",\n    \"fastapi==0.110.2\",\n    \"httpx==0.28.1\",\n    \"jieba==0.42.1\",\n    \"matplotlib==3.9.0\",\n    \"motor>=3.3.0\",\n    \"opencv-python>=4.11.0.86\",\n    \"pandas==2.2.3\",\n    \"parsel==1.9.1\",\n    \"pillow==9.5.0\",\n    \"playwright==1.45.0\",\n    \"pydantic==2.5.2\",\n    \"pyexecjs==1.5.1\",\n    \"pyhumps>=3.8.0\",\n    \"python-dotenv==1.0.1\",\n    \"redis~=4.6.0\",\n    \"requests==2.32.3\",\n    \"sqlalchemy>=2.0.43\",\n    \"tenacity==8.2.2\",\n    \"typer>=0.12.3\",\n    \"uvicorn==0.29.0\",\n    \"wordcloud==1.9.3\",\n    \"pre-commit>=3.5.0\",\n    \"openpyxl>=3.1.2\",\n    \"pytest>=7.4.0\",\n    \"pytest-asyncio>=0.21.0\",\n    \"websockets>=15.0.1\",\n    \"asyncpg>=0.31.0\",\n    \"xhshow>=0.1.9\",\n]\n\n[[tool.uv.index]]\nurl = \"https://pypi.tuna.tsinghua.edu.cn/simple\"\ndefault = true\n",
    "strategic_keywords": [
      "agent",
      "skill"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "medium",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 16,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 80
    },
    "strategic_score": 80
  },
  {
    "owner": "ZhuLinsen",
    "name": "daily_stock_analysis",
    "full_name": "ZhuLinsen/daily_stock_analysis",
    "url": "https://github.com/ZhuLinsen/daily_stock_analysis",
    "description": "LLM 驱动的多市场股票智能分析系统：多源行情、实时新闻、决策看板与自动推送，支持零成本定时运行。 LLM-powered multi-market stock analysis system with multi-source market data, real-time news, decision dashboard, automated notifications, and cost-free scheduled runs.",
    "language": "Python",
    "total_stars": 50087,
    "forks": 43791,
    "stars_this_period": 636,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "a-stock",
        "ai-agent",
        "aigc",
        "llm",
        "quant",
        "quantitative-finance",
        "quantitative-trading"
      ],
      "license": "MIT",
      "open_issues": 59,
      "created_at": "2026-01-10T06:43:20Z",
      "pushed_at": "2026-06-26T16:55:17Z",
      "homepage": "https://dsa.zhulinsen.tech",
      "default_branch": "main",
      "forks": 43791,
      "watchers": 202,
      "archived": false,
      "size_kb": 88630
    },
    "readme_content": "<div align=\"center\">\n\n# 📈 股票智能分析系统\n\n[![GitHub stars](https://img.shields.io/github/stars/ZhuLinsen/daily_stock_analysis?style=social)](https://github.com/ZhuLinsen/daily_stock_analysis/stargazers)\n[![CI](https://github.com/ZhuLinsen/daily_stock_analysis/actions/workflows/ci.yml/badge.svg)](https://github.com/ZhuLinsen/daily_stock_analysis/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![GitHub Actions](https://img.shields.io/badge/GitHub%20Actions-Ready-2088FF?logo=github-actions&logoColor=white)](https://github.com/features/actions)\n[![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?logo=docker&logoColor=white)](https://hub.docker.com/r/zhulinsen/daily_stock_analysis)\n\n<p align=\"center\">\n  <img src=\"https://trendshift.io/api/badge/trendshift/repositories/18527/daily?language=Python\" alt=\"#1 Python Repository Of The Day | Trendshift\" width=\"250\" height=\"55\"/>&nbsp;<a href=\"https://hellogithub.com/repository/ZhuLinsen/daily_stock_analysis\" target=\"_blank\"><img src=\"https://api.hellogithub.com/v1/widgets/recommend.svg?rid=6daa16e405ce46ed97b4a57706aeb29f&claim_uid=pfiJMqhR9uvDGlT&theme=neutral\" alt=\"Featured｜HelloGitHub\" width=\"230\" /></a>\n</p>\n\n> 🤖 基于 AI 大模型的 A股/港股/美股/日股/韩股自选股智能分析系统，每日自动分析并推送「决策仪表盘」到企业微信/飞书/Telegram/Discord/Slack/邮箱\n\n[**产品预览**](#-产品预览) · [**功能特性**](#-功能特性) · [**快速开始**](#-快速开始) · [**推送效果**](#-推送效果) · [**文档中心**](docs/INDEX.md) · [**完整指南**](docs/full-guide.md)\n\n简体中文 | [English](docs/README_EN.md) | [繁體中文](docs/README_CHT.md)\n\n</div>\n\n## 💖 赞助商 (Sponsors)\n<div align=\"center\">\n  <p align=\"center\">\n    <a href=\"https://open.anspire.cn/?share_code=QFBC0FYC\" target=\"_blank\"><img src=\"./docs/assets/anspire.png\" alt=\"Anspire Open 一站式模型和搜索服务\" width=\"300\" height=\"141\" style=\"width: 300px; height: 141px; object-fit: contain;\"></a>\n    <a href=\"https://serpapi.com/baidu-search-api?utm_source=github_daily_stock_analysis\" target=\"_blank\"><img src=\"./docs/assets/serpapi_banner_zh.png\" alt=\"轻松抓取搜索引擎上的实时金融新闻数据 - SerpApi\" width=\"300\" height=\"141\" style=\"width: 300px; height: 141px; object-fit: contain;\"></a>\n  </p>\n</div>\n\n\n## 🖥️ 产品预览\n\n<p align=\"center\">\n  <img src=\"docs/assets/readme_workspace_tour_20260510.gif\" alt=\"DSA Web 工作台演示\" width=\"720\">\n</p>\n\n## ✨ 功能特性\n\n| 能力 | 覆盖内容 |\n|------|------|\n| AI 决策报告 | 核心结论、评分、趋势、买卖点位、风险警报、催化因素、操作检查清单 |\n| 多市场数据聚合 | A股、港股、美股、ETF：行情、K 线、技术指标、资金流、筹码、新闻、公告和基本面；日股/韩股（`.T` / `.KS` / `.KQ`）：YFinance 日线与基础行情、技术指标可用，`capital_flow`、`dragon_tiger`、`boards` 与部分高阶区块会按市场边界降级为 `not_supported`（见 [市场支持边界](docs/market-support.md)） |\n| Web / 桌面工作台 | 手动分析、任务进度、历史报告、完整 Markdown、回测、持仓、配置管理、浅色 / 深色主题 |\n| Agent 策略问股 | 多轮追问，支持均线、缠论、波浪、趋势、热点、事件、成长、预期等 15 种内置策略，覆盖 Web/Bot/API |\n| 智能导入与补全 | 图片、CSV/Excel、剪贴板导入；股票代码/名称/拼音/别名补全 |\n| 自动化与推送 | GitHub Actions、Docker、本地定时任务、FastAPI 服务和企业微信/飞书/Telegram/Discord/Slack/邮件推送 |\n\n> 功能细节、字段契约、基本面 P0 超时语义、交易纪律、数据源优先级、Web/API 行为请看 [完整配置与部署指南](docs/full-guide.md)。\n\n### 技术栈与数据来源\n\n| 类型 | 支持 |\n|------|------|\n| AI 模型 | [Anspire](https://open.anspire.cn/?share_code=QFBC0FYC)、[AIHubMix](https://aihubmix.com/?aff=CfMq)、Gemini、OpenAI 兼容、DeepSeek、通义千问、Claude、Ollama 本地模型等 |\n| 行情数据 | [TickFlow](https://tickflow.org/auth/register?ref=WDSGSPS5XC)、AkShare、Tushare、Pytdx、Baostock、YFinance、Longbridge |\n| 新闻搜索 | [Anspire](https://open.anspire.cn/?share_code=QFBC0FYC)、[SerpAPI](https://serpapi.com/baidu-search-api?utm_source=github_daily_stock_analysis)、[Tavily](https://tavily.com/)、[Bocha](https://open.bocha.cn/)、[Brave](https://brave.com/search/api/)、[MiniMax](https://platform.minimaxi.com/)、SearXNG |\n| 社交舆情 | [Stock Sentiment API](https://api.adanos.org/docs)（Reddit / X / Polymarket，仅美股，可选） |\n\n> 完整规则见 [数据源配置](docs/full-guide.md#数据源配置)。\n\n## 🚀 快速开始\n\n### 方式一：[GitHub Actions（推荐）](https://www.bilibili.com/video/BV11FEb66EXG/)\n\n> 5 分钟完成部署，零成本，无需服务器。\n\n\n#### 1. Fork 本仓库\n\n点击右上角 `Fork` 按钮（顺便点个 Star⭐ 支持一下）\n\n#### 2. 配置 Secrets\n\n`Settings` → `Secrets and variables` → `Actions` → `New repository secret`\n\n**AI 模型配置（至少配置一个）**\n\n默认先选一个模型服务商并填写 API Key；需要多模型、图片识别、本地模型或高级路由时，再参考 [LLM 配置指南](docs/LLM_CONFIG_GUIDE.md)。\n\n| Secret 名称 | 说明 | 必填 |\n|------------|------|:----:|\n| `ANSPIRE_API_KEYS` | [Anspire](https://open.anspire.cn/?share_code=QFBC0FYC) API Key，一Key同时启用全球热门大模型和联网搜索，无需科学上网，含免费额度 | **推荐** |\n| `AIHUBMIX_KEY` | [AIHubMix](https://aihubmix.com/?aff=CfMq) API Key，一Key切换使用全系模型，无需科学上网，本项目可享 10% 优惠 | **推荐** |\n| `GEMINI_API_KEY` | Google Gemini API Key | 可选 |\n| `ANTHROPIC_API_KEY` | Anthropic Claude API Key | 可选 |\n| `OPENAI_API_KEY` | OpenAI 兼容 API Key（支持 DeepSeek、通义千问等） | 可选 |\n| `OPENAI_BASE_URL` / `OPENAI_MODEL` | 使用 OpenAI 兼容服务时填写 | 可选 |\n\n> Ollama 更适合本地 / Docker 部署，GitHub Actions 推荐使用云端 API。\n\n**通知渠道配置（至少配置一个）**\n\n| Secret 名称 | 说明 |\n|------------|------|\n| `WECHAT_WEBHOOK_URL` | 企业微信机器人 |\n| `FEISHU_WEBHOOK_URL` | 飞书机器人 |\n| `TELEGRAM_BOT_TOKEN` + `TELEGRAM_CHAT_ID` | Telegram |\n| `DISCORD_WEBHOOK_URL` | Discord Webhook |\n| `SLACK_BOT_TOKEN` + `SLACK_CHANNEL_ID` | Slack Bot |\n| `EMAIL_SENDER` + `EMAIL_PASSWORD` | 邮件推送 |\n\n更多渠道、签名校验、分组邮件、Markdown 转图片等配置见 [通知渠道详细配置](docs/full-guide.md#通知渠道详细配置)。\n\n**自选股配置（必填）**\n\n| Secret 名称 | 说明 | 必填 |\n|------------|------|:----:|\n| `STOCK_LIST` | 自选股代码，如 `600519,hk00700,AAPL,7203.T,005930.KS` | ✅ |\n\n**新闻源配置（推荐）**\n\n新闻源会显著影响舆情、公告、事件和催化因素质量，建议至少配置一个搜索服务。\n\n| Secret 名称 | 说明 | 必填 |\n|------------|------|:----:|\n| `ANSPIRE_API_KEYS` | [Anspire AI Search](https://aisearch.anspire.cn/)：中文内容特别优化，适合 A 股新闻和舆情检索；同一 Key 可复用为 Anspire 大模型 | **推荐** |\n| `SERPAPI_API_KEYS` | [SerpAPI](https://serpapi.com/baidu-search-api?utm_source=github_daily_stock_analysis)：搜索引擎结果补强，适合实时金融新闻 | **推荐** |\n| `TAVILY_API_KEYS` | [Tavily](https://tavily.com/)：通用新闻搜索 API | 可选 |\n| `BOCHA_API_KEYS` | [博查搜索](https://open.bocha.cn/)：中文搜索优化，支持 AI 摘要 | 可选 |\n| `BRAVE_API_KEYS` | [Brave Search](https://brave.com/search/api/)：隐私优先，美股资讯补强 | 可选 |\n| `MINIMAX_API_KEYS` | [MiniMax](https://platform.minimaxi.com/)：结构化搜索结果 | 可选 |\n| `SEARXNG_BASE_URLS` | SearXNG 自建实例：无配额兜底，适合私有部署 | 可选 |\n\n更多搜索源、社交舆情和降级规则见 [搜索服务配置](docs/full-guide.md#搜索服务配置)。\n\n#### 3. 启用 Actions\n\n`Actions` 标签 → `I understand my workflows, go ahead and enable them`\n\n#### 4. 手动测试\n\n`Actions` → `每日股票分析` → `Run workflow` → `Run workflow`\n\n#### 完成\n\n默认每个**工作日 18:00（北京时间）**自动执行，也可手动触发。默认非交易日（含 A/H/US 节假日）不执行；强制运行、交易日检查、断点续传等规则见 [完整指南](docs/full-guide.md#定时任务配置)。\n\n### 方式二：[客户端配置教程](https://www.bilibili.com/video/BV11FEb66Eyr/) / 本地运行 / Docker 部署\n\n```bash\n# 克隆项目\ngit clone https://github.com/ZhuLinsen/daily_stock_analysis.git && cd daily_stock_analysis\n\n# 安装依赖\npip install -r requirements.txt\n\n# 配置环境变量\ncp .env.example .env && vim .env\n\n# 运行分析\npython main.py\n```\n\n常用命令：\n\n```bash\npython main.py --debug\npython main.py --dry-run\npython main.py --stocks 600519,hk00700,AAPL\npython main.py --market-review\npython main.py --schedule\npython main.py --serve-only\n```\n\n> Docker 部署、定时任务、云服务器访问请参考 [完整指南](docs/full-guide.md)；桌面客户端打包请参考 [桌面端打包说明](docs/desktop-package.md)。\n\n## 📱 推送效果\n\n### 决策仪表盘\n```\n🎯 2026-02-08 决策仪表盘\n共分析3只股票 | 🟢买入:0 🟡观望:2 🔴卖出:1\n\n📊 分析结果摘要\n⚪ 中钨高新(000657): 观望 | 评分 65 | 看多\n⚪ 永鼎股份(600105): 观望 | 评分 48 | 震荡\n🟡 新莱应材(300260): 卖出 | 评分 35 | 看空\n\n⚪ 中钨高新 (000657)\n📰 重要信息速览\n💭 舆情情绪: 市场关注其AI属性与业绩高增长，情绪偏积极，但需消化短期获利盘和主力流出压力。\n📊 业绩预期: 基于舆情信息，公司2025年前三季度业绩同比大幅增长，基本面强劲，为股价提供支撑。\n\n🚨 风险警报:\n\n风险点1：2月5日主力资金大幅净卖出3.63亿元，需警惕短期抛压。\n风险点2：筹码集中度高达35.15%，表明筹码分散，拉升阻力可能较大。\n风险点3：舆情中提及公司历史违规记录及重组相关风险提示，需保持关注。\n✨ 利好催化:\n\n利好1：公司被市场定位为AI服务器HDI核心供应商，受益于AI产业发展。\n利好2：2025年前三季度扣非净利润同比暴涨407.52%，业绩表现强劲。\n📢 最新动态: 【最新消息】舆情显示公司是AI PCB微钻领域龙头，深度绑定全球头部PCB/载板厂。2月5日主力资金净卖出3.63亿元，需关注后续资金流向。\n\n---\n生成时间: 18:00\n```\n\n### 大盘复盘\n```\n🎯 2026-01-10 大盘复盘\n\n📊 主要指数\n- 上证指数: 3250.12 (🟢+0.85%)\n- 深证成指: 10521.36 (🟢+1.02%)\n- 创业板指: 2156.78 (🟢+1.35%)\n\n📈 市场概况\n上涨: 3920 | 下跌: 1349 | 涨停: 155 | 跌停: 3\n\n🔥 板块表现\n领涨: 互联网服务、文化传媒、小金属\n领跌: 保险、航空机场、光伏设备\n```\n\n## ⚙️ 配置说明\n\n完整环境变量、模型渠道、通知渠道、数据源优先级、交易纪律、基本面 P0 语义和部署说明请参考 [完整配置指南](docs/full-guide.md)。\n\n## 🖥️ Web 界面\n\nWeb 工作台提供配置管理、任务监控、手动分析、历史报告、完整 Markdown 报告、Agent 问股、回测、持仓管理、智能导入和浅色 / 深色主题。启动方式：\n\n```bash\npython main.py --webui\npython main.py --webui-only\n```\n\n访问 `http://127.0.0.1:8000` 即可使用。认证、智能导入、搜索补全、历史报告复制、云服务器访问等细节见 [本地 WebUI 管理界面](docs/full-guide.md#本地-webui-管理界面)。\n\n## 🤖 Agent 策略问股\n\n配置任意可用 AI API Key 后，Web `/chat` 页面即可使用策略问股；如需显式关闭可设置 `AGENT_MODE=false`。\n\n- 支持均线金叉、缠论、波浪理论、多头趋势、热点题材、事件驱动、成长质量、预期重估等内置策略\n- 支持实时行情、K 线、技术指标、新闻和风险信息调用\n- 支持多轮追问、会话导出、发送到通知渠道和后台执行\n- 支持自定义策略文件与多 Agent 编排（实验性）\n\n> Agent 具体参数、`skill` 命名兼容、多 Agent 模式和预算护栏见 [完整指南](docs/full-guide.md#本地-webui-管理界面) 与 [LLM 配置指南](docs/LLM_CONFIG_GUIDE.md)。\n\n## 🧩 相关项目 (Related Projects)\n\n> DSA 聚焦日常分析报告；下面两个同系列项目分别覆盖选股、策略验证与策略进化，适合按需延伸使用。它们当前独立维护，后续会优先探索与 DSA 的候选股导入、回测验证和报告联动。\n\n| 项目 | 定位 |\n|------|------|\n| [AlphaSift](https://github.com/ZhuLinsen/alphasift) | 多因子选股与全市场扫描，用于从股票池中提取候选标的 |\n| [AlphaEvo](https://github.com/ZhuLinsen/alphaevo) | 策略回测与自我进化，用于验证策略规则，并通过迭代探索策略参数与组合 |\n\n## 📬 联系与合作\n\n<table>\n  <tr>\n    <td width=\"92\" valign=\"top\"><strong>合作邮箱</strong></td>\n    <td valign=\"top\">\n      <a href=\"mailto:zhuls345@gmail.com\">zhuls345@gmail.com</a><br>\n      项目咨询、部署支持与功能扩展\n    </td>\n    <td align=\"center\" rowspan=\"3\" valign=\"middle\" width=\"148\">\n      <a href=\"http://xhslink.com/m/tU520DWCKT\" target=\"_blank\"><img src=\"./docs/assets/xiaohongshu_tick.jpg\" width=\"112\" alt=\"小红书二维码\"></a><br>\n      <sub>扫码关注小红书</sub>\n    </td>\n  </tr>\n  <tr>\n    <td width=\"92\" valign=\"top\"><strong>小红书</strong></td>\n    <td valign=\"top\"><a href=\"http://xhslink.com/m/tU520DWCKT\">欢迎关注小红书</a></td>\n  </tr>\n  <tr>\n    <td width=\"92\" valign=\"top\"><strong>问题反馈</strong></td>\n    <td valign=\"top\"><a href=\"https://github.com/ZhuLinsen/daily_stock_analysis/issues\">提交 Issue</a></td>\n  </tr>\n</table>\n\n## 📄 License\n\n[MIT License](LICENSE) © 2026 ZhuLinsen\n\n欢迎在二次开发或引用时注明本仓库来源，感谢支持项目持续维护。\n\n## ⚠️ 免责声明\n\n本项目仅供学习和研究使用，不构成任何投资建议。股市有风险，投资需谨慎。作者不对使用本项目产生的任何损失负责。\n\n---\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[tool.black]\nline-length = 120\ntarget-version = ['py310', 'py311', 'py312']\ninclude = '\\.pyi?$'\nexclude = '''\n/(\n    \\.git\n    | \\.hg\n    | \\.mypy_cache\n    | \\.tox\n    | \\.venv\n    | venv\n    | _build\n    | buck-out\n    | build\n    | dist\n    | __pycache__\n)/\n'''\n\n[tool.isort]\nprofile = \"black\"\nline_length = 120\nskip = [\".git\", \"__pycache__\", \".env\", \"venv\", \".venv\"]\n\n[tool.bandit]\nexclude_dirs = [\"tests\", \"test_*.py\"]\nskips = [\"B101\"]  # assert 语句在测试中是允许的\n",
    "strategic_keywords": [
      "agent",
      "rag",
      "workspace",
      "llm",
      "workflow"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 89
    },
    "strategic_score": 89
  },
  {
    "owner": "every-app",
    "name": "open-seo",
    "full_name": "every-app/open-seo",
    "url": "https://github.com/every-app/open-seo",
    "description": "Open source alternative to Semrush and Ahrefs",
    "language": "TypeScript",
    "total_stars": 3046,
    "forks": 346,
    "stars_this_period": 635,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "backlink-analysis",
        "google-search-console-mcp",
        "keyword-research",
        "mcp",
        "seo",
        "seo-tools",
        "site-audit"
      ],
      "license": "MIT",
      "open_issues": 16,
      "created_at": "2026-02-27T18:57:41Z",
      "pushed_at": "2026-06-26T19:20:32Z",
      "homepage": "https://openseo.so",
      "default_branch": "main",
      "forks": 346,
      "watchers": 20,
      "archived": false,
      "size_kb": 18899
    },
    "readme_content": "# OpenSEO\n\n> Open source alternative to Semrush and Ahrefs\n\nOpenSEO is an SEO tool for _the people_. If tools like Semrush or Ahrefs are too expensive or bloated, OpenSEO is a pay-as-you-go alternative that you actually control.\n\n> All-in-one SEO tool for you and your AI agent.\n\nConnect with any agent like Claude Code, OpenClaw or Hermes. We have pre-built skills, but you can build your own to tailor OpenSEO to your needs.\n\n<img width=\"1385\" height=\"794\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/fd208249-44ea-4849-bb4b-5fc896aeab73\" />\n\n## Table of Contents\n\n- [Why use OpenSEO?](#why-use-openseo)\n- [Main SEO Workflows](#main-seo-workflows)\n- [OpenSEO MCP](#openseo-mcp)\n- [OpenSEO Agent Skills](#openseo-agent-skills)\n- [Roadmap](#roadmap)\n- [Community](#community)\n- [Pricing / Costs (Free + API costs)](#pricing--costs)\n- [DataForSEO API Key Setup](#dataforseo-api-key-setup)\n- [Google Search Console](#google-search-console)\n- [Self-hosting](#self-hosting)\n  - [Docker Self Hosting](#docker-self-hosting)\n  - [Cloudflare Self-Hosting](#cloudflare-self-hosting)\n- [Local Development](#local-development)\n- [Contributing](#contributing)\n- [SEO API Cost Reference](#seo-api-cost-reference)\n\n## Hosted Version\n\nIf you're not interested in self hosting, or just want to support the project, we also have a hosted version:\n\n[openseo.so](https://openseo.so)\n\n## Why use OpenSEO?\n\n- Best in class MCP and AI Skills.\n- Modern, simple UI.\n  - Focused workflows instead of a bloated, complex SEO suite.\n- No subscriptions.\n  - Bring your own DataForSEO API key and pay only for what you use.\n- Fork and vibe code your own custom tool.\n\n## Main SEO Workflows\n\n- Keyword research\n- Rank tracking\n- Competitor Insights\n- Backlinks\n- Site Audits\n- AI Visibility\n\n## Community\n\nJoin Discord to chat: [Discord](https://discord.gg/c9uGs3cFXr)\n\nFollow along for updates:\n\n- Follow on X: https://x.com/bensenescu\n- Sign up for the mailing list on our website: [openseo.so](https://openseo.so)\n\n## OpenSEO MCP\n\nOpenSEO exposes an MCP server so AI agents can use your SEO data directly.\n\nConnect Claude Code, OpenClaw, Hermes or any other agent.\n\n### Setup\n\n- Set up the app\n- Click \"AI & Agents\" in the header\n- Follow the instructions to connect to your agent\n\n## OpenSEO Agent Skills\n\nOpenSEO Agent Skills are reusable workflows for your agent\n\nThey guide your agent through SEO tasks and use the OpenSEO MCP so your agent makes better recommendations.\n\n### Available Skills\n\n- `seo-project-setup`\n- `seo-coach`\n- `keyword-research`\n- `keyword-clustering`\n- `competitive-landscape`\n- `competitor-analysis`\n- `link-prospecting`\n\n### Installation Guide\n\nRead our docs for how to install the skills:\n\nhttps://openseo.so/docs/skills/setup\n\n## Roadmap\n\nTop priorities:\n\n- Improved and Scheduled Site Audits\n- Custom Reports for Clients\n- Local SEO\n- In App AI Agent\n\nOur top priority is always refining the current product and making existing features better based on user feedback.\n\nIf something important is missing, please join the [Discord](https://discord.gg/c9uGs3cFXr) or email me at ben@openseo.so and request it.\n\n## Pricing / Costs\n\nOpenSEO is totally free to use. It works by using DataForSEO's APIs, which is a paid third-party service unaffiliated with OpenSEO.\n\nThere are two separate things:\n\n1. OpenSEO app cost: $0, you host it yourself.\n2. DataForSEO API: pay-as-you-go based on usage.\n\nFor cost estimates, see [DataForSEO API Cost Reference](#seo-api-cost-reference).\n\n## DataForSEO API Key Setup\n\nOpenSEO uses DataForSEO to fetch SEO data. You need an API key to connect OpenSEO to the service.\n\n1. Go to [DataForSEO API Access](https://app.dataforseo.com/api-access?aff=255379).\n2. Click \"Send by email\" to get set your credentials.\n3. Copy the longer crendentials labelled \"Base64\" credentials.\n4. Set this as `DATAFORSEO_API_KEY` in your environment file:\n\n- Docker self-hosting: `.env`\n- Cloudflare: Set it in the workers UI\n- Local development: `.env.local`\n\n## Google Search Console\n\nSearch Console is optional and works in self-hosted deployments using your own\nGoogle OAuth client. It takes ~10 minutes of one-time setup — see\n[`docs/SELF_HOSTING_GOOGLE_SEARCH_CONSOLE.md`](./docs/SELF_HOSTING_GOOGLE_SEARCH_CONSOLE.md).\n\n## Self-hosting\n\nOpenSEO supports two self-hosting paths:\n\n- Docker for personal use and testing (Recommended for local use).\n- Cloudflare for internet-facing self-hosting across multiple devices or for your team.\n\n_Docker_\n\nDocker is recommended for getting started. It's super easy to get up and running once you install Docker.\n\n_Cloudflare_\n\nIf you love OpenSEO and want to use it across multiple devices or with your team, you can host it on Cloudflare which we'll be a SaaS-like experience. Also, this will have automatic database backups and other nice convenience features. It's just a bit more effort to get started if you're unfamiliar with Cloudflare.\n\n## Docker Self Hosting\n\n> [!WARNING]\n> By default, the Docker version is intended for local use only. It runs in single-user mode with no authentication. For internet-facing self-hosting, use Cloudflare (free plan compatible). Or read [`docs/SELF_HOSTING_DOCKER.md`](./docs/SELF_HOSTING_DOCKER.md) before exposing to the internet.\n\nPrerequisites:\n\n- Install Docker: https://www.docker.com/products/docker-desktop/\n\nQuickstart:\n\n1. `cp .env.example .env`\n2. Set `DATAFORSEO_API_KEY` in `.env`\n3. `docker compose up -d`\n4. Open `http://localhost:<PORT>` (default `3001`)\n\nTo update to the newest published image, pull first and then restart:\n\n```sh\ndocker compose pull\ndocker compose up -d\n```\n\nFor more info, see [`docs/SELF_HOSTING_DOCKER.md`](./docs/SELF_HOSTING_DOCKER.md).\n\n## Cloudflare Self-Hosting\n\n### Deploy the Worker\n\nClicking this button opens a page to deploy OpenSEO in your Cloudflare account. If you do not have an account yet, it will take you to account creation first (OpenSEO works great on the free plan).\n\nReference these docs while deploying since the Cloudflare UI doesn't indicate what steps you need to take: [`docs/SELF_HOSTING_CLOUDFLARE.md`](./docs/SELF_HOSTING_CLOUDFLARE.md).\n\n[![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/every-app/open-seo)\n\n## Local Development\n\nSee [`docs/LOCAL_DEVELOPMENT.md`](./docs/LOCAL_DEVELOPMENT.md).\n\n## Contributing\n\nContributions are very welcome.\n\n- Open an issue for bugs, UX friction, or feature requests.\n- Open a PR if you want to implement a feature directly.\n- Community-driven improvements are prioritized, and high-quality PRs are encouraged.\n\nIf you want to contribute but are unsure where to start, open an issue and describe what you want to build.\n\n## SEO API Cost Reference\n\nUse this section to estimate DataForSEO spend per request type. OpenSEO itself remains free; these are API usage costs only.\n\nAs of February 26, 2026, DataForSEO’s public docs/pricing pages say:\n\n- New accounts include **$1 free credit** to test the API.\n- The minimum top-up/payment is **$50**.\n\nThat means you can try OpenSEO for free with the starter credit, then decide if/when to top up.\n\n### Planning examples\n\n- Track 100 keywords weekly at depth 50: `~$1.20/month`\n- 100 keyword research requests at the default 150 results: `$3.50`\n- 100 keyword research requests at 500 results each: `$7.00`\n- 100 domain overviews (200 ranked keywords each): `$4.01`\n- 100 backlinks domain searches at current defaults before opening extra tabs: about `$6.34`\n- 100 backlinks page searches at current defaults before opening extra tabs: about `$4.30`\n- 100 fully explored backlinks domain searches: about `$10.94`\n- 100 fully explored backlinks page searches: about `$8.61`\n\n### Pricing sources\n\n- DataForSEO SERP API pricing: https://dataforseo.com/apis/serp-api/pricing\n- DataForSEO Keywords Data API pricing: https://dataforseo.com/pricing/dataforseo-labs/dataforseo-google-api\n- DataForSEO Backlinks pricing: https://dataforseo.com/pricing/backlinks/backlinks\n- DataForSEO Lighthouse API docs: https://docs.dataforseo.com/v3/on_page/lighthouse/overview/\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"open-seo\",\n  \"private\": true,\n  \"sideEffects\": false,\n  \"version\": \"0.0.21\",\n  \"type\": \"module\",\n  \"packageManager\": \"pnpm@10.30.1\",\n  \"scripts\": {\n    \"dev\": \"vite dev\",\n    \"dev:clear-chat\": \"rm -rf .wrangler/state/v3/do/open-seo-OnboardingChatAgent\",\n    \"dev:agents\": \"mkdir -p .logs && portless run vite dev 2>&1 | tee .logs/dev-server.log\",\n    \"dev:agents:force\": \"mkdir -p .logs && portless --force run vite dev 2>&1 | tee .logs/dev-server.log\",\n    \"build\": \"vite build && tsc --noEmit\",\n    \"lint\": \"oxlint . --type-aware\",\n    \"lint:fix\": \"oxlint . --type-aware --fix\",\n    \"preview\": \"npm run build && vite preview --port 3001\",\n    \"deploy\": \"npm run db:migrate:prod && npm run build && wrangler deploy\",\n    \"sourcemaps:upload\": \"POSTHOG_SOURCEMAPS=true npm run build && pnpm dlx @posthog/cli sourcemap inject --directory ./dist-sourcemaps && pnpm dlx @posthog/cli sourcemap upload --directory ./dist-sourcemaps\",\n    \"cf-typegen\": \"wrangler types\",\n    \"types:check\": \"tsc --noEmit\",\n    \"format:check\": \"prettier --check .\",\n    \"format:write\": \"prettier . --write\",\n    \"auth:generate\": \"pnpm dlx auth@latest generate --config ./cli-auth.ts --adapter drizzle --dialect sqlite --output ./src/db/better-auth-schema.ts\",\n    \"db:generate\": \"drizzle-kit generate\",\n    \"db:migrate:local\": \"wrangler d1 migrations apply DB --local\",\n    \"db:migrate:prod\": \"wrangler d1 migrations apply DB --remote\",\n    \"knip\": \"knip\",\n    \"release:notes\": \"node scripts/release-notes.mjs\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"test:ci\": \"vitest run --reporter=dot\",\n    \"test:e2e\": \"playwright test\",\n    \"test:e2e:domain\": \"playwright test e2e/domain-overview-filters.spec.ts\",\n    \"test:e2e:domain:perf\": \"playwright test e2e/domain-overview-filters.perf.spec.ts\",\n    \"test:e2e:keywords\": \"playwright test e2e/keyword-research-navigation.spec.ts\",\n    \"billing:backlinks\": \"tsx scripts/backlinks-cost-profile.ts\",\n    \"billing:brand-lookup\": \"tsx scripts/brand-lookup-cost-profile.ts\",\n    \"cleanup:default-projects:d1\": \"tsx scripts/d1-default-project-cleanup.ts\",\n    \"seed:rank-tracking\": \"tsx scripts/seed-rank-tracking.ts\",\n    \"ci:check\": \"prettier --check . && knip && tsc --noEmit && oxlint . --type-aware\"\n  },\n  \"cloudflare\": {\n    \"bindings\": {\n      \"AUTH_MODE\": {\n        \"description\": \"Set to `cloudflare_access` for secured deployments behind Cloudflare Access, or `local_noauth` for trusted local self-host mode only.\"\n      },\n      \"TEAM_DOMAIN\": {\n        \"description\": \"Cloudflare Access team domain (for example `https://your-team.cloudflareaccess.com`) used to validate `cf-access-jwt-assertion` JWTs.\"\n      },\n      \"POLICY_AUD\": {\n        \"description\": \"Cloudflare Access Application Audience (AUD) tag for this Worker route/domain.\"\n      },\n      \"DATAFORSEO_API_KEY\": {\n        \"description\": \"Base64-encoded `login:password` for DataForSEO API access.\"\n      },\n      \"OAUTH_KV\": {\n        \"description\": \"KV namespace used by the Cloudflare Workers OAuth provider for MCP client registrations, grants, and tokens.\"\n      }\n    }\n  },\n  \"dependencies\": {\n    \"@ai-sdk/react\": \"^3.0.201\",\n    \"@cloudflare/ai-chat\": \"^0.8.4\",\n    \"@cloudflare/workers-oauth-provider\": \"^0.4.0\",\n    \"@every-app/sdk\": \"^0.1.14\",\n    \"@modelcontextprotocol/sdk\": \"1.29.0\",\n    \"@openrouter/ai-sdk-provider\": \"^2.9.0\",\n    \"@tanstack/query-core\": \"^5.90.9\",\n    \"@tanstack/react-form\": \"^1.25.0\",\n    \"@tanstack/react-query\": \"^5.90.9\",\n    \"@tanstack/react-router\": \"^1.168.10\",\n    \"@tanstack/react-router-devtools\": \"^1.166.11\",\n    \"@tanstack/react-start\": \"^1.167.16\",\n    \"@tanstack/react-table\": \"^8.21.3\",\n    \"agents\": \"0.15.0\",\n    \"ai\": \"^6.0.199\",\n    \"autumn-js\": \"^1.1.7\",\n    \"better-auth\": \"^1.5.5\",\n    \"cheerio\": \"^1.2.0\",\n    \"cloudflare\": \"^5.2.0\",\n    \"daisyui\": \"^5.5.5\",\n    \"dataforseo-client\": \"^2.0.19\",\n    \"drizzle-orm\": \"^0.44.4\",\n    \"fast-xml-parser\": \"^5.4.1\",\n    \"jose\": \"^6.0.12\",\n    \"lucide-react\": \"^0.542.0\",\n    \"papaparse\": \"^5.5.3\",\n    \"posthog-js\": \"^1.363.5\",\n    \"posthog-node\": \"^5.28.5\",\n    \"react\": \"^19.0.0\",\n    \"react-dom\": \"^19.0.0\",\n    \"react-markdown\": \"^10.1.0\",\n    \"recharts\": \"^3.7.0\",\n    \"remark-gfm\": \"^4.0.1\",\n    \"remeda\": \"^2.33.6\",\n    \"robots-parser\": \"^3.0.1\",\n    \"sonner\": \"^2.0.7\",\n    \"tailwindcss\": \"^4.1.16\",\n    \"tldts\": \"^7.0.25\",\n    \"zod\": \"^4.1.12\"\n  },\n  \"devDependencies\": {\n    \"@cloudflare/vite-plugin\": \"^1.40.2\",\n    \"@cloudflare/workers-types\": \"^4.20260611.1\",\n    \"@libsql/client\": \"^0.15.15\",\n    \"@playwright/test\": \"^1.59.1\",\n    \"@tailwindcss/vite\": \"^4.1.11\",\n    \"@tanstack/devtools-vite\": \"^0.6.0\",\n    \"@tanstack/react-devtools\": \"^0.10.1\",\n    \"@types/node\": \"^22.18.13\",\n    \"@types/papaparse\": \"^5.5.2\",\n    \"@types/react\": \"^19.0.8\",\n    \"@types/react-dom\": \"^19.0.3\",\n    \"@vitejs/plugin-react\": \"^4.6.0\",\n    \"drizzle-kit\": \"^0.31.4\",\n    \"knip\": \"^5.66.4\",\n    \"oxlint\": \"^1.50.0\",\n    \"oxlint-tsgolint\": \"^0.15.0\",\n    \"portless\": \"^0.5.2\",\n    \"pr",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "skill",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "anomalyco",
    "name": "opencode",
    "full_name": "anomalyco/opencode",
    "url": "https://github.com/anomalyco/opencode",
    "description": "The open source coding agent.",
    "language": "TypeScript",
    "total_stars": 179178,
    "forks": 22014,
    "stars_this_period": 631,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 7019,
      "created_at": "2025-04-30T20:08:00Z",
      "pushed_at": "2026-06-26T21:43:00Z",
      "homepage": "https://opencode.ai",
      "default_branch": "dev",
      "forks": 22015,
      "watchers": 684,
      "archived": false,
      "size_kb": 294114
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://opencode.ai\">\n    <picture>\n      <source srcset=\"packages/console/app/src/asset/logo-ornate-dark.svg\" media=\"(prefers-color-scheme: dark)\">\n      <source srcset=\"packages/console/app/src/asset/logo-ornate-light.svg\" media=\"(prefers-color-scheme: light)\">\n      <img src=\"packages/console/app/src/asset/logo-ornate-light.svg\" alt=\"OpenCode logo\">\n    </picture>\n  </a>\n</p>\n<p align=\"center\">The open source AI coding agent.</p>\n<p align=\"center\">\n  <a href=\"https://opencode.ai/discord\"><img alt=\"Discord\" src=\"https://img.shields.io/discord/1391832426048651334?style=flat-square&label=discord\" /></a>\n  <a href=\"https://www.npmjs.com/package/opencode-ai\"><img alt=\"npm\" src=\"https://img.shields.io/npm/v/opencode-ai?style=flat-square\" /></a>\n  <a href=\"https://github.com/anomalyco/opencode/actions/workflows/publish.yml\"><img alt=\"Build status\" src=\"https://img.shields.io/github/actions/workflow/status/anomalyco/opencode/publish.yml?style=flat-square&branch=dev\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"README.md\">English</a> |\n  <a href=\"README.zh.md\">简体中文</a> |\n  <a href=\"README.zht.md\">繁體中文</a> |\n  <a href=\"README.ko.md\">한국어</a> |\n  <a href=\"README.de.md\">Deutsch</a> |\n  <a href=\"README.es.md\">Español</a> |\n  <a href=\"README.fr.md\">Français</a> |\n  <a href=\"README.it.md\">Italiano</a> |\n  <a href=\"README.da.md\">Dansk</a> |\n  <a href=\"README.ja.md\">日本語</a> |\n  <a href=\"README.pl.md\">Polski</a> |\n  <a href=\"README.ru.md\">Русский</a> |\n  <a href=\"README.bs.md\">Bosanski</a> |\n  <a href=\"README.ar.md\">العربية</a> |\n  <a href=\"README.no.md\">Norsk</a> |\n  <a href=\"README.br.md\">Português (Brasil)</a> |\n  <a href=\"README.th.md\">ไทย</a> |\n  <a href=\"README.tr.md\">Türkçe</a> |\n  <a href=\"README.uk.md\">Українська</a> |\n  <a href=\"README.bn.md\">বাংলা</a> |\n  <a href=\"README.gr.md\">Ελληνικά</a> |\n  <a href=\"README.vi.md\">Tiếng Việt</a>\n</p>\n\n[![OpenCode Terminal UI](packages/web/src/assets/lander/screenshot.png)](https://opencode.ai)\n\n---\n\n### Installation\n\n```bash\n# YOLO\ncurl -fsSL https://opencode.ai/install | bash\n\n# Package managers\nnpm i -g opencode-ai@latest        # or bun/pnpm/yarn\nscoop install opencode             # Windows\nchoco install opencode             # Windows\nbrew install anomalyco/tap/opencode # macOS and Linux (recommended, always up to date)\nbrew install opencode              # macOS and Linux (official brew formula, updated less)\nsudo pacman -S opencode            # Arch Linux (Stable)\nparu -S opencode-bin               # Arch Linux (Latest from AUR)\nmise use -g opencode               # Any OS\nnix run nixpkgs#opencode           # or github:anomalyco/opencode for latest dev branch\n```\n\n> [!TIP]\n> Remove versions older than 0.1.x before installing.\n\n### Desktop App (BETA)\n\nOpenCode is also available as a desktop application. Download directly from the [releases page](https://github.com/anomalyco/opencode/releases) or [opencode.ai/download](https://opencode.ai/download).\n\n| Platform              | Download                           |\n| --------------------- | ---------------------------------- |\n| macOS (Apple Silicon) | `opencode-desktop-mac-arm64.dmg`   |\n| macOS (Intel)         | `opencode-desktop-mac-x64.dmg`     |\n| Windows               | `opencode-desktop-windows-x64.exe` |\n| Linux                 | `.deb`, `.rpm`, or `.AppImage`     |\n\n```bash\n# macOS (Homebrew)\nbrew install --cask opencode-desktop\n# Windows (Scoop)\nscoop bucket add extras; scoop install extras/opencode-desktop\n```\n\n#### Installation Directory\n\nThe install script respects the following priority order for the installation path:\n\n1. `$OPENCODE_INSTALL_DIR` - Custom installation directory\n2. `$XDG_BIN_DIR` - XDG Base Directory Specification compliant path\n3. `$HOME/bin` - Standard user binary directory (if it exists or can be created)\n4. `$HOME/.opencode/bin` - Default fallback\n\n```bash\n# Examples\nOPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/install | bash\nXDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bash\n```\n\n### Agents\n\nOpenCode includes two built-in agents you can switch between with the `Tab` key.\n\n- **build** - Default, full-access agent for development work\n- **plan** - Read-only agent for analysis and code exploration\n  - Denies file edits by default\n  - Asks permission before running bash commands\n  - Ideal for exploring unfamiliar codebases or planning changes\n\nAlso included is a **general** subagent for complex searches and multistep tasks.\nThis is used internally and can be invoked using `@general` in messages.\n\nLearn more about [agents](https://opencode.ai/docs/agents).\n\n### Documentation\n\nFor more info on how to configure OpenCode, [**head over to our docs**](https://opencode.ai/docs).\n\n### Contributing\n\nIf you're interested in contributing to OpenCode, please read our [contributing docs](./CONTRIBUTING.md) before submitting a pull request.\n\n### Building on OpenCode\n\nIf you are working on a project that's related to OpenCode and is using \"opencode\" as part of its name, for example \"opencode-dashboard\" or \"opencode-mobile\", please add a note to your README to clarify that it is not built by the OpenCode team and is not affiliated with us in any way.\n\n---\n\n**Join our community** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode)\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"$schema\": \"https://json.schemastore.org/package.json\",\n  \"name\": \"opencode\",\n  \"description\": \"AI-powered development tool\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"packageManager\": \"bun@1.3.14\",\n  \"scripts\": {\n    \"dev\": \"bun run --cwd packages/opencode --conditions=browser src/index.ts\",\n    \"dev:desktop\": \"bun --cwd packages/desktop dev\",\n    \"dev:web\": \"bun --cwd packages/app dev\",\n    \"dev:console\": \"ulimit -n 10240 2>/dev/null; bun run --cwd packages/console/app dev\",\n    \"dev:stats\": \"bun sst shell --stage=production -- bun run --cwd packages/stats/app dev\",\n    \"dev:storybook\": \"bun --cwd packages/storybook storybook\",\n    \"lint\": \"oxlint\",\n    \"typecheck\": \"bun turbo typecheck\",\n    \"upgrade-opentui\": \"bun run script/upgrade-opentui.ts\",\n    \"postinstall\": \"bun run --cwd packages/core fix-node-pty\",\n    \"prepare\": \"husky\",\n    \"random\": \"echo 'Random script'\",\n    \"sso\": \"aws sso login --sso-session=opencode --no-browser\",\n    \"test\": \"echo 'do not run tests from root' && exit 1\"\n  },\n  \"workspaces\": {\n    \"packages\": [\n      \"packages/*\",\n      \"packages/console/*\",\n      \"packages/stats/*\",\n      \"packages/sdk/js\",\n      \"packages/slack\"\n    ],\n    \"catalog\": {\n      \"@effect/opentelemetry\": \"4.0.0-beta.83\",\n      \"@effect/platform-node\": \"4.0.0-beta.83\",\n      \"@effect/sql-sqlite-bun\": \"4.0.0-beta.83\",\n      \"@npmcli/arborist\": \"9.4.0\",\n      \"@types/bun\": \"1.3.13\",\n      \"@types/cross-spawn\": \"6.0.6\",\n      \"@octokit/rest\": \"22.0.0\",\n      \"@hono/standard-validator\": \"0.2.0\",\n      \"@hono/zod-validator\": \"0.4.2\",\n      \"@opentui/core\": \"0.3.4\",\n      \"@opentui/keymap\": \"0.3.4\",\n      \"@opentui/solid\": \"0.3.4\",\n      \"@tanstack/solid-virtual\": \"3.13.28\",\n      \"@shikijs/stream\": \"4.2.0\",\n      \"ulid\": \"3.0.1\",\n      \"@kobalte/core\": \"0.13.11\",\n      \"@types/luxon\": \"3.7.1\",\n      \"@types/node\": \"24.12.2\",\n      \"@types/semver\": \"7.7.1\",\n      \"@tsconfig/node22\": \"22.0.2\",\n      \"@tsconfig/bun\": \"1.0.9\",\n      \"@cloudflare/workers-types\": \"4.20251008.0\",\n      \"@openauthjs/openauth\": \"0.0.0-20250322224806\",\n      \"@pierre/diffs\": \"1.2.10\",\n      \"opentui-spinner\": \"0.0.7\",\n      \"@solid-primitives/storage\": \"4.3.3\",\n      \"@tailwindcss/vite\": \"4.1.11\",\n      \"diff\": \"8.0.2\",\n      \"dompurify\": \"3.3.1\",\n      \"drizzle-kit\": \"1.0.0-rc.2\",\n      \"drizzle-orm\": \"1.0.0-rc.2\",\n      \"effect\": \"4.0.0-beta.83\",\n      \"ai\": \"6.0.168\",\n      \"cross-spawn\": \"7.0.6\",\n      \"hono\": \"4.10.7\",\n      \"hono-openapi\": \"1.1.2\",\n      \"fuzzysort\": \"3.1.0\",\n      \"luxon\": \"3.6.1\",\n      \"marked\": \"17.0.1\",\n      \"marked-shiki\": \"1.2.1\",\n      \"remend\": \"1.3.0\",\n      \"@playwright/test\": \"1.59.1\",\n      \"semver\": \"7.7.4\",\n      \"typescript\": \"5.8.2\",\n      \"@typescript/native-preview\": \"7.0.0-dev.20251207.1\",\n      \"zod\": \"4.1.8\",\n      \"remeda\": \"2.26.0\",\n      \"sst\": \"4.13.1\",\n      \"shiki\": \"4.2.0\",\n      \"solid-list\": \"0.3.0\",\n      \"tailwindcss\": \"4.1.11\",\n      \"vite\": \"7.1.4\",\n      \"@solidjs/meta\": \"0.29.4\",\n      \"@solidjs/router\": \"0.15.4\",\n      \"@solidjs/start\": \"https://pkg.pr.new/@solidjs/start@dfb2020\",\n      \"@sentry/solid\": \"10.36.0\",\n      \"@sentry/vite-plugin\": \"4.6.0\",\n      \"solid-js\": \"1.9.10\",\n      \"vite-plugin-solid\": \"2.11.10\",\n      \"@lydell/node-pty\": \"1.2.0-beta.12\"\n    }\n  },\n  \"devDependencies\": {\n    \"@actions/artifact\": \"5.0.1\",\n    \"@tsconfig/bun\": \"catalog:\",\n    \"@types/mime-types\": \"3.0.1\",\n    \"@typescript/native-preview\": \"catalog:\",\n    \"glob\": \"13.0.5\",\n    \"husky\": \"9.1.7\",\n    \"oxlint\": \"1.60.0\",\n    \"oxlint-tsgolint\": \"0.21.0\",\n    \"prettier\": \"3.6.2\",\n    \"semver\": \"^7.6.0\",\n    \"sst\": \"catalog:\",\n    \"turbo\": \"2.8.13\"\n  },\n  \"dependencies\": {\n    \"@aws-sdk/client-s3\": \"3.933.0\",\n    \"@opencode-ai/plugin\": \"workspace:*\",\n    \"@opencode-ai/script\": \"workspace:*\",\n    \"@opencode-ai/sdk\": \"workspace:*\",\n    \"heap-snapshot-toolkit\": \"1.1.3\",\n    \"typescript\": \"catalog:\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/anomalyco/opencode\"\n  },\n  \"license\": \"MIT\",\n  \"prettier\": {\n    \"semi\": false,\n    \"printWidth\": 120\n  },\n  \"trustedDependencies\": [\n    \"esbuild\",\n    \"node-pty\",\n    \"protobufjs\",\n    \"tree-sitter\",\n    \"tree-sitter-bash\",\n    \"tree-sitter-powershell\",\n    \"web-tree-sitter\",\n    \"electron\"\n  ],\n  \"overrides\": {\n    \"@opentui/core\": \"catalog:\",\n    \"@opentui/keymap\": \"catalog:\",\n    \"@opentui/solid\": \"catalog:\",\n    \"@types/bun\": \"catalog:\",\n    \"@types/node\": \"catalog:\"\n  },\n  \"patchedDependencies\": {\n    \"@ff-labs/fff-bun@0.9.3\": \"patches/@ff-labs%2Ffff-bun@0.9.3.patch\",\n    \"@npmcli/agent@4.0.2\": \"patches/@npmcli%2Fagent@4.0.2.patch\",\n    \"@silvia-odwyer/photon-node@0.3.4\": \"patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch\",\n    \"@standard-community/standard-openapi@0.2.9\": \"patches/@standard-community%2Fstandard-openapi@0.2.9.patch\",\n    \"solid-js@1.9.10\": \"patches/solid-js@1.9.10.patch\",\n    \"@ai-sdk/xai@3.0.82\": \"patches/@ai-sdk%2Fxai@3.0.82.patch\",\n    \"gcp-metadata@8.1.2\": \"patches/gcp-metadata@8.1.2.patch\",\n    \"pacote@21.",
    "strategic_keywords": [
      "agent",
      "workflow"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 16,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 79
    },
    "strategic_score": 79
  },
  {
    "owner": "IceWhaleTech",
    "name": "CasaOS",
    "full_name": "IceWhaleTech/CasaOS",
    "url": "https://github.com/IceWhaleTech/CasaOS",
    "description": "CasaOS - A simple, easy-to-use, elegant open-source Personal Cloud system.",
    "language": "Go",
    "total_stars": 35326,
    "forks": 2024,
    "stars_this_period": 612,
    "source_slice": "all",
    "source_slices": [
      "all",
      "go"
    ],
    "metadata": {
      "topics": [
        "casaos",
        "docker",
        "golang",
        "home-automation",
        "home-cloud",
        "home-server",
        "iot",
        "raspberry",
        "self-hosted",
        "vuejs"
      ],
      "license": "Apache-2.0",
      "open_issues": 810,
      "created_at": "2021-09-26T02:33:09Z",
      "pushed_at": "2025-08-06T08:54:04Z",
      "homepage": "https://casaos.zimaspace.com",
      "default_branch": "main",
      "forks": 2024,
      "watchers": 208,
      "archived": false,
      "size_kb": 182856
    },
    "readme_content": "# CasaOS - Your Personal Cloud \n<!-- Readme i18n links -->\n<!-- > English | [中文](#) | [Français](#) -->\n\n<p align=\"center\">\n    <!-- CasaOS Banner -->\n    <picture>\n        <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/IceWhaleTech/logo/main/casaos/casaos_banner_dark_night_800x300.png\">\n        <source media=\"(prefers-color-scheme: light)\" srcset=\"https://raw.githubusercontent.com/IceWhaleTech/logo/main/casaos/casaos_banner_twilight_blue_800x300.png\">\n        <img alt=\"CasaOS\" src=\"https://raw.githubusercontent.com/IceWhaleTech/logo/main/casaos/casaos_banner_twilight_blue_800x300.png\">\n    </picture>\n    <br/>\n    <i>Connect with the community, establish autonomy, reduce the cost of SaaS, and MAXIMIZE the potential for a personalized copilot.</i>\n    <br/>\n    <br/>\n    <!-- CasaOS Badges -->\n    <a href=\"https://github.com/IceWhaleTech/CasaOS\" target=\"_blank\">\n        <img alt=\"CasaOS Version\" src=\"https://img.shields.io/github/v/release/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=CasaOS\" />\n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/blob/main/LICENSE\" target=\"_blank\">\n        <img alt=\"CasaOS License\" src=\"https://img.shields.io/github/license/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=License\" />\n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/pulls\" target=\"_blank\">\n        <img alt=\"CasaOS Pull Requests\" src=\"https://img.shields.io/github/issues-pr/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=PRs\" />\n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/issues\" target=\"_blank\">\n        <img alt=\"CasaOS Issues\" src=\"https://img.shields.io/github/issues/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=Issues\" />\n    </a>\n    <a href=\"https://codecov.io/gh/IceWhaleTech/CasaOS\" > \n    <img src=\"https://codecov.io/gh/IceWhaleTech/CasaOS/branch/main/graph/badge.svg?token=l9uMKGlkxM\"/> \n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/stargazers\" target=\"_blank\">\n        <img alt=\"CasaOS Stargazers\" src=\"https://img.shields.io/github/stars/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=Stars\" />\n    </a>\n    <!-- <a href=\"https://github.com/IceWhaleTech/CasaOS/releases\" target=\"_blank\">\n    <img alt=\"CasaOS Downloads\" src=\"https://img.shields.io/github/downloads/IceWhaleTech/CasaOS/total?color=162453&style=flat-square\" />\n    </a> -->\n    <br/>\n    <!-- CasaOS Community -->\n    <a href=\"https://discord.gg/knqAbbBbeX\" target=\"_blank\">\n        <img alt=\"IceWhale Discord\" src=\"https://img.shields.io/discord/884667213326463016?color=162453&style=flat-square&label=Discord&logo=discord&logoColor=fff\" />\n    </a>\n    <a href=\"https://github.com/IceWhaleTech/CasaOS/discussions\" target=\"_blank\">\n        <img alt=\"CasaOS GitHub Discussions\" src=\"https://img.shields.io/github/discussions/IceWhaleTech/CasaOS?color=162453&style=flat-square&label=Discussions&logo=github\" />\n    </a>\n<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->\n    <a href=\"#credits\">\n        <img alt=\"All Contributors\" src=\"https://img.shields.io/static/v1?label=All%20Contributors&message=15&color=162453&style=flat-square&logo=Handshake&logoColor=fff\" />\n    </a>\n    <!-- CasaOS YouTube -->\n    <a href=\"https://www.youtube.com/channel/UC2zMrUYT17AJhIl9XWZzT8g\" target=\"_blank\">\n        <img alt=\"YouTube Tutorial Views\" src=\"https://img.shields.io/youtube/channel/views/UC2zMrUYT17AJhIl9XWZzT8g?style=flat-square&logo=youtube&logoColor=red&label=YouTube%20Tutorial%20Views\" />\n    </a>\n    <br/>    \n    <a href=\"http://bit.ly/45JQIiL\" target=\"_blank\">\n        <img alt=\"twitter ZimaSpace\" src=\"https://img.shields.io/twitter/follow/ZimaSpace?style=flat-square&logo=X&label=Contact%20Us%20%40%20ZimaSpace&labelColor=555&color=555\" />\n    </a>\n    <a href=\"http://bit.ly/4lgHj7V\" target=\"_blank\">\n        <img alt=\"facebook ZimaSpace\" src=\"https://img.shields.io/badge/ZimaSpace-1877F2?style=flat-square&logo=Facebook&logoColor=fff&label=Contact%20Us&labelColor=555&color=162453\" />\n    </a>\n    <br/>\n    <!-- CasaOS Links -->\n    <a href=\"https://www.casaos.io\" target=\"_blank\">Website</a> |\n    <a href=\"http://demo.casaos.io\" target=\"_blank\">Demo</a> |\n    <a href=\"https://github.com/IceWhaleTech/CasaOS\" target=\"_blank\">GitHub</a>\n    <br/>\n    <br/>\n    <!-- CasaOS Snapshots -->\n    <kbd>\n      <picture>\n          <source media=\"(prefers-color-scheme: dark)\" srcset=\"snapshot-dark.jpg\">\n          <source media=\"(prefers-color-scheme: light)\" srcset=\"snapshot-light.jpg\">\n          <img alt=\"CasaOS Snapshot\" src=\"snapshot-light.jpg\">\n      </picture>\n    </kbd>\n</p>\n\n## Why do you need Personal Cloud?\n\nIn 2020, the team noticed three important trends:\n- The cost of computing power and storage was decreasing fast.\n- A part of cloud computing was moving towards edge computing.\n- The issue of consumer data asset ownership and attribution had been ignored.\n\nBased on these trends, the team proposed a thought experiment internally: what if personal clouds were available under $100 in next five years? This personal cloud would provide a low-cost data collaboration solution as a personal data center, storing and managing data for creators and small organizations. A distributed collaborative computing network can be formed by personal servers located around the world. It could also control and connect all smart devices, providing cross-ecosystem local intelligent services.\n\nFurthermore, the personal cloud could combine personal data to train personalized AI assistants. The idea is that this technology would be an effective way to solve the issue of consumer data asset ownership and , as well as provide a more affordable and efficient computing solution for individuals and small organizations.\n\n> If you think what we are doing is valuable. Please **give us a star ⭐** and **fork it 🤞**!\n\n## Features\n\n- Friendly UI designed for home scenarios\n  - No code, no forms, intuitive, design for humanity\n- Multiple hardware and base system support\n  - ZimaBoard, NUC, RPi, old computers, whatever is available.\n- Selected apps in the app store, one-click installation\n  - Nextcloud, HomeAssistant, AdGuard, Jellyfin, *arr and more!\n- Easily install numerous Docker apps\n  - Over 100,000 apps from the Docker ecosystem can be easily installed\n- Elegant drive and file management\n  - What you see is what you get. No technical background required.\n- Well-designed system/app widgets\n  - What you care about, at a glance. Resource usage, app status, and more!\n\n## Getting Started\n\nCasaOS fully supports ZimaBoard, Intel NUC, and Raspberry Pi. Also, more computers and development boards and fully compatible with Ubuntu, Debian, Raspberry Pi OS, and CentOS with one-liner installation.\n\n### Hardware Compatibility\n\n- amd64 / x86-64\n- arm64\n- armv7\n\n### System Compatibility\n\nOfficial Support\n- Debian 12 (✅ Tested, Recommended)\n- Ubuntu Server 20.04 (✅ Tested)\n- Raspberry Pi OS (✅ Tested)\n\nCommunity Support\n- Elementary 6.1 (✅ Tested)\n- Armbian 22.04 (✅ Tested)\n- Alpine (🚧 Not Fully Tested Yet)\n- OpenWrt (🚧 Not Fully Tested Yet)\n- ArchLinux (🚧 Not Fully Tested Yet)\n\n### Quick Setup CasaOS\n\nFreshly install a system from the list above and run this command:\n\n```sh\nwget -qO- https://get.casaos.io | sudo bash\n```\n\nor\n\n```sh\ncurl -fsSL https://get.casaos.io | sudo bash\n```\n\n### Update CasaOS\n\nCasaOS can be updated from the User Interface (UI), via `Settings ... Update`.  \n\nAlternatively it can be updated from a terminal session.  To update from a terminal session, it must be done either from a secure shell (ssh) session to the device or from a directly attached terminal and keyboard to the device running CasaOS, this cannot be done from the terminal via the CasaOS User Interface (UI).  To update to the latest release of CasaOS from a terminal session run this command:\n\n```sh\nwget -qO- https://get.casaos.io/update | sudo bash\n```\n\nor\n\n```sh\ncurl -fsSL https://get.casaos.io/update | sudo bash\n```\n\nTo determine version of CasaOS from a terminal session run this command:\n\n```sh\ncasaos -v\n```\n\n\n\n### Uninstall CasaOS\n\n\nv0.3.3 or newer\n\n```sh\ncasaos-uninstall\n```\n\nBefore v0.3.3\n\n```sh\ncurl -fsSL https://get.icewhale.io/casaos-uninstall.sh | sudo bash\n```\n\n## Community \n\nThe word Casa comes from the Spanish word for \"home\". Project CasaOS originated as a pre-installed system for the crowdfunded product [ZimaBoard](https://www.zimaboard.com) on Kickstarter.\n\nAfter looking at many systems and software on the market, the team found no server system designed for home scenarios, sadly true.\n\nSo, we set out to build this open-source project to develop CasaOS with our own hands, everyone in the community, and you.\n\nWe believe that through community-driven collaborative innovation and open communication with global developers, we can reshape the digital home experience like never before.\n\n**A warm welcome for you to get help or share great ideas in the [Discord](https://discord.gg/knqAbbBbeX)!**\n\n[![Discord Card](https://discordapp.com/api/guilds/884667213326463016/widget.png?style=banner2)](https://discord.gg/knqAbbBbeX)\n\n## Contributing\n\nCasaOS is a community-driven open source project and the people involved are CasaOS users. That means CasaOS will always need contributions from community members just like you!\n\n- See <https://wiki.casaos.io/en/contribute> for ways of contributing to CasaOS\n- See <https://wiki.casaos.io/en/contribute/development> if you want to be involved in code contribution specifically\n\n\n## Credits\n\nMany thanks to everyone who has helped CasaOS so far!\n\nEveryone's contribution is greatly appreciated. ([Emoji Key](https://allcontributors.org/docs/en/emoji-key))\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/jerrykuku\"><img src=\"https://avatars.githubusercontent.com/u/9485680?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>老竭力</b></sub></a><br /><a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=jerrykuku\" title=\"Code\">💻</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=jerrykuku\" title=\"Documentation\">📖</a> <a href=\"#ideas-jerrykuku\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#infra-jerrykuku\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"#maintenance-jerrykuku\" title=\"Maintenance\">🚧</a> <a href=\"#platform-jerrykuku\" title=\"Packaging/porting to new platform\">📦</a> <a href=\"#question-jerrykuku\" title=\"Answering Questions\">💬</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/pulls?q=is%3Apr+reviewed-by%3Ajerrykuku\" title=\"Reviewed Pull Requests\">👀</a></td>\n    <td align=\"center\"><a href=\"https://github.com/LinkLeong\"><img src=\"https://avatars.githubusercontent.com/u/13556972?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>link</b></sub></a><br /><a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=LinkLeong\" title=\"Code\">💻</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=LinkLeong\" title=\"Documentation\">📖</a> <a href=\"#ideas-LinkLeong\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=\"#infra-LinkLeong\" title=\"Infrastructure (Hosting, Build-Tools, etc)\">🚇</a> <a href=\"#maintenance-LinkLeong\" title=\"Maintenance\">🚧</a> <a href=\"#question-LinkLeong\" title=\"Answering Questions\">💬</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/pulls?q=is%3Apr+reviewed-by%3ALinkLeong\" title=\"Reviewed Pull Requests\">👀</a></td>\n    <td align=\"center\"><a href=\"https://github.com/tigerinus\"><img src=\"https://avatars.githubusercontent.com/u/7172560?v=4?s=100\" width=\"100px;\" alt=\"\"/><br /><sub><b>太戈</b></sub></a><br /><a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=tigerinus\" title=\"Code\">💻</a> <a href=\"https://github.com/IceWhaleTech/CasaOS/commits?author=tigerinus\" title=\"Documentation\">📖</a> <a href=\"#ideas-tigerinus\" title=\"Ideas, Planning, & Feedback\">🤔</a> <a href=",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/IceWhaleTech/CasaOS\n\ngo 1.21\n\nrequire (\n\tgithub.com/Curtis-Milo/nat-type-identifier-go v0.0.0-20220215191915-18d42168c63d\n\tgithub.com/IceWhaleTech/CasaOS-Common v0.4.11-alpha4\n\tgithub.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf\n\tgithub.com/deckarep/golang-set/v2 v2.3.0\n\tgithub.com/deepmap/oapi-codegen v1.12.4\n\tgithub.com/disintegration/imaging v1.6.2\n\tgithub.com/dsoprea/go-exif/v3 v3.0.1\n\tgithub.com/getkin/kin-openapi v0.117.0\n\tgithub.com/glebarez/sqlite v1.8.0\n\tgithub.com/go-ini/ini v1.67.0\n\tgithub.com/go-resty/resty/v2 v2.7.0\n\tgithub.com/golang/mock v1.6.0\n\tgithub.com/gomodule/redigo v1.8.9\n\tgithub.com/google/go-github/v36 v36.0.0\n\tgithub.com/google/uuid v1.5.0\n\tgithub.com/googollee/go-socket.io v1.7.0\n\tgithub.com/gorilla/websocket v1.5.0\n\tgithub.com/h2non/filetype v1.1.3\n\tgithub.com/hirochachacha/go-smb2 v1.1.0\n\tgithub.com/json-iterator/go v1.1.12\n\tgithub.com/labstack/echo/v4 v4.12.0\n\tgithub.com/maruel/natural v1.1.0\n\tgithub.com/mholt/archiver/v3 v3.5.1\n\tgithub.com/mileusna/useragent v1.2.1\n\tgithub.com/moby/sys/mount v0.3.3\n\tgithub.com/moby/sys/mountinfo v0.6.2\n\tgithub.com/patrickmn/go-cache v2.1.0+incompatible\n\tgithub.com/pkg/errors v0.9.1\n\tgithub.com/robfig/cron/v3 v3.0.1\n\tgithub.com/samber/lo v1.38.1\n\tgithub.com/shirou/gopsutil/v3 v3.23.2\n\tgithub.com/sirupsen/logrus v1.9.3\n\tgithub.com/stretchr/testify v1.9.0\n\tgithub.com/tidwall/gjson v1.17.0\n\tgo.uber.org/goleak v1.2.1\n\tgo.uber.org/zap v1.24.0\n\tgolang.org/x/crypto v0.23.0\n\tgolang.org/x/oauth2 v0.7.0\n\tgolang.org/x/sync v0.3.0\n\tgolang.org/x/sys v0.20.0\n\tgorm.io/gorm v1.25.0\n\tgotest.tools v2.2.0+incompatible\n)\n\nrequire (\n\tgithub.com/andybalholm/brotli v1.0.5 // indirect\n\tgithub.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect\n\tgithub.com/benbjohnson/clock v1.3.1 // indirect\n\tgithub.com/coreos/go-systemd/v22 v22.5.0 // indirect\n\tgithub.com/davecgh/go-spew v1.1.1 // indirect\n\tgithub.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 // indirect\n\tgithub.com/dsoprea/go-logging v0.0.0-20200710184922-b02d349568dd // indirect\n\tgithub.com/dsoprea/go-utility/v2 v2.0.0-20221003172846-a3e1774ef349 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/geoffgarside/ber v1.1.0 // indirect\n\tgithub.com/glebarez/go-sqlite v1.21.1 // indirect\n\tgithub.com/go-errors/errors v1.4.2 // indirect\n\tgithub.com/go-ole/go-ole v1.2.6 // indirect\n\tgithub.com/go-openapi/jsonpointer v0.19.6 // indirect\n\tgithub.com/go-openapi/swag v0.22.3 // indirect\n\tgithub.com/godbus/dbus/v5 v5.1.0 // indirect\n\tgithub.com/gofrs/uuid v4.4.0+incompatible // indirect\n\tgithub.com/golang-jwt/jwt v3.2.2+incompatible // indirect\n\tgithub.com/golang-jwt/jwt/v4 v4.5.0 // indirect\n\tgithub.com/golang-jwt/jwt/v5 v5.0.0 // indirect\n\tgithub.com/golang/geo v0.0.0-20210211234256-740aa86cb551 // indirect\n\tgithub.com/golang/protobuf v1.5.3 // indirect\n\tgithub.com/golang/snappy v0.0.4 // indirect\n\tgithub.com/google/go-cmp v0.6.0 // indirect\n\tgithub.com/google/go-querystring v1.1.0 // indirect\n\tgithub.com/google/safetext v0.0.0-20240104143208-7a7d9b3d812f // indirect\n\tgithub.com/gorilla/mux v1.8.0 // indirect\n\tgithub.com/invopop/yaml v0.2.0 // indirect\n\tgithub.com/jinzhu/inflection v1.0.0 // indirect\n\tgithub.com/jinzhu/now v1.1.5 // indirect\n\tgithub.com/josharian/intern v1.0.0 // indirect\n\tgithub.com/klauspost/compress v1.16.7 // indirect\n\tgithub.com/klauspost/pgzip v1.2.5 // indirect\n\tgithub.com/labstack/echo-jwt/v4 v4.2.0 // indirect\n\tgithub.com/labstack/gommon v0.4.2 // indirect\n\tgithub.com/lufia/plan9stats v0.0.0-20230110061619-bbe2e5e100de // indirect\n\tgithub.com/mailru/easyjson v0.7.7 // indirect\n\tgithub.com/mattn/go-colorable v0.1.13 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect\n\tgithub.com/modern-go/reflect2 v1.0.2 // indirect\n\tgithub.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect\n\tgithub.com/nwaples/rardecode v1.1.3 // indirect\n\tgithub.com/perimeterx/marshmallow v1.1.4 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.17 // indirect\n\tgithub.com/pmezard/go-difflib v1.0.0 // indirect\n\tgithub.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/tidwall/match v1.1.1 // indirect\n\tgithub.com/tidwall/pretty v1.2.1 // indirect\n\tgithub.com/tklauser/go-sysconf v0.3.11 // indirect\n\tgithub.com/tklauser/numcpus v0.6.0 // indirect\n\tgithub.com/ugorji/go/codec v1.2.11 // indirect\n\tgithub.com/ulikunitz/xz v0.5.11 // indirect\n\tgithub.com/valyala/bytebufferpool v1.0.0 // indirect\n\tgithub.com/valyala/fasttemplate v1.2.2 // indirect\n\tgithub.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect\n\tgithub.com/yusufpapurcu/wmi v1.2.2 // indirect\n\tgo.uber.org/atomic v1.10.0 // indirect\n\tgo.uber.org/multierr v1.11.0 // indirect\n\tgolang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 // indirect\n\tgolang.org/x/image v0.6.0 // indirect\n\tgolang.org/x/net v0.25.0 // indirect\n\tg",
    "strategic_keywords": [
      "automation",
      "codegen"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 20,
      "relevance": 15,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 77
    },
    "strategic_score": 77
  },
  {
    "owner": "Leonxlnx",
    "name": "taste-skill",
    "full_name": "Leonxlnx/taste-skill",
    "url": "https://github.com/Leonxlnx/taste-skill",
    "description": "Taste-Skill - gives your AI good taste. stops the AI from generating boring, generic slop",
    "language": "JavaScript",
    "total_stars": 51534,
    "forks": 3550,
    "stars_this_period": 604,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai",
        "claude",
        "claude-code",
        "codex",
        "coding",
        "design",
        "frontend",
        "lowcode",
        "nocode",
        "skill",
        "skills",
        "vibecoding"
      ],
      "license": "MIT",
      "open_issues": 33,
      "created_at": "2026-02-19T21:44:05Z",
      "pushed_at": "2026-06-20T23:05:00Z",
      "homepage": "https://tasteskill.dev",
      "default_branch": "main",
      "forks": 3550,
      "watchers": 156,
      "archived": false,
      "size_kb": 4799
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"assets/readme-banner.webp\" alt=\"Taste Skill - Anti-slop Agent Skills for premium frontends\" width=\"100%\" />\n</p>\n\n# Taste Skill\n\n<p align=\"center\">\n  <em>The Anti-Slop Frontend Framework for AI Agents</em>\n</p>\n\n<p align=\"center\" style=\"margin-bottom: 8px;\">\n  <a href=\"https://tasteskill.dev\" title=\"Visit tasteskill.dev\"><img src=\"assets/readme-buttons/btn-site.webp\" alt=\"Visit tasteskill.dev\" height=\"56\" /></a>\n</p>\n\n<h3 align=\"center\">Sponsors</h3>\n\n<p align=\"center\"><a href=\"https://animations.dev\"><img src=\"assets/sponsors/animations-dev.webp\" alt=\"animations.dev\" width=\"62\" height=\"62\" valign=\"middle\" /></a><sub><a href=\"https://github.com/emilkowalski\"><strong>Emil Kowalski</strong></a> · <a href=\"https://animations.dev\">animations.dev</a></sub></p>\n\n<p align=\"center\"><a href=\"https://vercel.com/open-source-program\"><img alt=\"Vercel OSS Program\" src=\"assets/vercel-oss-program-badge.svg\" height=\"24\" /></a></p>\n\n<p align=\"center\"><sub><a href=\"https://github.com/sponsors/Leonxlnx\">Become a sponsor</a></sub></p>\n\nPortable **Agent Skills** that upgrade AI-built interfaces: stronger layout, typography, motion, and spacing instead of boilerplate-looking UIs. This repo also includes **image-generation skills** for reference boards (web, mobile, brand kits). Pair them with **ChatGPT Images** or similar generators, then hand the frames to Codex, Cursor, or Claude Code for implementation.\n\n<p align=\"center\">\n  <a href=\"LICENSE\"><img src=\"assets/readme-buttons/btn-mit.webp\" alt=\"MIT License\" height=\"45\" valign=\"middle\" /></a>\n  &nbsp;\n  <a href=\"https://github.com/vercel-labs/agent-skills\"><img src=\"assets/readme-buttons/btn-agent-skills.webp\" alt=\"Agent Skills compatible\" height=\"45\" valign=\"middle\" /></a>\n  &nbsp;\n  <a href=\"#installing\"><img src=\"assets/readme-buttons/btn-tools.webp\" alt=\"Codex, Cursor, Claude\" height=\"45\" valign=\"middle\" /></a>\n  &nbsp;\n  <a href=\"https://www.tasteskill.dev/changelog\"><img src=\"assets/readme-buttons/btn-changelog.webp\" alt=\"Changelog\" height=\"45\" valign=\"middle\" /></a>\n</p>\n\n## Disclaimer\n\nTaste Skill has no official token, coin, or crypto project. Any token using my name, image, or project is unaffiliated and not endorsed by me.\n\n<p align=\"center\"><sub><a href=\"#disclaimer\">Disclaimer</a> · <a href=\"#installing\">Install</a> · <a href=\"#skills\">Skills</a> · <a href=\"#settings-taste-skill-only\">Settings</a> · <a href=\"#examples\">Examples</a> · <a href=\"#sponsors\">Sponsors</a> · <a href=\"#research\">Research</a> · <a href=\"#common-questions\">FAQ</a> · <a href=\"#license\">License</a></sub></p>\n\n## Feedback & Contributions\n\nWe would love your feedback. Suggestions and bug reports:\n\n- Open a Pull Request or Issue on GitHub  \n- DM [@lexnlin](https://x.com/lexnlin) or [@blueemi99](https://x.com/blueemi99)  \n- Email us at [hello@tasteskill.dev](mailto:hello@tasteskill.dev)\n\n## Installing\n\nThe [`npx skills add`](https://github.com/vercel-labs/agent-skills) CLI scans the `skills/` folder in this repo, so **all skills below (code and image-generation) install the same way.**\n\n```bash\nnpx skills add https://github.com/Leonxlnx/taste-skill\n```\n\nInstall a single skill by its **install name** (the `name:` field inside the SKILL frontmatter, not the folder name):\n\n```bash\nnpx skills add https://github.com/Leonxlnx/taste-skill --skill \"design-taste-frontend\"\n```\n\nYou can also copy any `SKILL.md` into your project or paste it into ChatGPT / Codex conversations.\n\n### Updating from the previous version\n\nThe default `taste-skill` (install name `design-taste-frontend`) is now **v2 (experimental)**, a substantial rewrite of the original v1. If you already have v1 installed, just re-run the install command and you will be upgraded:\n\n```bash\nnpx skills add https://github.com/Leonxlnx/taste-skill --skill \"design-taste-frontend\"\n```\n\nThe install name did not change, so no script updates are needed. The newer SKILL.md replaces the older one in place.\n\nIf you depend on the exact behavior of v1 and want to pin to it explicitly:\n\n```bash\nnpx skills add https://github.com/Leonxlnx/taste-skill --skill \"design-taste-frontend-v1\"\n```\n\nSee [CHANGELOG.md](CHANGELOG.md) for the full v1 to v2 diff and the rationale.\n\n## Skills\n\nEach skill does one job; you do not need all of them at once. **Implementation skills** output code. **Image-generation skills** output reference images only.\n\nThe `Install name` column is the exact value you pass to `--skill`.\n\n| Skill (folder) | Install name | Description |\n| --- | --- | --- |\n| **taste-skill** | `design-taste-frontend` | 🆕 **v2 (experimental)** - substantial rewrite of the default skill. Reads the brief, infers the design language, tunes three dials (VARIANCE / MOTION / DENSITY). Brief inference, design-system map, hard em-dash ban, canonical GSAP code skeletons, redesign-audit protocol, strict pre-flight check. Actively iterating toward v2.0.0 stable. |\n| **taste-skill-v1** | `design-taste-frontend-v1` | The original v1 of taste-skill, preserved for projects depending on its exact behavior. Use only if the v2 default breaks something specific in your workflow. |\n| **gpt-tasteskill** | `gpt-taste` | Stricter variant for GPT/Codex: higher layout variance, stronger GSAP direction, aggressive anti-slop. |\n| **image-to-code-skill** | `image-to-code` | Image-first pipeline: generate site references, analyze them, then implement the frontend to match. |\n| **redesign-skill** | `redesign-existing-projects` | Existing projects: audit the UI first, then fix layout, spacing, hierarchy, styling. |\n| **soft-skill** | `high-end-visual-design` | Polished, calm, expensive UI with softer contrast, whitespace, premium fonts, spring motion. |\n| **output-skill** | `full-output-enforcement` | When the model ships half-finished work: full output, no placeholder comments. |\n| **minimalist-skill** | `minimalist-ui` | Editorial product UI (Notion/Linear vibes), restrained palette, crisp structure. |\n| **brutalist-skill** | `industrial-brutalist-ui` | Hard mechanical language: Swiss type, sharp contrast, experimental layout. |\n| **stitch-skill** | `stitch-design-taste` | Google Stitch-compatible rules, including optional `DESIGN.md` export format. |\n\n### Image generation skills\n\nThese produce design images only (no code). Use with ChatGPT Images, Codex image mode, or any agent that generates images.\n\n| Skill (folder) | Install name | Description |\n| --- | --- | --- |\n| **imagegen-frontend-web** | `imagegen-frontend-web` | Website comps: hero, landing, multi-section with strong typography, spacing, anti-slop art direction. |\n| **imagegen-frontend-mobile** | `imagegen-frontend-mobile` | Mobile screens and flows: iOS/Android/cross-platform, mockups, readable type, coherent sets. |\n| **brandkit** | `brandkit` | Brand-kit boards: logo directions, palettes, type, identity applications across categories. |\n\n### Which one should I use?\n\n- Start with **taste-skill** for the safest general default. (Now v2 experimental - see what changed in the [CHANGELOG](CHANGELOG.md).)\n- If you depend on the exact behavior of the original taste-skill, install **taste-skill-v1** instead. \n- Use **gpt-taste** when you want the stricter GPT/Codex-oriented rules and motion/layout enforcement. \n- Use **image-to-code-skill** for image → analyze → code website workflows. \n- Use **redesign-skill** to improve an existing codebase instead of greenfield styling. \n- Add **soft-skill**, **minimalist-skill**, or **brutalist-skill** when the visual direction is already chosen. \n- Add **output-skill** if the agent keeps truncating output. \n- Use **imagegen-frontend-web**, **imagegen-frontend-mobile**, or **brandkit** when the deliverable is **images** (comps, flows, identity boards), then pass results to your coding agent.\n\n### Image-first tip\n\nFor **image-to-code-skill**, state the pipeline in the prompt, e.g.: `follow the skill: generate images, then analyze, then code`.\n\n### ChatGPT Images and Codex\n\nAttach or paste **`imagegen-frontend-web`**, **`imagegen-frontend-mobile`**, or **`brandkit`** and ask for the frames you need, then feed the renders to Codex, Cursor, or Claude Code. Use **image-to-code-skill** when you want one workflow that both generates references and implements the site in code.\n\n## Settings (taste-skill only)\n\nNumbers at the top of the file are 1-10 dials:\n\n- **DESIGN_VARIANCE**: Layout experimentation (lower: centered/clean · higher: asymmetric/modern).\n- **MOTION_INTENSITY**: Animation depth (lower: hover · higher: scroll/magnetic).\n- **VISUAL_DENSITY**: Information per viewport (lower: spacious · higher: dense dashboards).\n\n## Examples\n\nCreated with taste-skill:\n\n<p>\n  <img src=\"examples/floria-top.webp\" width=\"400\" />\n  <img src=\"examples/floria-bottom.webp\" width=\"400\" />\n</p>\n\n## Support the project\n\nIf Taste Skill helps you, consider sponsoring:\n\n[Sponsor on GitHub](https://github.com/sponsors/Leonxlnx)\n\n### Current Sponsors\n\n<a href=\"https://animations.dev\" title=\"Emil Kowalski · animations.dev\"><img src=\"assets/sponsors/animations-dev.webp\" width=\"62\" height=\"62\" alt=\"Emil Kowalski\" title=\"Emil Kowalski · animations.dev\" /></a>\n<a href=\"https://github.com/dnakov\"><img src=\"https://github.com/dnakov.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"dnakov\" title=\"dnakov\" /></a>\n<a href=\"https://github.com/AkramReshad\"><img src=\"https://github.com/AkramReshad.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"AkramReshad\" title=\"AkramReshad\" /></a>\n<a href=\"https://github.com/ajmalaksar25\"><img src=\"https://github.com/ajmalaksar25.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"ajmalaksar25\" title=\"ajmalaksar25\" /></a>\n<a href=\"https://github.com/krikkkk\"><img src=\"https://github.com/krikkkk.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"krikkkk\" title=\"krikkkk\" /></a>\n<a href=\"https://github.com/navanchauhan\"><img src=\"https://github.com/navanchauhan.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"navanchauhan\" title=\"navanchauhan\" /></a>\n<a href=\"https://github.com/robinebers\"><img src=\"https://github.com/robinebers.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"robinebers\" title=\"robinebers\" /></a>\n<a href=\"https://github.com/JKc66\"><img src=\"https://github.com/JKc66.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"JKc66\" title=\"JKc66\" /></a>\n<a href=\"https://github.com/u2393696078-rgb\"><img src=\"https://github.com/u2393696078-rgb.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"u2393696078-rgb\" title=\"u2393696078-rgb\" /></a>\n<a href=\"https://github.com/a-human-created-this\"><img src=\"https://github.com/a-human-created-this.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"a-human-created-this\" title=\"a-human-created-this\" /></a>\n<a href=\"https://github.com/AtharvaJaiswal005\"><img src=\"https://github.com/AtharvaJaiswal005.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"AtharvaJaiswal005\" title=\"AtharvaJaiswal005\" /></a>\n<a href=\"https://github.com/ghughes7\"><img src=\"https://github.com/ghughes7.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"ghughes7\" title=\"ghughes7\" /></a>\n<a href=\"https://github.com/mccun934\"><img src=\"https://github.com/mccun934.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"mccun934\" title=\"mccun934\" /></a>\n<a href=\"https://github.com/techmedic5\"><img src=\"https://github.com/techmedic5.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"techmedic5\" title=\"techmedic5\" /></a>\n<a href=\"https://github.com/bytewerk-dev\"><img src=\"https://github.com/bytewerk-dev.png\" width=\"40\" height=\"40\" style=\"border-radius:50%\" alt=\"bytewerk-dev\" title=\"bytewerk-dev\" /></a>\n\n<p align=\"center\">\n <a href=\"https://www.star-history.com/leonxlnx/taste-skill\">\n  <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/badge?repo=Leonxlnx/taste-skill&theme=dark\" />\n   <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/badge?repo=Leonxlnx/tas",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 9,
      "risk_signal": 6,
      "total": 84
    },
    "strategic_score": 84
  },
  {
    "owner": "tashfeenahmed",
    "name": "freellmapi",
    "full_name": "tashfeenahmed/freellmapi",
    "url": "https://github.com/tashfeenahmed/freellmapi",
    "description": "OpenAI-compatible proxy that stacks the free tiers of 16 LLM providers (~1.7B tokens/month) behind one /v1 endpoint — plus any custom OpenAI-compatible endpoint. Smart routing, automatic failover, encrypted keys. Personal experimentation only.",
    "language": "TypeScript",
    "total_stars": 13142,
    "forks": 1991,
    "stars_this_period": 586,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 55,
      "created_at": "2026-04-21T13:38:59Z",
      "pushed_at": "2026-06-26T09:29:44Z",
      "homepage": "https://freellmapi.co",
      "default_branch": "main",
      "forks": 1991,
      "watchers": 55,
      "archived": false,
      "size_kb": 3091
    },
    "readme_content": "<div align=\"center\">\n\n# FreeLLMAPI\n\n**One OpenAI-compatible endpoint. Sixteen free LLM providers. ~1.7B tokens per month.**\n\nAggregate the free tiers from Google, Groq, Cerebras, NVIDIA, Mistral, OpenRouter, GitHub Models, Cohere, Cloudflare, HuggingFace, Z.ai (Zhipu), Ollama, Kilo, Pollinations, LLM7, OVH AI Endpoints, and OpenCode Zen — plus any custom OpenAI-compatible endpoint (llama.cpp, LM Studio, vLLM, local Ollama) — behind a single `/v1/chat/completions` endpoint. Keys are stored encrypted. A router picks the best available model for each request, falls over to the next provider when one is rate-limited, and tracks per-key usage so you stay under every free-tier cap.\n\n[![CI](https://github.com/tashfeenahmed/freellmapi/actions/workflows/ci.yml/badge.svg)](https://github.com/tashfeenahmed/freellmapi/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](./LICENSE)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](#contributing)\n[![Docker image](https://img.shields.io/badge/ghcr.io-freellmapi-2496ED?logo=docker&logoColor=white)](https://github.com/tashfeenahmed/freellmapi/pkgs/container/freellmapi)\n\n**[freellmapi.co](https://freellmapi.co)** — browse the live model catalog\n\n![Fallback chain with per-provider token budget](repo-assets/fallback-chain.png)\n\n</div>\n\n---\n\n## Contents\n\n- [Why this exists](#why-this-exists)\n- [Supported providers](#supported-providers)\n- [Features](#features)\n- [Not yet supported](#not-yet-supported)\n- [Quick start](#quick-start)\n- [Docker](#docker)\n- [Desktop app](#desktop-app)\n- [Languages](#languages)\n- [Premium (live catalog)](#premium-live-catalog)\n- [Using the API](#using-the-api)\n- [Screenshots](#screenshots)\n- [How it works](#how-it-works)\n- [Context Handoff](#context-handoff)\n- [Limitations](#limitations)\n- [Contributing](#contributing)\n- [Terms of Service review](#terms-of-service-review)\n- [Disclaimer](#disclaimer)\n\n## Why this exists\n\nEvery serious AI lab now offers a free tier — a few million tokens a month, a few thousand requests a day. On its own each tier is a toy. Stacked together, they add up to roughly **1.7 billion tokens per month** of working inference capacity, across 100+ models from small-and-fast to reasonably capable.\n\nThe problem is that stacking them by hand is painful: seventeen different SDKs, seventeen different rate limits, seventeen places a request can fail. FreeLLMAPI collapses that into one OpenAI-compatible endpoint. Point any OpenAI client library at your local server, and it routes transparently across whichever providers you've added keys for.\n\n## Supported providers\n\n<table>\n<tr>\n<td align=\"center\" width=\"180\"><a href=\"https://ai.google.dev\"><b>Google</b><br/>Gemini 2.5 Flash · 3.x previews</a></td>\n<td align=\"center\" width=\"180\"><a href=\"https://groq.com\"><b>Groq</b><br/>Llama 3.3, Llama 4, GPT-OSS, Qwen3</a></td>\n<td align=\"center\" width=\"180\"><a href=\"https://cerebras.ai\"><b>Cerebras</b><br/>Qwen3 235B</a></td>\n<td align=\"center\" width=\"180\"><a href=\"https://opencode.ai/zen\"><b>OpenCode Zen</b><br/>DeepSeek V4 Flash · Nemotron (promo)</a></td>\n</tr>\n<tr>\n<td align=\"center\"><a href=\"https://mistral.ai\"><b>Mistral</b><br/>Large 3 · Medium 3.5 · Codestral · Devstral</a></td>\n<td align=\"center\"><a href=\"https://openrouter.ai\"><b>OpenRouter</b><br/>21 free-tier models</a></td>\n<td align=\"center\"><a href=\"https://github.com/marketplace/models\"><b>GitHub Models</b><br/>GPT-4.1 · GPT-4o</a></td>\n<td align=\"center\"><a href=\"https://developers.cloudflare.com/workers-ai\"><b>Cloudflare</b><br/>Kimi K2 · GLM-4.7 · GPT-OSS · Granite 4</a></td>\n</tr>\n<tr>\n<td align=\"center\"><a href=\"https://cohere.com\"><b>Cohere</b><br/>Command R+ · Command-A (trial)</a></td>\n<td align=\"center\"><a href=\"https://docs.z.ai\"><b>Z.ai (Zhipu)</b><br/>GLM-4.5 · GLM-4.7 Flash</a></td>\n<td align=\"center\"><a href=\"https://build.nvidia.com\"><b>NVIDIA</b><br/>NIM · 40 RPM free (eval-only ToS)</a></td>\n<td align=\"center\"><a href=\"https://huggingface.co/docs/inference-providers\"><b>HuggingFace</b><br/>Router → DeepSeek V4 · Kimi K2.6 · Qwen3</a></td>\n</tr>\n<tr>\n<td align=\"center\"><a href=\"https://ollama.com\"><b>Ollama Cloud</b><br/>GLM-4.7 · Kimi K2 · gpt-oss · Qwen3</a></td>\n<td align=\"center\"><a href=\"https://kilo.ai\"><b>Kilo Gateway</b><br/>:free routes (anon ok)</a></td>\n<td align=\"center\"><a href=\"https://pollinations.ai\"><b>Pollinations</b><br/>GPT-OSS 20B (anon ok)</a></td>\n<td align=\"center\"><a href=\"https://llm7.io\"><b>LLM7</b><br/>GPT-OSS · Llama 3.1 · GLM (anon ok)</a></td>\n</tr>\n<tr>\n<td align=\"center\"><a href=\"https://endpoints.ai.cloud.ovh.net\"><b>OVH AI Endpoints</b><br/>Qwen3.5 397B · GPT-OSS · Llama 3.3 (anon ok)</a></td>\n<td align=\"center\"></td>\n<td align=\"center\"></td>\n<td align=\"center\"></td>\n</tr>\n</table>\n\nPlus a **custom** provider — point at any OpenAI-compatible endpoint (llama.cpp, LM Studio, vLLM, a local Ollama, or a remote gateway) from the Keys page.\n\n## Features\n\n- **OpenAI-compatible** — `POST /v1/chat/completions` and `GET /v1/models` work with the official OpenAI SDKs and any OpenAI-compatible client (LangChain, LlamaIndex, Continue, Hermes, etc.). Just change `base_url`.\n- **Responses API** — `POST /v1/responses` (the wire format current Codex CLI versions require) is implemented as a translating shim over the same router, with full streaming events and tool calls.\n- **Anthropic Messages API** — `POST /v1/messages` (plus `/v1/messages/count_tokens`) speaks Anthropic's wire format over the same router, so **Claude Code** and the official Anthropic SDKs run against your free pool. `GET /v1/models` is content-negotiated (Anthropic shape when the client sends `anthropic-version`, OpenAI shape otherwise), and Claude families (`opus` / `sonnet` / `haiku` / `default`) map to `auto` or a pinned model on the Keys page. See [Anthropic / Claude clients](#anthropic--claude-clients).\n- **Image generation & text-to-speech** — `POST /v1/images/generations` and `POST /v1/audio/speech` route across the providers that serve media models. Browse and toggle them on the dashboard's **Models → Image / Audio** tabs.\n- **Streaming and non-streaming** — Server-Sent Events for `stream: true`, JSON response otherwise. Every provider adapter implements both.\n- **Tool calling** — OpenAI-style `tools` / `tool_choice` requests are passed through, and assistant `tool_calls` + `tool` role follow-up messages round-trip across providers.\n- **Embeddings** — `/v1/embeddings` with family-based routing: failover only ever happens between providers serving the *same* model (vectors from different models are incompatible), never across models. See [Embeddings](#embeddings).\n- **Automatic fallover** — If the chosen provider returns a 429, 5xx, or times out, the router skips it, puts the key on a short cooldown, and retries on the next model in your fallback chain (up to 20 attempts).\n- **Per-key rate tracking** — RPM, RPD, TPM, and TPD counters per `(platform, model, key)` so the router always picks a key that's under its caps.\n- **Sticky sessions** — Multi-turn conversations keep talking to the same model for 30 minutes to avoid the hallucination spike that comes from mid-conversation model switches.\n- **Encrypted key storage** — API keys are encrypted with AES-256-GCM before hitting SQLite; decryption happens in-memory just before a request.\n- **Unified API key** — Clients authenticate to your proxy with a single `freellmapi-…` bearer token. You never expose upstream provider keys to your apps.\n- **Dashboard login** — The admin UI and all `/api/*` routes are gated behind an email + password account (scrypt-hashed, session-token auth), set on first run. The `/v1` proxy keeps its own unified-key auth for apps.\n- **Health checks** — Periodic probes mark keys as `healthy`, `rate_limited`, `invalid`, or `error` so the router skips dead ones automatically.\n- **Admin dashboard** — React + Vite UI to manage keys, reorder the fallback chain, inspect analytics, and run prompts in a playground. Dark mode included.\n- **Analytics** — Per-request logging with latency, token counts, success rate, and per-provider breakdowns.\n- **Context handoff on model switch** — Optional. When a session falls over to a different model, injects one compact system message so the new model knows it is continuing an existing task. Disabled by default; enable with `FREELLMAPI_CONTEXT_HANDOFF=on_model_switch`. See [Context Handoff](#context-handoff).\n- **Runs anywhere Node 20+ runs** — Windows, macOS, Linux servers, or a small ARM SBC (Raspberry Pi included). ~40 MB RSS at idle behind PM2 / systemd / whatever supervisor you prefer.\n\n## Not yet supported\n\nThe scope is deliberately narrow. If a feature isn't on this list and isn't below, assume it isn't there yet.\n\n- **Legacy completions** (`/v1/completions`) — only the chat endpoint is implemented\n- **Moderation** (`/v1/moderations`)\n- **`n > 1`** (multiple completions per request)\n- **Per-user billing / multi-tenant auth** — single-user by design\n\nPRs that add any of these are very welcome. See [Contributing](#contributing).\n\n## Quick start\n\n**One-liner** (Docker required — sets up `~/freellmapi`, generates an encryption key, pulls the image, and starts the container):\n\n```bash\ncurl -fsSL https://freellmapi.co/install.sh | bash\n```\n\nPrefer to read before you pipe to bash? [The script is here](https://freellmapi.co/install.sh). Re-running it is safe: your `.env` (and encryption key) is preserved and the container updates to `:latest`. Override the defaults with `FREELLMAPI_DIR`, `PORT`, or `HOST_BIND` env vars.\n\nOn Windows, the easiest path is the desktop **[`.exe` installer from Releases](https://github.com/tashfeenahmed/freellmapi/releases/latest)** (below); the Docker steps work in WSL or any bash shell.\n\n**Or manually with Docker Compose.** It runs the API and dashboard together on port 3001 and persists SQLite in a named volume.\n\n**Prerequisites:** Docker, Docker Compose, OpenSSL.\n\n```bash\ngit clone https://github.com/tashfeenahmed/freellmapi.git\ncd freellmapi\n\n# Generate an encryption key for at-rest key storage\nENCRYPTION_KEY=\"$(openssl rand -hex 32)\"\nprintf \"ENCRYPTION_KEY=%s\\nPORT=3001\\n\" \"$ENCRYPTION_KEY\" > .env\n\ndocker compose up -d\n```\n\nOpen http://localhost:3001, add your provider keys on the **Keys** page, reorder the **Fallback Chain** to taste, and grab your unified API key from the **Keys** page header. That unified key is what you point your OpenAI SDK at.\n\n> **Reaching it from another machine?** By default the container is published only on `127.0.0.1`, so `http://<server-ip>:3001` won't load from another device (the page just hangs). To expose it on your LAN — e.g. a Raspberry Pi at `http://192.168.1.x:3001` — start it with `HOST_BIND=0.0.0.0`:\n>\n> ```bash\n> HOST_BIND=0.0.0.0 docker compose up -d\n> ```\n>\n> Only do this on a trusted network: the proxy is single-user and guarded only by the unified API key.\n\n### Local development\n\n**Prerequisites:** Node.js 20+, npm.\n\n```bash\ngit clone https://github.com/tashfeenahmed/freellmapi.git\ncd freellmapi\nnpm install\ncp .env.example .env\nENCRYPTION_KEY=\"$(node -e 'console.log(require(\"crypto\").randomBytes(32).toString(\"hex\"))')\"\nprintf \"ENCRYPTION_KEY=%s\\nPORT=3001\\n\" \"$ENCRYPTION_KEY\" > .env\nnpm run dev\n```\n\n`ENCRYPTION_KEY` is required for startup. The server only falls back to a\ndatabase-stored development key when `DEV_MODE=true` and `NODE_ENV` is not\n`production`; do not use that fallback with real provider keys.\n\nRequest analytics are retained for 90 days or 100000 request rows by default,\nwhichever limit prunes first. Set `REQUEST_ANALYTICS_RETENTION_DAYS=0` or\n`REQUEST_ANALYTICS_MAX_ROWS=0` in `.env` to disable either retention limit.\n\nOpen http://localhost:5173 (the Vite dev UI), add your provider keys on the **Keys** page, reorder the **Fallback Chain** to taste, and grab your unified API key from the **Keys** page header. That unified key is what you point your OpenAI SDK at.\n\n> **Reaching the",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"freellmapi\",\n  \"private\": true,\n  \"workspaces\": [\n    \"shared\",\n    \"server\",\n    \"client\"\n  ],\n  \"scripts\": {\n    \"dev\": \"concurrently --kill-others-on-fail --names server,client \\\"npm run dev -w server\\\" \\\"npm run dev -w client\\\"\",\n    \"dev:lan\": \"concurrently --kill-others-on-fail --names server,client \\\"npm run dev -w server\\\" \\\"npm run dev -w client -- --host\\\"\",\n    \"test\": \"npm run test -w server && npm run test -w client --if-present\",\n    \"build\": \"npm run build -w server && npm run build -w client\",\n    \"build:server\": \"npm run build -w server\",\n    \"desktop:dev\": \"npm run build -w client && npm --prefix desktop run dev\",\n    \"desktop:dist\": \"npm run build -w client && npm --prefix desktop run dist\",\n    \"desktop:dist:win\": \"npm run build -w client && npm --prefix desktop run dist:win\"\n  },\n  \"devDependencies\": {\n    \"concurrently\": \"^9.1.2\"\n  }\n}\n",
    "strategic_keywords": [
      "workspace",
      "llm",
      "eval",
      "workflow",
      "inference"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "stablyai",
    "name": "orca",
    "full_name": "stablyai/orca",
    "url": "https://github.com/stablyai/orca",
    "description": "Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop and mobile.",
    "language": "TypeScript",
    "total_stars": 7901,
    "forks": 557,
    "stars_this_period": 571,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "ade",
        "agent-ide",
        "ai-agents",
        "claude-code",
        "cli",
        "codex",
        "cursor-agent",
        "devtools",
        "ghostty",
        "ide",
        "mobile-app",
        "opencode",
        "orchestration",
        "parallel-agents",
        "pi",
        "terminal",
        "worktrees",
        "yc-backed"
      ],
      "license": "MIT",
      "open_issues": 694,
      "created_at": "2026-03-17T03:28:57Z",
      "pushed_at": "2026-06-26T22:01:55Z",
      "homepage": "https://onOrca.dev",
      "default_branch": "main",
      "forks": 557,
      "watchers": 16,
      "archived": false,
      "size_kb": 180489
    },
    "readme_content": "<h1 align=\"center\">\n  <a href=\"https://onOrca.dev\"><img src=\"resources/build/icon.png\" alt=\"Orca\" width=\"64\" valign=\"middle\" /></a> Orca\n</h1>\n\n<p align=\"center\">\n  <a href=\"https://github.com/stablyai/orca/stargazers\"><img src=\"https://badgen.net/github/stars/stablyai/orca?label=%E2%98%85\" alt=\"GitHub stars\" /></a>\n  <a href=\"https://github.com/stablyai/orca/releases\"><img src=\"docs/assets/readme-downloads.svg\" alt=\"Total downloads across all releases\" /></a>\n  <img src=\"https://badgen.net/github/license/stablyai/orca\" alt=\"License\" />\n  <a href=\"https://discord.gg/fzjDKHxv8Q\"><img src=\"https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white\" alt=\"Join the Orca Discord\" /></a>\n  <a href=\"https://x.com/orca_build\"><img src=\"https://img.shields.io/badge/X-000000?logo=x&logoColor=white\" alt=\"Follow Orca on X\" /></a>\n  <img src=\"https://img.shields.io/badge/macOS%20%7C%20Windows%20%7C%20Linux-4493F8?style=flat-square\" alt=\"Supported platforms: macOS, Windows, and Linux\" />\n</p>\n\n<p align=\"center\">\n  <sub><a href=\"docs/readme/README.es.md\">Español</a> · <a href=\"docs/readme/README.zh-CN.md\">中文</a> · <a href=\"docs/readme/README.ja.md\">日本語</a> · <a href=\"docs/readme/README.ko.md\">한국어</a></sub>\n</p>\n\n<p align=\"center\">\n  <strong>The AI Orchestrator for 100x builders.</strong><br/>\n  Run Codex, ClaudeCode, OpenCode or Pi side-by-side — each in its own worktree, tracked in one place.\n</p>\n\n<h3 align=\"center\"><a href=\"https://onorca.dev/download\"><ins>Download Orca</ins></a></h3>\n\n<p align=\"center\">\n  <img src=\"docs/assets/readme-hero.jpg\" alt=\"Orca desktop app running agents in parallel worktrees, with the Orca mobile companion app in the corner\" width=\"960\" />\n</p>\n\n## Features\n\n<table>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Mobile Companion\n\nMonitor and steer your agents from your phone — get notified when an agent finishes and send follow-ups from anywhere.\n\n[iOS App Store](https://apps.apple.com/us/app/orca-ide/id6766130217) · [TestFlight](https://testflight.apple.com/join/YjeGMQBA) · [Android APK](https://github.com/stablyai/orca/releases/download/mobile-android-v0.0.16/app-release.apk) · [Docs →](https://www.onorca.dev/docs/mobile)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/mobile\"><picture><source srcset=\"docs/assets/feature-wall/mobile-companion-app-showcase.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/mobile-companion-app-showcase.jpg\" alt=\"Orca desktop with the mobile companion app\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Parallel Worktrees\n\nFan one prompt across five agents, each in its own isolated git worktree — compare the results and merge the winner.\n\n[Docs →](https://www.onorca.dev/docs/model/worktrees)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/model/worktrees\"><picture><source srcset=\"docs/assets/feature-wall/parallel-worktrees.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/parallel-worktrees.jpg\" alt=\"Parallel worktree orchestration\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Terminal Splits\n\nGhostty-class terminals with WebGL rendering, infinite splits, and scrollback that survives restarts.\n\n[Docs →](https://www.onorca.dev/docs/terminal)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/terminal\"><picture><source srcset=\"docs/assets/feature-wall/terminal-splits.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/terminal-splits.jpg\" alt=\"Terminal splits\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Design Mode\n\nClick any UI element in a real Chromium window to send its HTML, CSS, and a cropped screenshot straight into your agent's prompt.\n\n[Docs →](https://www.onorca.dev/docs/browser/design-mode)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/browser/design-mode\"><picture><source srcset=\"docs/assets/feature-wall/design-mode.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/design-mode.jpg\" alt=\"Embedded browser and Design Mode\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### GitHub &amp; Linear, Native\n\nBrowse PRs, issues, and project boards in-app — open a worktree from any task and review without a context switch.\n\n[Docs →](https://www.onorca.dev/docs/review/linear)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/review/linear\"><picture><source srcset=\"docs/assets/feature-wall/github-linear.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/github-linear.jpg\" alt=\"GitHub and Linear task workflows in Orca\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### SSH Worktrees\n\nRun agents on a beefy remote box with full file editing, git, and terminals — auto-reconnect and port forwarding included.\n\n[Docs →](https://www.onorca.dev/docs/ssh)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/ssh\"><picture><source srcset=\"docs/assets/feature-wall/ssh-worktrees.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/ssh-worktrees.jpg\" alt=\"Remote worktrees over SSH\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Annotate AI Diffs\n\nDrop comments on any diff line and ship them back to the agent — review, edit, and commit without leaving Orca.\n\n[Docs →](https://www.onorca.dev/docs/review/annotate-ai-diff)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/review/annotate-ai-diff\"><picture><source srcset=\"docs/assets/feature-wall/annotate-diff.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/annotate-diff.jpg\" alt=\"Annotate AI-generated diffs\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Drag Files to Agents\n\nVS Code's editor with autosave everywhere — drag files or images straight into an agent prompt.\n\n[Docs →](https://www.onorca.dev/docs/editing/file-explorer)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/editing/file-explorer\"><picture><source srcset=\"docs/assets/feature-wall/file-drag.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/file-drag.jpg\" alt=\"Drag files and images into an agent prompt\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n<tr>\n<td width=\"50%\" valign=\"middle\">\n\n### Orca CLI\n\nAgents drive Orca too — script every workflow with `orca worktree create`, `snapshot`, `click`, and `fill`.\n\n[Docs →](https://www.onorca.dev/docs/cli/overview)\n\n</td>\n<td width=\"50%\">\n  <a href=\"https://www.onorca.dev/docs/cli/overview\"><picture><source srcset=\"docs/assets/feature-wall/orca-cli.gif\" type=\"image/gif\"><img src=\"docs/assets/feature-wall/orca-cli.jpg\" alt=\"Script Orca from the CLI\" width=\"100%\" /></picture></a>\n</td>\n</tr>\n</table>\n\n**Also in the box:**\n\n- **[Quick open](https://www.onorca.dev/docs/model/quick-open)** — Search across worktrees, files, agents, commands, and repo context without leaving your flow.\n- **[Account switcher &amp; usage tracking](https://www.onorca.dev/docs/agents/usage-tracking)** — See Claude and Codex usage and rate-limit resets, and hot-swap accounts without re-logging in.\n- **[Rich repo previews](https://www.onorca.dev/docs/editing/markdown)** — Preview Markdown, images, PDFs, and repo docs in the workspace.\n- **[Computer Use](https://www.onorca.dev/docs/cli/computer-use)** — Let agents operate desktop apps and visible UI when a workflow needs real interaction.\n- **[Notifications and unread state](https://www.onorca.dev/docs/notifications)** — Know when an agent finishes or needs attention, then mark threads unread to come back later.\n- **And many, many more** — we ship daily, so this list is perpetually behind. The [changelog](https://github.com/stablyai/orca/releases) is the real feature list.\n\n---\n\n## Supported Agents\n\nWorks with **any CLI agent** — if it runs in a terminal, it runs in Orca.\n\n<p>\n  <a href=\"https://docs.anthropic.com/claude/docs/claude-code\"><kbd><img src=\"docs/assets/claude-logo.svg\" alt=\"Claude Code logo\" width=\"16\" valign=\"middle\" /> Claude Code</kbd></a> &nbsp;\n  <a href=\"https://github.com/openai/codex\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=openai.com&sz=64\" alt=\"Codex logo\" width=\"16\" valign=\"middle\" /> Codex</kbd></a> &nbsp;\n  <a href=\"https://x.ai/cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=x.ai&sz=64\" alt=\"Grok logo\" width=\"16\" valign=\"middle\" /> Grok</kbd></a> &nbsp;\n  <a href=\"https://cursor.com/cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=cursor.com&sz=64\" alt=\"Cursor logo\" width=\"16\" valign=\"middle\" /> Cursor</kbd></a> &nbsp;\n  <a href=\"https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=github.com&sz=64\" alt=\"GitHub Copilot logo\" width=\"16\" valign=\"middle\" /> GitHub Copilot</kbd></a> &nbsp;\n  <a href=\"https://opencode.ai/docs/cli/\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=opencode.ai&sz=64\" alt=\"OpenCode logo\" width=\"16\" valign=\"middle\" /> OpenCode</kbd></a> &nbsp;\n  <a href=\"https://mimo.xiaomi.com/coder\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=mimo.xiaomi.com&sz=64\" alt=\"MiMo Code logo\" width=\"16\" valign=\"middle\" /> MiMo Code</kbd></a> &nbsp;\n  <a href=\"https://ampcode.com/manual#install\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=ampcode.com&sz=64\" alt=\"Amp logo\" width=\"16\" valign=\"middle\" /> Amp</kbd></a> &nbsp;\n  <a href=\"https://openclaude.gitlawb.com/\"><kbd><img src=\"resources/openclaude-logo.png\" alt=\"OpenClaude logo\" width=\"16\" valign=\"middle\" /> OpenClaude</kbd></a> &nbsp;\n  <a href=\"https://antigravity.google/docs/cli-overview\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=antigravity.google&sz=64\" alt=\"Antigravity logo\" width=\"16\" valign=\"middle\" /> Antigravity</kbd></a> &nbsp;\n  <a href=\"https://pi.dev\"><kbd><img src=\"https://pi.dev/favicon.svg\" alt=\"Pi logo\" width=\"16\" valign=\"middle\" /> Pi</kbd></a> &nbsp;\n  <a href=\"https://omp.sh\"><kbd><img src=\"https://omp.sh/favicon.svg\" alt=\"oh-my-pi logo\" width=\"16\" valign=\"middle\" /> oh-my-pi</kbd></a> &nbsp;\n  <a href=\"https://hermes-agent.nousresearch.com/docs/\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=nousresearch.com&sz=64\" alt=\"Hermes Agent logo\" width=\"16\" valign=\"middle\" /> Hermes Agent</kbd></a> &nbsp;\n  <a href=\"https://devin.ai/cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=devin.ai&sz=64\" alt=\"Devin logo\" width=\"16\" valign=\"middle\" /> Devin</kbd></a> &nbsp;\n  <a href=\"https://block.github.io/goose/docs/quickstart/\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=goose-docs.ai&sz=64\" alt=\"Goose logo\" width=\"16\" valign=\"middle\" /> Goose</kbd></a> &nbsp;\n  <a href=\"https://docs.augmentcode.com/cli/overview\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=augmentcode.com&sz=64\" alt=\"Auggie logo\" width=\"16\" valign=\"middle\" /> Auggie</kbd></a> &nbsp;\n  <a href=\"https://github.com/autohandai/code-cli\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=autohand.ai&sz=64\" alt=\"Autohand Code logo\" width=\"16\" valign=\"middle\" /> Autohand Code</kbd></a> &nbsp;\n  <a href=\"https://github.com/charmbracelet/crush\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=charm.sh&sz=64\" alt=\"Charm logo\" width=\"16\" valign=\"middle\" /> Charm</kbd></a> &nbsp;\n  <a href=\"https://docs.cline.bot/cline-cli/overview\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=cline.bot&sz=64\" alt=\"Cline logo\" width=\"16\" valign=\"middle\" /> Cline</kbd></a> &nbsp;\n  <a href=\"https://www.codebuff.com/docs/help/quick-start\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=codebuff.com&sz=64\" alt=\"Codebuff logo\" width=\"16\" valign=\"middle\" /> Codebuff</kbd></a> &nbsp;\n  <a href=\"https://commandcode.ai/docs/quickstart\"><kbd><img src=\"https://www.google.com/s2/favicons?domain=commandcode.ai&sz=64\" alt=\"Command Code logo\" width=\"16\" valign=\"middle\" /> Command Code</kbd></a> &nbsp;\n  <a href=\"https://docs.continue.dev/guides/cli\"><kbd><img src=\"https://www.google",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"orca\",\n  \"version\": \"1.4.102-rc.0\",\n  \"description\": \"Next-gen IDE for parallel agentic development\",\n  \"homepage\": \"https://github.com/stablyai/orca\",\n  \"author\": \"stablyai\",\n  \"bin\": {\n    \"orca\": \"./out/cli/index.js\",\n    \"orca-dev\": \"./config/scripts/orca-dev.mjs\"\n  },\n  \"main\": \"./out/main/index.js\",\n  \"scripts\": {\n    \"format\": \"oxfmt --write .\",\n    \"lint\": \"oxlint && pnpm run lint:switch-exhaustiveness && node config/scripts/check-styled-scrollbars.mjs && pnpm run verify:localization-catalog && pnpm run verify:localization-coverage\",\n    \"lint:react-doctor\": \"oxlint --config config/oxlint-react-doctor.json\",\n    \"lint:react-doctor:changed\": \"node config/scripts/lint-react-doctor-changed.mjs\",\n    \"lint:switch-exhaustiveness\": \"oxlint --type-aware --config config/oxlint-switch-exhaustiveness.json src/main src/preload src/shared src/relay src/cli src/renderer/src config tests --quiet\",\n    \"prepare\": \"husky\",\n    \"test\": \"node config/scripts/ensure-native-runtime.mjs --runtime=node && vitest run --config config/vitest.config.ts\",\n    \"check:styled-scrollbars\": \"node config/scripts/check-styled-scrollbars.mjs\",\n    \"check:feature-wall-assets\": \"node config/scripts/check-feature-wall-assets.mjs\",\n    \"verify:macos-entitlements\": \"node config/scripts/verify-macos-entitlements.mjs\",\n    \"vendor:feature-wall-assets\": \"node config/scripts/vendor-feature-wall-assets.mjs\",\n    \"tc:node\": \"pnpm run typecheck:node\",\n    \"tc:cli\": \"pnpm run typecheck:cli\",\n    \"tc:web\": \"pnpm run typecheck:web\",\n    \"tc\": \"pnpm run typecheck\",\n    \"typecheck:node\": \"tsgo --noEmit -p config/tsconfig.node.json\",\n    \"typecheck:cli\": \"tsgo --noEmit -p config/tsconfig.tc.cli.json\",\n    \"typecheck:web\": \"tsgo --noEmit -p config/tsconfig.tc.web.json\",\n    \"typecheck\": \"tsgo --noEmit -p config/tsconfig.node.json && tsgo --noEmit -p config/tsconfig.tc.cli.json && tsgo --noEmit -p config/tsconfig.tc.web.json\",\n    \"typecheck:tsc:node\": \"tsc --noEmit -p config/tsconfig.node.json --composite false\",\n    \"typecheck:tsc:cli\": \"tsc --noEmit -p config/tsconfig.cli.json --composite false\",\n    \"typecheck:tsc:web\": \"tsc --noEmit -p config/tsconfig.web.json --composite false\",\n    \"typecheck:tsc\": \"tsc --noEmit -p config/tsconfig.node.json --composite false && tsc --noEmit -p config/tsconfig.cli.json --composite false && tsc --noEmit -p config/tsconfig.web.json --composite false\",\n    \"ensure:electron-runtime\": \"node config/scripts/ensure-native-runtime.mjs --runtime=electron\",\n    \"start\": \"pnpm run ensure:electron-runtime && electron-vite preview\",\n    \"dev\": \"pnpm run ensure:electron-runtime && node config/scripts/run-electron-vite-dev.mjs\",\n    \"dev-stable-name\": \"pnpm run ensure:electron-runtime && node config/scripts/run-electron-vite-dev.mjs --stable-name\",\n    \"dev:web\": \"vite --config vite.web.config.ts --host 127.0.0.1\",\n    \"build:relay\": \"node config/scripts/build-relay.mjs\",\n    \"build:computer-macos\": \"node config/scripts/build-computer-macos.mjs\",\n    \"build:native\": \"node config/scripts/build-native-for-platform.mjs\",\n    \"smoke:computer\": \"node config/scripts/computer-use-smoke.mjs\",\n    \"verify:computer-native\": \"node config/scripts/verify-computer-native.mjs\",\n    \"verify:cli-bin\": \"node config/scripts/verify-cli-bin.mjs\",\n    \"verify:localization-catalog\": \"node config/scripts/verify-localization-catalog.mjs\",\n    \"sync:localization-catalog\": \"node config/scripts/verify-localization-catalog.mjs --fix\",\n    \"bootstrap:locale-catalog\": \"node config/scripts/bootstrap-locale-catalog.mjs\",\n    \"bootstrap:zh-catalog\": \"node config/scripts/bootstrap-zh-catalog.mjs\",\n    \"bootstrap:ko-catalog\": \"node config/scripts/bootstrap-locale-catalog.mjs --locale ko\",\n    \"bootstrap:ja-catalog\": \"node config/scripts/bootstrap-locale-catalog.mjs --locale ja\",\n    \"bootstrap:es-catalog\": \"node config/scripts/bootstrap-locale-catalog.mjs --locale es\",\n    \"repair:locale-catalog\": \"node config/scripts/repair-locale-catalog.mjs\",\n    \"verify:localization-coverage\": \"node config/scripts/audit-localization-coverage.mjs --check\",\n    \"audit:localization\": \"node config/scripts/audit-localization-coverage.mjs\",\n    \"build:cli\": \"tsc -p config/tsconfig.cli.json --outDir out --composite false --incremental false && node config/scripts/verify-cli-bin.mjs --fix-executable && node config/scripts/install-dev-cli.mjs\",\n    \"build:electron-vite\": \"node config/scripts/run-electron-vite-build.mjs\",\n    \"build:web\": \"node config/scripts/run-vite-web-build.mjs && node config/scripts/verify-web-build.mjs\",\n    \"build:desktop\": \"pnpm run typecheck && pnpm run build:relay && pnpm run build:cli && pnpm run build:electron-vite && pnpm run build:web\",\n    \"build\": \"pnpm run build:desktop && pnpm run build:native\",\n    \"build:release\": \"pnpm run build:relay && pnpm run build:native && pnpm run verify:computer-native && pnpm run build:cli && pnpm run build:electron-vite && pnpm run build:web\",\n    \"postinstall\": \"node config/scripts/rebuild-native-deps.mjs\",\n   ",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "runtime"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 92
    },
    "strategic_score": 92
  },
  {
    "owner": "alibaba",
    "name": "page-agent",
    "full_name": "alibaba/page-agent",
    "url": "https://github.com/alibaba/page-agent",
    "description": "JavaScript in-page GUI agent. Control web interfaces with natural language.",
    "language": "TypeScript",
    "total_stars": 20201,
    "forks": 1735,
    "stars_this_period": 554,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai",
        "ai-agents",
        "browser-automation",
        "javascript",
        "mcp",
        "typescript",
        "web"
      ],
      "license": "MIT",
      "open_issues": 49,
      "created_at": "2025-09-23T09:30:17Z",
      "pushed_at": "2026-06-25T17:07:30Z",
      "homepage": "https://alibaba.github.io/page-agent/",
      "default_branch": "main",
      "forks": 1735,
      "watchers": 60,
      "archived": false,
      "size_kb": 3111
    },
    "readme_content": "# Page Agent\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://page-agent.github.io/assets/readme/banner-dark.png\">\n  <img alt=\"Page Agent Banner\" src=\"https://page-agent.github.io/assets/readme/banner-light.png\">\n</picture>\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-auto.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/) [![Bundle Size](https://img.shields.io/bundlephobia/minzip/page-agent)](https://bundlephobia.com/package/page-agent) [![Downloads](https://img.shields.io/npm/dt/page-agent.svg)](https://www.npmjs.com/package/page-agent) [![GitHub stars](https://img.shields.io/github/stars/alibaba/page-agent.svg)](https://github.com/alibaba/page-agent)\n\nThe GUI Agent Living in Your Webpage. Control web interfaces with natural language.\n\n🌐 **English** | [中文](./docs/README-zh.md)\n\n<a href=\"https://alibaba.github.io/page-agent/\" target=\"_blank\"><b>🚀 Demo</b></a> | <a href=\"https://alibaba.github.io/page-agent/docs/introduction/overview\" target=\"_blank\"><b>📖 Docs</b></a> | <a href=\"https://news.ycombinator.com/item?id=47264138\" target=\"_blank\"><b>📢 HN Discussion</b></a> | <a href=\"https://x.com/simonluvramen\" target=\"_blank\"><b>𝕏 Follow on X</b></a>\n\n<!-- demo video -->\n\nhttps://github.com/user-attachments/assets/a1f2eae2-13fb-4aae-98cf-a3fc1620a6c2\n\n---\n\n## ✨ Features\n\n- **🎯 Easy integration**\n    - No need for `browser extension` / `python` / `headless browser`.\n    - Just in-page javascript. Everything happens in your web page.\n- **📖 Text-based DOM manipulation**\n    - No screenshots. No multi-modal LLMs or special permissions needed.\n- **🧠 Bring your own LLMs**\n- **🐙 Optional [chrome extension](https://alibaba.github.io/page-agent/docs/features/chrome-extension) for multi-page tasks.**\n    - And an [MCP Server (Beta)](https://alibaba.github.io/page-agent/docs/features/mcp-server) to control it from outside\n\n## 💡 Use Cases\n\n- **SaaS AI Copilot** — Ship an AI copilot in your product in lines of code. No backend rewrite.\n- **Smart Form Filling** — Turn 20-click workflows into one sentence. Perfect for ERP, CRM, and admin systems.\n- **Accessibility** — Make any web app accessible through natural language. Voice commands, screen readers, zero barrier.\n- **Multi-page Agent** — Extend your own web agent's reach across browser tabs [chrome extension](https://alibaba.github.io/page-agent/docs/features/chrome-extension).\n- **MCP** - Allow your agent clients to control your browser.\n\n## 🚀 Quick Start\n\n### One-line integration\n\nFastest way to try PageAgent with our free Demo LLM:\n\n```html\n<script src=\"{URL}\" crossorigin=\"true\"></script>\n```\n\n> **⚠️ For technical evaluation only.** This demo CDN uses our free [testing LLM API](https://alibaba.github.io/page-agent/docs/features/models#free-testing-api). By using it, you agree to its [terms](https://github.com/alibaba/page-agent/blob/main/docs/terms-and-privacy.md).\n\n| Mirrors | URL                                                                                 |\n| ------- | ----------------------------------------------------------------------------------- |\n| Global  | https://cdn.jsdelivr.net/npm/page-agent@1.10.0/dist/iife/page-agent.demo.js         |\n| China   | https://registry.npmmirror.com/page-agent/1.10.0/files/dist/iife/page-agent.demo.js |\n\nAdd `?autoInit=false` to load the script without creating the demo agent automatically. You can then instantiate it with `new window.PageAgent(...)`.\n\n### NPM Installation\n\n```bash\nnpm install page-agent\n```\n\n```javascript\nimport { PageAgent } from 'page-agent'\n\nconst agent = new PageAgent({\n    model: 'qwen3.5-plus',\n    baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n    apiKey: 'YOUR_API_KEY',\n    language: 'en-US',\n})\n\nawait agent.execute('Click the login button')\n```\n\nFor more programmatic usage, see [📖 Documentations](https://alibaba.github.io/page-agent/docs/introduction/overview).\n\n## 🌟 Awesome Page Agent\n\nBuilt something cool with PageAgent? Add it here! Open a PR to share your project.\n\n> These are community projects — not maintained or endorsed by us. Use at your own discretion.\n\n| Project  | Description                                                 |\n| -------- | ----------------------------------------------------------- |\n| _Yours?_ | [Open a PR](https://github.com/alibaba/page-agent/pulls) 🙌 |\n\n## 🤝 Contributing\n\nWe welcome contributions from the community! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines and [docs/developer-guide.md](docs/developer-guide.md) for local development workflows.\n\nPlease read the [maintainer's note](https://github.com/alibaba/page-agent/issues/349) on principles and current state.\n\nContributions generated entirely by **bots or AI** without substantial human involvement will **not be accepted**.\n\n## ⚖️ License\n\n[MIT License](LICENSE)\n\n## 👏 Acknowledgments\n\nThis project builds upon the excellent work of **[`browser-use`](https://github.com/browser-use/browser-use)**.\n\n`PageAgent` is designed for **client-side web enhancement**, not server-side automation.\n\n```\nDOM processing components and prompt are derived from browser-use:\n\nBrowser Use <https://github.com/browser-use/browser-use>\nCopyright (c) 2024 Gregor Zunic\nLicensed under the MIT License\n\nWe gratefully acknowledge the browser-use project and its contributors for their\nexcellent work on web automation and DOM interaction patterns that helped make\nthis project possible.\n```\n\n---\n\n**⭐ Star this repo if you find PageAgent helpful!**\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n    \"name\": \"root\",\n    \"private\": true,\n    \"version\": \"1.10.0\",\n    \"type\": \"module\",\n    \"workspaces\": [\n        \"packages/page-controller\",\n        \"packages/ui\",\n        \"packages/llms\",\n        \"packages/core\",\n        \"packages/page-agent\",\n        \"packages/mcp\",\n        \"packages/extension\",\n        \"packages/website\"\n    ],\n    \"description\": \"AI-powered UI agent for web applications\",\n    \"author\": \"Simon<gaomeng1900>\",\n    \"license\": \"MIT\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/alibaba/page-agent.git\"\n    },\n    \"homepage\": \"https://alibaba.github.io/page-agent/\",\n    \"engines\": {\n        \"node\": \"^22.22.1 || >=24\",\n        \"npm\": \"^11.6.3\"\n    },\n    \"scripts\": {\n        \"start\": \"npm run dev --workspace=@page-agent/website\",\n        \"dev:ext\": \"npm run dev -w @page-agent/ext\",\n        \"dev:demo\": \"npm run dev:demo --workspace=page-agent\",\n        \"build\": \"node scripts/build.js\",\n        \"build:libs\": \"node scripts/build-libs.js\",\n        \"build:website\": \"npm run build:website --workspace=@page-agent/website\",\n        \"build:ext\": \"npm run zip -w @page-agent/ext\",\n        \"version\": \"node scripts/sync-version.js\",\n        \"postpublish\": \"npm run postpublish --workspaces --if-present\",\n        \"typecheck\": \"tsc --noEmit -p tsconfig.typecheck.json && tsc --noEmit -p packages/extension/tsconfig.json\",\n        \"test\": \"npm test --workspaces --if-present\",\n        \"lint\": \"eslint .\",\n        \"ci\": \"node scripts/ci.js\",\n        \"cleanup\": \"rm -rf packages/*/dist && rm -rf packages/*/.output\",\n        \"prepare\": \"husky || true\"\n    },\n    \"devDependencies\": {\n        \"@commitlint/cli\": \"^21.0.1\",\n        \"@commitlint/config-conventional\": \"^21.0.1\",\n        \"@eslint-react/eslint-plugin\": \"^5.9.2\",\n        \"@eslint/js\": \"^10.0.1\",\n        \"@microsoft/api-extractor\": \"^7.58.9\",\n        \"@tailwindcss/vite\": \"^4.3.1\",\n        \"@trivago/prettier-plugin-sort-imports\": \"^6.0.2\",\n        \"@types/node\": \"^26.0.0\",\n        \"@vitejs/plugin-react\": \"^6.0.2\",\n        \"chalk\": \"^5.6.2\",\n        \"concurrently\": \"^10.0.3\",\n        \"dotenv\": \"^17.4.2\",\n        \"eslint\": \"^10.5.0\",\n        \"globals\": \"^17.7.0\",\n        \"happy-dom\": \"^20.10.6\",\n        \"husky\": \"^9.1.7\",\n        \"lint-staged\": \"^17.0.8\",\n        \"prettier\": \"^3.8.4\",\n        \"typescript\": \"^6.0.3\",\n        \"typescript-eslint\": \"^8.62.0\",\n        \"unplugin-dts\": \"^1.0.1\",\n        \"vite\": \"^8.0.14\",\n        \"vite-plugin-css-injected-by-js\": \"^5.0.1\",\n        \"vitest\": \"^4.1.9\"\n    },\n    \"overrides\": {\n        \"typescript\": \"^6.0.3\",\n        \"node-notifier\": {\n            \"uuid\": \"11.1.1\"\n        },\n        \"web-ext-run\": {\n            \"tmp\": \"0.2.7\"\n        }\n    },\n    \"lint-staged\": {\n        \"*.{js,ts,cjs,cts,mjs,mts}\": [\n            \"npx prettier --write --ignore-unknown\",\n            \"npx eslint --quiet\"\n        ],\n        \"*.{jsx,tsx}\": [\n            \"npx prettier --write --ignore-unknown\",\n            \"npx eslint --quiet\"\n        ],\n        \"*.css\": [\n            \"npx prettier --write --ignore-unknown\"\n        ]\n    },\n    \"commitlint\": {\n        \"extends\": [\n            \"@commitlint/config-conventional\"\n        ],\n        \"rules\": {\n            \"subject-case\": [\n                0,\n                \"never\"\n            ]\n        }\n    },\n    \"prettier\": {\n        \"singleQuote\": true,\n        \"semi\": false,\n        \"useTabs\": true,\n        \"printWidth\": 100,\n        \"trailingComma\": \"es5\",\n        \"plugins\": [\n            \"@trivago/prettier-plugin-sort-imports\"\n        ],\n        \"importOrder\": [\n            \"<THIRD_PARTY_MODULES>\",\n            \"^(@/).*(?<!css)$\",\n            \"^[./].*(?<!css)$\",\n            \".css$\"\n        ],\n        \"importOrderSeparation\": true,\n        \"importOrderSortSpecifiers\": true,\n        \"overrides\": [\n            {\n                \"files\": \"*.md\",\n                \"options\": {\n                    \"useTabs\": false,\n                    \"tabWidth\": 4\n                }\n            },\n            {\n                \"files\": \"*.json\",\n                \"options\": {\n                    \"useTabs\": false,\n                    \"tabWidth\": 4\n                }\n            }\n        ]\n    }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "workspace",
      "llm",
      "eval",
      "workflow",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 19,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 94
    },
    "strategic_score": 94
  },
  {
    "owner": "safishamsi",
    "name": "graphify",
    "full_name": "safishamsi/graphify",
    "url": "https://github.com/safishamsi/graphify",
    "description": "AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs, papers, images, or videos into a queryable knowledge graph. App code + database schema + infrastructure in one graph.",
    "language": "Python",
    "total_stars": 72558,
    "forks": 7277,
    "stars_this_period": 504,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "antigravity",
        "claude-code",
        "codex",
        "gemini",
        "graphrag",
        "knowledge-graph",
        "leiden",
        "openclaw",
        "rag",
        "skills",
        "tree-sitter"
      ],
      "license": "MIT",
      "open_issues": 389,
      "created_at": "2026-04-03T15:49:07Z",
      "pushed_at": "2026-06-26T17:08:12Z",
      "homepage": "https://graphifylabs.ai/",
      "default_branch": "v8",
      "forks": 7277,
      "watchers": 247,
      "archived": false,
      "size_kb": 4556
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://graphifylabs.ai\"><img src=\"https://raw.githubusercontent.com/safishamsi/graphify/v4/docs/logo-text.svg\" width=\"260\" height=\"64\" alt=\"Graphify\"/></a>\n</p>\n\n<p align=\"center\">\n  🇺🇸 <a href=\"README.md\">English</a> | 🇨🇳 <a href=\"docs/translations/README.zh-CN.md\">简体中文</a> | 🇯🇵 <a href=\"docs/translations/README.ja-JP.md\">日本語</a> | 🇰🇷 <a href=\"docs/translations/README.ko-KR.md\">한국어</a> | 🇩🇪 <a href=\"docs/translations/README.de-DE.md\">Deutsch</a> | 🇫🇷 <a href=\"docs/translations/README.fr-FR.md\">Français</a> | 🇪🇸 <a href=\"docs/translations/README.es-ES.md\">Español</a> | 🇮🇳 <a href=\"docs/translations/README.hi-IN.md\">हिन्दी</a> | 🇧🇷 <a href=\"docs/translations/README.pt-BR.md\">Português</a> | 🇷🇺 <a href=\"docs/translations/README.ru-RU.md\">Русский</a> | 🇸🇦 <a href=\"docs/translations/README.ar-SA.md\">العربية</a> | 🇮🇷 <a href=\"docs/translations/README.fa-IR.md\">فارسی</a> | 🇮🇹 <a href=\"docs/translations/README.it-IT.md\">Italiano</a> | 🇵🇱 <a href=\"docs/translations/README.pl-PL.md\">Polski</a> | 🇳🇱 <a href=\"docs/translations/README.nl-NL.md\">Nederlands</a> | 🇹🇷 <a href=\"docs/translations/README.tr-TR.md\">Türkçe</a> | 🇺🇦 <a href=\"docs/translations/README.uk-UA.md\">Українська</a> | 🇻🇳 <a href=\"docs/translations/README.vi-VN.md\">Tiếng Việt</a> | 🇮🇩 <a href=\"docs/translations/README.id-ID.md\">Bahasa Indonesia</a> | 🇸🇪 <a href=\"docs/translations/README.sv-SE.md\">Svenska</a> | 🇬🇷 <a href=\"docs/translations/README.el-GR.md\">Ελληνικά</a> | 🇷🇴 <a href=\"docs/translations/README.ro-RO.md\">Română</a> | 🇨🇿 <a href=\"docs/translations/README.cs-CZ.md\">Čeština</a> | 🇫🇮 <a href=\"docs/translations/README.fi-FI.md\">Suomi</a> | 🇩🇰 <a href=\"docs/translations/README.da-DK.md\">Dansk</a> | 🇳🇴 <a href=\"docs/translations/README.no-NO.md\">Norsk</a> | 🇭🇺 <a href=\"docs/translations/README.hu-HU.md\">Magyar</a> | 🇹🇭 <a href=\"docs/translations/README.th-TH.md\">ภาษาไทย</a> | 🇺🇿 <a href=\"docs/translations/README.uz-UZ.md\">Oʻzbekcha</a> | 🇹🇼 <a href=\"docs/translations/README.zh-TW.md\">繁體中文</a> | 🇵🇭 <a href=\"docs/translations/README.fil-PH.md\">Filipino</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.ycombinator.com/companies/graphify\"><img src=\"https://img.shields.io/badge/Y%20Combinator-S26-F0652F?style=flat&logo=ycombinator&logoColor=white\" alt=\"YC S26\"/></a>\n  <a href=\"https://safishamsi.gumroad.com/l/qetvlo\"><img src=\"https://img.shields.io/badge/Book-The%20Memory%20Layer-2ea44f?style=flat&logo=gitbook&logoColor=white\" alt=\"The Memory Layer\"/></a>\n  <a href=\"https://github.com/safishamsi/graphify/actions/workflows/ci.yml\"><img src=\"https://github.com/safishamsi/graphify/actions/workflows/ci.yml/badge.svg?branch=v8\" alt=\"CI\"/></a>\n  <a href=\"https://pypi.org/project/graphifyy/\"><img src=\"https://img.shields.io/pypi/v/graphifyy\" alt=\"PyPI\"/></a>\n  <a href=\"https://pepy.tech/project/graphifyy\"><img src=\"https://img.shields.io/pepy/dt/graphifyy?color=blue&label=downloads\" alt=\"Downloads\"/></a>\n  <a href=\"https://github.com/sponsors/safishamsi\"><img src=\"https://img.shields.io/badge/sponsor-safishamsi-ea4aaa?logo=github-sponsors\" alt=\"Sponsor\"/></a>\n  <a href=\"https://www.linkedin.com/in/safi-shamsi\"><img src=\"https://img.shields.io/badge/LinkedIn-Safi%20Shamsi-0077B5?logo=linkedin\" alt=\"LinkedIn\"/></a>\n  <a href=\"https://x.com/graphifyy\"><img src=\"https://img.shields.io/badge/X-graphifyy-000000?logo=x&logoColor=white\" alt=\"X\"/></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://star-history.com/#safishamsi/graphify&Date\">\n    <img src=\"https://api.star-history.com/svg?repos=safishamsi/graphify&type=Date\" alt=\"Star History Chart\" width=\"370\"/>\n  </a>\n</p>\n\nType `/graphify` in your AI coding assistant and it maps your entire project — code, docs, PDFs, images, videos — into a knowledge graph you can query instead of grepping through files.\n\nWorks in Claude Code, Codex, OpenCode, Kilo Code, Cursor, Gemini CLI, GitHub Copilot CLI, VS Code Copilot Chat, Aider, Amp, OpenClaw, Factory Droid, Trae, Hermes, Kimi Code, Kiro, Pi, Devin CLI, and Google Antigravity.\n\n```\n/graphify .\n```\n\nThat's it. You get three files:\n\n```\ngraphify-out/\n├── graph.html       open in any browser — click nodes, filter, search\n├── GRAPH_REPORT.md  the highlights: key concepts, surprising connections, suggested questions\n└── graph.json       the full graph — query it anytime without re-reading your files\n```\n\nFor a readable architecture page with Mermaid call-flow diagrams, run:\n\n```bash\ngraphify export callflow-html\n```\n\n---\n\n## Prerequisites\n\n| Requirement | Minimum | Check | Install |\n|---|---|---|---|\n| Python | 3.10+ | `python --version` | [python.org](https://www.python.org/downloads/) |\n| uv *(recommended)* | any | `uv --version` | `curl -LsSf https://astral.sh/uv/install.sh \\| sh` |\n| pipx *(alternative)* | any | `pipx --version` | `pip install pipx` |\n\n**macOS quick install (Homebrew):**\n```bash\nbrew install python@3.12 uv\n```\n\n**Windows quick install:**\n```powershell\nwinget install astral-sh.uv\n```\n\n**Ubuntu/Debian:**\n```bash\nsudo apt install python3.12 python3-pip pipx\n# or install uv:\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\n---\n\n## Install\n\n> **Official package:** The PyPI package is `graphifyy` (double-y). Other `graphify*` packages on PyPI are not affiliated. The CLI command is still `graphify`.\n\n**Step 1 — install the package:**\n\n```bash\n# Recommended (uv puts graphify on PATH automatically):\nuv tool install graphifyy\n\n# Alternatives:\npipx install graphifyy\npip install graphifyy  # may need PATH setup — see note below\n```\n\n**Step 2 — register the skill with your AI assistant:**\n\n```bash\ngraphify install\n```\n\nThat's it. Open your AI assistant and type `/graphify .`\n\nTo install the assistant skill into the current repository instead of your user\nprofile, add `--project`:\n\n```bash\ngraphify install --project\ngraphify install --project --platform codex\n```\n\nProject-scoped installs write under the current directory, for example\n`.claude/skills/graphify/SKILL.md` or `.agents/skills/graphify/SKILL.md` (plus a\n`references/` sidecar the skill loads on demand), and\nprint a `git add` hint for files that can be committed.\nPer-platform commands that support project-scoped installs accept the same flag,\nfor example `graphify claude install --project` or `graphify codex install --project`.\n\n> **PowerShell note:** Use `graphify .` not `/graphify .` — the leading slash is a path separator in PowerShell.\n\n> **`graphify: command not found`?** Use `uv tool install graphifyy` or `pipx install graphifyy` — both put the CLI on PATH automatically. With plain `pip`, add `~/.local/bin` (Linux) or `~/Library/Python/3.x/bin` (Mac) to your PATH, or run `python -m graphify`.\n\n> **Avoid `pip install` on Mac/Windows** if possible. The skill resolves Python at runtime from `graphify-out/.graphify_python`; if that points to a different environment than where `pip` installed the package, you'll get `ModuleNotFoundError: No module named 'graphify'`. `uv tool install` and `pipx install` isolate the package in their own env and avoid this entirely.\n\n> **Git hooks and uv tool / pipx:** `graphify hook install` embeds the current interpreter path directly into the hook scripts at install time, so the post-commit hook fires correctly even in GUI git clients and CI runners where `~/.local/bin` is not on PATH. If you reinstall or upgrade graphify, re-run `graphify hook install` to refresh the embedded path.\n\n### Pick your platform\n\n| Platform | Install command |\n|----------|----------------|\n| Claude Code (Linux/Mac) | `graphify install` |\n| Claude Code (Windows) | `graphify install` (auto-detected) or `graphify install --platform windows` |\n| CodeBuddy | `graphify install --platform codebuddy` |\n| Codex | `graphify install --platform codex` |\n| OpenCode | `graphify install --platform opencode` |\n| Kilo Code | `graphify install --platform kilo` |\n| GitHub Copilot CLI | `graphify install --platform copilot` |\n| VS Code Copilot Chat | `graphify vscode install` |\n| Aider | `graphify install --platform aider` |\n| OpenClaw | `graphify install --platform claw` |\n| Factory Droid | `graphify install --platform droid` |\n| Trae | `graphify install --platform trae` |\n| Trae CN | `graphify install --platform trae-cn` |\n| Gemini CLI | `graphify install --platform gemini` |\n| Hermes | `graphify install --platform hermes` |\n| Kimi Code | `graphify install --platform kimi` |\n| Amp | `graphify amp install` |\n| Agent Skills (cross-framework) | `graphify install --platform agents` (alias `--platform skills`) |\n| Kiro IDE/CLI | `graphify kiro install` |\n| Pi coding agent | `graphify install --platform pi` |\n| Cursor | `graphify cursor install` |\n| Devin CLI | `graphify devin install` |\n| Google Antigravity | `graphify antigravity install` |\n\nCodex users also need `multi_agent = true` under `[features]` in `~/.codex/config.toml` for parallel extraction. CodeBuddy uses the same Agent tool and PreToolUse hook mechanism as Claude Code. Factory Droid uses the `Task` tool for parallel subagent dispatch. OpenClaw and Aider use sequential extraction (parallel agent support is still early on those platforms). Trae uses the Agent tool for parallel subagent dispatch and does **not** support PreToolUse hooks — AGENTS.md is the always-on mechanism.\n\n`--platform agents` (alias `--platform skills`) targets the generic cross-framework [Agent-Skills](https://github.com/anthropics/skills) locations: the spec's user-global `~/.agents/skills/` (read by `npx skills` and spec-compliant frameworks) for a global install, and `./.agents/skills/` for a project (`--project`) install. The bare `graphify install` stays single-platform (Claude Code) by design — use the named `agents` platform when you want the skill discoverable by any framework that reads `.agents/skills`.\n\n> Codex uses `$graphify` instead of `/graphify`.\n\n### Optional extras\n\nInstall only what you need:\n\n| Extra | What it adds | Install |\n|---|---|---|\n| `pdf` | PDF extraction | `uv tool install \"graphifyy[pdf]\"` |\n| `office` | `.docx` and `.xlsx` support | `uv tool install \"graphifyy[office]\"` |\n| `google` | Google Sheets rendering | `uv tool install \"graphifyy[google]\"` |\n| `video` | Video/audio transcription (faster-whisper + yt-dlp) | `uv tool install \"graphifyy[video]\"` |\n| `mcp` | MCP stdio server | `uv tool install \"graphifyy[mcp]\"` |\n| `neo4j` | Neo4j push support | `uv tool install \"graphifyy[neo4j]\"` |\n| `falkordb` | FalkorDB push support | `uv tool install \"graphifyy[falkordb]\"` |\n| `svg` | SVG graph export | `uv tool install \"graphifyy[svg]\"` |\n| `leiden` | Leiden community detection (Python < 3.13 only) | `uv tool install \"graphifyy[leiden]\"` |\n| `ollama` | Ollama local inference | `uv tool install \"graphifyy[ollama]\"` |\n| `openai` | OpenAI / OpenAI-compatible APIs | `uv tool install \"graphifyy[openai]\"` |\n| `gemini` | Google Gemini API | `uv tool install \"graphifyy[gemini]\"` |\n| `anthropic` | Anthropic Claude API (`--backend claude`, uses `ANTHROPIC_API_KEY`) | `uv tool install \"graphifyy[anthropic]\"` |\n| `bedrock` | AWS Bedrock (uses IAM, no API key) | `uv tool install \"graphifyy[bedrock]\"` |\n| `azure` | Azure OpenAI Service (`--backend azure`, uses `AZURE_OPENAI_API_KEY` + `AZURE_OPENAI_ENDPOINT`) | `uv tool install \"graphifyy[openai]\"` |\n| `sql` | SQL schema extraction | `uv tool install \"graphifyy[sql]\"` |\n| `postgres` | Live PostgreSQL introspection (`--postgres DSN`) | `uv tool install \"graphifyy[postgres]\"` |\n| `dm` | BYOND DreamMaker `.dm`/`.dme` AST extraction (may need a C compiler + `python3-dev` if no wheel matches your platform) | `uv tool install \"graphifyy[dm]\"` |\n| `terraform` | Terraform / HCL `.tf`/`.tfvars`/`.hcl` AST extraction | `uv tool install \"graphifyy[terraform]\"` |\n| `chinese` | Chinese query segmentation (jieba) | `uv tool install \"graphifyy[chinese]\"` |\n| `all` | Everything above | `uv tool install \"graphifyy[all]\"` |\n\n---\n\n## Make your assistant always use the graph\n\nRun this once in your project after building a graph:\n\n| Platform | Command |\n|----------|---------|\n| C",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nrequires = [\"setuptools>=68\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"graphifyy\"\nversion = \"0.8.49\"\ndescription = \"AI coding assistant skill (Claude Code, CodeBuddy, Codex, OpenCode, Kilo Code, Cursor, Gemini CLI, Aider, OpenClaw, Factory Droid, Trae, Hermes, Kiro, Pi, Devin CLI, Google Antigravity) - turn any folder of code, docs, papers, images, or videos into a queryable knowledge graph\"\nreadme = \"README.md\"\nlicense = { file = \"LICENSE\" }\nkeywords = [\"claude\", \"claude-code\", \"codex\", \"opencode\", \"kilo\", \"cursor\", \"gemini\", \"aider\", \"kiro\", \"pi\", \"devin\", \"knowledge-graph\", \"rag\", \"graphrag\", \"obsidian\", \"community-detection\", \"tree-sitter\", \"leiden\", \"llm\"]\nrequires-python = \">=3.10\"\ndependencies = [\n    \"networkx>=3.4\",\n    \"numpy>=1.21\",\n    \"rapidfuzz>=3.0\",\n    \"tree-sitter>=0.23.0,<0.26\",\n    \"tree-sitter-python>=0.23,<0.26\",\n    \"tree-sitter-javascript>=0.23,<0.26\",\n    \"tree-sitter-typescript>=0.23,<0.25\",\n    \"tree-sitter-go>=0.23,<0.26\",\n    \"tree-sitter-rust>=0.23,<0.25\",\n    \"tree-sitter-java>=0.23,<0.25\",\n    \"tree-sitter-groovy>=0.1,<0.3\",\n    \"tree-sitter-c>=0.23,<0.25\",\n    \"tree-sitter-cpp>=0.23,<0.25\",\n    \"tree-sitter-ruby>=0.23,<0.25\",\n    \"tree-sitter-c-sharp>=0.23,<0.25\",\n    \"tree-sitter-kotlin>=1.0,<2.0\",\n    \"tree-sitter-scala>=0.23,<0.27\",\n    \"tree-sitter-php>=0.23,<0.25\",\n    \"tree-sitter-swift>=0.7,<0.9\",\n    \"tree-sitter-lua>=0.2,<0.6\",\n    \"tree-sitter-zig>=1.0,<2.0\",\n    \"tree-sitter-powershell>=0.26,<0.28\",\n    \"tree-sitter-elixir>=0.3,<0.5\",\n    \"tree-sitter-objc>=3.0,<4.0\",\n    \"tree-sitter-julia>=0.23,<0.25\",\n    \"tree-sitter-verilog>=1.0,<2.0\",\n    \"tree-sitter-fortran>=0.6,<0.8\",\n    \"tree-sitter-bash>=0.23,<0.27\",\n    \"tree-sitter-json>=0.23,<0.26\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/safishamsi/graphify\"\nRepository = \"https://github.com/safishamsi/graphify\"\nIssues = \"https://github.com/safishamsi/graphify/issues\"\n\n[project.optional-dependencies]\n# starlette is pulled in transitively by mcp, but graphify/serve.py imports it\n# directly for the HTTP transport, so declare it here and floor it above the\n# CVE-2026-48818 / CVE-2026-54283 fixes (both resolved by 1.3.1) (#1391, #1396).\nmcp = [\"mcp\", \"starlette>=1.3.1\"]\nneo4j = [\"neo4j\"]\nfalkordb = [\"falkordb\"]\npdf = [\"pypdf>=6.12.0\", \"markdownify\"]\nwatch = [\"watchdog\"]\nsvg = [\"matplotlib\", \"numpy>=2.0; python_version >= '3.13'\"]\nleiden = [\"graspologic; python_version < '3.13'\"]\noffice = [\"python-docx\", \"openpyxl\"]\ngoogle = [\"openpyxl\"]\npostgres = [\"psycopg[binary]\"]\nvideo = [\"faster-whisper; python_version >= '3.11'\", \"yt-dlp>=2026.6.9\"]\nkimi = [\"openai\", \"tiktoken\"]\nollama = [\"openai\"]\nbedrock = [\"boto3\"]\nanthropic = [\"anthropic\"]\ngemini = [\"openai\", \"tiktoken\"]\nopenai = [\"openai\", \"tiktoken\"]\nchinese = [\"jieba\"]\nsql = [\"tree-sitter-sql\"]\n# tree-sitter-dm (BYOND DreamMaker) ships only a Windows wheel, so on Linux/Mac it\n# must compile from source (needs a C toolchain + python3-dev). Keeping it optional\n# avoids breaking the default `uv tool install graphifyy` for everyone (#1104).\ndm = [\"tree-sitter-dm\"]\nterraform = [\"tree-sitter-hcl\"]\nall = [\"mcp\", \"starlette>=1.3.1\", \"neo4j\", \"falkordb\", \"pypdf>=6.12.0\", \"markdownify\", \"watchdog\", \"graspologic; python_version < '3.13'\", \"python-docx\", \"openpyxl\", \"faster-whisper; python_version >= '3.11'\", \"yt-dlp>=2026.6.9\", \"matplotlib\", \"numpy>=2.0; python_version >= '3.13'\", \"openai\", \"tiktoken\", \"boto3\", \"anthropic\", \"tree-sitter-sql\", \"jieba\", \"tree-sitter-dm\", \"tree-sitter-hcl\"]\n\n[project.scripts]\ngraphify = \"graphify.__main__:main\"\ngraphify-mcp = \"graphify.serve:_main\"\n\n[dependency-groups]\ndev = [\n    \"bandit>=1.9.4\",\n    \"build>=1.5.0\",\n    \"hypothesis>=6.152.7\",\n    \"nuitka>=4.1\",\n    \"patchelf>=0.17.2.4 ; sys_platform != 'win32'\",\n    \"pip-audit>=2.10.0\",\n    \"pre-commit>=4.6.0\",\n    \"pyright>=1.1.409\",\n    \"pytest>=9.0.3\",\n    \"pytest-cov>=7.1.0\",\n    \"ruff>=0.15.13\",\n    \"safety>=3.7.0\",\n    \"setuptools>=82.0.1\",\n    \"wheel>=0.47.0\",\n    \"tomli>=2.0 ; python_version < '3.11'\",\n    \"tree-sitter-hcl>=1.2.0\",\n]\n\n[tool.uv]\n# Install via: uv tool install graphifyy\n# Run without installing: uvx graphifyy install\npackage = true\n\n[tool.setuptools]\npackages = [\"graphify\", \"graphify.extractors\"]\ninclude-package-data = false\n\n[tool.setuptools.package-data]\n# The skill bodies ship as graphify/skill*.md (the SKILL.md a host installs is\n# copied from one of these). The progressive-disclosure references sidecar ships\n# under graphify/skills/<host>/references/, and the always-on injection blocks\n# under graphify/always_on/. There is no graphify/skills/<host>/SKILL.md in the\n# repo, so no SKILL.md glob is needed here.\ngraphify = [\"skill.md\", \"skill-codex.md\", \"skill-opencode.md\", \"skill-kilo.md\", \"command-kilo.md\", \"skill-aider.md\", \"skill-amp.md\", \"skill-agents.md\", \"skill-copilot.md\", \"skill-claw.md\", \"skill-windows.md\", \"skill-droid.md\", \"skill-trae.md\", \"skill-kiro.md\", \"skill-vscode.md\", \"skill-pi.md\", \"skill-devin.md\", \"skills/*/references",
    "strategic_keywords": [
      "memory",
      "rag",
      "skill",
      "llm",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "kunchenguid",
    "name": "no-mistakes",
    "full_name": "kunchenguid/no-mistakes",
    "url": "https://github.com/kunchenguid/no-mistakes",
    "description": "git push no-mistakes",
    "language": "Go",
    "total_stars": 3375,
    "forks": 204,
    "stars_this_period": 412,
    "source_slice": "all",
    "source_slices": [
      "all",
      "go"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 50,
      "created_at": "2026-04-05T06:43:05Z",
      "pushed_at": "2026-06-26T21:31:20Z",
      "homepage": "https://kunchenguid.github.io/no-mistakes/",
      "default_branch": "main",
      "forks": 204,
      "watchers": 8,
      "archived": false,
      "size_kb": 4333
    },
    "readme_content": "<h1 align=\"center\"><code>git push no-mistakes</code></h1>\n<p align=\"center\">\n  <a href=\"https://github.com/kunchenguid/no-mistakes/actions/workflows/release.yml\"\n    ><img\n      alt=\"Release\"\n      src=\"https://img.shields.io/github/actions/workflow/status/kunchenguid/no-mistakes/release.yml?style=flat-square&label=release\"\n  /></a>\n  <a href=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-blue?style=flat-square\"\n    ><img\n      alt=\"Platform\"\n      src=\"https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-blue?style=flat-square\"\n  /></a>\n  <a href=\"https://x.com/kunchenguid\"\n    ><img\n      alt=\"X\"\n      src=\"https://img.shields.io/badge/X-@kunchenguid-black?style=flat-square\"\n  /></a>\n  <a href=\"https://discord.gg/Wsy2NpnZDu\"\n    ><img\n      alt=\"Discord\"\n      src=\"https://img.shields.io/discord/1439901831038763092?style=flat-square&label=discord\"\n  /></a>\n</p>\n\n<h3 align=\"center\">Kill all the slop. Raise clean PR.</h3>\n\n<p align=\"center\"><strong>English</strong> · <a href=\"README.zh-CN.md\">简体中文</a></p>\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/demo.gif\" alt=\"no-mistakes demo\" width=\"800\" />\n</p>\n\n`no-mistakes` puts a local git proxy in front of your real remote.\nPush to `no-mistakes` instead of `origin`, and it spins up a disposable worktree, runs an AI-driven validation pipeline, forwards the branch to the configured push target only after every check passes, and opens a clean PR automatically.\n\n- **Non-blocking** - the pipeline runs in an isolated worktree without disrupting your work.\n- **Agent-agnostic** - `claude`, `codex`, `rovodev`, `opencode`, `pi`, `copilot`, or `acp:<target>` via `acpx`.\n- **Agent-native** - `/no-mistakes` lets your coding agent do a task and gate it, or gate existing committed work: it runs the pipeline, has the pipeline apply safe fixes, and escalates the rest to you.\n- **Human stays in charge** - auto-fix or review findings, your call.\n- **Clean PRs by default** - push, open PR, watch CI, and auto-fix failures in one shot.\n\nFull documentation: <https://kunchenguid.github.io/no-mistakes/>\n\n## How it works\n\n```\n        your branch\n            │  git push no-mistakes\n            ▼\n   ┌──────────────────────────────────────────────┐\n   │  disposable worktree — your work stays put     │\n   │  review → test → docs → lint → push → PR → CI  │\n   └──────────────────────────────────────────────┘\n            │  every check green\n            ▼\n        clean PR, opened for you\n```\n\nEach step either passes on its own or stops with a **finding** for you to act on.\nSafe, mechanical fixes are applied automatically; anything that touches your intent is escalated for you to **approve**, **fix**, or **skip**.\nNothing reaches the configured push target until every check is green.\n\n## Install\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh\n```\n\nWindows, Go install, and build-from-source instructions are in the [installation guide](https://kunchenguid.github.io/no-mistakes/start-here/installation/).\n\n## Quick Start\n\n```sh\n$ no-mistakes init\n  ✓ Gate initialized\n\n    repo  /Users/you/src/my-repo\n    gate  no-mistakes → /Users/you/.no-mistakes/repos/abc123def456.git\n  remote  git@github.com:you/my-repo.git\n   skill  /no-mistakes installed for agents at user level\n\n  Push through the gate with:\n  git push no-mistakes <branch>\n\n$ git checkout my-branch\n\n# do some work in the branch...\n\n$ git push no-mistakes\n  * Pipeline started\n\n  Run no-mistakes to review.\n\n$ no-mistakes\n# opens the TUI for the active run\n```\n\nFor GitHub fork contributions, keep `origin` pointed at the parent repository and initialize with `no-mistakes init --fork-url <your-fork-url>`.\n\nFrom the TUI you act on each **finding**: **auto-fix** ones are applied for you (or approve to let them), **ask-user** ones are a judgement call you approve, fix, or skip.\nOnce every check is green, the gate forwards your branch to the configured push target and opens the PR for you, so there is no manual `git push origin` and no hand-written PR body.\nPrefer to let your coding agent drive the same flow headlessly?\nUse `/no-mistakes` (see below).\n\n## Three ways to trigger the gate\n\nEvery change runs through the same pipeline. Pick the entry point that fits how you're working when the change is ready:\n\n- **`git push no-mistakes`** - the explicit Git path. Push a committed branch to the gate remote instead of `origin`.\n- **`no-mistakes`** - the TUI. Run it after making changes (no commit needed) and a wizard walks you through creating a branch, committing, and pushing through the gate, then attaches to the run. `no-mistakes -y` does all of that automatically.\n- **`/no-mistakes`** - the agent skill. Tell the coding agent to do a task and gate it with `/no-mistakes <task>`, or use bare `/no-mistakes` to gate existing committed work. It runs the pipeline, has the pipeline apply safe fixes, and stops to ask you about anything that needs a human call.\n\n`no-mistakes init` installs the `/no-mistakes` skill for Claude Code and other agents. Under the hood the skill drives `no-mistakes axi`, a non-interactive TOON interface to the same approval flow.\n\nSee the [quick start](https://kunchenguid.github.io/no-mistakes/start-here/quick-start/) for the full first-run walkthrough.\n\n## Development\n\n```sh\nmake build   # Build bin/no-mistakes with version info\nmake test    # Run go test -race ./... (excludes the e2e suite)\nmake e2e     # Run the tagged end-to-end agent journey suite\nmake e2e-record # Re-record e2e fixtures when agent wire formats change\nmake lint    # Check generated skill drift and run go vet ./...\nmake skill   # Regenerate committed no-mistakes skill files\nmake fmt     # Run gofmt -w .\nmake demo    # Regenerate demo.gif and demo.mp4 (needs vhs and ffmpeg)\nmake docs    # Build the Astro docs site in docs/dist\n```\n\nSee `Makefile` for the full target list.\n\n`make e2e-record` overwrites `internal/e2e/fixtures/` from the real `claude`, `codex`, and `opencode` CLIs, spends real API quota, and should be reviewed before committing.\n\n## Star History\n\n<a href=\"https://www.star-history.com/?repos=kunchenguid%2Fno-mistakes&type=date&legend=top-left\">\n <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=kunchenguid/no-mistakes&type=date&theme=dark&legend=top-left\" />\n   <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/chart?repos=kunchenguid/no-mistakes&type=date&legend=top-left\" />\n   <img alt=\"Star History Chart\" src=\"https://api.star-history.com/chart?repos=kunchenguid/no-mistakes&type=date&legend=top-left\" />\n </picture>\n</a>\n",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/kunchenguid/no-mistakes\n\ngo 1.25.0\n\nrequire (\n\tgithub.com/charmbracelet/bubbles v1.0.0\n\tgithub.com/charmbracelet/bubbletea v1.3.10\n\tgithub.com/charmbracelet/lipgloss v1.1.0\n\tgithub.com/mattn/go-isatty v0.0.20\n\tgithub.com/muesli/termenv v0.16.0\n\tgithub.com/oklog/ulid/v2 v2.1.1\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/toon-format/toon-go v0.0.0-20251202084852-7ca0e27c4e8c\n\tgolang.org/x/sys v0.42.0\n\tgopkg.in/yaml.v3 v3.0.1\n\tmodernc.org/sqlite v1.48.1\n)\n\nrequire (\n\tgithub.com/atotto/clipboard v0.1.4 // indirect\n\tgithub.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect\n\tgithub.com/charmbracelet/colorprofile v0.4.1 // indirect\n\tgithub.com/charmbracelet/x/ansi v0.11.6 // indirect\n\tgithub.com/charmbracelet/x/cellbuf v0.0.15 // indirect\n\tgithub.com/charmbracelet/x/term v0.2.2 // indirect\n\tgithub.com/clipperhouse/displaywidth v0.9.0 // indirect\n\tgithub.com/clipperhouse/stringish v0.1.1 // indirect\n\tgithub.com/clipperhouse/uax29/v2 v2.5.0 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect\n\tgithub.com/lucasb-eyer/go-colorful v1.3.0 // indirect\n\tgithub.com/mattn/go-localereader v0.0.1 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.19 // indirect\n\tgithub.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect\n\tgithub.com/muesli/cancelreader v0.2.2 // indirect\n\tgithub.com/ncruces/go-strftime v1.0.0 // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgithub.com/rivo/uniseg v0.4.7 // indirect\n\tgithub.com/spf13/pflag v1.0.9 // indirect\n\tgithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect\n\tgolang.org/x/text v0.3.8 // indirect\n\tmodernc.org/libc v1.70.0 // indirect\n\tmodernc.org/mathutil v1.7.1 // indirect\n\tmodernc.org/memory v1.11.0 // indirect\n)\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 18,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 82
    },
    "strategic_score": 82
  },
  {
    "owner": "esengine",
    "name": "DeepSeek-Reasonix",
    "full_name": "esengine/DeepSeek-Reasonix",
    "url": "https://github.com/esengine/DeepSeek-Reasonix",
    "description": "DeepSeek-native AI coding agent for your terminal. Engineered around prefix-cache stability — leave it running.",
    "language": "Go",
    "total_stars": 24934,
    "forks": 1513,
    "stars_this_period": 290,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agent-framework",
        "ai-agent",
        "ai-coding",
        "cli",
        "coding-agent",
        "deepseek",
        "developer-tools",
        "ink",
        "llm",
        "prompt-caching",
        "r1",
        "terminal",
        "tool-use",
        "tui",
        "typescript"
      ],
      "license": "MIT",
      "open_issues": 846,
      "created_at": "2026-04-21T08:27:02Z",
      "pushed_at": "2026-06-26T19:58:38Z",
      "homepage": "http://reasonix.io/",
      "default_branch": "main-v2",
      "forks": 1513,
      "watchers": 68,
      "archived": false,
      "size_kb": 39159
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"docs/logo.svg\" alt=\"Reasonix\" width=\"640\"/>\n</p>\n\n<p align=\"center\">\n  <strong>English</strong>\n  &nbsp;·&nbsp;\n  <a href=\"./README.zh-CN.md\">简体中文</a>\n  &nbsp;·&nbsp;\n  <a href=\"./docs/GUIDE.md\">Guide</a>\n  &nbsp;·&nbsp;\n  <a href=\"./docs/SPEC.md\">Spec</a>\n  &nbsp;·&nbsp;\n  <a href=\"https://esengine.github.io/DeepSeek-Reasonix/\">Website</a>\n  &nbsp;·&nbsp;\n  <strong><a href=\"https://discord.gg/XF78rEME2D\">Discord</a></strong>\n</p>\n\n> [!IMPORTANT]\n> **Reasonix 1.0 is a ground-up rewrite in Go** — this branch (`main-v2`) is the new default and where development happens now.\n> The earlier `0.x` TypeScript releases are **legacy**, living on the [`v1`](https://github.com/esengine/DeepSeek-Reasonix/tree/v1) branch (maintenance only).\n> See the **[migration guide](./docs/MIGRATING.md)**. `npm i -g reasonix` stays the install command — `1.0.0`+ delivers the Go binary, `0.x` is the legacy TS build.\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/reasonix\"><img src=\"https://img.shields.io/npm/v/reasonix.svg?style=flat-square&color=cb3837&labelColor=161b22&logo=npm&logoColor=white\" alt=\"npm version\"/></a>\n  <a href=\"https://github.com/esengine/DeepSeek-Reasonix/actions/workflows/ci.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/esengine/DeepSeek-Reasonix/ci.yml?style=flat-square&label=ci&labelColor=161b22&logo=githubactions&logoColor=white\" alt=\"CI\"/></a>\n  <a href=\"./LICENSE\"><img src=\"https://img.shields.io/npm/l/reasonix.svg?style=flat-square&color=8b949e&labelColor=161b22\" alt=\"license\"/></a>\n  <a href=\"https://www.npmjs.com/package/reasonix\"><img src=\"https://img.shields.io/npm/dm/reasonix.svg?style=flat-square&color=3fb950&labelColor=161b22&label=downloads\" alt=\"downloads\"/></a>\n  <a href=\"https://github.com/esengine/DeepSeek-Reasonix/stargazers\"><img src=\"https://img.shields.io/github/stars/esengine/DeepSeek-Reasonix.svg?style=flat-square&color=dbab09&labelColor=161b22&logo=github&logoColor=white\" alt=\"GitHub stars\"/></a>\n  <a href=\"https://atomgit.com/esengine/DeepSeek-Reasonix\"><img src=\"https://atomgit.com/esengine/DeepSeek-Reasonix/star/badge.svg\" alt=\"AtomGit stars\"/></a>\n  <a href=\"https://github.com/esengine/DeepSeek-Reasonix/graphs/contributors\"><img src=\"https://img.shields.io/github/contributors/esengine/DeepSeek-Reasonix.svg?style=flat-square&color=bc8cff&labelColor=161b22&logo=github&logoColor=white\" alt=\"contributors\"/></a>\n  <a href=\"https://github.com/esengine/DeepSeek-Reasonix/discussions\"><img src=\"https://img.shields.io/github/discussions/esengine/DeepSeek-Reasonix.svg?style=flat-square&color=58a6ff&labelColor=161b22&logo=github&logoColor=white\" alt=\"Discussions\"/></a>\n  <a href=\"https://discord.gg/XF78rEME2D\"><img src=\"https://img.shields.io/badge/discord-join-5865F2.svg?style=flat-square&labelColor=161b22&logo=discord&logoColor=white\" alt=\"Discord\"/></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://oosmetrics.com/repo/esengine/reasonix\"><img src=\"https://api.oosmetrics.com/api/v1/badge/achievement/9e931d80-2050-4b10-902e-44970cc133ad.svg\" alt=\"oosmetrics — Top 2 in Agents by velocity\"/></a>\n  <a href=\"https://oosmetrics.com/repo/esengine/reasonix\"><img src=\"https://api.oosmetrics.com/api/v1/badge/achievement/556d94b3-61b7-486b-baf2-888b9327deab.svg\" alt=\"oosmetrics — Top 3 in LLMs by velocity\"/></a>\n  <a href=\"https://oosmetrics.com/repo/esengine/reasonix\"><img src=\"https://api.oosmetrics.com/api/v1/badge/achievement/0f457d4c-efca-4d15-ad2b-139691ff342c.svg\" alt=\"oosmetrics — Top 3 in CLI by velocity\"/></a>\n</p>\n\n<br/>\n\n<h3 align=\"center\">A DeepSeek-native AI coding agent for your terminal.</h3>\n<p align=\"center\">A config- and plugin-driven harness — a single static Go binary, tuned around DeepSeek's prefix cache so token costs stay low across long sessions.</p>\n\n<br/>\n\n> [!IMPORTANT]\n> **Community · 加入社区** — bilingual Discord for setup help (`#help` / `#求助`), workflow showcases, and feature ideas. → **<https://discord.gg/XF78rEME2D>**\n\n<br/>\n\n## Features\n\n- **Config-driven.** Providers, the agent, enabled tools, and plugins are all\n  declared in `reasonix.toml`. No hardcoded models.\n- **Multi-model & composable.** DeepSeek ships as a preset; any\n  OpenAI-compatible endpoint is a config entry, not new code. Optionally run\n  two models together (executor + planner) in separate, cache-stable sessions.\n- **Plugin-driven.** External tools run as subprocesses over stdio JSON-RPC\n  (MCP-compatible). Built-in tools self-register at compile time.\n- **Zero-friction distribution.** `CGO_ENABLED=0` single binary; cross-compile\n  to six targets with one command. The only dependency is a TOML parser.\n\n## Install\n\n```sh\nnpm i -g reasonix                  # any OS; pulls the prebuilt native binary\nbrew install esengine/reasonix/reasonix   # macOS\n```\n\nPrebuilt archives (`darwin|linux|windows × amd64|arm64`) and `SHA256SUMS` are on\nevery [GitHub release](https://github.com/esengine/DeepSeek-Reasonix/releases).\n\n### Code signing\n\nWindows builds are code-signed with a free certificate provided by the\n[SignPath Foundation](https://signpath.org/), with signing through\n[SignPath.io](https://signpath.io/).\n\n### Build from source\n\n```sh\nmake build      # -> bin/reasonix(.exe)\nmake cross      # -> dist/ (darwin|linux|windows × amd64|arm64)\n```\n\n## Quick start\n\n```sh\nreasonix setup                      # config wizard → ./reasonix.toml\nexport DEEPSEEK_API_KEY=sk-...      # or let setup save it to Reasonix home .env\nreasonix                            # then run /init to generate AGENTS.md (project memory)\nreasonix run \"implement the TODOs in main.go\"\nreasonix run --model deepseek-pro \"add unit tests for this function\"\necho \"explain this code\" | reasonix run\n```\n\n## Configuration\n\nA minimal `reasonix.toml` — one provider and a default model — is enough to start:\n\n```toml\ndefault_model = \"deepseek-flash\"\n\n[[providers]]\nname        = \"deepseek-flash\"\nkind        = \"openai\"\nbase_url    = \"https://api.deepseek.com\"\nmodel       = \"deepseek-v4-flash\"\napi_key_env = \"DEEPSEEK_API_KEY\"\n```\n\nResolution order is **flag > `./reasonix.toml` > the user config file >\nbuilt-in defaults**; starting with **Reasonix v1.8.1**, the user file lives at\n`~/.reasonix/config.toml` on macOS/Linux and\n`%AppData%\\reasonix\\config.toml` on Windows. See\n**[Configuration paths](./docs/CONFIG_PATHS.md)** for migration details and the\nfull `config.toml` / `.env` structure. Provider entries name secrets with\n`api_key_env`; the secret values themselves live in Reasonix's global\n`<Reasonix home>/.env`, shared by CLI and desktop. Project `.env` files are not\nprovider-key runtime fallbacks, but still feed workspace-scoped, non-provider\n`${VAR}` expansion for MCP/plugin settings without importing Reasonix control\nvariables. Permissions, the sandbox, plugins (MCP), slash\ncommands, `@` references, and two-model setup are all in the\n**[Guide](./docs/GUIDE.md)**.\n\n## Documentation\n\n- **[Guide](./docs/GUIDE.md)** — configuration, permissions & sandbox, plugins\n  (MCP), slash commands, `@` references, two-model collaboration.\n- **[Bot guide](./docs/BOT_GUIDE.md)** — connect Feishu, Lark, and WeChat bots\n  from the desktop app, then use approvals, YOLO, and commands from IM.\n- **[Spec](./docs/SPEC.md)** — engineering contract: architecture, registries,\n  data types, and roadmap.\n- **[Migrating from 0.x](./docs/MIGRATING.md)** — moving from the legacy\n  TypeScript releases to the 1.0 Go rewrite.\n- **[Checkpoints & rewind](./docs/CHECKPOINTS.md)** — the snapshot-based edit\n  safety net (Esc-Esc / `/rewind`).\n\n<br/>\n\n## Star History\n\n<a href=\"https://www.star-history.com/?repos=esengine%2FDeepSeek-Reasonix&type=date&legend=top-left\">\n <picture>\n   <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/chart?repos=esengine/DeepSeek-Reasonix&type=date&theme=dark&legend=top-left\" />\n   <source media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/chart?repos=esengine/DeepSeek-Reasonix&type=date&legend=top-left\" />\n   <img alt=\"Star History Chart\" src=\"https://api.star-history.com/chart?repos=esengine/DeepSeek-Reasonix&type=date&legend=top-left\" />\n </picture>\n</a>\n\n<br/>\n\n## Support\n\nIf Reasonix has been useful and you'd like to say thanks, you can. It stays a coffee, not a contract — donations don't buy feature priority or change how issues get triaged.\n\n- **International** — PayPal: [paypal.me/yuhuahui](https://paypal.me/yuhuahui)\n- **国内** — 微信支付（扫码）\n\n<p align=\"center\">\n  <img src=\".github/sponsor/wechat-pay.jpg\" alt=\"WeChat Pay QR code\" width=\"240\"/>\n</p>\n\n<br/>\n\n## Acknowledgments\n\nA small list of folks whose work has shaped Reasonix the most — measured\nby both commit count and code volume. **Listed alphabetically, no ordering\nof importance.** The full contributor graph is on\n[GitHub](https://github.com/esengine/DeepSeek-Reasonix/graphs/contributors).\n\n- [**ctharvey**](https://github.com/ctharvey)\n- [**dimasd-angga**](https://github.com/dimasd-angga) (Dimas D. Angga)\n- [**Evan-Pycraft**](https://github.com/Evan-Pycraft)\n- [**ForeverYoungPp**](https://github.com/ForeverYoungPp)\n- [**GTC2080**](https://github.com/GTC2080) (TaoMu)\n- [**kabaka9527**](https://github.com/kabaka9527)\n- [**lisniuse**](https://github.com/lisniuse) (Richie)\n- [**wade19990814-hue**](https://github.com/wade19990814-hue)\n- [**wviana**](https://github.com/wviana) (Wesley Viana)\n\nAlso a separate thank-you to [**Bernardxu123**](https://github.com/Bernardxu123)\nfor designing the project logo, and to\n[AIGC Link](https://xhslink.com/m/80ngts127cA) for promoting the project on XiaoHongShu.\n\n<p align=\"center\">\n  <a href=\"https://github.com/esengine/DeepSeek-Reasonix/graphs/contributors\">\n    <img src=\"https://contrib.rocks/image?repo=esengine/DeepSeek-Reasonix&max=100&columns=12\" alt=\"Contributors to esengine/DeepSeek-Reasonix\" width=\"860\"/>\n  </a>\n</p>\n\n<br/>\n\n---\n\n<p align=\"center\">\n  <sub>MIT — see <a href=\"./LICENSE\">LICENSE</a></sub>\n  <br/>\n  <sub>Built by the community at <a href=\"https://github.com/esengine/DeepSeek-Reasonix/graphs/contributors\">esengine/DeepSeek-Reasonix</a></sub>\n</p>\n",
    "manifest_file": "go.mod",
    "manifest_content": "module reasonix\n\ngo 1.25.0\n\ntoolchain go1.26.4\n\nrequire (\n\tcharm.land/bubbles/v2 v2.1.0\n\tcharm.land/bubbletea/v2 v2.0.7\n\tcharm.land/lipgloss/v2 v2.0.4\n\tgithub.com/BurntSushi/toml v1.6.0\n\tgithub.com/alecthomas/chroma/v2 v2.27.0\n\tgithub.com/atotto/clipboard v0.1.4\n\tgithub.com/charmbracelet/x/ansi v0.11.7\n\tgithub.com/larksuite/oapi-sdk-go/v3 v3.9.5\n\tgithub.com/mattn/go-runewidth v0.0.24\n\tgithub.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06\n\tgithub.com/yuin/goldmark v1.8.2\n\tgithub.com/zalando/go-keyring v0.2.8\n\tgo.uber.org/goleak v1.3.0\n\tgolang.org/x/crypto v0.53.0\n\tgolang.org/x/image v0.43.0\n\tgolang.org/x/mod v0.37.0\n\tgolang.org/x/net v0.56.0\n\tgolang.org/x/sys v0.46.0\n\tgolang.org/x/term v0.44.0\n\tgolang.org/x/text v0.38.0\n)\n\nrequire (\n\tgithub.com/charmbracelet/colorprofile v0.4.3 // indirect\n\tgithub.com/charmbracelet/ultraviolet v0.0.0-20260601155805-6cf7526a1b3f // indirect\n\tgithub.com/charmbracelet/x/term v0.2.2 // indirect\n\tgithub.com/charmbracelet/x/termios v0.1.1 // indirect\n\tgithub.com/charmbracelet/x/windows v0.2.2 // indirect\n\tgithub.com/clipperhouse/displaywidth v0.11.0 // indirect\n\tgithub.com/clipperhouse/uax29/v2 v2.7.0 // indirect\n\tgithub.com/danieljoos/wincred v1.2.3 // indirect\n\tgithub.com/dlclark/regexp2/v2 v2.2.1 // indirect\n\tgithub.com/godbus/dbus/v5 v5.2.2 // indirect\n\tgithub.com/gogo/protobuf v1.3.2 // indirect\n\tgithub.com/gorilla/websocket v1.5.0 // indirect\n\tgithub.com/lucasb-eyer/go-colorful v1.4.0 // indirect\n\tgithub.com/muesli/cancelreader v0.2.2 // indirect\n\tgithub.com/rivo/uniseg v0.4.7 // indirect\n\tgithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect\n\tgolang.org/x/sync v0.21.0 // indirect\n)\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "llm",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "zarazhangrui",
    "name": "frontend-slides",
    "full_name": "zarazhangrui/frontend-slides",
    "url": "https://github.com/zarazhangrui/frontend-slides",
    "description": "Create beautiful slides on the web using a coding agent's frontend skills",
    "language": "JavaScript",
    "total_stars": 23302,
    "forks": 1901,
    "stars_this_period": 275,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "ai-slides",
        "anthropic",
        "claude",
        "claude-code",
        "claude-skill",
        "generative-ui",
        "html",
        "presentation",
        "slides",
        "vibe-coding"
      ],
      "license": "MIT",
      "open_issues": 49,
      "created_at": "2026-01-28T00:42:34Z",
      "pushed_at": "2026-06-23T20:08:19Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 1901,
      "watchers": 100,
      "archived": false,
      "size_kb": 582
    },
    "readme_content": "# Frontend Slides\n\nA coding-agent skill for creating stunning HTML presentations — from scratch or by converting PowerPoint files. It is packaged as a Claude Code plugin, and the core `SKILL.md` can also be read by other coding agents with filesystem and shell access.\n\n## 📺 Watch the Walkthrough & Tutorial\n\nNew here? This beginner-friendly video walks you through the whole thing, start to finish.\n\n<a href=\"https://www.youtube.com/watch?v=372Iksaz8b0\" title=\"Frontend Slides — walkthrough & tutorial (beginner-friendly)\">\n  <img src=\"https://img.youtube.com/vi/372Iksaz8b0/maxresdefault.jpg\" alt=\"Watch the Frontend Slides walkthrough and tutorial on YouTube\" width=\"100%\" />\n</a>\n\n> ▶️ **[Watch on YouTube →](https://www.youtube.com/watch?v=372Iksaz8b0)** (beginner-friendly walkthrough and tutorial)\n\n## What This Does\n\n**Frontend Slides** helps non-designers create beautiful web presentations without knowing CSS or JavaScript. It uses a \"show, don't tell\" approach: instead of asking you to describe your aesthetic preferences in words, it generates visual previews and lets you pick what you like.\n\nHere is a deck about the skill, made through the skill:\n\nhttps://github.com/user-attachments/assets/ef57333e-f879-432a-afb9-180388982478\n\n### Key Features\n\n- **Zero Dependencies** — Single HTML files with inline CSS/JS. No npm, no build tools, no frameworks.\n- **Visual Style Discovery** — Can't articulate design preferences? No problem. Pick from generated visual previews.\n- **PPT Conversion** — Convert existing PowerPoint files to web, preserving all images and content.\n- **Anti-AI-Slop** — Curated distinctive styles that avoid generic AI aesthetics (bye-bye, purple gradients on white).\n- **Bold Template Pack** — Optional design-forward templates from `beautiful-html-templates`, loaded progressively so safe presets still work as the default fallback.\n- **Production Quality** — Accessible, fixed 16:9, well-commented code you can customize.\n\n## Installation\n\n### Via Claude Code Custom Marketplace Source\n\nInstall directly from this public GitHub repo. Run these as two separate Claude Code messages; do not paste both lines into the prompt at once.\n\n```text\n/plugin marketplace add https://github.com/zarazhangrui/frontend-slides\n```\n\nAfter that finishes, run:\n\n```text\n/plugin install frontend-slides@frontend-slides\n```\n\nUse the HTTPS URL. The shorter `zarazhangrui/frontend-slides` form may make Claude Code try SSH, which can fail if GitHub is not already in your `known_hosts` file.\n\nThen use it by typing `/frontend-slides:frontend-slides` in Claude Code. Claude Code namespaces plugin-installed skills as `/plugin-name:skill-name`.\n\n### Claude Code Manual Installation\n\nCopy the skill files to your Claude Code skills directory:\n\n```bash\n# Create the skill directory\nmkdir -p ~/.claude/skills/frontend-slides/scripts\n\n# Copy the user-facing skill files\ncp SKILL.md STYLE_PRESETS.md viewport-base.css html-template.md animation-patterns.md ~/.claude/skills/frontend-slides/\ncp -R bold-template-pack ~/.claude/skills/frontend-slides/\ncp scripts/extract-pptx.py scripts/deploy.sh scripts/export-pdf.sh ~/.claude/skills/frontend-slides/scripts/\n```\n\nOr clone directly:\n\n```bash\ngit clone https://github.com/zarazhangrui/frontend-slides.git ~/.claude/skills/frontend-slides\n```\n\nThen use it by typing `/frontend-slides` in Claude Code. Standalone skills are not namespaced.\n\n### Other Coding Agents\n\nAgents such as Codex, Kimi Code, OpenCode, Gemini CLI, or other local coding assistants can use the same core skill. The simplest path is to send the agent this GitHub repo link and ask it to use the Frontend Slides skill:\n\n```text\nhttps://github.com/zarazhangrui/frontend-slides\n```\n\nIf the agent can read GitHub repos or browse files, it should start from `SKILL.md` and load only the referenced support files it needs:\n\n- `STYLE_PRESETS.md`\n- `viewport-base.css`\n- `html-template.md`\n- `animation-patterns.md`\n- `bold-template-pack/`\n- `scripts/`\n\nSome agents can also install the skill for you if they have filesystem access and a known local skills directory. If not, they can still follow `SKILL.md` directly for the current session.\n\nThe Claude Code plugin gives Claude Code a custom marketplace-source install flow and `/frontend-slides:frontend-slides` command. Other agents usually do not use that command surface.\n\n## Usage\n\n### Create a New Presentation\n\n```text\n/frontend-slides:frontend-slides\n\n> \"I want to create a pitch deck for my AI startup\"\n```\n\nIf installed manually as a standalone Claude Code skill, use `/frontend-slides` instead.\n\nIn non-Claude agents, ask the agent to use the Frontend Slides skill and point it at this repo or `SKILL.md`.\n\nThe skill will:\n\n1. Ask about your content (slides, messages, images)\n2. Generate 3 visual style previews for you to compare, inferring the vibe from your brief unless you already named one\n3. Let you pick the visual direction\n4. Create the full presentation in your chosen style\n5. Open it in your browser\n\n### Convert a PowerPoint\n\n```text\n/frontend-slides:frontend-slides\n\n> \"Convert my presentation.pptx to a web slideshow\"\n```\n\nThe skill will:\n\n1. Extract all text, images, and notes from your PPT\n2. Show you the extracted content for confirmation\n3. Let you pick a visual style\n4. Generate an HTML presentation with all your original assets\n\n## Included Styles\n\n### Dark Themes\n\n- **Bold Signal** — Confident, high-impact, vibrant card on dark\n- **Electric Studio** — Clean, professional, split-panel\n- **Creative Voltage** — Energetic, retro-modern, electric blue + neon\n- **Dark Botanical** — Elegant, sophisticated, warm accents\n\n### Light Themes\n\n- **Notebook Tabs** — Editorial, organized, paper with colorful tabs\n- **Pastel Geometry** — Friendly, approachable, vertical pills\n- **Split Pastel** — Playful, modern, two-color vertical split\n- **Vintage Editorial** — Witty, personality-driven, geometric shapes\n\n### Specialty\n\n- **Neon Cyber** — Futuristic, particle backgrounds, neon glow\n- **Terminal Green** — Developer-focused, hacker aesthetic\n- **Swiss Modern** — Minimal, Bauhaus-inspired, geometric\n- **Paper & Ink** — Literary, drop caps, pull quotes\n\n### Bold Template Pack\n\nThe skill also includes 34 optional bold design systems from\n`beautiful-html-templates`, such as **Neo-Grid Bold**, **Editorial Tri-Tone**,\n**Creative Mode**, **Broadside**, **Signal**, and **Vellum**.\n\nDuring style discovery, the preview set is:\n\n- 1 safe preset from `STYLE_PRESETS.md`\n- at least 1 bold template option from `bold-template-pack/selection-index.json`\n- 1 wildcard option, either another bold template or a self-generated custom design\n\nThe agent reads the compact bold template index first, then loads only the\nshortlisted candidates' small `preview.md` cards for title-slide previews. It\nloads the full `design.md` for exactly one bold template only after the user\npicks that template for the final deck. If the user picks a custom wildcard,\nthe agent expands that preview's own CSS and layout system into the full deck.\n\n## Bold Template Gallery\n\nFrontend Slides can now draw from the 34 bold design systems in [`beautiful-html-templates`](https://github.com/zarazhangrui/beautiful-html-templates). Three screenshots per template show how each visual system handles different slide layouts. Click any template name to inspect the source template library.\n\n### [Soft Editorial](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/soft-editorial/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/soft-editorial-4.png\" width=\"32.5%\" alt=\"Soft Editorial — slide 4\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/soft-editorial-6.png\" width=\"32.5%\" alt=\"Soft Editorial — slide 6\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/soft-editorial-10.png\" width=\"32.5%\" alt=\"Soft Editorial — slide 10\" />\n</p>\n\n> Cormorant Garamond serif on warm paper with sage, blush, and lemon accents.\n\n### [Editorial Forest](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/editorial-forest/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/editorial-forest-1.png\" width=\"32.5%\" alt=\"Editorial Forest — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/editorial-forest-2.png\" width=\"32.5%\" alt=\"Editorial Forest — slide 2\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/editorial-forest-5.png\" width=\"32.5%\" alt=\"Editorial Forest — slide 5\" />\n</p>\n\n> Forest green, dusty pink, and warm cream in Source Serif 4 — quiet, intentional quarterly-review aesthetic.\n\n### [Pin & Paper](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/pin-and-paper/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/pin-and-paper-1.png\" width=\"32.5%\" alt=\"Pin & Paper — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/pin-and-paper-11.png\" width=\"32.5%\" alt=\"Pin & Paper — slide 11\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/pin-and-paper-3.png\" width=\"32.5%\" alt=\"Pin & Paper — slide 3\" />\n</p>\n\n> Yellow paper with safety-pin illustrations, ink-blue handwritten Caveat, paper-grain texture.\n\n### [Sakura Chroma](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/sakura-chroma/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/sakura-chroma-1.png\" width=\"32.5%\" alt=\"Sakura Chroma — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/sakura-chroma-3.png\" width=\"32.5%\" alt=\"Sakura Chroma — slide 3\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/sakura-chroma-4.png\" width=\"32.5%\" alt=\"Sakura Chroma — slide 4\" />\n</p>\n\n> Vintage Japanese cassette-package aesthetic: cream paper, diagonal rainbow ribbons, condensed bold type, JIS-style spec checkboxes.\n\n### [Stencil & Tablet](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/stencil-tablet/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/stencil-tablet-1.png\" width=\"32.5%\" alt=\"Stencil & Tablet — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/stencil-tablet-3.png\" width=\"32.5%\" alt=\"Stencil & Tablet — slide 3\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/stencil-tablet-8.png\" width=\"32.5%\" alt=\"Stencil & Tablet — slide 8\" />\n</p>\n\n> Bone paper with stencil-cut headlines and a six-color earth palette: archaeology meets brand.\n\n### [Cobalt Grid](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/cobalt-grid/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/cobalt-grid-1.png\" width=\"32.5%\" alt=\"Cobalt Grid — slide 1\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/cobalt-grid-3.png\" width=\"32.5%\" alt=\"Cobalt Grid — slide 3\" />\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautiful-html-templates/main/screenshots/cobalt-grid-5.png\" width=\"32.5%\" alt=\"Cobalt Grid — slide 5\" />\n</p>\n\n> Electric cobalt italic serifs on a graph-paper canvas, anchored by stair-stepped pixel-glitch decorations and slim hairline rules.\n\n### [Vellum](https://github.com/zarazhangrui/beautiful-html-templates/tree/main/templates/vellum/)\n\n<p>\n  <img src=\"https://raw.githubusercontent.com/zarazhangrui/beautifu",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 8,
      "productize": 11,
      "adoption": 8,
      "relation": 9,
      "risk_signal": 6,
      "total": 79
    },
    "strategic_score": 79
  },
  {
    "owner": "googleworkspace",
    "name": "cli",
    "full_name": "googleworkspace/cli",
    "url": "https://github.com/googleworkspace/cli",
    "description": "Google Workspace CLI — one command-line tool for Drive, Gmail, Calendar, Sheets, Docs, Chat, Admin, and more. Dynamically built from Google Discovery Service. Includes AI agent skills.",
    "language": "Rust",
    "total_stars": 28867,
    "forks": 1620,
    "stars_this_period": 240,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "agent-skills",
        "ai-agent",
        "automation",
        "cli",
        "discovery-api",
        "gemini-cli-extension",
        "google-admin",
        "google-api",
        "google-calendar",
        "google-chat",
        "google-docs",
        "google-drive",
        "google-sheets",
        "google-workspace",
        "oauth2",
        "rust"
      ],
      "license": "Apache-2.0",
      "open_issues": 124,
      "created_at": "2026-03-02T19:46:06Z",
      "pushed_at": "2026-06-26T15:48:22Z",
      "homepage": "https://developers.google.com/workspace",
      "default_branch": "main",
      "forks": 1620,
      "watchers": 94,
      "archived": false,
      "size_kb": 10744
    },
    "readme_content": "<h1 align=\"center\">gws</h1>\n\n**One CLI for all of Google Workspace — built for humans and AI agents.**<br>\nDrive, Gmail, Calendar, and every Workspace API. Zero boilerplate. Structured JSON output. 40+ agent skills included.\n\n> [!NOTE]\n> This is **not** an officially supported Google product.\n\n<p>\n  <a href=\"https://www.npmjs.com/package/@googleworkspace/cli\"><img src=\"https://img.shields.io/npm/v/@googleworkspace/cli\" alt=\"npm version\"></a>\n  <a href=\"https://github.com/googleworkspace/cli/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/googleworkspace/cli\" alt=\"license\"></a>\n  <a href=\"https://github.com/googleworkspace/cli/actions/workflows/ci.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/googleworkspace/cli/ci.yml?branch=main&label=CI\" alt=\"CI status\"></a>\n  <a href=\"https://www.npmjs.com/package/@googleworkspace/cli\"><img src=\"https://img.shields.io/npm/unpacked-size/@googleworkspace/cli\" alt=\"install size\"></a>\n</p>\n<br>\n\n⬇️ **[Download the latest release for your OS](https://github.com/googleworkspace/cli/releases)**\n\n`gws` doesn't ship a static list of commands. It reads Google's own [Discovery Service](https://developers.google.com/discovery) at runtime and builds its entire command surface dynamically. When Google Workspace adds an API endpoint or method, `gws` picks it up automatically.\n\n> [!IMPORTANT]\n> This project is under active development. Expect breaking changes as we march toward v1.0.\n\n## Contents\n\n- [Prerequisites](#prerequisites)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Why gws?](#why-gws)\n- [Authentication](#authentication)\n- [AI Agent Skills](#ai-agent-skills)\n- [Advanced Usage](#advanced-usage)\n- [Environment Variables](#environment-variables)\n- [Exit Codes](#exit-codes)\n- [Architecture](#architecture)\n- [Troubleshooting](#troubleshooting)\n- [Development](#development)\n\n## Prerequisites\n\n- **Node.js 18+** — for `npm install` (or download a pre-built binary from [GitHub Releases](https://github.com/googleworkspace/cli/releases))\n- **A Google Cloud project** — required for OAuth credentials. You can create one via the [Google Cloud Console](https://console.cloud.google.com/) or with the [`gcloud` CLI](https://cloud.google.com/sdk/docs/install) or with the `gws auth setup` command.\n- **A Google account** with access to Google Workspace\n\n## Installation\n\nThe recommended way to install `gws` is to download the pre-built binary for your OS and architecture from the **[GitHub Releases](https://github.com/googleworkspace/cli/releases)** page. Extract the archive and place the `gws` binary in your `$PATH`.\n\nFor convenience, you can also use `npm` to automate downloading the appropriate binary from GitHub Releases:\n\n```bash\nnpm install -g @googleworkspace/cli\n```\n\nOr build from source:\n\n```bash\ncargo install --git https://github.com/googleworkspace/cli --locked\n```\n\nA Nix flake is also available at `github:googleworkspace/cli`\n\n```bash\nnix run github:googleworkspace/cli\n```\n\nOn macOS and Linux, you can also install via [Homebrew](https://brew.sh/):\n\n```bash\nbrew install googleworkspace-cli\n```\n\n## Quick Start\n\n```bash\ngws auth setup     # walks you through Google Cloud project config\ngws auth login     # subsequent OAuth login\ngws drive files list --params '{\"pageSize\": 5}'\n```\n\n## Why gws?\n\n**For humans** — stop writing `curl` calls against REST docs. `gws` gives you `--help` on every resource, `--dry-run` to preview requests, and auto‑pagination.\n\n**For AI agents** — every response is structured JSON. Pair it with the included agent skills and your LLM can manage Workspace without custom tooling.\n\n```bash\n# List the 10 most recent files\ngws drive files list --params '{\"pageSize\": 10}'\n\n# Create a spreadsheet\ngws sheets spreadsheets create --json '{\"properties\": {\"title\": \"Q1 Budget\"}}'\n\n# Send a Chat message\ngws chat spaces messages create \\\n  --params '{\"parent\": \"spaces/xyz\"}' \\\n  --json '{\"text\": \"Deploy complete.\"}' \\\n  --dry-run\n\n# Introspect any method's request/response schema\ngws schema drive.files.list\n\n# Stream paginated results as NDJSON\ngws drive files list --params '{\"pageSize\": 100}' --page-all | jq -r '.files[].name'\n```\n\n## Authentication\n\nThe CLI supports multiple auth workflows so it works on your laptop, in CI, and on a server.\n\n### Which setup should I use?\n\n| I have… | Use |\n|---|---|\n| `gcloud` installed and authenticated | [`gws auth setup`](#interactive-local-desktop) (fastest) |\n| A GCP project but no `gcloud` | [Manual OAuth setup](#manual-oauth-setup-google-cloud-console) |\n| An existing OAuth access token | [`GOOGLE_WORKSPACE_CLI_TOKEN`](#pre-obtained-access-token) |\n| Existing Credentials | [`GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE`](#service-account-server-to-server) |\n\n### Interactive (local desktop)\n\nCredentials are encrypted at rest (AES-256-GCM) with the key stored in your OS keyring (or `~/.config/gws/.encryption_key` when `GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND=file`).\n\n```bash\ngws auth setup       # one-time: creates a Cloud project, enables APIs, logs you in\ngws auth login       # subsequent scope selection and login\n```\n\n> `gws auth setup` requires the [`gcloud` CLI](https://cloud.google.com/sdk/docs/install). If you don't have `gcloud`, use the [manual setup](#manual-oauth-setup-google-cloud-console) below instead.\n\n> [!WARNING]\n> **Scope limits in testing mode:** If your OAuth app is unverified (testing mode),\n> Google limits consent to ~25 scopes. The `recommended` scope preset includes 85+\n> scopes and **will fail** for unverified apps (especially for `@gmail.com` accounts).\n> Choose individual services instead to filter the scope picker:\n> ```bash\n> gws auth login -s drive,gmail,sheets\n> ```\n\n\n### Manual OAuth setup (Google Cloud Console)\n\nUse this when `gws auth setup` cannot automate project/client creation, or when you want explicit control.\n\n1. Open Google Cloud Console in the target project:\n   - OAuth consent screen: `https://console.cloud.google.com/apis/credentials/consent?project=<PROJECT_ID>`\n   - Credentials: `https://console.cloud.google.com/apis/credentials?project=<PROJECT_ID>`\n2. Configure OAuth branding/audience if prompted:\n   - App type: **External** (testing mode is fine)\n3. Add your account under **Test users**\n4. Create an OAuth client:\n   - Type: **Desktop app**\n5. Download the client JSON and save it to:\n   - `~/.config/gws/client_secret.json`\n\n> [!IMPORTANT]\n> **You must add yourself as a test user.** In the OAuth consent screen, click\n> **Test users → Add users** and enter your Google account email. Without this,\n> login will fail with a generic \"Access blocked\" error.\n\nThen run:\n\n```bash\ngws auth login\n```\n\n### Browser-assisted auth (human or agent)\n\nYou can complete OAuth either manually or with browser automation.\n\n- **Human flow**: run `gws auth login`, open the printed URL, approve scopes.\n- **Agent-assisted flow**: the agent opens the URL, selects account, handles consent prompts, and returns control once the localhost callback succeeds.\n\nIf consent shows **\"Google hasn't verified this app\"** (testing mode), click **Continue**.\nIf scope checkboxes appear, select required scopes (or **Select all**) before continuing.\n\n### Headless / CI (export flow)\n\n1. Complete interactive auth on a machine with a browser.\n2. Export credentials:\n   ```bash\n   gws auth export --unmasked > credentials.json\n   ```\n3. On the headless machine:\n   ```bash\n   export GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/credentials.json\n   gws drive files list   # just works\n   ```\n\n### Service Account (server-to-server)\n\nPoint to your key file; no login needed.\n\n```bash\nexport GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE=/path/to/service-account.json\ngws drive files list\n```\n\n### Pre-obtained Access Token\n\nUseful when another tool (e.g. `gcloud`) already mints tokens for your environment.\n\n```bash\nexport GOOGLE_WORKSPACE_CLI_TOKEN=$(gcloud auth print-access-token)\n```\n\n### Precedence\n\n| Priority | Source                 | Set via                                 |\n| -------- | ---------------------- | --------------------------------------- |\n| 1        | Access token           | `GOOGLE_WORKSPACE_CLI_TOKEN`            |\n| 2        | Credentials file       | `GOOGLE_WORKSPACE_CLI_CREDENTIALS_FILE` |\n| 3        | Encrypted credentials  | `gws auth login`                        |\n| 4        | Plaintext credentials  | `~/.config/gws/credentials.json`        |\n\nEnvironment variables can also live in a `.env` file.\n\n## AI Agent Skills\n\nThe repo ships 100+ Agent Skills (`SKILL.md` files) — one for every supported API, plus higher-level helpers for common workflows and 50 curated recipes for Gmail, Drive, Docs, Calendar, and Sheets. See the full [Skills Index](docs/skills.md) for the complete list.\n\n```bash\n# Install all skills at once\nnpx skills add https://github.com/googleworkspace/cli\n\n# Or pick only what you need\nnpx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-drive\nnpx skills add https://github.com/googleworkspace/cli/tree/main/skills/gws-gmail\n```\n\n<details>\n<summary>OpenClaw setup</summary>\n\n```bash\n# Symlink all skills (stays in sync with repo)\nln -s $(pwd)/skills/gws-* ~/.openclaw/skills/\n\n# Or copy specific skills\ncp -r skills/gws-drive skills/gws-gmail ~/.openclaw/skills/\n```\n\nThe `gws-shared` skill includes an `install` block so OpenClaw auto-installs the CLI via `npm` if `gws` isn't on PATH.\n\n</details>\n\n## Gemini CLI Extension\n\n1. Authenticate the CLI first:\n\n   ```bash\n   gws auth setup\n   ```\n\n2. Install the extension into the Gemini CLI:\n   ```bash\n   gemini extensions install https://github.com/googleworkspace/cli\n   ```\n\nInstalling this extension gives your Gemini CLI agent direct access to all `gws` commands and Google Workspace agent skills. Because `gws` handles its own authentication securely, you simply need to authenticate your terminal once prior to using the agent, and the extension will automatically inherit your credentials.\n\n## Advanced Usage\n\n### Multipart Uploads\n\n```bash\ngws drive files create --json '{\"name\": \"report.pdf\"}' --upload ./report.pdf\n```\n\n### Pagination\n\n| Flag                | Description                                    | Default |\n| ------------------- | ---------------------------------------------- | ------- |\n| `--page-all`        | Auto-paginate, one JSON line per page (NDJSON) | off     |\n| `--page-limit <N>`  | Max pages to fetch                             | 10      |\n| `--page-delay <MS>` | Delay between pages                            | 100 ms  |\n\n### Google Sheets — Shell Escaping\n\nSheets ranges use `!` which bash interprets as history expansion. Always wrap values in **single quotes**:\n\n```bash\n# Read cells A1:C10 from \"Sheet1\"\ngws sheets spreadsheets values get \\\n  --params '{\"spreadsheetId\": \"SPREADSHEET_ID\", \"range\": \"Sheet1!A1:C10\"}'\n\n# Append rows\ngws sheets spreadsheets values append \\\n  --params '{\"spreadsheetId\": \"ID\", \"range\": \"Sheet1!A1\", \"valueInputOption\": \"USER_ENTERED\"}' \\\n  --json '{\"values\": [[\"Name\", \"Score\"], [\"Alice\", 95]]}'\n```\n\n### Helper Commands\n\nSome services ship hand-crafted helper commands alongside the auto-generated Discovery surface. Helper commands are prefixed with `+` so they are visually distinct and never collide with Discovery-generated method names.\n\nTime-aware helpers (`+agenda`, `+standup-report`, `+weekly-digest`, `+meeting-prep`) automatically use your **Google account timezone** (fetched from Calendar Settings API and cached for 24 hours). Override with `--timezone`/`--tz` on `+agenda`, or set the `--timezone` flag for explicit control.\n\nRun `gws <service> --help` to see both Discovery methods and helper commands together.\n\n```bash\ngws gmail --help      # shows +send, +reply, +reply-all, +forward, +triage, +watch …\ngws calendar --help   # shows +insert, +agenda …\ngws drive --help      # shows +upload …\n```\n\n**Full helper reference:**\n\n| Service | Command | Description |\n|---------|---------|-------------|\n| `gmail` | `+send` | Send a",
    "manifest_file": "Cargo.toml",
    "manifest_content": "# Copyright 2026 Google LLC\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#     http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n[workspace]\nmembers = [\"crates/google-workspace-cli\", \"crates/google-workspace\"]\nresolver = \"2\"\n\n# The profile that 'cargo dist' will build with\n[profile.dist]\ninherits = \"release\"\nlto = \"thin\"\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "runtime",
      "skill",
      "workspace",
      "llm",
      "workflow",
      "automation"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 94
    },
    "strategic_score": 94
  },
  {
    "owner": "aws",
    "name": "agent-toolkit-for-aws",
    "full_name": "aws/agent-toolkit-for-aws",
    "url": "https://github.com/aws/agent-toolkit-for-aws",
    "description": "Official, AWS-supported MCP servers, skills, and plugins to help AI agents build on AWS",
    "language": "Python",
    "total_stars": 1335,
    "forks": 120,
    "stars_this_period": 238,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 12,
      "created_at": "2026-04-23T12:44:08Z",
      "pushed_at": "2026-06-26T15:26:55Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 120,
      "watchers": 13,
      "archived": false,
      "size_kb": 1834
    },
    "readme_content": "# Agent Toolkit for AWS\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n[![Build](https://github.com/aws/agent-toolkit-for-aws/actions/workflows/build.yml/badge.svg)](https://github.com/aws/agent-toolkit-for-aws/actions/workflows/build.yml)\n[![Status](https://img.shields.io/badge/status-GA-green.svg)](https://github.com/aws/agent-toolkit-for-aws)\n\nHelp AI coding agents build, deploy, and manage applications on AWS.\n\nThe Agent Toolkit for AWS gives AI coding agents the tools, knowledge, and guardrails they need to work with AWS services. It works with the coding agents developers already use — including Claude Code, Codex, Cursor, and Kiro.\n\n## Quick start\n\n### Claude Code\n\nThe plugins are available on the official Anthropic marketplace (`claude-plugins-official`) which is added to your Claude Code installation by default.\nUse the following commands to install supported plugins from the toolkit:\n\nFor `aws-core` that covers service selection, CDK/CloudFormation, serverless, containers, storage, observability, billing, SDK usage, and deployment:\n\n```\n/plugin install aws-core@claude-plugins-official\n```\n\n> **Tip:** If you get `Plugin not found`, update your local marketplace index first:\n>\n> ```\n> /plugin marketplace update claude-plugins-official\n> ```\n\nFor `aws-agents` that covers building AI agents on AWS with Amazon Bedrock and AgentCore:\n\n```\n/plugin install aws-agents@claude-plugins-official\n```\n\nFor `aws-data-analytics` that covers data lake, analytics, and ETL workflows with S3 Tables, AWS Glue, and Athena:\n\n```\n/plugin install aws-data-analytics@claude-plugins-official\n```\n\nFor `aws-agents-for-devsecops` used to investigate incidents, review code and execute UAT for release readiness, scan code for vulnerabilities, and run penetration tests with AWS DevOps Agent and AWS Security Agent.\n\n```\n/plugin marketplace add aws/agent-toolkit-for-aws\n/plugin install aws-agents-for-devsecops\n/reload-plugins\n\n# Or from Claude's official marketplace:\n/plugin install aws-agents-for-devsecops@claude-plugins-official\n/reload-plugins\n\n# Setup:\n/aws-agents-for-devsecops:setup\n```\n\n### Codex\n\nIn your terminal:\n\n```\ncodex plugin marketplace add aws/agent-toolkit-for-aws\n```\n\nThen launch Codex and run `/plugins` to browse and install the **aws-core** plugin.\n\n### Cursor\n\nAdd this repository as a team marketplace from **Settings → Plugins → Team Marketplaces → Add Marketplace → Import from Repo**, pointing it at `aws/agent-toolkit-for-aws`. Cursor indexes the plugins listed in [`.cursor-plugin/marketplace.json`](.cursor-plugin/marketplace.json) on import.\n\nThen open the **Plugins** panel and install the **aws-core** plugin (start here), or **aws-agents** and **aws-data-analytics** as needed. Each plugin bundles the AWS MCP Server configuration and agent skills.\n\n### Kiro\n\nAdd the AWS MCP Server to your Kiro MCP configuration (`.kiro/settings/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"aws\": {\n      \"command\": \"uvx\",\n      \"args\": [\n        \"mcp-proxy-for-aws@1.6.3\",\n        \"https://aws-mcp.us-east-1.api.aws/mcp\",\n        \"--metadata\", \"AWS_REGION=us-west-2\"\n      ]\n    }\n  }\n}\n```\n\n> **Note:** It is recommended to pin to a specific version (e.g., `@1.6.3`) to ensure reproducible behavior and protect against supply chain risks. We recommend regularly checking [PyPI](https://pypi.org/project/mcp-proxy-for-aws/) for new stable versions and updating accordingly.\n\nThen install skills from this repository:\n\n```\nnpx skills add aws/agent-toolkit-for-aws/skills\n```\n\n> **Prerequisites:** You need [uv](https://docs.astral.sh/uv/) installed. An AWS account with credentials configured locally is required for API calls and script execution, but not for documentation search or skill discovery. See the [user guide](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/) for detailed setup instructions.\n\n### Other agents\n\nSee the [AWS MCP Server getting started guide](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/getting-started-aws-mcp-server.html) for instructions on configuring the AWS MCP Server with your agent.\n\nThen install skills from this repository:\n\n```\nnpx skills add aws/agent-toolkit-for-aws/skills\n```\n\n> **Prerequisites:** You need [uv](https://docs.astral.sh/uv/) installed. An AWS account with credentials configured locally is required for API calls and script execution, but not for documentation search or skill discovery. See the [user guide](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/) for detailed setup instructions.\n\n## What's included\n\n### Plugins\n\nPlugins bundle the AWS MCP Server configuration and agent skills into a single install for your coding agent.\n\n| Plugin | Description |\n|--------|-------------|\n| [aws-core](plugins/aws-core/) | Core AWS skills and MCP Server configuration. Covers service selection, CDK/CloudFormation, serverless, containers, storage, observability, billing, SDK usage, and deployment. **Start here.** |\n| [aws-agents](plugins/aws-agents/) | Skills for building AI agents on AWS with Amazon Bedrock and AgentCore. |\n| [aws-data-analytics](plugins/aws-data-analytics/) | Skills for data lake, analytics, and ETL workflows with S3 Tables, AWS Glue, and Athena. |\n| [aws-agents-for-devsecops](plugins/aws-agents-for-devsecops/) | Investigate incidents, review code and execute UAT for release readiness, scan code for vulnerabilities, and run penetration tests with [AWS DevOps Agent](https://aws.amazon.com/devops-agent/?trk=7b4b0d25-1409-441c-b914-c5d08677c376&sc_channel=ghr) and [AWS Security Agent](https://aws.amazon.com/security-agent/?trk=7b4b0d25-1409-441c-b914-c5d08677c376&sc_channel=ghr). |\n\nPlugins are currently available for Claude Code, Codex, and Cursor. For other agents, configure the AWS MCP Server directly and install skills from this repository.\n\n### Skills\n\nAgent skills are curated packages of instructions and reference materials that help agents complete specific AWS tasks. Skills are loaded on demand — agents discover and retrieve only what's relevant to the current task.\n\n```\nnpx skills add aws/agent-toolkit-for-aws/skills\n```\n\nBrowse the [`skills/`](skills/) directory to see all available skills.\n\n### Rules files\n\nRecommended project-level configuration files that tell agents how to use AWS most effectively — for example, by using the AWS MCP Server, discovering available skills, or searching documentation before acting.\n\nSee [`rules/`](rules/) for details.\n\n### AWS MCP Server\n\nThe [AWS MCP Server](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/understanding-mcp-server-tools.html) is a managed server that gives agents access to AWS through the Model Context Protocol. It provides:\n\n- **Full AWS API coverage** — Interact with any of the 300+ AWS services through a single authenticated endpoint.\n- **Sandboxed script execution** — Agents can run Python scripts in an isolated environment for complex multi-step operations.\n- **Real-time documentation access** — Search and retrieve current AWS documentation, API references, and service capabilities without authentication.\n- **Enterprise controls** — Amazon CloudWatch metrics, IAM context keys for agent-specific policies, and AWS CloudTrail audit logging.\n\nFor details on operation, available tools, authentication, and supported Regions, see the [AWS MCP Server documentation](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/understanding-mcp-server-tools.html).\n\n## Documentation\n\n- [User guide](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/) — Setup, configuration, and reference documentation.\n- [AWS MCP Server tools](https://docs.aws.amazon.com/agent-toolkit/latest/userguide/understanding-mcp-server-tools.html) — Reference for all available MCP tools.\n\n## How the Agent Toolkit relates to the MCP servers, skills, and plugins in AWS Labs\nIn 2025, AWS began releasing MCP servers, skills, and plugins as part of [AWS Labs](https://github.com/awslabs). The Agent Toolkit for AWS is the successor to those tools. We recommend using the Agent Toolkit for AWS, because it offers key features including:\n\n- IAM condition keys that distinguish between agent actions and human actions, so you can write policies that apply only to agents. For example, you can write policies that only allow read-only actions through the MCP server, even if the user’s underlying IAM role can take write actions).\n- CloudWatch metrics and CloudTrail audit logging for every request, so you can monitor and audit coding agent activity.\n- Agent skills that have undergone thorough end-to-end evaluations, so you can be confident that workflows will complete successfully.\n\n[AWS Labs](https://github.com/awslabs) MCP servers, skills, and plugins will continue to work and accept contributions, and over time the best of AWS Labs will be transitioned to the Agent Toolkit for AWS to ensure that customers can access the broadest array of tooling and guidance for their agents.\n\n## License\n\nThis project is licensed under the Apache-2.0 License. See [LICENSE](LICENSE) for details.\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "rag",
      "skill",
      "workflow"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 17,
      "relevance": 20,
      "novelty": 15,
      "productize": 11,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "vllm-project",
    "name": "vllm",
    "full_name": "vllm-project/vllm",
    "url": "https://github.com/vllm-project/vllm",
    "description": "A high-throughput and memory-efficient inference and serving engine for LLMs",
    "language": "Python",
    "total_stars": 84451,
    "forks": 18559,
    "stars_this_period": 204,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "amd",
        "blackwell",
        "cuda",
        "deepseek",
        "deepseek-v3",
        "gpt",
        "gpt-oss",
        "inference",
        "kimi",
        "llama",
        "llm",
        "llm-serving",
        "model-serving",
        "moe",
        "openai",
        "pytorch",
        "qwen",
        "qwen3",
        "tpu",
        "transformer"
      ],
      "license": "Apache-2.0",
      "open_issues": 5512,
      "created_at": "2023-02-09T11:23:20Z",
      "pushed_at": "2026-06-26T21:58:41Z",
      "homepage": "https://vllm.ai",
      "default_branch": "main",
      "forks": 18559,
      "watchers": 568,
      "archived": false,
      "size_kb": 228111
    },
    "readme_content": "<!-- markdownlint-disable MD001 MD041 -->\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/vllm-project/vllm/main/docs/assets/logos/vllm-logo-text-dark.png\">\n    <img alt=\"vLLM\" src=\"https://raw.githubusercontent.com/vllm-project/vllm/main/docs/assets/logos/vllm-logo-text-light.png\" width=55%>\n  </picture>\n</p>\n\n<h3 align=\"center\">\nEasy, fast, and cheap LLM serving for everyone\n</h3>\n\n<p align=\"center\">\n| <a href=\"https://docs.vllm.ai\"><b>Documentation</b></a> | <a href=\"https://blog.vllm.ai/\"><b>Blog</b></a> | <a href=\"https://arxiv.org/abs/2309.06180\"><b>Paper</b></a> | <a href=\"https://x.com/vllm_project\"><b>Twitter/X</b></a> | <a href=\"https://discuss.vllm.ai\"><b>User Forum</b></a> | <a href=\"https://slack.vllm.ai\"><b>Developer Slack</b></a> |\n</p>\n\n🔥 We have built a vLLM website to help you get started with vLLM. Please visit [vllm.ai](https://vllm.ai) to learn more.\nFor events, please visit [vllm.ai/events](https://vllm.ai/events) to join us.\n\n---\n\n## About\n\nvLLM is a fast and easy-to-use library for LLM inference and serving.\n\nOriginally developed in the [Sky Computing Lab](https://sky.cs.berkeley.edu) at UC Berkeley, vLLM has grown into one of the most active open-source AI projects built and maintained by a diverse community of many dozens of academic institutions and companies from over 2000 contributors.\n\nvLLM is fast with:\n\n- State-of-the-art serving throughput\n- Efficient management of attention key and value memory with [**PagedAttention**](https://blog.vllm.ai/2023/06/20/vllm.html)\n- Continuous batching of incoming requests, chunked prefill, prefix caching\n- Fast and flexible model execution with piecewise and full CUDA/HIP graphs\n- Quantization: FP8, MXFP8/MXFP4, NVFP4, INT8, INT4, GPTQ/AWQ, GGUF, compressed-tensors, ModelOpt, TorchAO, and [more](https://docs.vllm.ai/en/latest/features/quantization/index.html)\n- Optimized attention kernels including FlashAttention, FlashInfer, TRTLLM-GEN, FlashMLA, and Triton\n- Optimized GEMM/MoE kernels for various precisions using CUTLASS, TRTLLM-GEN, CuTeDSL\n- Speculative decoding including n-gram, suffix, EAGLE, DFlash\n- Automatic kernel generation and graph-level transformations using torch.compile\n- Disaggregated prefill, decode, and encode\n\nvLLM is flexible and easy to use with:\n\n- Seamless integration with popular Hugging Face models\n- High-throughput serving with various decoding algorithms, including *parallel sampling*, *beam search*, and more\n- Tensor, pipeline, data, expert, and context parallelism for distributed inference\n- Streaming outputs\n- Generation of structured outputs using xgrammar or guidance\n- Tool calling and reasoning parsers\n- OpenAI-compatible API server, plus Anthropic Messages API and gRPC support\n- Efficient multi-LoRA support for dense and MoE layers\n- Support for NVIDIA GPUs, AMD GPUs, and x86/ARM/PowerPC CPUs. Additionally, diverse hardware plugins such as Google TPUs, Intel Gaudi, IBM Spyre, Huawei Ascend, Rebellions NPU, Apple Silicon, MetaX GPU, and more.\n\nvLLM seamlessly supports 200+ model architectures on Hugging Face, including:\n\n- Decoder-only LLMs (e.g., Llama, Qwen, Gemma)\n- Mixture-of-Expert LLMs (e.g., Mixtral, DeepSeek-V3, Qwen-MoE, GPT-OSS)\n- Hybrid attention and state-space models (e.g., Mamba, Qwen3.5)\n- Multi-modal models (e.g., LLaVA, Qwen-VL, Pixtral)\n- Embedding and retrieval models (e.g., E5-Mistral, GTE, ColBERT)\n- Reward and classification models (e.g., Qwen-Math)\n\nFind the full list of supported models [here](https://docs.vllm.ai/en/latest/models/supported_models.html).\n\n## Getting Started\n\nInstall vLLM with [`uv`](https://docs.astral.sh/uv/) (recommended) or `pip`:\n\n```bash\nuv pip install vllm\n```\n\nOr [build from source](https://docs.vllm.ai/en/latest/getting_started/installation/gpu/index.html#build-wheel-from-source) for development.\n\nVisit our [documentation](https://docs.vllm.ai/en/latest/) to learn more.\n\n- [Installation](https://docs.vllm.ai/en/latest/getting_started/installation.html)\n- [Quickstart](https://docs.vllm.ai/en/latest/getting_started/quickstart.html)\n- [List of Supported Models](https://docs.vllm.ai/en/latest/models/supported_models.html)\n\n## Contributing\n\nWe welcome and value any contributions and collaborations.\nPlease check out [Contributing to vLLM](https://docs.vllm.ai/en/latest/contributing/index.html) for how to get involved.\n\n## Citation\n\nIf you use vLLM for your research, please cite our [paper](https://arxiv.org/abs/2309.06180):\n\n```bibtex\n@inproceedings{kwon2023efficient,\n  title={Efficient Memory Management for Large Language Model Serving with PagedAttention},\n  author={Woosuk Kwon and Zhuohan Li and Siyuan Zhuang and Ying Sheng and Lianmin Zheng and Cody Hao Yu and Joseph E. Gonzalez and Hao Zhang and Ion Stoica},\n  booktitle={Proceedings of the ACM SIGOPS 29th Symposium on Operating Systems Principles},\n  year={2023}\n}\n```\n\n## Contact Us\n\n<!-- --8<-- [start:contact-us] -->\n- For technical questions and feature requests, please use GitHub [Issues](https://github.com/vllm-project/vllm/issues)\n- For discussing with fellow users, please use the [vLLM Forum](https://discuss.vllm.ai)\n- For coordinating contributions and development, please use [Slack](https://slack.vllm.ai)\n- For security disclosures, please use GitHub's [Security Advisories](https://github.com/vllm-project/vllm/security/advisories) feature\n- For collaborations and partnerships, please contact us at [collaboration@vllm.ai](mailto:collaboration@vllm.ai)\n<!-- --8<-- [end:contact-us] -->\n\n## Media Kit\n\n- If you wish to use vLLM's logo, please refer to [our media kit repo](https://github.com/vllm-project/media-kit)\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\n# Should be mirrored in requirements/build/cuda.txt\nrequires = [\n    \"cmake>=3.26.1\",\n    \"ninja\",\n    \"packaging>=24.2\",\n    \"setuptools>=77.0.3,<81.0.0\",\n    \"setuptools-scm>=8.0\",\n    \"setuptools-rust>=1.9.0\",\n    \"torch == 2.11.0\",\n    \"wheel\",\n    \"jinja2\",\n]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"vllm\"\nauthors = [{name = \"vLLM Team\"}]\nlicense = \"Apache-2.0\"\nlicense-files = [\"LICENSE\"]\nreadme = \"README.md\"\ndescription = \"A high-throughput and memory-efficient inference and serving engine for LLMs\"\nclassifiers = [\n    \"Programming Language :: Python :: 3.10\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n    \"Programming Language :: Python :: 3.13\",\n    \"Programming Language :: Python :: 3.14\",\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Information Technology\",\n    \"Intended Audience :: Science/Research\",\n    \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n    \"Topic :: Scientific/Engineering :: Information Analysis\",\n]\nrequires-python = \">=3.10,<3.15\"\ndynamic = [ \"version\", \"dependencies\", \"optional-dependencies\"]\n\n[project.urls]\nHomepage=\"https://github.com/vllm-project/vllm\"\nDocumentation=\"https://docs.vllm.ai/en/latest/\"\nSlack=\"https://slack.vllm.ai/\"\n\n[project.scripts]\nvllm = \"vllm.entrypoints.cli.main:main\"\n\n[project.entry-points.\"vllm.general_plugins\"]\nlora_filesystem_resolver = \"vllm.plugins.lora_resolvers.filesystem_resolver:register_filesystem_resolver\"\nlora_hf_hub_resolver = \"vllm.plugins.lora_resolvers.hf_hub_resolver:register_hf_hub_resolver\"\n\n[tool.setuptools_scm]\n# no extra settings needed, presence enables setuptools-scm\n\n[tool.setuptools.packages.find]\nwhere = [\".\"]\ninclude = [\"vllm*\"]\n\n[tool.ruff.lint.per-file-ignores]\n\"vllm/third_party/**\" = [\"ALL\"]\n\"vllm/version.py\" = [\"F401\"]\n\"vllm/_version.py\" = [\"ALL\"]\n\n[tool.ruff.lint]\nselect = [\n    # pycodestyle\n    \"E\",\n    # Pyflakes\n    \"F\",\n    # pyupgrade\n    \"UP\",\n    # flake8-bugbear\n    \"B\",\n    # flake8-implicit-str-concat\n    \"ISC\",\n    # flake8-simplify\n    \"SIM\",\n    # isort\n    \"I\",\n    # flake8-logging-format\n    \"G\",\n]\nignore = [\n    # star imports\n    \"F405\", \"F403\",\n    # lambda expression assignment\n    \"E731\",\n    # zip without `strict=`\n    \"B905\",\n    # Loop control variable not used within loop body\n    \"B007\",\n    # f-string format\n    \"UP032\",\n]\n\n[tool.ruff.format]\ndocstring-code-format = true\n\n[tool.mypy]\nplugins = ['pydantic.mypy']\nignore_missing_imports = true\ncheck_untyped_defs = true\nfollow_imports = \"silent\"\n\n[tool.pytest.ini_options]\nmarkers = [\n    \"slow_test\",\n    \"skip_global_cleanup\",\n    \"core_model: enable this model test in each PR instead of only nightly\",\n    \"hybrid_model: models that contain mamba layers (including pure SSM and hybrid architectures)\",\n    \"cpu_model: enable this model test in CPU tests\",\n    \"cpu_test: mark test as CPU-only test\",\n    \"split: run this test as part of a split\",\n    \"distributed: run this test only in distributed GPU tests\",\n    \"optional: optional tests that are automatically skipped, include --optional to run them\",\n]\n\n[tool.ty.src]\nrespect-ignore-files = true\n\n[tool.ty.environment]\npython = \"./.venv\"\n\n[tool.typos.files]\n# these files may be written in non english words\nextend-exclude = [\"tests/models/fixtures/*\", \"tests/prompts/*\", \"tests/tokenizers_/*\",\n    \"benchmarks/sonnet.txt\", \"tests/lora/data/*\", \"build/*\",\n    \"examples/pooling/token_embed/*\", \"tests/models/language/pooling/*\",\n    \"vllm/third_party/*\", \"vllm/entrypoints/serve/instrumentator/static/*\",\n    \"tests/entrypoints/speech_to_text/transcription/test_transcription_validation.py\",\n    \"docs/governance/process.md\", \"docs/assets/contributing/vllm_bench_serve_timeline.html\", \n    \"tests/v1/engine/test_fast_incdec_prefix_err.py\", \".git/*\", \"csrc/cpu/sgl-kernels/*\",\n    \"rust/src/chat/src/renderer/deepseek_v32/fixtures/*\",\n    \"rust/src/parser/src/tool/gemma4.rs\", \"rust/src/parser/src/unified/gemma4.rs\",\n    \"rust/src/text/src/output/decoded.rs\",\n    \"rust/src/tokenizer/src/incremental.rs\", \"rust/src/parser/src/reasoning/tests.rs\"]\nignore-hidden = false\n\n[tool.typos.default]\nextend-ignore-identifiers-re = [\".*[Uu][Ee][0-9][Mm][0-9].*\"]\n\n[tool.typos.default.extend-identifiers]\nbbc5b7ede = \"bbc5b7ede\"\nNOOPs = \"NOOPs\"\nnin_shortcut = \"nin_shortcut\"\ncudaDevAttrMaxSharedMemoryPerBlockOptin = \"cudaDevAttrMaxSharedMemoryPerBlockOptin\"\nsharedMemPerBlockOptin = \"sharedMemPerBlockOptin\"\n\ndepthwise_seperable_out_channel = \"depthwise_seperable_out_channel\"\npard_token = \"pard_token\"\nptd_token_id = \"ptd_token_id\"\nser_de = \"ser_de\"\nshared_memory_per_block_optin = \"shared_memory_per_block_optin\"\nFoPE = \"FoPE\"\nk_ot = \"k_ot\"\nview_seperator = \"view_seperator\"\ninverse_std_variences = \"inverse_std_variences\"\n\n[tool.typos.default.extend-words]\niy = \"iy\"\nindx = \"indx\"\n# intel cpu features\ntme = \"tme\"\ndout = \"dout\"\nPn = \"Pn\"\narange = \"arange\"\nthw = \"thw\"\n# temporal position ids (parallels hpos/wpos in vision RoPE)\ntpos",
    "strategic_keywords": [
      "memory",
      "llm",
      "eval",
      "inference",
      "embedding"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "simplex-chat",
    "name": "simplex-chat",
    "full_name": "simplex-chat/simplex-chat",
    "url": "https://github.com/simplex-chat/simplex-chat",
    "description": "SimpleX - the first messaging network operating without user identifiers of any kind - 100% private by design! iOS, Android and desktop apps 📱!",
    "language": "Haskell",
    "total_stars": 12452,
    "forks": 705,
    "stars_this_period": 191,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [
        "chat",
        "double-ratchet",
        "e2ee",
        "encryption",
        "haskell",
        "messaging",
        "privacy",
        "protocol",
        "security"
      ],
      "license": "AGPL-3.0",
      "open_issues": 1138,
      "created_at": "2019-12-21T09:50:09Z",
      "pushed_at": "2026-06-26T21:54:49Z",
      "homepage": "https://simplex.chat",
      "default_branch": "stable",
      "forks": 705,
      "watchers": 99,
      "archived": false,
      "size_kb": 417899
    },
    "readme_content": "[![build](https://github.com/simplex-chat/simplex-chat/actions/workflows/build.yml/badge.svg?branch=stable)](https://github.com/simplex-chat/simplex-chat/actions/workflows/build.yml)\n[![GitHub downloads](https://img.shields.io/github/downloads/simplex-chat/simplex-chat/total)](https://github.com/simplex-chat/simplex-chat/releases)\n[![GitHub release](https://img.shields.io/github/v/release/simplex-chat/simplex-chat)](https://github.com/simplex-chat/simplex-chat/releases)\n[![Join on Reddit](https://img.shields.io/reddit/subreddit-subscribers/SimpleXChat?style=social)](https://www.reddit.com/r/SimpleXChat)\n<a rel=\"me\" href=\"https://mastodon.social/@simplex\">![Follow on Mastodon](https://img.shields.io/mastodon/follow/108619463746856738?domain=https%3A%2F%2Fmastodon.social&style=social)</a>\n\n| 30/03/2023 | EN, [FR](/docs/lang/fr/README.md), [CZ](/docs/lang/cs/README.md), [PL](/docs/lang/pl/README.md) |\n\n<img src=\"images/simplex-chat-logo.svg\" alt=\"SimpleX logo\" width=\"100%\">\n\n# SimpleX - the first messaging platform that has no user identifiers of any kind - 100% private by design!\n\n[<img src=\"./images/trail-of-bits.jpg\" height=\"80\">](http://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html) &nbsp;&nbsp;&nbsp; [<img src=\"./images/privacy-guides.jpg\" height=\"64\">](https://www.privacyguides.org/en/real-time-communication/#simplex-chat) &nbsp;&nbsp;&nbsp; [<img src=\"./images/whonix-logo.jpg\" height=\"64\">](https://www.whonix.org/wiki/Chat#Recommendation) &nbsp;&nbsp;&nbsp; [<img src=\"./images/kuketz-blog.jpg\" height=\"64\">](https://www.kuketz-blog.de/simplex-eindruecke-vom-messenger-ohne-identifier/)\n\n**[Why we are building SimpleX Network](./docs/WHY.md)**\n\n## Welcome to SimpleX Chat!\n\n1. 📲 [Install the app](#install-the-app).\n2. ↔️ [Connect to the team](#connect-to-the-team), [join user groups](#join-user-groups) and [follow our updates](#follow-our-updates).\n3. 🤝 [Make a private connection](#make-a-private-connection) with a friend.\n4. 🔤 [Help translating SimpleX Chat](#help-translating-simplex-chat).\n5. ⚡️ [Contribute](#contribute) and [support us with donations](#please-support-us-with-your-donations).\n\n[Learn more about SimpleX Chat](#contents).\n\n## Install the app\n\n[<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/apple_store.svg\" alt=\"iOS app\" height=\"42\">](https://apps.apple.com/us/app/simplex-chat/id1605771084)\n&nbsp;\n[![Android app](https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/google_play.svg)](https://play.google.com/store/apps/details?id=chat.simplex.app)\n&nbsp;\n[<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/f_droid.svg\" alt=\"F-Droid\" height=\"41\">](https://app.simplex.chat)\n&nbsp;\n[<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/testflight.png\" alt=\"iOS TestFlight\" height=\"41\">](https://testflight.apple.com/join/DWuT2LQu)\n&nbsp;\n[<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/apk_icon.png\" alt=\"APK\" height=\"41\">](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk)\n\n- 🖲 Protects your messages and metadata - who you talk to and when.\n- 🔐 Double ratchet end-to-end encryption, with additional encryption layer.\n- 📱 Mobile apps for Android ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex-aarch64.apk)) and [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084).\n- 🚀 [TestFlight preview for iOS](https://testflight.apple.com/join/DWuT2LQu) with the new features 1-2 weeks earlier - **limited to 10,000 users**!\n- 🖥 Available as a terminal (console) [app / CLI](#zap-quick-installation-of-a-terminal-app) on Linux, MacOS, Windows.\n\n## Connect to the team\n\nYou can connect to the team via the app using \"chat with the developers button\" available when you have no conversations in the profile, \"Send questions and ideas\" in the app settings or via our [SimpleX address](https://smp6.simplex.im/a#lrdvu2d8A1GumSmoKb2krQmtKhWXq-tyGpHuM7aMwsw). Please connect to:\n\n- to ask any questions\n- to suggest any improvements\n- to share anything relevant\n\nWe are replying the questions manually, so it is not instant – it can take up to 24 hours.\n\nIf you are interested in helping us to integrate open-source language models, and in [joining our team](./docs/JOIN_TEAM.md), please get in touch.\n\n## Join user groups\n\nYou can find the groups created by users in [SimpleX Directory](https://simplex.chat/directory/). It is also available as [SimpleX bot](https://smp4.simplex.im/a#lXUjJW5vHYQzoLYgmi8GbxkGP41_kjefFvBrdwg-0Ok) that allows to add your own groups and communities to the directory. We are not responsible for the content shared in these groups.\n\n**Please note**: The groups below are created for the users to be able to ask questions, make suggestions and ask questions about SimpleX Chat only.\n\nYou can join an English-speaking users group if you want to ask any questions: [#SimpleX users group](https://smp4.simplex.im/g#hr4lvFeBmndWMKTwqiodPz3VBo_6UmdGWocXd1SupsM)\n\nThere is also a group [#simplex-devs](https://smp6.simplex.im/g#Drx3efC-n418AuSpzTspw9SER0iJwrQTmKBafQHwkKM) for developers who build on SimpleX platform:\n\n- chat bots and automations\n- integrations with other apps\n- social apps and services\n- etc.\n\nYou can join these and other groups by opening these links in the app or by opening them in a desktop browser and scanning the QR code.\n\n## Follow our updates\n\nWe publish our updates and releases via:\n\n- [Reddit](https://www.reddit.com/r/SimpleXChat/), [Twitter](https://twitter.com/SimpleXChat), [Lemmy](https://lemmy.ml/c/simplex), [Mastodon](https://mastodon.social/@simplex) and [Nostr](https://snort.social/p/npub1exv22uulqnmlluszc4yk92jhs2e5ajcs6mu3t00a6avzjcalj9csm7d828).\n- SimpleX Chat [team profile](#connect-to-the-team).\n- [blog](https://simplex.chat/blog/) and [RSS feed](https://simplex.chat/feed.rss).\n- [mailing list](https://simplex.chat/#join-simplex), very rarely.\n\n## Make a private connection\n\nYou need to share a link with your friend or scan a QR code from their phone, in person or during a video call, to make a connection and start messaging.\n\nThe channel through which you share the link does not have to be secure - it is enough that you can confirm who sent you the message and that your SimpleX connection is established.\n\n<img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/app1.png\" alt=\"Make a private connection\" height=\"360\"> <img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/arrow.png\" height=\"360\"> <img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/app2.png\" alt=\"Conversation\" height=\"360\"> <img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/arrow.png\" height=\"360\"> <img src=\"https://raw.githubusercontent.com/simplex-chat/.github/refs/heads/master/profile/images/app3.png\" alt=\"Video call\" height=\"360\">\n\nAfter you connect, you can [verify connection security code](./blog/20230103-simplex-chat-v4.4-disappearing-messages.md#connection-security-verification).\n\n## User guide (NEW)\n\nRead about the app features and settings in the new [User guide](./docs/guide/README.md).\n\n## Contribute\n\nWe would love to have you join the development! You can help us with:\n\n- [develop a chat bot](#develop-a-chat-bot) for SimpleX Chat!\n- writing a tutorial or recipes about hosting servers, chat bots, etc.\n- developing features - please connect to us via chat so we can help you get started.\n\n## Help translating SimpleX Chat\n\nThanks to our users and [Weblate](https://hosted.weblate.org/engage/simplex-chat/), SimpleX Chat apps, website and documents are translated to many other languages.\n\nJoin our translators to help SimpleX grow!\n\n|locale|language |contributor|[Android](https://play.google.com/store/apps/details?id=chat.simplex.app) and [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084)|[website](https://simplex.chat)|Github docs|\n|:----:|:-------:|:---------:|:---------:|:---------:|:---------:|\n|🇬🇧 en|English   | |✓|✓|✓|✓|\n|ar|العربية   |[jermanuts](https://github.com/jermanuts)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/ar/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/ar/)<br>-|[![website](https://hosted.weblate.org/widgets/simplex-chat/ar/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/ar/)||\n|🇧🇬 bg|Български | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/bg/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/bg/)<br>[![ios app](https://hosted.weblate.org/widget/simplex-chat/ios/bg/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/bg/)|||\n|🇨🇿 cs|Čeština   |[zen0bit](https://github.com/zen0bit)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/cs/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/cs/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/cs/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/cs/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/cs/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/cs/)|[✓](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang/cs)|\n|🇩🇪 de|Deutsch   |[mlanp](https://github.com/mlanp)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/de/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/de/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/de/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/de/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/de/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/de/)||\n|🇪🇸 es|Español   |[Mateyhv](https://github.com/Mateyhv)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/es/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/es/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/es/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/es/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/es/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/es/)||\n|🇫🇮 fi|Suomi     | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/fi/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/fi/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/fi/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/fi/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/fi/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/fi/)||\n|🇫🇷 fr|Français  |[ishi_sama](https://github.com/ishi-sama)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/fr/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/fr/)<br>[![ios app](https://hosted.weblate.org/widgets/simplex-chat/fr/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/fr/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/fr/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/fr/)|[✓](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang/fr)|\n|🇮🇱 he|עִברִית     | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/he/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/he/)<br>-|||\n|🇭🇺 hu|Magyar    | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/hu/android/svg-badge.svg)](https://hosted.webl",
    "strategic_keywords": [
      "workflow",
      "protocol"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 14,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 8,
      "risk_signal": 8,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "alchaincyf",
    "name": "zhangxuefeng-skill",
    "full_name": "alchaincyf/zhangxuefeng-skill",
    "url": "https://github.com/alchaincyf/zhangxuefeng-skill",
    "description": "张雪峰.skill — 张雪峰的认知操作系统。高考志愿/考研/职业规划的实战思维框架。由女娲.skill生成。",
    "language": "",
    "total_stars": 9238,
    "forks": 2560,
    "stars_this_period": 185,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [],
      "license": "MIT",
      "open_issues": 29,
      "created_at": "2026-04-05T11:37:18Z",
      "pushed_at": "2026-05-28T00:10:21Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 2560,
      "watchers": 42,
      "archived": false,
      "size_kb": 5119
    },
    "readme_content": "<div align=\"center\">\n\n# 张雪峰.skill\n\n<p align=\"center\">\n  <img src=\"assets/hero.gif\" alt=\"zhangxuefeng-skill Hero Animation\" />\n  <br/>\n  <sub>动画由 <a href=\"https://github.com/alchaincyf/huashu-design\">huashu-design</a> skill 制作</sub>\n</p>\n\n> *「社会就是一个大筛子，用学历筛孩子，用房子筛父母，用工作筛家庭。」*\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Agent Skills](https://img.shields.io/badge/Agent%20Skills-Standard-green)](https://agentskills.io)\n[![skills.sh](https://img.shields.io/badge/skills.sh-Compatible-blue)](https://skills.sh)\n[![Multi-Runtime](https://img.shields.io/badge/Runtime-Claude%20Code%20·%20Codex%20·%20Cursor%20·%20OpenClaw%20·%20Hermes-blueviolet)](#安装)\n[![Nuwa](https://img.shields.io/badge/Made%20with-女娲.skill-orange)](https://github.com/alchaincyf/nuwa-skill)\n\n<br>\n\n**张雪峰的认知操作系统。不是语录合集，是可运行的思维框架。**\n\n<br>\n\n基于5本著作、15+篇权威媒体深度采访、30+条一手语录、<br>\n11个关键决策记录和完整人生时间线的深度调研，<br>\n提炼5个核心心智模型、8条决策启发式和完整的表达DNA。\n\n[看效果](#效果示例) · [安装](#安装) · [蒸馏了什么](#蒸馏了什么) · [调研来源](#调研来源)\n\n</div>\n\n---\n\n## 效果示例\n\n### 问：我孩子今年高考，560分，河南的，想学金融，你怎么看？\n\n```\n张雪峰    ❯ 停停停，你先别急着说金融。我问你几个问题。\n\n            家里是做金融的吗？爸妈在银行、证券公司、基金公司？\n            有没有亲戚在这个行业里？\n\n            没有？那我跟你说，金融这个行业，千万别碰。\n\n            你去看看每年金融专业毕业的学生，中位数去了哪？\n            不是去了高盛，不是去了中金，是去了你家门口的银行网点\n            卖理财产品。560分河南考生，大概率去个双非一本学金融，\n            毕业出来跟985的抢岗位，你拿什么抢？脸吗？\n\n            金融是典型的「看起来光鲜，进去才知道是坑」的行业。\n            你看到的是年薪百万的基金经理，你看不到的是\n            90%的人在银行网点站着数钱。\n\n            560分河南，我给你一个方向：计算机或者电气工程。\n            理工科选专业，文科选学校，记住这句话。\n            你孩子这个分数，去个好点的一本学计算机，\n            毕业出来至少有一门手艺，不用求人。\n```\n\n> 运用了**就业倒推法**（看中位数去向）、**家庭背景分流**（先问家里资源）、**社会筛子论**（双非金融vs985的竞争现实）\n\n### 问：我本科双非，想考研到985，值得吗？还是直接工作？\n\n```\n张雪峰    ❯ 我跟你说，这个问题得看你是什么专业的。\n\n            你要是学计算机的，本科双非，能力强的话直接工作也行。\n            互联网公司看能力，你代码写得好，有项目经验，\n            人家不会因为你不是985就不要你。但这是少数。\n\n            你要是学机械、土木、生化环材这些，\n            那你必须考研。不是说考研能改变命运，\n            是说你不考研，这些专业本科出来能干嘛？\n            画图纸？进工厂？月薪四五千干到头？\n\n            但关键来了——考研不是目的，洗学历才是目的。\n\n            你一个双非考到985，你的第一学历还是双非，\n            有些公司就是卡第一学历，这个没办法，现实就是这样。\n            但是985的研究生至少让你过了大部分企业的筛子。\n            记住，社会就是个筛子，你得想办法让自己不被筛掉。\n\n            所以我的建议：\n            第一，考。但别考清北复交，你考不上白浪费一年。\n            选一个你够得着的985，城市好的优先。\n            第二，选对专业比选对学校更重要。\n            别为了985的名头去学一个冷门专业，那是自杀。\n            第三，最多考两次。考不上就工作，别在这死磕。\n            你的时间也是成本，二十五六岁还在考研，\n            你的同龄人已经工作三年了。\n```\n\n> 运用了**选择>努力**（考研是手段不是目的）、**中位数原则**（看本科出来的普遍去向）、**阶层现实主义**（第一学历卡人的现实）\n\n### 问：AI时代来了，你之前推荐的那些专业还靠谱吗？\n\n```\n张雪峰    ❯ 你这个问题问得好，我跟你说实话，\n            我自己也在重新想这个事。\n\n            我以前推荐计算机，推荐电气，推荐临床医学，\n            这些基本盘没变。但AI确实带来了一个新变量。\n\n            先说不变的：\n            临床医学——AI再牛，你敢让机器人给你开刀吗？\n            电气工程——电网、电站、高压线，这些得有人干，\n            AI替代不了你爬电线杆。\n            牙医——AI能帮你看片子，但不能帮你拔牙。\n\n            再说变了的：\n            基础的程序员岗位，说实话，确实危险了。\n            写个CRUD、做个网页，AI比人快十倍。\n            但是——注意这个但是——\n            AI替代的是低端编码，不是计算机科学。\n            你学的是算法、系统设计、架构能力，\n            这些东西AI替代不了，反而因为AI更值钱了。\n\n            所以我的建议更新一下：\n            以前是「学计算机」，现在是「学计算机+AI」。\n            以前是「会写代码」，现在是「会用AI写代码」。\n            本质没变——你的工资和你的不可替代性成正比。\n            AI时代，什么人不可替代？\n            不是会用AI的人——这个门槛太低了，谁都会用。\n            是理解业务、能解决问题、AI搞不定的事你能搞定的人。\n\n            别被「AI要取代一切」吓到。\n            十年前说互联网要取代一切，结果呢？\n            取代了一部分，但也创造了一堆新岗位。\n            AI也一样。关键是你站在被取代的那边，\n            还是站在用AI的那边。\n```\n\n> 运用了**不可替代性检验**（AI时代什么人不可替代）、**就业倒推法**（区分AI影响的不同层次）、**10年后压迫测试**（长期视角看专业价值）\n\n### 问：家里没钱，该不该为了理想去学艺术？\n\n```\n张雪峰    ❯ 我说句不好听的，你别生气。\n\n            家里没钱，别谈理想。先谋生，再谋爱。\n\n            你知道学艺术的成本吗？画材、乐器、培训班、\n            作品集、出国交流，哪样不要钱？\n            四年下来，光学费和材料费就比普通专业多花十几万。\n            毕业以后呢？你去看看美院毕业生的就业率，\n            80%的人没有从事本专业。\n\n            有钱人家的孩子学艺术，那叫追求理想。\n            没钱人家的孩子学艺术，那叫赌博。\n            区别在哪？有钱人输了可以重来，你输不起。\n\n            但我不是说穷人家的孩子就不配有理想。\n            我说的是顺序——先站稳，再登高。\n\n            你真喜欢艺术，先选一个能吃饱饭的专业，\n            计算机也好，师范也好，考个编制也好。\n            工作稳定了，收入有了，你再拿业余时间搞艺术。\n            没人拦你。\n\n            你看我，我给排水专业毕业的，\n            我现在做教育、做自媒体、做投资，\n            跟给排水有半毛钱关系吗？没有。\n            但给排水让我先活下来了。\n\n            选择比努力更重要，\n            但「有得选」的前提是你足够努力，\n            而且——你得先活着。\n```\n\n> 运用了**阶层现实主义**（家庭条件决定策略）、**选择>努力**（先生存再追求）、自身经历作为论据（给排水→教育博主的跨界人生）\n\n> 完整对话记录在 [`examples/`](examples/) 目录。\n\n这不是ChatGPT套了个张雪峰面具。每段回应都在运用张雪峰的具体心智模型——「社会筛子论」「就业倒推法」「阶层现实主义」「不可替代性检验」。它不复读语录，它用张雪峰的认知框架分析你的问题。\n\n---\n\n## 安装\n\n本 skill 基于开放的 [Agent Skills](https://agentskills.io) 协议，可在任何 skills-compatible 的 AI agent runtime 中运行（Claude Code、Codex、Cursor、OpenClaw、Hermes Agent、CodeBuddy、Workbuddy、Gemini CLI、OpenCode 等 50+ runtime）。\n\n### 方式一：一行命令（推荐，跨 runtime 自动检测）\n\n```bash\nnpx skills add alchaincyf/zhangxuefeng-skill\n```\n\n通用 CLI 安装器（[vercel-labs/skills](https://github.com/vercel-labs/skills)，支持 55+ runtime）会自动识别当前 runtime 并把 skill 放到正确目录。需要指定 runtime 时加 `-a claude-code` / `-a codex` / `-a cursor` / `-a openclaw` 等参数。\n\n### 方式二：手动安装\n\n<details>\n<summary>展开查看各 runtime 的 skills 目录</summary>\n\n| Runtime | 安装路径 |\n|---|---|\n| Claude Code | `~/.claude/skills/zhangxuefeng-skill/` |\n| Codex CLI | `~/.codex/skills/zhangxuefeng-skill/` |\n| Cursor | `~/.cursor/skills/zhangxuefeng-skill/` |\n| OpenClaw | `~/.openclaw/workspace/skills/zhangxuefeng-skill/` |\n| Hermes Agent | 跑该 runtime 的 install 脚本或 clone 到其 skills 目录 |\n\n```bash\ngit clone https://github.com/alchaincyf/zhangxuefeng-skill <对应路径>\n```\n\n</details>\n\n### 方式三：作为参考资料使用\n\n即使 runtime 不支持 Agent Skills 自动加载，你也可以把 `SKILL.md` 的内容粘贴进对话——它本质就是一份 markdown + YAML frontmatter。\n\n### 使用\n\n装好后，告诉你的 agent：\n```\n> 用张雪峰的视角帮我分析这个专业选择\n> 张雪峰会怎么看这个职业方向？\n> 切换到张雪峰，我孩子要填志愿了\n```\n\n---\n\n## 蒸馏了什么\n\n### 5个心智模型\n\n| 模型 | 一句话 | 来源 |\n|------|--------|------|\n| **社会筛子论** | 社会就是一个大筛子，用学历筛孩子，用房子筛父母，用工作筛家庭 | 讲座/直播（反复使用20+次） |\n| **选择 > 努力** | 方向错误的努力是浪费，选对赛道比拼命奔跑重要 | 两本书直接命名、自身跨界经历 |\n| **就业倒推法** | 从毕业后的就业数据倒推今天的专业选择，看中间50%的人去了哪 | 峰学蔚来商业模式的基础 |\n| **阶层现实主义** | 家里没矿别谈理想，先谋生再谋爱，先站稳再登高 | 始终区分不同家庭的不同策略 |\n| **争议即传播** | 温吞的建议没人记住，把观点推到极端才有传播力 | 新闻学争议后商业数据不降反升 |\n\n### 8条决策启发式\n\n1. **灵魂追问法** — 连续追问（几分？哪个省？家里做什么的？）快速锁定方案\n2. **中位数原则** — 不看顶尖不看最差，看中间50%的人过得怎么样\n3. **不可替代性检验** — 你的工资和你的不可替代性成正比\n4. **500强测试** — 别听企业怎么说，看企业去哪招聘、招什么专业\n5. **家庭背景分流** — 同一个问题，有矿和没矿的答案完全不同\n6. **城市优先原则** — 优先选发达城市，城市决定思维、资源和机会\n7. **10年后压迫测试** — 你能接受工作十年后收入比分数不如你的人低吗？\n8. **认态度不认事实道歉法** — 核心观点绝不让步，只调整表达方式\n\n### 表达DNA\n\n- **句式**：短句、快节奏、信息密度高。「我跟你说」「你听我说」「千万别」\n- **词汇**：生存、就业、薪资、筛子、敲门砖、天坑。东北方言——嘎巴、整、干他\n- **节奏**：设置误区 → 用事实打脸 → 金句总结 → 换说法反复锤\n- **幽默**：夸张到荒谬、反差对比一句话反杀、自嘲自黑\n- **确定性**：极高，给明确判断，不留灰色地带\n\n### 5对内在张力\n\n这不是脸谱化的「毒舌考研名师」。Skill保留了张雪峰的矛盾：\n\n- 寒门代言人 vs 亿万富翁\n- 自己跨专业成功 vs 劝人选对专业\n- 「注意身体」vs 每天工作十几小时\n- 说要克制 vs 嘴比脑快\n- 争议是策略还是性格\n\n---\n\n## 调研来源\n\n6个调研文件，全部在 [`references/research/`](references/research/) 目录：\n\n| 文件 | 内容 |\n|------|------|\n| `01-writings.md` | 著作与系统思考 |\n| `02-conversations.md` | 深度采访与对谈 |\n| `03-expression-dna.md` | 表达风格DNA |\n| `04-external-views.md` | 他者视角与批评 |\n| `05-decisions.md` | 重大决策分析 |\n| `06-timeline.md` | 完整人生时间线 |\n\n### 一手来源\n\n《你离考研成功，就差这本书》(2016) · 《方向比努力更重要》(2021) · 《选择比努力更重要》(2021/2023修订) · 《决胜大学》(2024) · 《从就业看专业》(2025，遗作) · B站《演说家》完整版演讲 · 新浪财经CEO邓庆旭深度对谈 · 界面新闻深度采访 · 中国新闻周刊采访\n\n### 二手来源\n\n钛媒体「时代最复杂的教育符号」 · 虎嗅「感谢张雪峰，警惕张雪峰」 · 三联生活周刊 · 36氪 · 21经济网\n\n信息源已排除知乎/微信公众号/百度百科。\n\n---\n\n## 这个Skill是怎么造出来的\n\n由 [女娲.skill](https://github.com/alchaincyf/nuwa-skill) 自动生成。\n\n女娲的工作流程：输入一个名字 → 6个Agent并行调研（著作/对话/表达/批评/决策/时间线）→ 交叉验证提炼心智模型 → 构建SKILL.md → 质量验证（3个已知测试 + 1个边缘测试 + 风格测试）。\n\n想蒸馏其他人？安装女娲：\n\n```bash\nnpx skills add alchaincyf/nuwa-skill\n```\n\n然后说「蒸馏一个XXX」就行了。\n\n---\n\n## 仓库结构\n\n```\nzhangxuefeng-skill/\n├── README.md\n├── SKILL.md                              # 可直接安装使用\n├── references/\n│   └── research/                         # 6个调研文件\n│       ├── 01-writings.md\n│       ├── 02-conversations.md\n│       ├── 03-expression-dna.md\n│       ├── 04-external-views.md\n│       ├── 05-decisions.md\n│       └── 06-timeline.md\n└── examples/\n    └── demo-conversation.md              # 实战对话记录\n```\n\n---\n\n## 更多.skill\n\n女娲已蒸馏的其他人物，每个都可独立安装：\n\n| 人物 | 领域 | 安装 |\n|------|------|------|\n| [乔布斯.skill](https://github.com/alchaincyf/steve-jobs-skill) | 产品/设计/战略 | `npx skills add alchaincyf/steve-jobs-skill` |\n| [马斯克.skill](https://github.com/alchaincyf/elon-musk-skill) | 工程/成本/第一性原理 | `npx skills add alchaincyf/elon-musk-skill` |\n| [纳瓦尔.skill](https://github.com/alchaincyf/naval-skill) | 财富/杠杆/人生哲学 | `npx skills add alchaincyf/naval-skill` |\n| [芒格.skill](https://github.com/alchaincyf/munger-skill) | 投资/多元思维/逆向思考 | `npx skills add alchaincyf/munger-skill` |\n| [费曼.skill](https://github.com/alchaincyf/feynman-skill) | 学习/教学/科学思维 | `npx skills add alchaincyf/feynman-skill` |\n| [塔勒布.skill](https://github.com/alchaincyf/taleb-skill) | 风险/反脆弱/不确定性 | `npx skills add alchaincyf/taleb-skill` |\n\n想蒸馏更多人？用 [女娲.skill](https://github.com/alchaincyf/nuwa-skill)，输入任何名字即可。\n\n## 许可证\n\nMIT — 随便用，随便改，随便蒸馏。\n\n---\n\n\n\n---\n\n## 关于作者\n\n**花叔 Huashu** — AI Native Coder，独立开发者，代表作：小猫补光灯（AppStore 付费榜 Top1）\n\n| 平台 | 链接 |\n|------|------|\n| 🌐 官网 | [bookai.top](https://bookai.top) · [huasheng.ai](https://www.huasheng.ai) |\n| 𝕏 Twitter | [@AlchainHust](https://x.com/AlchainHust) |\n| 📺 B站 | [花叔](https://space.bilibili.com/14097567) |\n| ▶️ YouTube | [@Alchain](https://www.youtube.com/@Alchain) |\n| 📕 小红书 | [花叔](https://www.xiaohongshu.com/user/profile/5abc6f17e8ac2b109179dfdf) |\n| 💬 公众号 | 微信搜「花叔」或扫码关注 ↓ |\n\n<img src=\"wechat-qrcode.jpg\" alt=\"公众号二维码\" width=\"360\">\n\n<div align=\"center\">\n\n*人生真好玩儿，下辈子还来。*\n\n<br>\n\nMIT License © [花叔 Huashu](https://github.com/alchaincyf)\n\nMade with [女娲.skill](https://github.com/alchaincyf/nuwa-skill)\n\n</div>\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "runtime",
      "skill"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 11,
      "productize": 4,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 6,
      "total": 75
    },
    "strategic_score": 75
  },
  {
    "owner": "ogulcancelik",
    "name": "herdr",
    "full_name": "ogulcancelik/herdr",
    "url": "https://github.com/ogulcancelik/herdr",
    "description": "agent multiplexer that lives in your terminal.",
    "language": "Rust",
    "total_stars": 7485,
    "forks": 465,
    "stars_this_period": 170,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agent-orchestration",
        "ai",
        "ai-agents",
        "claude-code",
        "cli",
        "codex",
        "coding-agents",
        "developer-tools",
        "devtools",
        "multiplexer",
        "rust",
        "terminal",
        "terminal-multiplexer",
        "terminal-ui",
        "tmux",
        "tui",
        "workspace-manager"
      ],
      "license": "NOASSERTION",
      "open_issues": 24,
      "created_at": "2026-03-27T17:54:33Z",
      "pushed_at": "2026-06-26T15:14:35Z",
      "homepage": "https://herdr.dev",
      "default_branch": "master",
      "forks": 465,
      "watchers": 19,
      "archived": false,
      "size_kb": 28167
    },
    "readme_content": "# herdr\n\n\n<p align=\"center\">\n  <img src=\"assets/logo.png\" alt=\"herdr\" width=\"100\" />\n</p>\n\n<p align=\"center\">\n  <a href=\"https://herdr.dev\">herdr.dev</a> · <a href=\"#install\">install</a> · <a href=\"#quick-start\">quick start</a> · <a href=\"#supported-agents\">supported agents</a> · <a href=\"https://herdr.dev/docs/integrations/\">integrations</a> · <a href=\"https://herdr.dev/docs/configuration/\">configuration</a> · <a href=\"https://herdr.dev/docs/socket-api/\">socket api</a> · <a href=\"#sponsors\">sponsor</a>\n</p>\n\n---\n\nhttps://github.com/user-attachments/assets/043ec09f-4bdd-41d5-aee0-8fda6b83e267\n\n**agent multiplexer that lives in your terminal.**\n\nworkspaces, tabs, panes. mouse-native: click, drag, split. every agent at a glance: blocked, working, done. detach and reattach, agents keep running. no gui app, no electron, no mac-only native wrapper. you see the agent's own terminal, not someone's interpretation of it.\n\n---\n\n## install\n\n```bash\ncurl -fsSL https://herdr.dev/install.sh | sh\n```\n\non windows preview beta:\n\n```powershell\npowershell -ExecutionPolicy Bypass -c \"irm https://herdr.dev/install.ps1 | iex\"\n```\n\nor install with homebrew:\n\n```bash\nbrew install herdr\n```\n\nor install with mise:\n\n```bash\nmise use -g herdr\n```\n\nif mise reports `herdr not found in mise tool registry`, update mise and retry. older mise versions predate the herdr registry entry; `mise use -g github:ogulcancelik/herdr` works as a temporary fallback.\n\nor download the stable Linux/macOS binary from [releases](https://github.com/ogulcancelik/herdr/releases). Native Windows binaries are preview-only beta builds.\n\n## quick start\n\nStart Herdr in the directory where the work lives:\n\n```bash\nherdr\n```\n\nHerdr starts or attaches to one background session server. When a session has no workspaces, Herdr opens one automatically. Run an agent in the root pane. Press `ctrl+b`, then `shift+n` to create another workspace, `ctrl+b`, then `v` or `minus` to split panes, `ctrl+b`, then `c` to create a tab, and `ctrl+b`, then `w` to switch workspaces.\n\nPress `ctrl+b q` to detach the client. The server and pane processes keep running. Open another terminal and run `herdr` again to reattach.\n\n## core concepts\n\n**Server and client.** By default, `herdr` attaches to a background server. Detaching closes only the client. `herdr server stop` stops the default server and kills its panes. Named sessions are separate server namespaces: use `herdr session attach work`, `herdr session stop work`, and `herdr session list` when you want fully separate runtime state.\n\n**Workspaces, tabs, panes.** A workspace is the project-level container. Tabs group panes inside a workspace. Panes are real terminal processes, not rewritten agent views.\n\n**Copy.** Herdr copies pane text, not the sidebar. Drag-select inside a pane, double-click a word or token, or press `prefix+[` for keyboard copy mode. In copy mode, move with `h/j/k/l`, `w/b/e`, and `{`/`}`, start selection with `v` or Space, copy with `y` or Enter, and leave with `q` or Esc. In PuTTY and some SSH terminals, hold `Shift` while dragging to use the terminal's own selection, and `Shift` + right click to paste.\n\n**Update and restore.** `herdr update` installs a new binary, but a running server keeps using the old process until it is stopped or handed off. Stop the old server to use the new version. Stopping exits pane processes. Run `herdr server stop`, then run `herdr` again for the default session. For a named session, run `herdr session stop <name>`, then run `herdr session attach <name>` again. `herdr update --handoff` is experimental and tries to move live panes, including foreground processes such as dev servers, from the old server to the new one. With current official integrations installed, supported agent panes can restart from their native agent sessions after a server restart or update.\n\n**Keybindings.** Herdr uses explicit keybinding strings. `prefix+n` means press the configured prefix, then `n`. `ctrl+alt+n`, `cmd+k`, `alt+1`, and function-key chords are direct terminal-mode shortcuts and do not need the prefix. Plain direct printable keys such as `n` steal normal typing, so use `prefix+n` unless you intentionally want a modifier-gated direct binding.\n\n**Agent awareness.** The sidebar shows blocked, working, done, and idle states. Detection works with process names and terminal output by default. Official integrations can add native session identity for restore, semantic state reports, or both.\n\n## update\n\nHerdr notifies you when a new version is available. Run manually:\n\n```bash\nherdr update\n```\n\n`herdr update` is for installs managed by Herdr's own installer. Homebrew, mise, and Nix installs update through `brew upgrade herdr`, `mise upgrade herdr`, or your Nix workflow, then use the same stop-and-run-again flow if a session is still running the old server. Linux and macOS direct installs can opt into development preview builds with `herdr channel set preview` and return to stable with `herdr channel set stable`. Windows beta installs are preview-only for now. See [install docs](https://herdr.dev/docs/install/) and [session state docs](https://herdr.dev/docs/session-state/) for the full update, restart, restore, and handoff matrix.\n\nLinux and macOS direct installs use the stable update channel by default. Windows beta installs default to preview. To test preview builds from `master` before the next stable release:\n\n```bash\nherdr channel set preview\n```\n\nTo return Linux and macOS direct installs to stable:\n\n```bash\nherdr channel set stable\n```\n\nFor direct installs, changing channels also checks that channel and installs its latest binary. If that update fails, run `herdr update` to retry from the configured channel.\n\nPreview is only for direct installs managed by Herdr's updater. Homebrew, mise, and Nix stay on stable and update through their package managers.\n\n## how it compares\n\n|                          | tmux | gui managers | herdr |\n|--------------------------|------|--------------|-------|\n| persistent sessions       | ✓    | —            | ✓     |\n| detach / reattach        | ✓    | —            | ✓     |\n| panes, tabs, workspaces  | ✓    | ✓            | ✓     |\n| agent awareness          | —    | ✓            | ✓     |\n| lives in your terminal   | ✓    | —            | ✓     |\n| real terminal views      | ✓    | —            | ✓     |\n| mouse-native            | —    | ✓            | ✓     |\n| lightweight binary       | ✓    | —            | ✓     |\n| agents can orchestrate   | ?    | ?            | ✓     |\n\ntmux gives you persistence and panes, but it was built before agents existed. gui managers show agent state, but they make you leave your terminal and use their wrapped view. herdr is persistence and awareness in one tool that stays out of your way.\n\n## remote and attach\n\nHerdr works over normal SSH. Run it on the remote host, detach, and reattach later:\n\n```\nssh you@yourserver\nherdr\n```\n\nYou can also attach from your local terminal without opening a shell first:\n\n```bash\nherdr --remote workbox\nherdr --remote ssh://you@yourserver:2222\n```\n\nRemote attach adds fallback SSH keepalives by default while preserving your own SSH config. Set `[remote].manage_ssh_config = false` to use plain `ssh`.\n\nDirect attach connects your current terminal to one server-owned terminal:\n\n```bash\nherdr agent attach <target>\nherdr terminal attach <terminal_id>\n```\n\nSee [persistence and remote docs](https://herdr.dev/docs/persistence-remote/) for remote keybinding, named-session, and handoff details.\n\n## agent awareness\n\nthe sidebar shows which agents are blocked, working, or done. workspaces roll up to their most urgent state so you can scan the full list at a glance.\n\nstates:\n\n- 🔴 **blocked** — agent needs input or approval\n- 🟡 **working** — agent is actively running\n- 🔵 **done** — work finished, you have not looked at it yet\n- 🟢 **idle** — done and seen\n\ndetection works by reading foreground process and terminal output. zero config, no hooks required. official claude code, codex, github copilot cli, devin, droid, kimi code cli, qodercli, and cursor agent cli integrations provide session restore identity; pi, omp, kimi code cli, opencode, kilo code cli, hermes, and custom socket integrations can report their own state.\n\n## lives in your terminal\n\nnot a gui window, not a web dashboard, not electron. herdr runs inside whatever terminal you already use. single rust binary, no dependencies. works inside tmux as the outer terminal environment.\n\n## what you get\n\n- **workspaces** — organized around git repos or folder names, each with its own tabs and panes\n- **tabs** — first-class in the socket api and cli\n- **copy-friendly** — drag-select pane text, double-click tokens, or use keyboard copy mode with `prefix+[`, `h/j/k/l`, `{`/`}`, `v`, and `y`\n- **notifications** — sounds and toasts for background events; tab-aware suppression\n- **18 built-in themes** — catppuccin, terminal, tokyo night, gruvbox, one, solarized, kanagawa, rosé pine, vesper, and light variants for the main palettes\n- **session persistence** — pane processes survive client detach; sessions restore panes after full restart, with opt-in recent screen history\n\n## agents can use herdr too\n\nThe local Unix socket lets agents create workspaces, split or zoom panes, spawn helpers, read output, and wait for state changes. Start with the [socket API docs](https://herdr.dev/docs/socket-api/) and [`SKILL.md`](./SKILL.md).\n\n## supported agents\n\nautomatic detection works out of the box. process name matching plus terminal output heuristics.\n\n| agent | idle / done | working | blocked |\n|-------|-------------|---------|---------|\n| [pi](https://pi.dev) | ✓ | ✓ | partial |\n| [claude code](https://docs.anthropic.com/en/docs/claude-code) | ✓ | ✓ | ✓ |\n| [codex](https://github.com/openai/codex) | ✓ | ✓ | ✓ |\n| [droid](https://factory.ai) | ✓ | ✓ | ✓ |\n| [amp](https://ampcode.com) | ✓ | ✓ | ✓ |\n| [opencode](https://github.com/anomalyco/opencode) | ✓ | ✓ | ✓ |\n| [grok cli](https://x.ai/grok) | ✓ | ✓ | ✓ |\n| [hermes agent](https://github.com/NousResearch/hermes-agent) | ✓ | ✓ | ✓ |\n| [kilo code cli](https://kilo.ai/) | ✓ | ✓ | ✓ |\n| [devin cli](https://docs.devin.ai/cli) | ✓ | ✓ | ✓ |\n| cursor agent | ✓ | ✓ | ✓ |\n| antigravity cli | ✓ | ✓ | ✓ |\n| kimi code cli | ✓ | ✓ | ✓ |\n| [github copilot cli](https://github.com/features/copilot) | ✓ | ✓ | ✓ |\n| [qodercli](https://qoder.com/cli) | ✓ | ✓ | ✓ |\n| [kiro cli](https://kiro.dev/docs/cli/) | ✓ | ✓ | — |\n\ndetected but not fully tested: gemini cli, cline.\n\nfor agents outside the built-in list, herdr still works as a terminal multiplexer with workspaces, panes, and tiling. custom integrations can report agent labels over the socket api. see the [socket api docs](https://herdr.dev/docs/socket-api/).\n\n### direct integrations\n\nofficial integrations have two roles. claude code, codex, github copilot cli, devin, droid, qodercli, and cursor agent cli report session identity for native restore, while their state still comes from screen detection. pi, omp, kimi code cli, opencode, kilo code cli, and hermes report both semantic state and session identity. install with:\n\n```bash\nherdr integration install pi\nherdr integration install omp\nherdr integration install claude\nherdr integration install codex\nherdr integration install copilot\nherdr integration install devin\nherdr integration install droid\nherdr integration install kimi\nherdr integration install opencode\nherdr integration install kilo\nherdr integration install hermes\nherdr integration install qodercli\nherdr integration install cursor\n```\n\nsee the [integrations docs](https://herdr.dev/docs/integrations/) for setup details.\n\n## keybindings\n\nPress `ctrl+b` to enter prefix mode. Default actions are prefix-first and tmux-like:\n\n| key | action |\n|-----|--------|\n| `prefix+c` | new tab |\n| `prefix+n` / `prefix+p` | next / previous tab |\n| `prefix+1..9` | switch tab |\n| `prefix+w` | workspace navigation |\n| `prefix+g` | session navigator |\n| `prefix+shift+n` |",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[package]\nname = \"herdr\"\nversion = \"0.7.1\"\nedition = \"2021\"\nbuild = \"build.rs\"\ndescription = \"terminal workspace manager for AI coding agents\"\nlicense = \"AGPL-3.0-or-later\"\nrepository = \"https://github.com/ogulcancelik/herdr\"\nhomepage = \"https://herdr.dev\"\nkeywords = [\"terminal\", \"tui\", \"ai\", \"agents\", \"multiplexer\"]\ncategories = [\"command-line-utilities\"]\ninclude = [\"src/**/*\", \"assets/sounds/*\", \"README.md\", \"LICENSE\", \"Cargo.toml\"]\n\n[dependencies]\nbase64 = \"0.22.1\"\nbincode = { version = \"2\", features = [\"serde\"] }\nbytes = \"1\"\ncrossterm = \"0.29\"\nctrlc = \"3\"\ninterprocess = \"2.4.2\"\nlibc = \"0.2\"\nportable-pty = \"=0.9.0\"\npng = \"0.17\"\nratatui = { version = \"0.30\", features = [\"unstable-rendered-line-info\"] }\nregex = \"1\"\nserde = { version = \"1\", features = [\"derive\"] }\nserde_json = \"1\"\nsha2 = \"0.10\"\ntokio = { version = \"1\", features = [\"rt-multi-thread\", \"macros\", \"sync\", \"time\"] }\ntoml = \"0.8\"\ntracing = \"0.1.44\"\ntracing-subscriber = { version = \"0.3.23\", features = [\"env-filter\"] }\nunicode-width = \"0.2\"\n\n[patch.crates-io]\nportable-pty = { path = \"vendor/portable-pty\" }\n\n[target.'cfg(windows)'.dependencies]\nwindows-sys = { version = \"0.61.2\", features = [\n    \"Wdk_System_Threading\",\n    \"Win32_Foundation\",\n    \"Win32_System_Diagnostics_Debug\",\n    \"Win32_System_Diagnostics_ToolHelp\",\n    \"Win32_System_Console\",\n    \"Win32_System_Kernel\",\n    \"Win32_System_Threading\",\n    \"Win32_UI_Shell\",\n    \"Win32_UI_WindowsAndMessaging\",\n] }\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "runtime",
      "workspace"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "multica-ai",
    "name": "multica",
    "full_name": "multica-ai/multica",
    "url": "https://github.com/multica-ai/multica",
    "description": "The open-source managed agents platform. Turn coding agents into real teammates — assign tasks, track progress, compound skills.",
    "language": "Go",
    "total_stars": 38177,
    "forks": 4737,
    "stars_this_period": 167,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [],
      "license": "NOASSERTION",
      "open_issues": 1084,
      "created_at": "2026-01-13T17:59:46Z",
      "pushed_at": "2026-06-26T18:54:34Z",
      "homepage": "https://multica.ai",
      "default_branch": "main",
      "forks": 4737,
      "watchers": 134,
      "archived": false,
      "size_kb": 67960
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"docs/assets/banner.jpg\" alt=\"Multica — humans and agents, side by side\" width=\"100%\">\n</p>\n\n<div align=\"center\">\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/logo-dark.svg\">\n  <source media=\"(prefers-color-scheme: light)\" srcset=\"docs/assets/logo-light.svg\">\n  <img alt=\"Multica\" src=\"docs/assets/logo-light.svg\" width=\"50\">\n</picture>\n\n# Multica\n\n**Your next 10 hires won't be human.**\n\nThe open-source managed agents platform.<br/>\nTurn coding agents into real teammates — assign tasks, track progress, compound skills.\n\n[![CI](https://github.com/multica-ai/multica/actions/workflows/ci.yml/badge.svg)](https://github.com/multica-ai/multica/actions/workflows/ci.yml)\n[![GitHub stars](https://img.shields.io/github/stars/multica-ai/multica?style=flat)](https://github.com/multica-ai/multica/stargazers)\n[![Discord](https://img.shields.io/badge/Discord-Join-5865F2?logo=discord&logoColor=white)](https://discord.gg/W8gYBn226t)\n\n[Website](https://multica.ai) · [Cloud](https://multica.ai) · [Discord](https://discord.gg/W8gYBn226t) · [X](https://x.com/MulticaAI) · [Self-Hosting](SELF_HOSTING.md) · [Contributing](CONTRIBUTING.md)\n\n**English | [简体中文](README.zh-CN.md)**\n\n</div>\n\n## What is Multica?\n\nMultica turns coding agents into real teammates. Assign issues to an agent like you'd assign to a colleague — they'll pick up the work, write code, report blockers, and update statuses autonomously.\n\nNo more copy-pasting prompts. No more babysitting runs. Your agents show up on the board, participate in conversations, and compound reusable skills over time. Think of it as open-source infrastructure for managed agents — vendor-neutral, self-hosted, and designed for human + AI teams. Works with **Claude Code**, **Codex**, **GitHub Copilot CLI**, **OpenClaw**, **OpenCode**, **Hermes**, **Gemini**, **Pi**, **Cursor Agent**, **Kimi**, **Kiro CLI**, and **Qoder CLI**.\n\nFor larger teams, Squads add a stable routing layer: assign work to a group led by an agent, and the leader delegates to the right member.\n\n<p align=\"center\">\n  <img src=\"docs/assets/hero-screenshot.png\" alt=\"Multica board view\" width=\"800\">\n</p>\n\n## Why \"Multica\"?\n\nMultica — **Mul**tiplexed **I**nformation and **C**omputing **A**gent.\n\nThe name is a nod to Multics, the pioneering operating system of the 1960s that introduced time-sharing — letting multiple users share a single machine as if each had it to themselves. Unix was born as a deliberate simplification of Multics: one user, one task, one elegant philosophy.\n\nWe think the same inflection is happening again. For decades, software teams have been single-threaded — one engineer, one task, one context switch at a time. AI agents change that equation. Multica brings time-sharing back, but for an era where the \"users\" multiplexing the system are both humans and autonomous agents.\n\nIn Multica, agents are first-class teammates. They get assigned issues, report progress, raise blockers, and ship code — just like their human colleagues. The assignee picker, the activity timeline, the task lifecycle, and the runtime infrastructure are all built around this idea from day one.\n\nLike Multics before it, the bet is on multiplexing: a small team shouldn't feel small. With the right system, two engineers and a fleet of agents can move like twenty.\n\n## Features\n\nMultica manages the full agent lifecycle: from task assignment to execution monitoring to skill reuse.\n\n- **Agents as Teammates** — assign to an agent like you'd assign to a colleague. They have profiles, show up on the board, post comments, create issues, and report blockers proactively.\n- **Squads** — group agents (and humans) under a leader agent and assign work to the *squad*. The leader decides who should pick it up, so routing stays stable as the team grows. `@FrontendTeam` instead of `@alice-or-bob-or-carol`.\n- **Autonomous Execution** — set it and forget it. Full task lifecycle management (enqueue, claim, start, complete/fail) with real-time progress streaming via WebSocket.\n- **Autopilots** — schedule recurring work for agents. Cron triggers, webhooks, or manual runs — each autopilot creates the issue and routes it to an agent automatically, so daily standups, weekly reports, and periodic audits run themselves.\n- **Reusable Skills** — every solution becomes a reusable skill for the whole team. Deployments, migrations, code reviews — skills compound your team's capabilities over time.\n- **Unified Runtimes** — one dashboard for all your compute. Local daemons and cloud runtimes, auto-detection of available CLIs, real-time monitoring.\n- **Multi-Workspace** — organize work across teams with workspace-level isolation. Each workspace has its own agents, issues, and settings.\n\n---\n\n## Quick Install\n\n### macOS / Linux (Homebrew - recommended)\n\n```bash\nbrew install multica-ai/tap/multica\n```\n\nUse `brew upgrade multica-ai/tap/multica` to keep the CLI current.\n\n### macOS / Linux (install script)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash\n```\n\nUse this if Homebrew is not available. The script installs the Multica CLI on macOS and Linux by using Homebrew when it is on `PATH`, otherwise it downloads the binary directly.\n\n### Windows (PowerShell)\n\n```powershell\nirm https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.ps1 | iex\n```\n\nThen configure, authenticate, and start the daemon in one command:\n\n```bash\nmultica setup          # Connect to Multica Cloud, log in, start daemon\n```\n\n> **Self-hosting?** Add `--with-server` to deploy a full Multica server on your machine:\n>\n> ```bash\n> curl -fsSL https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.sh | bash -s -- --with-server\n> multica setup self-host\n> ```\n>\n> This pulls the official Multica images from GHCR (latest stable by default). Requires Docker. See the [Self-Hosting Guide](SELF_HOSTING.md) for details.\n> If the selected GHCR tag has not been published yet, fall back to `make selfhost-build` from a checkout.\n\n---\n\n## Getting Started\n\n### 1. Set up and start the daemon\n\n```bash\nmultica setup           # Configure, authenticate, and start the daemon\n```\n\nThe daemon runs in the background and auto-detects agent CLIs (`claude`, `codex`, `copilot`, `openclaw`, `opencode`, `hermes`, `gemini`, `pi`, `cursor-agent`, `kimi`, `kiro-cli`, `agy`, `qodercli`) on your PATH.\n\n### 2. Verify your runtime\n\nOpen your workspace in the Multica web app. Navigate to **Settings → Runtimes** — you should see your machine listed as an active **Runtime**.\n\n> **What is a Runtime?** A Runtime is a compute environment that can execute agent tasks. It can be your local machine (via the daemon) or a cloud instance. Each runtime reports which agent CLIs are available, so Multica knows where to route work.\n\n### 3. Create an agent\n\nGo to **Settings → Agents** and click **New Agent**. Pick the runtime you just connected and choose a provider (Claude Code, Codex, GitHub Copilot CLI, OpenClaw, OpenCode, Hermes, Gemini, Pi, Cursor Agent, Kimi, Kiro CLI, Antigravity, or Qoder CLI). Give your agent a name — this is how it will appear on the board, in comments, and in assignments.\n\n### 4. Assign your first task\n\nCreate an issue from the board (or via `multica issue create`), then assign it to your new agent. The agent will automatically pick up the task, execute it on your runtime, and report progress — just like a human teammate.\n\n---\n\n## CLI\n\nThe `multica` CLI connects your local machine to Multica — authenticate, manage workspaces, and run the agent daemon.\n\n| Command | Description |\n|---------|-------------|\n| `multica login` | Authenticate (opens browser) |\n| `multica daemon start` | Start the local agent runtime |\n| `multica daemon status` | Check daemon status |\n| `multica setup` | One-command setup for Multica Cloud (configure + login + start daemon) |\n| `multica setup self-host` | Same, but for self-hosted deployments |\n| `multica workspace list` | List your workspaces (current is marked with `*`) |\n| `multica workspace switch <id\\|slug>` | Switch the default workspace for this profile |\n| `multica issue list` | List issues in your workspace |\n| `multica issue create` | Create a new issue |\n| `multica update` | Update to the latest version |\n\nSee the [CLI and Daemon Guide](CLI_AND_DAEMON.md) for the full command reference.\n\n---\n\n## Architecture\n\n```\n┌──────────────┐     ┌──────────────┐     ┌──────────────────┐\n│   Next.js    │────>│  Go Backend  │────>│   PostgreSQL     │\n│   Frontend   │<────│  (Chi + WS)  │<────│   (pgvector)     │\n└──────────────┘     └──────┬───────┘     └──────────────────┘\n                            │\n                     ┌──────┴───────┐\n                     │ Agent Daemon │  runs on your machine\n                     └──────────────┘  (Claude Code, Codex, GitHub Copilot CLI,\n                                        OpenCode, OpenClaw, Hermes, Gemini,\n                                        Pi, Cursor Agent, Kimi, Kiro CLI, Qoder CLI)\n```\n\n| Layer | Stack |\n|-------|-------|\n| Frontend | Next.js 16 (App Router) |\n| Backend | Go (Chi router, sqlc, gorilla/websocket) |\n| Database | PostgreSQL 17 with pgvector |\n| Agent Runtime | Local daemon executing Claude Code, Codex, GitHub Copilot CLI, OpenClaw, OpenCode, Hermes, Gemini, Pi, Cursor Agent, Kimi, Kiro CLI, or Qoder CLI |\n\n## Development\n\nFor contributors working on the Multica codebase, see the [Contributing Guide](CONTRIBUTING.md).\n\n**Prerequisites:** [Node.js](https://nodejs.org/) v20+, [pnpm](https://pnpm.io/) v10.28+, [Go](https://go.dev/) v1.26+, [Docker](https://www.docker.com/)\n\n```bash\nmake dev\n```\n\n`make dev` auto-detects your environment (main checkout or worktree), creates the env file, installs dependencies, sets up the database, runs migrations, and starts all services.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the full development workflow, worktree support, testing, and troubleshooting.\n\nAn iOS mobile client lives in [`apps/mobile/`](apps/mobile/) — see its [README](apps/mobile/README.md) for how to build it onto your own iPhone.\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "runtime",
      "skill",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "medium",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "QuantumNous",
    "name": "new-api",
    "full_name": "QuantumNous/new-api",
    "url": "https://github.com/QuantumNous/new-api",
    "description": "A unified AI model hub for aggregation & distribution. It supports cross-converting various LLMs into OpenAI-compatible, Claude-compatible, or Gemini-compatible formats. A centralized gateway for personal and enterprise model management. 🍥",
    "language": "Go",
    "total_stars": 40230,
    "forks": 9219,
    "stars_this_period": 138,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "ai-gateway",
        "claude",
        "deepseek",
        "gemini",
        "newapi",
        "openai",
        "rerank"
      ],
      "license": "AGPL-3.0",
      "open_issues": 877,
      "created_at": "2023-11-10T19:33:36Z",
      "pushed_at": "2026-06-26T16:10:19Z",
      "homepage": "https://www.newapi.ai",
      "default_branch": "main",
      "forks": 9219,
      "watchers": 123,
      "archived": false,
      "size_kb": 48113
    },
    "readme_content": "<div align=\"center\">\n\n![new-api](/web/default/public/logo.png)\n\n# New API\n\n🍥 **Next-Generation LLM Gateway and AI Asset Management System**\n\n<p align=\"center\">\n  <a href=\"./README.zh_CN.md\">简体中文</a> |\n  <a href=\"./README.zh_TW.md\">繁體中文</a> |\n  <strong>English</strong> |\n  <a href=\"./README.fr.md\">Français</a> |\n  <a href=\"./README.ja.md\">日本語</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://raw.githubusercontent.com/Calcium-Ion/new-api/main/LICENSE\">\n    <img src=\"https://img.shields.io/github/license/Calcium-Ion/new-api?color=brightgreen\" alt=\"license\">\n  </a><!--\n  --><a href=\"https://github.com/Calcium-Ion/new-api/releases/latest\">\n    <img src=\"https://img.shields.io/github/v/release/Calcium-Ion/new-api?color=brightgreen&include_prereleases\" alt=\"release\">\n  </a><!--\n  --><a href=\"https://hub.docker.com/r/CalciumIon/new-api\">\n    <img src=\"https://img.shields.io/badge/docker-dockerHub-blue\" alt=\"docker\">\n  </a><!--\n  --><a href=\"https://goreportcard.com/report/github.com/Calcium-Ion/new-api\">\n    <img src=\"https://goreportcard.com/badge/github.com/Calcium-Ion/new-api\" alt=\"GoReportCard\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://trendshift.io/repositories/20180\" target=\"_blank\">\n    <img src=\"https://trendshift.io/api/badge/repositories/20180\" alt=\"QuantumNous%2Fnew-api | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/>\n  </a>\n  <br>\n  <a href=\"https://hellogithub.com/repository/QuantumNous/new-api\" target=\"_blank\">\n    <img src=\"https://api.hellogithub.com/v1/widgets/recommend.svg?rid=539ac4217e69431684ad4a0bab768811&claim_uid=tbFPfKIDHpc4TzR\" alt=\"Featured｜HelloGitHub\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" />\n  </a><!--\n  --><a href=\"https://www.producthunt.com/products/new-api/launches/new-api?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-new-api\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1047693&theme=light&t=1769577875005\" alt=\"New API - All-in-one AI asset management gateway. | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"#-quick-start\">Quick Start</a> •\n  <a href=\"#-key-features\">Key Features</a> •\n  <a href=\"#-deployment\">Deployment</a> •\n  <a href=\"#-documentation\">Documentation</a> •\n  <a href=\"#-help-support\">Help</a>\n</p>\n\n</div>\n\n## 📝 Project Description\n\n> [!IMPORTANT]\n> - This project is intended solely for lawful and authorized AI API gateway, organization-level authentication, multi-model management, usage analytics, cost accounting, and private deployment scenarios.\n> - Users must lawfully obtain upstream API keys, accounts, model services, and interface permissions, and must comply with upstream terms of service and applicable laws and regulations.\n> - Users should ensure their use complies with upstream terms of service and applicable laws and regulations.\n> - When providing generative AI services to the public, users should comply with applicable regulatory requirements and fulfill all filing, licensing, content safety, real-name verification, log retention, tax, and upstream authorization obligations required by their jurisdiction.\n\n---\n\n## 🤝 Trusted Partners\n\n<p align=\"center\">\n  <em>No particular order</em>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.cherry-ai.com/\" target=\"_blank\">\n    <img src=\"./docs/images/cherry-studio.png\" alt=\"Cherry Studio\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://github.com/iOfficeAI/AionUi/\" target=\"_blank\">\n    <img src=\"./docs/images/aionui.png\" alt=\"Aion UI\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://bda.pku.edu.cn/\" target=\"_blank\">\n    <img src=\"./docs/images/pku.png\" alt=\"Peking University\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://www.compshare.cn/?ytag=GPU_yy_gh_newapi\" target=\"_blank\">\n    <img src=\"./docs/images/ucloud.png\" alt=\"UCloud\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://www.aliyun.com/\" target=\"_blank\">\n    <img src=\"./docs/images/aliyun.png\" alt=\"Alibaba Cloud\" height=\"80\" />\n  </a><!--\n  --><a href=\"https://io.net/\" target=\"_blank\">\n    <img src=\"./docs/images/io-net.png\" alt=\"IO.NET\" height=\"80\" />\n  </a>\n</p>\n\n---\n\n## 🙏 Special Thanks\n\n<p align=\"center\">\n  <a href=\"https://www.jetbrains.com/?from=new-api\" target=\"_blank\">\n    <img src=\"https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.png\" alt=\"JetBrains Logo\" width=\"120\" />\n  </a>\n</p>\n\n<p align=\"center\">\n  <strong>Thanks to <a href=\"https://www.jetbrains.com/?from=new-api\">JetBrains</a> for providing free open-source development license for this project</strong>\n</p>\n\n---\n\n## 🚀 Quick Start\n\n### Using Docker Compose (Recommended)\n\n```bash\n# Clone the project\ngit clone https://github.com/QuantumNous/new-api.git\ncd new-api\n\n# Edit docker-compose.yml configuration\nnano docker-compose.yml\n\n# Start the service\ndocker-compose up -d\n```\n\n<details>\n<summary><strong>Using Docker Commands</strong></summary>\n\n```bash\n# Pull the latest image\ndocker pull calciumion/new-api:latest\n\n# Using SQLite (default)\ndocker run --name new-api -d --restart always \\\n  -p 3000:3000 \\\n  -e TZ=Asia/Shanghai \\\n  -v ./data:/data \\\n  calciumion/new-api:latest\n\n# Using MySQL\ndocker run --name new-api -d --restart always \\\n  -p 3000:3000 \\\n  -e SQL_DSN=\"root:123456@tcp(localhost:3306)/oneapi\" \\\n  -e TZ=Asia/Shanghai \\\n  -v ./data:/data \\\n  calciumion/new-api:latest\n```\n\n> **💡 Tip:** `-v ./data:/data` will save data in the `data` folder of the current directory, you can also change it to an absolute path like `-v /your/custom/path:/data`\n\n</details>\n\n---\n\n🎉 After deployment is complete, visit `http://localhost:3000` to start using!\n\n> [!WARNING]\n> When operating this project as a public generative AI service or API resale service, users should first complete all required filing, licensing, content safety, real-name verification, log retention, tax, payment, and upstream authorization obligations.\n\n📖 For more deployment methods, please refer to [Deployment Guide](https://docs.newapi.pro/en/docs/installation)\n\n---\n\n## 📚 Documentation\n\n<div align=\"center\">\n\n### 📖 [Official Documentation](https://docs.newapi.pro/en/docs) | [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/QuantumNous/new-api)\n\n</div>\n\n**Quick Navigation:**\n\n| Category | Link |\n|------|------|\n| 🚀 Deployment Guide | [Installation Documentation](https://docs.newapi.pro/en/docs/installation) |\n| ⚙️ Environment Configuration | [Environment Variables](https://docs.newapi.pro/en/docs/installation/config-maintenance/environment-variables) |\n| 📡 API Documentation | [API Documentation](https://docs.newapi.pro/en/docs/api) |\n| ❓ FAQ | [FAQ](https://docs.newapi.pro/en/docs/support/faq) |\n| 💬 Community Interaction | [Communication Channels](https://docs.newapi.pro/en/docs/support/community-interaction) |\n\n---\n\n## ✨ Key Features\n\n> For detailed features, please refer to [Features Introduction](https://docs.newapi.pro/en/docs/guide/wiki/basic-concepts/features-introduction)\n\n### 🎨 Core Functions\n\n| Feature | Description |\n|------|------|\n| 🎨 New UI | Modern user interface design |\n| 🌍 Multi-language | Supports Simplified Chinese, Traditional Chinese, English, French, Japanese |\n| 🔄 Data Compatibility | Fully compatible with the original One API database |\n| 📈 Data Dashboard | Visual console and statistical analysis |\n| 🔒 Permission Management | Token grouping, model restrictions, user management |\n\n### 💰 Authorized Usage Accounting and Billing\n\n- ✅ Internal top-up and quota allocation for lawful authorized scenarios (EPay, Stripe)\n- ✅ Organization-level per-request, usage-based, and cache-hit cost accounting\n- ✅ Cache billing statistics for OpenAI, Azure, DeepSeek, Claude, Qwen, and supported models\n- ✅ Flexible billing policies for internal management or authorized enterprise customers\n\n### 🔐 Authorization and Security\n\n- 😈 Discord authorization login\n- 🤖 LinuxDO authorization login\n- 📱 Telegram authorization login\n- 🔑 OIDC unified authentication\n- 🔍 Key quota query usage (with [new-api-key-tool](https://github.com/Calcium-Ion/new-api-key-tool))\n\n### 🚀 Advanced Features\n\n**API Format Support:**\n- ⚡ [OpenAI Responses](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/create-response)\n- ⚡ [OpenAI Realtime API](https://docs.newapi.pro/en/docs/api/ai-model/realtime/create-realtime-session) (including Azure)\n- ⚡ [Claude Messages](https://docs.newapi.pro/en/docs/api/ai-model/chat/create-message)\n- ⚡ [Google Gemini](https://doc.newapi.pro/en/api/google-gemini-chat)\n- 🔄 [Rerank Models](https://docs.newapi.pro/en/docs/api/ai-model/rerank/create-rerank) (Cohere, Jina)\n\n**Intelligent Routing:**\n- ⚖️ Channel weighted random\n- 🔄 Automatic retry on failure\n- 🚦 User-level model rate limiting\n\n**Format Conversion:**\n- 🔄 **OpenAI Compatible ⇄ Claude Messages**\n- 🔄 **OpenAI Compatible → Google Gemini**\n- 🔄 **Google Gemini → OpenAI Compatible** - Text only, function calling not supported yet\n- 🚧 **OpenAI Compatible ⇄ OpenAI Responses** - In development\n- 🔄 **Thinking-to-content functionality**\n\n**Reasoning Effort Support:**\n\n<details>\n<summary>View detailed configuration</summary>\n\n**OpenAI series models:**\n- `o3-mini-high` - High reasoning effort\n- `o3-mini-medium` - Medium reasoning effort\n- `o3-mini-low` - Low reasoning effort\n- `gpt-5-high` - High reasoning effort\n- `gpt-5-medium` - Medium reasoning effort\n- `gpt-5-low` - Low reasoning effort\n\n**Claude thinking models:**\n- `claude-3-7-sonnet-20250219-thinking` - Enable thinking mode\n\n**Google Gemini series models:**\n- `gemini-2.5-flash-thinking` - Enable thinking mode\n- `gemini-2.5-flash-nothinking` - Disable thinking mode\n- `gemini-2.5-pro-thinking` - Enable thinking mode\n- `gemini-2.5-pro-thinking-128` - Enable thinking mode with thinking budget of 128 tokens\n- You can also append `-low`, `-medium`, or `-high` to any Gemini model name to request the corresponding reasoning effort (no extra thinking-budget suffix needed).\n\n</details>\n\n---\n\n## 🤖 Model Support\n\n> For details, please refer to [API Documentation - Gateway Interface](https://docs.newapi.pro/en/docs/api)\n\n| Model Type | Description | Documentation |\n|---------|------|------|\n| 🤖 OpenAI-Compatible | OpenAI compatible models | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createchatcompletion) |\n| 🤖 OpenAI Responses | OpenAI Responses format | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createresponse) |\n| 🎨 Midjourney-Proxy | [Midjourney-Proxy(Plus)](https://github.com/novicezk/midjourney-proxy) | [Documentation](https://doc.newapi.pro/api/midjourney-proxy-image) |\n| 🎵 Suno-API | [Suno API](https://github.com/Suno-API/Suno-API) | [Documentation](https://doc.newapi.pro/api/suno-music) |\n| 🔄 Rerank | Cohere, Jina | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/rerank/creatererank) |\n| 💬 Claude | Messages format | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/chat/createmessage) |\n| 🌐 Gemini | Google Gemini format | [Documentation](https://docs.newapi.pro/en/docs/api/ai-model/chat/gemini/geminirelayv1beta) |\n| 🔧 Dify | ChatFlow mode | - |\n| 🎯 Custom upstream | Supports configuring legally authorized upstream endpoints | - |\n\n### 📡 Supported Interfaces\n\n<details>\n<summary>View complete interface list</summary>\n\n- [Chat Interface (Chat Completions)](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createchatcompletion)\n- [Response Interface (Responses)](https://docs.newapi.pro/en/docs/api/ai-model/chat/openai/createresponse)\n- [Image Interface (Image)](https://docs.newapi.pro/en/docs/api/ai-model/images/openai/post-v1-images-generations)\n- [Audio Interface (Audio)](https://docs.newapi.pro/en/docs/api/ai-model/audio/openai/create-transcription)\n- [Video Interface (Video)](https://docs.newapi.pro/en/docs/api/ai-model/audio/openai/createspeech)\n- [Embedding Interface (Embeddings)](https://docs.newapi.pro/en/docs/api/ai-model/emb",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/QuantumNous/new-api\n\n// +heroku goVersion go1.18\ngo 1.25.1\n\nrequire (\n\tgithub.com/Calcium-Ion/go-epay v0.0.4\n\tgithub.com/abema/go-mp4 v1.4.1\n\tgithub.com/andybalholm/brotli v1.1.1\n\tgithub.com/anknown/ahocorasick v0.0.0-20190904063843-d75dbd5169c0\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.5\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.10\n\tgithub.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.50.4\n\tgithub.com/aws/smithy-go v1.24.2\n\tgithub.com/bytedance/gopkg v0.1.3\n\tgithub.com/gin-contrib/cors v1.7.2\n\tgithub.com/gin-contrib/gzip v0.0.6\n\tgithub.com/gin-contrib/sessions v0.0.5\n\tgithub.com/gin-contrib/static v0.0.1\n\tgithub.com/gin-gonic/gin v1.9.1\n\tgithub.com/glebarez/sqlite v1.9.0\n\tgithub.com/go-audio/aiff v1.1.0\n\tgithub.com/go-audio/wav v1.1.0\n\tgithub.com/go-playground/validator/v10 v10.20.0\n\tgithub.com/go-redis/redis/v8 v8.11.5\n\tgithub.com/go-webauthn/webauthn v0.14.0\n\tgithub.com/golang-jwt/jwt/v5 v5.3.0\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gorilla/websocket v1.5.0\n\tgithub.com/grafana/pyroscope-go v1.2.7\n\tgithub.com/jfreymuth/oggvorbis v1.0.5\n\tgithub.com/jinzhu/copier v0.4.0\n\tgithub.com/joho/godotenv v1.5.1\n\tgithub.com/mewkiz/flac v1.0.13\n\tgithub.com/nicksnyder/go-i18n/v2 v2.6.1\n\tgithub.com/pkg/errors v0.9.1\n\tgithub.com/pquerna/otp v1.5.0\n\tgithub.com/samber/hot v0.11.0\n\tgithub.com/samber/lo v1.52.0\n\tgithub.com/shirou/gopsutil v3.21.11+incompatible\n\tgithub.com/shopspring/decimal v1.4.0\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/stripe/stripe-go/v81 v81.4.0\n\tgithub.com/tcolgate/mp3 v0.0.0-20170426193717-e79c5a46d300\n\tgithub.com/thanhpk/randstr v1.0.6\n\tgithub.com/tidwall/gjson v1.18.0\n\tgithub.com/tidwall/sjson v1.2.5\n\tgithub.com/tiktoken-go/tokenizer v0.6.2\n\tgithub.com/waffo-com/waffo-go v1.3.2\n\tgithub.com/yapingcat/gomedia v0.0.0-20240906162731-17feea57090c\n\tgolang.org/x/crypto v0.48.0\n\tgolang.org/x/image v0.38.0\n\tgolang.org/x/net v0.50.0\n\tgolang.org/x/sync v0.20.0\n\tgolang.org/x/sys v0.41.0\n\tgolang.org/x/text v0.35.0\n\tgopkg.in/yaml.v3 v3.0.1\n\tgorm.io/driver/mysql v1.4.3\n\tgorm.io/driver/postgres v1.5.2\n\tgorm.io/gorm v1.25.2\n)\n\nrequire (\n\tgithub.com/waffo-com/waffo-pancake-sdk-go v0.3.1\n\tgorm.io/driver/clickhouse v0.6.0\n)\n\nrequire (\n\tgithub.com/ClickHouse/ch-go v0.65.0 // indirect\n\tgithub.com/ClickHouse/clickhouse-go/v2 v2.32.0 // indirect\n\tgithub.com/go-faster/city v1.0.1 // indirect\n\tgithub.com/go-faster/errors v0.7.1 // indirect\n\tgithub.com/hashicorp/go-version v1.7.0 // indirect\n\tgithub.com/paulmach/orb v0.11.1 // indirect\n\tgithub.com/pierrec/lz4/v4 v4.1.22 // indirect\n\tgithub.com/rogpeppe/go-internal v1.13.1 // indirect\n\tgithub.com/segmentio/asm v1.2.0 // indirect\n\tgo.opentelemetry.io/otel v1.34.0 // indirect\n\tgo.opentelemetry.io/otel/trace v1.34.0 // indirect\n)\n\nrequire github.com/Azure/go-ntlmssp v0.1.1\n\nrequire (\n\tgithub.com/DmitriyVTitov/size v1.5.0 // indirect\n\tgithub.com/anknown/darts v0.0.0-20151216065714-83ff685239e6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/boombuler/barcode v1.1.0 // indirect\n\tgithub.com/bytedance/sonic v1.14.1 // indirect\n\tgithub.com/bytedance/sonic/loader v0.3.0 // indirect\n\tgithub.com/cespare/xxhash/v2 v2.3.0 // indirect\n\tgithub.com/cloudwego/base64x v0.1.6 // indirect\n\tgithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect\n\tgithub.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect\n\tgithub.com/dlclark/regexp2 v1.11.5 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/expr-lang/expr v1.17.8\n\tgithub.com/fxamacker/cbor/v2 v2.9.0 // indirect\n\tgithub.com/gabriel-vasile/mimetype v1.4.3 // indirect\n\tgithub.com/gin-contrib/sse v0.1.0 // indirect\n\tgithub.com/glebarez/go-sqlite v1.21.2 // indirect\n\tgithub.com/go-audio/audio v1.0.0 // indirect\n\tgithub.com/go-audio/riff v1.0.0 // indirect\n\tgithub.com/go-ole/go-ole v1.2.6 // indirect\n\tgithub.com/go-playground/locales v0.14.1 // indirect\n\tgithub.com/go-playground/universal-translator v0.18.1 // indirect\n\tgithub.com/go-sql-driver/mysql v1.7.0 // indirect\n\tgithub.com/go-webauthn/x v0.1.25 // indirect\n\tgithub.com/goccy/go-json v0.10.2 // indirect\n\tgithub.com/google/go-tpm v0.9.5 // indirect\n\tgithub.com/gorilla/context v1.1.1 // indirect\n\tgithub.com/gorilla/securecookie v1.1.1 // indirect\n\tgithub.com/gorilla/sessions v1.2.1 // indirect\n\tgithub.com/grafana/pyroscope-go/godeltaprof v0.1.9 // indirect\n\tgithub.com/icza/bitio v1.1.0 // indirect\n\tgithub.com/jackc/pgpassfile v1.0.0 // indirect\n\tgithub.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect\n\tgithub.com/jackc/pgx/v5 v5.9.2 // indirect\n\tgithub.com/jackc/puddle/v2 v2.2.2 // indirect\n\tgithub.com/jfreymuth/vorbis v1.0.2 // indirect\n\tgithub.com/jinzhu/inflection v1.0.0 // indirect\n\tgithub.com/jinzhu/now v1.1.5 // indirect\n\tgithub.com/json-iterator",
    "strategic_keywords": [
      "runtime",
      "llm"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 16,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 86
    },
    "strategic_score": 86
  },
  {
    "owner": "ripienaar",
    "name": "free-for-dev",
    "full_name": "ripienaar/free-for-dev",
    "url": "https://github.com/ripienaar/free-for-dev",
    "description": "A list of SaaS, PaaS and IaaS offerings that have free tiers of interest to devops and infradev",
    "language": "HTML",
    "total_stars": 123697,
    "forks": 13050,
    "stars_this_period": 137,
    "source_slice": "all",
    "source_slices": [
      "all"
    ],
    "metadata": {
      "topics": [
        "awesome-list",
        "free-for-developers"
      ],
      "license": "NOASSERTION",
      "open_issues": 12,
      "created_at": "2015-03-18T21:06:26Z",
      "pushed_at": "2026-06-24T12:10:02Z",
      "homepage": "https://free-for.dev/",
      "default_branch": "master",
      "forks": 13050,
      "watchers": 1752,
      "archived": false,
      "size_kb": 10255
    },
    "readme_content": "# free-for.dev\n\nDevelopers and Open Source authors now have many services offering free tiers, but finding them all takes time to make informed decisions.\n\nThis is a list of software (SaaS, PaaS, IaaS, etc.) and other offerings with free developer tiers.\n\nThe scope of this particular list is limited to things that infrastructure developers (System Administrator, DevOps Practitioners, etc.) are likely to find useful. We love all the free services out there, but it would be good to keep it on topic. It's a grey line sometimes, so this is opinionated; please don't feel offended if I don't accept your contribution.\n\nThis list results from Pull Requests, reviews, ideas, and work done by 1600+ people. You can also help by sending [Pull Requests](https://github.com/ripienaar/free-for-dev) to add more services or remove ones whose offerings have changed or been retired.\n\n[![Track Awesome List](https://www.trackawesomelist.com/badge.svg)](https://www.trackawesomelist.com/ripienaar/free-for-dev)\n\n**NOTE**: This list is only for as-a-Service offerings, not for self-hosted software. To be eligible, a service must offer a free tier, not just a free trial. The free tier must be for at least a year if it is time-bucketed. We also consider the free tier from a security perspective, so SSO is fine, but I will not accept services that restrict TLS to paid-only tiers.\n\n# Table of Contents\n\n  * [Major Cloud Providers' Always-Free Limits](#major-cloud-providers)\n  * [Cloud management solutions](#cloud-management-solutions)\n  * [Analytics, Events, and Statistics](#analytics-events-and-statistics)\n  * [APIs, Data and ML](#apis-data-and-ml)\n  * [Artifact Repos](#artifact-repos)\n  * [BaaS](#baas)\n  * [Low-code Platform](#low-code-platform)\n  * [CDN and Protection](#cdn-and-protection)\n  * [CI and CD](#ci-and-cd)\n  * [CMS](#cms)\n  * [Code Generation](#code-generation)\n  * [Code Quality](#code-quality)\n  * [Code Search and Browsing](#code-search-and-browsing)\n  * [Crash and Exception Handling](#crash-and-exception-handling)\n  * [Data Visualization on Maps](#data-visualization-on-maps)\n  * [Managed Data Services](#managed-data-services)\n  * [Design and UI](#design-and-ui)\n  * [Dev Blogging Sites](#dev-blogging-sites)\n  * [DNS](#dns)\n  * [Docker Related](#docker-related)\n  * [Domain](#domain)\n  * [Education and Career Development](#education-and-career-development)\n  * [Email](#email)\n  * [Feature Toggles Management Platforms](#feature-toggles-management-platforms)\n  * [Font](#font)\n  * [Forms](#forms)\n  * [Generative AI](#generative-ai)\n  * [IaaS](#iaas)\n  * [IDE and Code Editing](#ide-and-code-editing)\n  * [International Mobile Number Verification API and SDK](#international-mobile-number-verification-api-and-sdk)\n  * [Issue Tracking and Project Management](#issue-tracking-and-project-management)\n  * [Log Management](#log-management)\n  * [Mobile App Distribution and Feedback](#mobile-app-distribution-and-feedback)\n  * [Management Systems](#management-system)\n  * [Messaging and Streaming](#messaging-and-streaming)\n  * [Miscellaneous](#miscellaneous)\n  * [Monitoring](#monitoring)\n  * [PaaS](#paas)\n  * [Package Build System](#package-build-system)\n  * [Payment and Billing Integration](#payment-and-billing-integration)\n  * [Privacy Management](#privacy-management)\n  * [Screenshot APIs](#screenshot-apis)\n  * [Flutter Related and Building IOS Apps without Mac](#flutter-related-and-building-ios-apps-without-mac)\n  * [Search](#search)\n  * [Security and PKI](#security-and-pki)\n  * [Authentication, Authorization, and User Management](#authentication-authorization-and-user-management)\n  * [Source Code Repos](#source-code-repos)\n  * [Storage and Media Processing](#storage-and-media-processing)\n  * [Tunneling, WebRTC, Web Socket Servers and Other Routers](#tunneling-webrtc-web-socket-servers-and-other-routers)\n  * [Testing](#testing)\n  * [Tools for Teams and Collaboration](#tools-for-teams-and-collaboration)\n  * [Translation Management](#translation-management)\n  * [Visitor Session Recording](#visitor-session-recording)\n  * [Web Hosting](#web-hosting)\n  * [Commenting Platforms](#commenting-platforms)\n  * [Browser based hardware emulation](#browser-based-hardware-emulation-written-in-javascript)\n  * [Remote Desktop Tools](#remote-desktop-tools)\n  * [Other Free Resources](#other-free-resources)\n\n## Major Cloud Providers\n\n  * [Google Cloud Platform](https://cloud.google.com)\n    * App Engine - 28 frontend instance hours per day, nine backend instance hours per day\n    * Cloud Firestore - 1GB storage, 50,000 reads, 20,000 writes, 20,000 deletes per day\n    * Compute Engine - 1 non-preemptible e2-micro, 30GB HDD, 5GB snapshot storage (restricted to certain regions), 1 GB network egress from North America to all region destinations (excluding China and Australia) per month\n    * Cloud Storage - 5GB, 1GB network egress\n    * Cloud Shell - Web-based Linux shell/primary IDE with 5GB of persistent storage. 60 hours limit per week\n    * Cloud Pub/Sub - 10GB of messages per month\n    * Cloud Functions - 2 million invocations per month (includes both background and HTTP invocations)\n    * Cloud Run - 2 million requests per month, 360,000 GB-seconds memory, 180,000 vCPU-seconds of compute time, 1 GB network egress from North America per month\n    * Google Kubernetes Engine - No cluster management fee for one zonal cluster. Each user node is charged at standard Compute Engine pricing\n    * BigQuery - 1 TB of querying per month, 10 GB of storage each month\n    * Cloud Build - 120 build-minutes per day\n    * [Google Colab](https://colab.research.google.com/) - Free Jupyter Notebooks development environment.\n    * [Kaggle](https://www.kaggle.com/) - Jupyter Notebooks with 4 CPU cores and 30 GB RAM computational environment without any weekly usage limits. With Phone number verification - 1 Nvidia Tesla P100 GPU or 2x Nvidia Tesla T4 GPU can be added with usage limit of 30 GPU hours/week for free. With Identity verification - 1 TPU v3-8 with 96 CPU cores and 330 GB RAM is available with usage limit of 20 hours/week for free. Check [Technical Specifications](https://www.kaggle.com/docs/notebooks#technical-specifications) for more details.\n    * Full, detailed list - https://cloud.google.com/free\n\n  * [Amazon Web Services](https://aws.amazon.com)\n    * [CloudFront](https://aws.amazon.com/cloudfront/) - 1TB egress per month and 2M Function invocations per month\n    * [CloudWatch](https://aws.amazon.com/cloudwatch/) - 10 custom metrics and ten alarms\n    * [CodeBuild](https://aws.amazon.com/codebuild/) - 100min of build time per month\n    * [CodeCommit](https://aws.amazon.com/codecommit/) - 5 active users,50GB storage, and 10000 requests per month\n    * [CodePipeline](https://aws.amazon.com/codepipeline/) - 1 active pipeline per month\n    * [DynamoDB](https://aws.amazon.com/dynamodb/) - 25GB NoSQL DB\n    * [EC2](https://aws.amazon.com/ec2/) - 750 hours per month of t2.micro or t3.micro(12mo). 100GB egress per month\n    * [EBS](https://aws.amazon.com/ebs/) - 30GB per month of General Purpose (SSD) or Magnetic(12mo)\n    * [Elastic Load Balancing](https://aws.amazon.com/elasticloadbalancing/) - 750 hours per month(12mo)\n    * [RDS](https://aws.amazon.com/rds/) - 750 hours per month of db.t2.micro, db.t3.micro, or db.t4g.micro, 20GB of General Purpose (SSD) storage, 20GB of storage backups(12 mo)\n    * [S3](https://aws.amazon.com/s3/) - 5GB Standard object storage, 20K Get requests and 2K Put requests(12 mo)\n    * [Glacier](https://aws.amazon.com/glacier/) - 10GB long-term object storage\n    * [Lambda](https://aws.amazon.com/lambda/) - 1 million requests per month\n    * [SNS](https://aws.amazon.com/sns/) - 1 million publishes per month\n    * [SES](https://aws.amazon.com/ses/) - 3.000 messages per month (12mo)\n    * [SQS](https://aws.amazon.com/sqs/) - 1 million messaging queue requests\n    * Full, detailed list - https://aws.amazon.com/free/\n\n  * [Microsoft Azure](https://azure.microsoft.com)\n    * [Virtual Machines](https://azure.microsoft.com/services/virtual-machines/) - 1 B1S Linux VM, 1 B1S Windows VM (12mo)\n    * [App Service](https://azure.microsoft.com/services/app-service/) - 10 web, mobile, or API apps (60 CPU minutes/day)\n    * [Functions](https://azure.microsoft.com/services/functions/) - 1 million requests per month\n    * [DevTest Labs](https://azure.microsoft.com/services/devtest-lab/) - Enable fast, easy, and lean dev-test environments\n    * [Active Directory](https://azure.microsoft.com/services/active-directory/) - 500,000 objects\n    * [Active Directory B2C](https://azure.microsoft.com/services/active-directory/external-identities/b2c/) - 50,000 monthly stored users\n    * [Azure DevOps](https://azure.microsoft.com/services/devops/) - 5 active users, unlimited private Git repos\n    * [Azure Pipelines](https://azure.microsoft.com/services/devops/pipelines/) - 10 free parallel jobs with unlimited minutes for open source for Linux, macOS, and Windows\n    * [Microsoft IoT Hub](https://azure.microsoft.com/services/iot-hub/) - 8,000 messages per day\n    * [Load Balancer](https://azure.microsoft.com/services/load-balancer/) - 1 free public load-balanced IP (VIP)\n    * [Notification Hubs](https://azure.microsoft.com/services/notification-hubs/) - 1 million push notifications\n    * [Bandwidth](https://azure.microsoft.com/pricing/details/bandwidth/) - 15GB Inbound(12mo) & 5GB egress per month\n    * [Cosmos DB](https://azure.microsoft.com/services/cosmos-db/) - 25GB storage and 1000 RUs of provisioned throughput\n    * [Static Web Apps](https://azure.microsoft.com/pricing/details/app-service/static/) - Build, deploy, and host static apps and serverless functions with free SSL, Authentication/Authorization, and custom domains\n    * [Storage](https://azure.microsoft.com/services/storage/) - 5GB LRS File or Blob storage (12mo)\n    * [Cognitive Services](https://azure.microsoft.com/services/cognitive-services/) - AI/ML APIs (Computer Vision, Translator, Face detection, Bots, etc) with free tier including limited transactions\n    * [Cognitive Search](https://azure.microsoft.com/services/search/#features) - AI-based search and indexation service, free for 10,000 documents\n    * [Azure Kubernetes Service](https://azure.microsoft.com/services/kubernetes-service/) - Managed Kubernetes service, free cluster management\n    * [Event Grid](https://azure.microsoft.com/services/event-grid/) - 100K ops/month\n    * Full, detailed list - https://azure.microsoft.com/free/\n\n  * [Oracle Cloud](https://www.oracle.com/cloud/)\n    * Compute\n       - 2 AMD-based Compute VMs with 1/8 OCPU and 1 GB memory each\n       - 2 Arm-based Ampere A1 cores and 12 GB of memory usable as one VM or up to 2 VMs\n       - Instances will be reclaimed when [deemed idle](https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier_topic-Always_Free_Resources.htm#compute__idleinstances)\n    * Block Volume - 2 volumes, 200 GB total (used for compute)\n    * Object Storage - 10 GB\n    * Load balancer - 1 instance with 10 Mbps\n    * Databases - 2 DBs, 20 GB each\n    * Monitoring - 500 million ingestion data points, 1 billion retrieval datapoints\n    * Bandwidth - 10 TB egress per month, speed limited to 50 Mbps on x64-based VM, 500 Mbps * core count on ARM-based VM\n    * Public IP - 2 IPv4 for VMs, 1 IPv4 for load balancer\n    * Notifications - 1 million delivery options per month, 1000 emails sent per month\n    * Full, detailed list - https://www.oracle.com/cloud/free/\n\n  * [IBM Cloud](https://www.ibm.com/cloud/free/)\n    * Cloudant database - 1 GB of data storage\n    * Db2 database - 100MB of data storage\n    * API Connect - 50,000 API calls per month\n    * Availability Monitoring - 3 million data points per month\n    * Log Analysis - 500MB of daily log\n    * Full, detailed list - https://www.ibm.com/cloud/free/\n\n  * [Cloudflare](https://www.cloudflare.com/)\n    * [Application Services](https://www.cloudflare.com/plans/) - Free DNS for an unlimited number of domains, DDoS Protec",
    "strategic_keywords": [
      "rag"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 8,
      "novelty": 4,
      "productize": 14,
      "adoption": 8,
      "relation": 7,
      "risk_signal": 4,
      "total": 60
    },
    "strategic_score": 60
  },
  {
    "owner": "vercel-labs",
    "name": "agent-browser",
    "full_name": "vercel-labs/agent-browser",
    "url": "https://github.com/vercel-labs/agent-browser",
    "description": "Browser automation CLI for AI agents",
    "language": "Rust",
    "total_stars": 37263,
    "forks": 2385,
    "stars_this_period": 118,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [],
      "license": "Apache-2.0",
      "open_issues": 542,
      "created_at": "2026-01-11T05:38:15Z",
      "pushed_at": "2026-06-26T17:22:26Z",
      "homepage": "https://agent-browser.dev",
      "default_branch": "main",
      "forks": 2385,
      "watchers": 97,
      "archived": false,
      "size_kb": 18243
    },
    "readme_content": "# agent-browser\n\nBrowser automation CLI for AI agents. Fast native Rust CLI.\n\n[![skills.sh](https://skills.sh/b/vercel-labs/agent-browser)](https://skills.sh/vercel-labs/agent-browser)\n\n## Installation\n\n### Global Installation (recommended)\n\nInstalls the native Rust binary:\n\n```bash\nnpm install -g agent-browser\nagent-browser install  # Download Chrome from Chrome for Testing (first time only)\n```\n\n### Project Installation (local dependency)\n\nFor projects that want to pin the version in `package.json`:\n\n```bash\nnpm install agent-browser\nagent-browser install\n```\n\nThen use via `package.json` scripts or by invoking `agent-browser` directly.\n\n### Homebrew (macOS)\n\n```bash\nbrew install agent-browser\nagent-browser install  # Download Chrome from Chrome for Testing (first time only)\n```\n\n### Cargo (Rust)\n\n```bash\ncargo install agent-browser\nagent-browser install  # Download Chrome from Chrome for Testing (first time only)\n```\n\n### From Source\n\nRequires Node.js 24+, pnpm 11+, and Rust.\n\n```bash\ngit clone https://github.com/vercel-labs/agent-browser\ncd agent-browser\npnpm install\npnpm build\npnpm build:native   # Requires Rust (https://rustup.rs)\npnpm link --global  # Makes agent-browser available globally\nagent-browser install\n```\n\n### Linux Dependencies\n\nOn Linux, install system dependencies:\n\n```bash\nagent-browser install --with-deps\n```\n\nThis exits nonzero if the package manager cannot install every required browser library.\n\n### Updating\n\nUpgrade to the latest version:\n\n```bash\nagent-browser upgrade\n```\n\nDetects your installation method (npm, Homebrew, or Cargo) and runs the appropriate update command automatically.\n\n### Requirements\n\n- **Chrome** - Run `agent-browser install` to download Chrome from [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing/) (Google's official automation channel). Existing Chrome, Brave, Playwright, and Puppeteer installations are detected automatically. No Playwright or Node.js required for the daemon.\n- **Node.js 24+ and pnpm 11+** - Only needed when building from source.\n- **Rust** - Only needed when building from source (see From Source above).\n\n## Quick Start\n\n```bash\nagent-browser open example.com\nagent-browser snapshot                    # Get accessibility tree with refs\nagent-browser click @e2                   # Click by ref from snapshot\nagent-browser fill @e3 \"test@example.com\" # Fill by ref\nagent-browser get text @e1                # Get text by ref\nagent-browser screenshot page.png\nagent-browser close\n```\n\nClicks fail early when another element covers the target's click point, for example a consent banner or modal. Dismiss or interact with the reported covering element, then take a fresh snapshot before retrying the original ref.\n\nHeadless Chromium screenshots hide native scrollbars for consistent image output. Pass `--hide-scrollbars false` when launching to keep native scrollbars visible.\n\n### Traditional Selectors (also supported)\n\n```bash\nagent-browser click \"#submit\"\nagent-browser fill \"#email\" \"test@example.com\"\nagent-browser find role button click --name \"Submit\"\n```\n\n## Commands\n\n### Core Commands\n\n```bash\nagent-browser open                    # Launch browser (no navigation); stays on about:blank\nagent-browser open <url>              # Launch + navigate to URL (aliases: goto, navigate)\nagent-browser read [url]              # Fetch agent-readable text, or read rendered active-tab DOM\nagent-browser click <sel>             # Click element (--new-tab to open in new tab)\nagent-browser dblclick <sel>          # Double-click element\nagent-browser focus <sel>             # Focus element\nagent-browser type <sel> <text>       # Type into element\nagent-browser fill <sel> <text>       # Clear and fill\nagent-browser press <key>             # Press key (Enter, Tab, Control+a) (alias: key)\nagent-browser keyboard type <text>    # Type with real keystrokes (no selector, current focus)\nagent-browser keyboard inserttext <text>  # Insert text without key events (no selector)\nagent-browser keydown <key>           # Hold key down\nagent-browser keyup <key>             # Release key\nagent-browser hover <sel>             # Hover element\nagent-browser select <sel> <val>      # Select dropdown option\nagent-browser check <sel>             # Check checkbox\nagent-browser uncheck <sel>           # Uncheck checkbox\nagent-browser scroll <dir> [px]       # Scroll (up/down/left/right, --selector <sel>)\nagent-browser scrollintoview <sel>    # Scroll element into view (alias: scrollinto)\nagent-browser drag <src> <tgt>        # Drag and drop\nagent-browser upload <sel> <files>    # Upload files\nagent-browser screenshot [path]       # Take screenshot (--full for full page, saves to a temporary directory if no path)\nagent-browser screenshot --annotate   # Annotated screenshot with numbered element labels\nagent-browser screenshot --screenshot-dir ./shots    # Save to custom directory\nagent-browser screenshot --screenshot-format jpeg --screenshot-quality 80\nagent-browser pdf <path>              # Save as PDF\nagent-browser snapshot                # Accessibility tree with refs (best for AI)\nagent-browser eval <js>               # Run JavaScript (-b for base64, --stdin for piped input)\nagent-browser connect <port>          # Connect to browser via CDP\nagent-browser stream enable [--port <port>]  # Start runtime WebSocket streaming\nagent-browser stream status           # Show runtime streaming state and bound port\nagent-browser stream disable          # Stop runtime WebSocket streaming\nagent-browser close                   # Close browser (aliases: quit, exit)\nagent-browser close --all             # Close all active sessions\nagent-browser chat \"<instruction>\"    # AI chat: natural language browser control (single-shot)\nagent-browser chat                    # AI chat: interactive REPL mode\n```\n\n### Get Info\n\n```bash\nagent-browser get text <sel>          # Get text content\nagent-browser get html <sel>          # Get innerHTML\nagent-browser get value <sel>         # Get input value\nagent-browser get attr <sel> <attr>   # Get attribute\nagent-browser get title               # Get page title\nagent-browser get url                 # Get current URL\nagent-browser get cdp-url             # Get CDP WebSocket URL (for DevTools, debugging)\nagent-browser get count <sel>         # Count matching elements\nagent-browser get box <sel>           # Get bounding box\nagent-browser get styles <sel>        # Get computed styles\n```\n\n### Read Agent-Friendly Text\n\n```bash\nagent-browser read\nagent-browser read https://example.com/article\nagent-browser read https://example.com/article --filter overview\nagent-browser read https://example.com/article --outline\nagent-browser read https://docs.example.com --llms index --filter auth\nagent-browser read https://docs.example.com --llms full --filter auth\nagent-browser read example.com/article --require-md\nagent-browser read https://example.com/article --json\n```\n\n`read` fetches a URL without launching Chrome. Omit the URL to read the rendered DOM of the active tab in the current browser session, including browser auth state and client-side updates. Explicit URL reads send `Accept: text/markdown` by default, try the same URL with `.md` appended when the first response is not markdown, walk ancestor paths toward `/` to find the nearest `llms.txt` for a matching docs link, print markdown or plain text when available, and fall back to readable text extracted from HTML. `--llms` and `--require-md` with no URL use the active tab URL because they depend on HTTP resources. `read` does not read `llms-full.txt` unless you ask for it.\n\nOptions: `--raw` prints the response body without HTML extraction, `--require-md` fails unless the server returns `Content-Type: text/markdown`, `--outline` prints a compact heading outline for one page, `--llms index` prints a compact nearest-ancestor `llms.txt` link list, `--llms full` reads the nearest-ancestor `llms-full.txt`, `--filter <text>` narrows page sections, llms links/sections, or outline headings, and `--timeout <ms>` changes the request timeout. Global safeguards such as `--allowed-domains`, `--content-boundaries`, and `--max-output` also apply to read fetches and output.\n\n### Check State\n\n```bash\nagent-browser is visible <sel>        # Check if visible\nagent-browser is enabled <sel>        # Check if enabled\nagent-browser is checked <sel>        # Check if checked\n```\n\n### Find Elements (Semantic Locators)\n\n```bash\nagent-browser find role <role> <action> [value]       # By ARIA role\nagent-browser find text <text> <action>               # By text content\nagent-browser find label <label> <action> [value]     # By label\nagent-browser find placeholder <ph> <action> [value]  # By placeholder\nagent-browser find alt <text> <action>                # By alt text\nagent-browser find title <text> <action>              # By title attr\nagent-browser find testid <id> <action> [value]       # By data-testid\nagent-browser find first <sel> <action> [value]       # First match\nagent-browser find last <sel> <action> [value]        # Last match\nagent-browser find nth <n> <sel> <action> [value]     # Nth match\n```\n\n**Actions:** `click`, `fill`, `type`, `hover`, `focus`, `check`, `uncheck`, `text`\n\n**Options:** `--name <name>` (filter role by accessible name), `--exact` (require exact text match)\n\n**Examples:**\n\n```bash\nagent-browser find role button click --name \"Submit\"\nagent-browser find text \"Sign In\" click\nagent-browser find label \"Email\" fill \"test@test.com\"\nagent-browser find first \".item\" click\nagent-browser find nth 2 \"a\" text\n```\n\n### Wait\n\n```bash\nagent-browser wait <selector>         # Wait for element to be visible\nagent-browser wait <ms>               # Wait for time (milliseconds)\nagent-browser wait --text \"Welcome\"   # Wait for text to appear (substring match)\nagent-browser wait --url \"**/dash\"    # Wait for URL pattern\nagent-browser wait --load networkidle # Wait for load state\nagent-browser wait --fn \"window.ready === true\"  # Wait for JS condition\n\n# Wait for text/element to disappear\nagent-browser wait --fn \"!document.body.innerText.includes('Loading...')\"\nagent-browser wait \"#spinner\" --state hidden\n```\n\n**Load states:** `load`, `domcontentloaded`, `networkidle`\n\n### Batch Execution\n\nExecute multiple commands in a single invocation. Commands can be passed as quoted arguments or piped as JSON via stdin. This avoids per-command process startup overhead when running multi-step workflows.\n\n```bash\n# Argument mode: each quoted argument is a full command\nagent-browser batch \"open https://example.com\" \"snapshot -i\" \"screenshot\"\n\n# With --bail to stop on first error\nagent-browser batch --bail \"open https://example.com\" \"click @e1\" \"screenshot\"\n\n# Stdin mode: pipe commands as JSON\necho '[\n  [\"open\", \"https://example.com\"],\n  [\"snapshot\", \"-i\"],\n  [\"click\", \"@e1\"],\n  [\"screenshot\", \"result.png\"]\n]' | agent-browser batch --json\n```\n\n### Clipboard\n\n```bash\nagent-browser clipboard read                      # Read text from clipboard\nagent-browser clipboard write \"Hello, World!\"     # Write text to clipboard\nagent-browser clipboard copy                      # Copy current selection (Ctrl+C)\nagent-browser clipboard paste                     # Paste from clipboard (Ctrl+V)\n```\n\n### Mouse Control\n\n```bash\nagent-browser mouse move <x> <y>      # Move mouse\nagent-browser mouse down [button]     # Press button (left/right/middle)\nagent-browser mouse up [button]       # Release button\nagent-browser mouse wheel <dy> [dx]   # Scroll wheel\n```\n\n### Browser Settings\n\n```bash\nagent-browser set viewport <w> <h> [scale]  # Set viewport size (scale for retina, e.g. 2)\nagent-browser set device <name>       # Emulate device (\"iPhone 14\")\nagent-browser set geo <lat> <lng>     # Set geolocation\nagent-browser set offline [on|off]    # Toggle offline mode\nagent-browser set headers <json>      # Extra HTTP headers\nagent-browser set credentials <u> <p> # HTTP basic auth\nagent-browser set media [dark|light]  # Emulate color scheme\n```\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 10,
      "risk_signal": 8,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "remotion-dev",
    "name": "remotion",
    "full_name": "remotion-dev/remotion",
    "url": "https://github.com/remotion-dev/remotion",
    "description": "🎥 Make videos programmatically with React",
    "language": "TypeScript",
    "total_stars": 51342,
    "forks": 3684,
    "stars_this_period": 117,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "javascript",
        "react",
        "video"
      ],
      "license": "NOASSERTION",
      "open_issues": 127,
      "created_at": "2020-06-23T19:49:10Z",
      "pushed_at": "2026-06-26T21:13:53Z",
      "homepage": "https://remotion.dev",
      "default_branch": "main",
      "forks": 3684,
      "watchers": 147,
      "archived": false,
      "size_kb": 3994579
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://github.com/remotion-dev/logo\">\n    <picture>\n      <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/remotion-dev/logo/raw/main/animated-logo-banner-dark.apng\">\n      <img alt=\"Animated Remotion Logo\" src=\"https://github.com/remotion-dev/logo/raw/main/animated-logo-banner-light.gif\">\n    </picture>\n  </a>\n</p>\n\n[![Discord Shield](https://img.shields.io/discord/809501355504959528?color=000000&label=Discord&logo=fdgssdf)](https://remotion.dev/discord)\n[![NPM Version](https://img.shields.io/npm/v/remotion.svg?style=flat&color=black)](https://www.npmjs.org/package/remotion)\n[![NPM Downloads](https://img.shields.io/npm/dm/remotion.svg?style=flat&color=black&label=Downloads)](https://npmcharts.com/compare/remotion?minimal=true)\n<a href=\"https://twitter.com/remotion\"><img src=\"https://img.shields.io/twitter/follow/remotion?label=Twitter&color=black\" alt=\"Twitter\"></a>\n\nRemotion is a framework for **creating videos programmatically using React.**\n\n## Why create videos in React?\n\n- **Leverage web technologies**: Use all of CSS, Canvas, SVG, WebGL, etc.\n- **Leverage programming**: Use variables, functions, APIs, math and algorithms to create new effects\n- **Leverage React**: Reusable components, Powerful composition, Fast Refresh, Package ecosystem\n\n## Created with Remotion\n\n<table>\n<tr>\n<td align=\"center\">\n<img style=\"width: 290px\" src=\"https://pub-646d808d9cb240cea53bedc76dd3cd0c.r2.dev/fireship-quick.gif\" />\n<p>\"This video was made with code\" <em>- Fireship</em> <a href=\"https://youtu.be/deg8bOoziaE\">Watch</a> • <a href=\"https://github.com/wcandillon/remotion-fireship\">Source</a></p>\n</td>\n<td align=\"center\">\n<img style=\"width: 240px\" src=\"https://pub-646d808d9cb240cea53bedc76dd3cd0c.r2.dev/unwrapped-2023.gif\" />\n<p>GitHub Unwrapped - Personalized Year in Review <a href=\"https://www.githubunwrapped.com\">Try</a> • <a href=\"https://github.com/remotion-dev/github-unwrapped\">Source</a></p>\n</td>\n<td align=\"center\">\n<em>View more in the <a href=\"https://remotion.dev/showcase\">Remotion Showcase</a>!</em>\n</td>\n</tr>\n</table>\n\n## Get started\n\nIf you already have Node.JS installed, type\n\n```console\nnpx create-video@latest\n```\n\nto get started. Otherwise, read the [installation page](https://www.remotion.dev/docs/) in the documentation.\n\n## Documentation\n\nDocumentation: [**remotion.dev/docs**](https://www.remotion.dev/docs)  \nAPI Reference: [**remotion.dev/api**](https://www.remotion.dev/api)\n\n## License\n\nBe aware of that Remotion has a special license and requires obtaining a company license in some cases. Read the [LICENSE](LICENSE.md) page for more information.\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) to learn about contributing to this project.\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n\t\"name\": \"remotion-monorepo\",\n\t\"version\": \"0.0.0\",\n\t\"private\": true,\n\t\"license\": \"SEE LICENSE IN LICENSE.md\",\n\t\"scripts\": {\n\t\t\"test\": \"turbo run lint test --no-update-notifier\",\n\t\t\"ts-build\": \"tsc -b --verbose --watch\",\n\t\t\"stylecheck\": \"turbo run lint formatting --no-update-notifier\",\n\t\t\"formatting\": \"turbo run formatting --no-update-notifier\",\n\t\t\"format\": \"bun pre-commit.ts\",\n\t\t\"build\": \"turbo run make --no-update-notifier\",\n\t\t\"build-docs\": \"TURBO_TELEMETRY_DISABLED=1 turbo run build-docs --no-update-notifier\",\n\t\t\"testssr\": \"turbo run testssr --no-update-notifier\",\n\t\t\"testtemplates\": \"turbo run testtemplates --no-update-notifier\",\n\t\t\"teste2e\": \"turbo run teste2e --no-update-notifier\",\n\t\t\"testwebcodecs\": \"turbo run testwebcodecs --no-update-notifier\",\n\t\t\"testwebrenderer\": \"turbo run testwebrenderer --concurrency=1 --no-update-notifier\",\n\t\t\"testlayoututils\": \"turbo run testlayoututils --concurrency=1 --no-update-notifier\",\n\t\t\"testeffectsvisual\": \"turbo run testeffectsvisual --concurrency=1 --no-update-notifier\",\n\t\t\"testlambda\": \"turbo run testlambda --concurrency=1 --no-update-notifier\",\n\t\t\"ci\": \"turbo run make test --concurrency=1 --no-update-notifier\",\n\t\t\"watch\": \"turbo watch make --concurrency=2 --experimental-write-cache\",\n\t\t\"makewhisperweb\": \"turbo run make --filter='@remotion/whisper-web'\",\n\t\t\"watchmedia\": \"turbo watch make --experimental-write-cache --filter='@remotion/media'\",\n\t\t\"watchwhisperweb\": \"turbo watch make --experimental-write-cache --filter='@remotion/whisper-web'\",\n\t\t\"watchdesign\": \"turbo watch make --experimental-write-cache --filter='@remotion/promo-pages'\",\n\t\t\"makewebcodecs\": \"turbo run make --filter='@remotion/media-parser' --filter='@remotion/webcodecs'\",\n\t\t\"watchmediaparser\": \"turbo watch make --experimental-write-cache --filter='@remotion/media-parser'\",\n\t\t\"watchmediautils\": \"turbo watch make --experimental-write-cache --filter='@remotion/media-utils'\",\n\t\t\"watchwebrenderer\": \"turbo watch make --experimental-write-cache --filter='@remotion/web-renderer'\",\n\t\t\"watchwebcodecs\": \"turbo watch make --experimental-write-cache --filter='@remotion/webcodecs'\",\n\t\t\"makewebrenderer\": \"turbo run make --filter='@remotion/web-renderer'\",\n\t\t\"makecore\": \"turbo run make --filter='remotion'\",\n\t\t\"watchcore\": \"turbo watch make --experimental-write-cache --filter='remotion'\",\n\t\t\"watchcli\": \"turbo watch make --experimental-write-cache --filter='@remotion/cli'\",\n\t\t\"makeplayer\": \"turbo run make --filter='@remotion/player'\",\n\t\t\"watchplayer\": \"turbo watch make --experimental-write-cache --filter='@remotion/player'\",\n\t\t\"makestudio\": \"turbo run make --filter='@remotion/studio' --filter='@remotion/studio-server'\",\n\t\t\"watchstudio\": \"turbo watch make --experimental-write-cache --filter='@remotion/studio' --filter='@remotion/studio-server'\",\n\t\t\"makeserverless\": \"turbo run make --filter='@remotion/lambda' --filter='@remotion/serverless' --filter='@remotion/streaming'\",\n\t\t\"watchserverless\": \"turbo watch make --experimental-write-cache --filter='@remotion/lambda' --filter='@remotion/serverless' --filter='@remotion/streaming'\",\n\t\t\"makethree\": \"turbo run make --filter='@remotion/three'\",\n\t\t\"watchthree\": \"turbo watch make --experimental-write-cache --filter='@remotion/three'\",\n\t\t\"release\": \"bun publish.ts && turbo run publishprivate --concurrency=1 && git push --tags && git push\",\n\t\t\"publishtemplates\": \"cd packages/it-tests && bun src/templates/publish.ts\",\n\t\t\"cleantypes\": \"rm -rf packages/**/tsconfig.tsbuildinfo && rm -f packages/tsconfig.tsbuildinfo\",\n\t\t\"clean\": \"turbo run clean && rm -rf packages/**/dist && rm -rf .cache && rm -rf packages/**/tsconfig.tsbuildinfo && rm -f packages/tsconfig.tsbuildinfo && rm -rf packages/**/.turbo && rm -rf .turbo\",\n\t\t\"cleanall\": \"turbo run clean && rm -rf packages/**/dist && rm -rf packages/**/node_modules && rm -rf node_modules && rm -rf .cache && rm -rf packages/**/tsconfig.tsbuildinfo && rm -f packages/tsconfig.tsbuildinfo && rm -rf packages/**/.turbo && rm -rf .turbo\",\n\t\t\"prepare\": \"git config core.hooksPath .githooks\"\n\t},\n\t\"engines\": {\n\t\t\"node\": \">=16\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/babel__standalone\": \"7.1.9\",\n\t\t\"@types/bun\": \"catalog:\",\n\t\t\"@types/deno\": \"2.0.0\",\n\t\t\"@types/react\": \"catalog:\",\n\t\t\"@types/react-dom\": \"catalog:\",\n\t\t\"oxfmt\": \"0.35.0\",\n\t\t\"prettier\": \"catalog:\",\n\t\t\"prettier-plugin-organize-imports\": \"3.2.4\"\n\t},\n\t\"dependencies\": {\n\t\t\"p-limit\": \"7.2.0\",\n\t\t\"typescript\": \"5.9.3\",\n\t\t\"turbo\": \"2.9.14\",\n\t\t\"@typescript/native-preview\": \"catalog:\"\n\t},\n\t\"packageManager\": \"bun@1.3.3\",\n\t\"overrides\": {\n\t\t\"caniuse-lite\": \"1.0.30001766\",\n\t\t\"@rspack/core\": \"1.7.11\",\n\t\t\"@remix-run/dev\": \"2.17.4\",\n\t\t\"@remix-run/node\": \"2.17.4\",\n\t\t\"@remix-run/react\": \"2.17.4\",\n\t\t\"@remix-run/serve\": \"2.17.4\",\n\t\t\"@remix-run/server-runtime\": \"2.17.4\"\n\t},\n\t\"workspaces\": {\n\t\t\"packages\": [\n\t\t\t\"packages/**\",\n\t\t\t\"!packages/lambda-php-example/vendor/remotion/lambda\",\n\t\t\t\"!packages/player-example/.next\",\n\t\t\t\"!packages/it-tests/whisper.cpp\",\n\t\t\t\"!packages/cloudrun/container\",\n\t\t\t\"!packages/template-recorder/w",
    "strategic_keywords": [
      "rag"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 8,
      "total": 70
    },
    "strategic_score": 70
  },
  {
    "owner": "rustdesk",
    "name": "rustdesk",
    "full_name": "rustdesk/rustdesk",
    "url": "https://github.com/rustdesk/rustdesk",
    "description": "An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.",
    "language": "Rust",
    "total_stars": 117049,
    "forks": 17730,
    "stars_this_period": 107,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "android",
        "anydesk",
        "dart",
        "flatpak",
        "flutter",
        "flutter-apps",
        "ios",
        "linux",
        "macos",
        "p2p",
        "rdp",
        "remote-control",
        "remote-desktop",
        "rust",
        "rust-lang",
        "teamviewer",
        "vnc",
        "wayland",
        "windows"
      ],
      "license": "AGPL-3.0",
      "open_issues": 122,
      "created_at": "2020-09-28T15:36:08Z",
      "pushed_at": "2026-06-26T08:17:44Z",
      "homepage": "https://rustdesk.com",
      "default_branch": "master",
      "forks": 17730,
      "watchers": 607,
      "archived": false,
      "size_kb": 72526
    },
    "readme_content": "<p align=\"center\">\n  <img src=\"res/logo-header.svg\" alt=\"RustDesk - Your remote desktop\"><br>\n  <a href=\"#raw-steps-to-build\">Build</a> •\n  <a href=\"#how-to-build-with-docker\">Docker</a> •\n  <a href=\"#file-structure\">Structure</a> •\n  <a href=\"#snapshot\">Snapshot</a><br>\n  [<a href=\"docs/README-UA.md\">Українська</a>] | [<a href=\"docs/README-CS.md\">česky</a>] | [<a href=\"docs/README-ZH.md\">中文</a>] | [<a href=\"docs/README-HU.md\">Magyar</a>] | [<a href=\"docs/README-ES.md\">Español</a>] | [<a href=\"docs/README-FA.md\">فارسی</a>] | [<a href=\"docs/README-FR.md\">Français</a>] | [<a href=\"docs/README-DE.md\">Deutsch</a>] | [<a href=\"docs/README-PL.md\">Polski</a>] | [<a href=\"docs/README-ID.md\">Indonesian</a>] | [<a href=\"docs/README-FI.md\">Suomi</a>] | [<a href=\"docs/README-ML.md\">മലയാളം</a>] | [<a href=\"docs/README-JP.md\">日本語</a>] | [<a href=\"docs/README-NL.md\">Nederlands</a>] | [<a href=\"docs/README-IT.md\">Italiano</a>] | [<a href=\"docs/README-RU.md\">Русский</a>] | [<a href=\"docs/README-PTBR.md\">Português (Brasil)</a>] | [<a href=\"docs/README-EO.md\">Esperanto</a>] | [<a href=\"docs/README-KR.md\">한국어</a>] | [<a href=\"docs/README-AR.md\">العربي</a>] | [<a href=\"docs/README-VN.md\">Tiếng Việt</a>] | [<a href=\"docs/README-DA.md\">Dansk</a>] | [<a href=\"docs/README-GR.md\">Ελληνικά</a>] | [<a href=\"docs/README-TR.md\">Türkçe</a>] | [<a href=\"docs/README-NO.md\">Norsk</a>] | [<a href=\"docs/README-RO.md\">Română</a>]<br>\n  <b>We need your help to translate this README, <a href=\"https://github.com/rustdesk/rustdesk/tree/master/src/lang\">RustDesk UI</a> and <a href=\"https://github.com/rustdesk/doc.rustdesk.com\">RustDesk Doc</a> to your native language</b>\n</p>\n\n> [!Caution]\n> **Misuse Disclaimer:** <br>\n> The developers of RustDesk do not condone or support any unethical or illegal use of this software. Misuse, such as unauthorized access, control or invasion of privacy, is strictly against our guidelines. The authors are not responsible for any misuse of the application.\n\n\nChat with us: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk) | [YouTube](https://www.youtube.com/@rustdesk)\n\n[![RustDesk Server Pro](https://img.shields.io/badge/RustDesk%20Server%20Pro-Advanced%20Features-blue)](https://rustdesk.com/pricing.html)\n\nYet another remote desktop solution, written in Rust. Works out of the box with no configuration required. You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, [set up your own](https://rustdesk.com/server), or [write your own rendezvous/relay server](https://github.com/rustdesk/rustdesk-server-demo).\n\n![image](https://user-images.githubusercontent.com/71636191/171661982-430285f0-2e12-4b1d-9957-4a58e375304d.png)\n\nRustDesk welcomes contribution from everyone. See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for help getting started.\n\n[**FAQ**](https://github.com/rustdesk/rustdesk/wiki/FAQ)\n\n[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)\n\n[**NIGHTLY BUILD**](https://github.com/rustdesk/rustdesk/releases/tag/nightly)\n\n[<img src=\"https://f-droid.org/badge/get-it-on.png\"\n    alt=\"Get it on F-Droid\"\n    height=\"80\">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)\n[<img src=\"https://flathub.org/api/badge?svg&locale=en\"\n    alt=\"Get it on Flathub\"\n    height=\"80\">](https://flathub.org/apps/com.rustdesk.RustDesk)\n\n## Dependencies\n\nDesktop versions use Flutter or Sciter (deprecated) for GUI, this tutorial is for Sciter only, since it is easier and more friendly to start. Check out our [CI](https://github.com/rustdesk/rustdesk/blob/master/.github/workflows/flutter-build.yml) for building Flutter version.\n\nPlease download Sciter dynamic library yourself.\n\n[Windows](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.win/x64/sciter.dll) |\n[Linux](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so) |\n[macOS](https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.osx/libsciter.dylib)\n\n## Raw Steps to build\n\n- Prepare your Rust development env and C++ build env\n\n- Install [vcpkg](https://github.com/microsoft/vcpkg), and set `VCPKG_ROOT` env variable correctly\n\n  - Windows: vcpkg install libvpx:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static aom:x64-windows-static\n  - Linux/macOS: vcpkg install libvpx libyuv opus aom\n\n- run `cargo run`\n\n## [Build](https://rustdesk.com/docs/en/dev/build/)\n\n## How to Build on Linux\n\n### Ubuntu 18 (Debian 10)\n\n```sh\nsudo apt install -y zip g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev \\\n        libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake make \\\n        libclang-dev ninja-build libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libpam0g-dev\n```\n\n### openSUSE Tumbleweed\n\n```sh\nsudo zypper install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libXfixes-devel cmake alsa-lib-devel gstreamer-devel gstreamer-plugins-base-devel xdotool-devel pam-devel\n```\n\n### Fedora 28 (CentOS 8)\n\n```sh\nsudo yum -y install gcc-c++ git curl wget nasm yasm gcc gtk3-devel clang libxcb-devel libxdo-devel libXfixes-devel pulseaudio-libs-devel cmake alsa-lib-devel gstreamer1-devel gstreamer1-plugins-base-devel pam-devel\n```\n\n### Arch (Manjaro)\n\n```sh\nsudo pacman -Syu --needed unzip git cmake gcc curl wget yasm nasm zip make pkg-config clang gtk3 xdotool libxcb libxfixes alsa-lib pipewire\n```\n\n### Install vcpkg\n\n```sh\ngit clone https://github.com/microsoft/vcpkg\ncd vcpkg\ngit checkout 2023.04.15\ncd ..\nvcpkg/bootstrap-vcpkg.sh\nexport VCPKG_ROOT=$HOME/vcpkg\nvcpkg/vcpkg install libvpx libyuv opus aom\n```\n\n### Fix libvpx (For Fedora)\n\n```sh\ncd vcpkg/buildtrees/libvpx/src\ncd *\n./configure\nsed -i 's/CFLAGS+=-I/CFLAGS+=-fPIC -I/g' Makefile\nsed -i 's/CXXFLAGS+=-I/CXXFLAGS+=-fPIC -I/g' Makefile\nmake\ncp libvpx.a $HOME/vcpkg/installed/x64-linux/lib/\ncd\n```\n\n### Build\n\n```sh\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nsource $HOME/.cargo/env\ngit clone --recurse-submodules https://github.com/rustdesk/rustdesk\ncd rustdesk\nmkdir -p target/debug\nwget https://raw.githubusercontent.com/c-smile/sciter-sdk/master/bin.lnx/x64/libsciter-gtk.so\nmv libsciter-gtk.so target/debug\nVCPKG_ROOT=$HOME/vcpkg cargo run\n```\n\n## How to build with Docker\n\nBegin by cloning the repository and building the Docker container:\n\n```sh\ngit clone https://github.com/rustdesk/rustdesk\ncd rustdesk\ngit submodule update --init --recursive\ndocker build -t \"rustdesk-builder\" .\n```\n\nThen, each time you need to build the application, run the following command:\n\n```sh\ndocker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID=\"$(id -u)\" -e PGID=\"$(id -g)\" rustdesk-builder\n```\n\nNote that the first build may take longer before dependencies are cached, subsequent builds will be faster. Additionally, if you need to specify different arguments to the build command, you may do so at the end of the command in the `<OPTIONAL-ARGS>` position. For instance, if you wanted to build an optimized release version, you would run the command above followed by `--release`. The resulting executable will be available in the target folder on your system, and can be run with:\n\n```sh\ntarget/debug/rustdesk\n```\n\nOr, if you're running a release executable:\n\n```sh\ntarget/release/rustdesk\n```\n\nPlease ensure that you run these commands from the root of the RustDesk repository, or the application may not find the required resources. Also note that other cargo subcommands such as `install` or `run` are not currently supported via this method as they would install or run the program inside the container instead of the host.\n\n## File Structure\n\n- **[libs/hbb_common](https://github.com/rustdesk/rustdesk/tree/master/libs/hbb_common)**: video codec, config, tcp/udp wrapper, protobuf, fs functions for file transfer, and some other utility functions\n- **[libs/scrap](https://github.com/rustdesk/rustdesk/tree/master/libs/scrap)**: screen capture\n- **[libs/enigo](https://github.com/rustdesk/rustdesk/tree/master/libs/enigo)**: platform specific keyboard/mouse control\n- **[libs/clipboard](https://github.com/rustdesk/rustdesk/tree/master/libs/clipboard)**: file copy and paste implementation for Windows, Linux, macOS.\n- **[src/ui](https://github.com/rustdesk/rustdesk/tree/master/src/ui)**: obsolete Sciter UI (deprecated)\n- **[src/server](https://github.com/rustdesk/rustdesk/tree/master/src/server)**: audio/clipboard/input/video services, and network connections\n- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: start a peer connection\n- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: Communicate with [rustdesk-server](https://github.com/rustdesk/rustdesk-server), wait for remote direct (TCP hole punching) or relayed connection\n- **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: platform specific code\n- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: Flutter code for desktop and mobile\n- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/v1/js)**: JavaScript for Flutter web client\n\n## Screenshots\n\n![Connection Manager](https://github.com/rustdesk/rustdesk/assets/28412477/db82d4e7-c4bc-4823-8e6f-6af7eadf7651)\n\n![Connected to a Windows PC](https://github.com/rustdesk/rustdesk/assets/28412477/9baa91e9-3362-4d06-aa1a-7518edcbd7ea)\n\n![File Transfer](https://github.com/rustdesk/rustdesk/assets/28412477/39511ad3-aa9a-4f8c-8947-1cce286a46ad)\n\n![TCP Tunneling](https://github.com/rustdesk/rustdesk/assets/28412477/78e8708f-e87e-4570-8373-1360033ea6c5)\n\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[package]\nname = \"rustdesk\"\nversion = \"1.4.8\"\nauthors = [\"rustdesk <info@rustdesk.com>\"]\nedition = \"2021\"\nbuild= \"build.rs\"\ndescription = \"RustDesk Remote Desktop\"\ndefault-run = \"rustdesk\"\nrust-version = \"1.75\"\n\n[lib]\nname = \"librustdesk\"\ncrate-type = [\"cdylib\", \"staticlib\", \"rlib\"]\n\n[[bin]]\nname = \"naming\"\npath = \"src/naming.rs\"\n\n[[bin]]\nname = \"service\"\npath = \"src/service.rs\"\n\n[features]\ninline = []\ncli = []\nuse_samplerate = [\"samplerate\"]\nuse_rubato = [\"rubato\"]\nuse_dasp = [\"dasp\"]\nflutter = [\"flutter_rust_bridge\"]\ndefault = [\"use_dasp\"]\nhwcodec = [\"scrap/hwcodec\"]\nvram = [\"scrap/vram\"]\nmediacodec = [\"scrap/mediacodec\"]\nplugin_framework = []\nlinux-pkg-config = [\"magnum-opus/linux-pkg-config\", \"scrap/linux-pkg-config\"]\nunix-file-copy-paste = [\n    \"dep:x11-clipboard\",\n    \"dep:x11rb\",\n    \"dep:percent-encoding\",\n    \"dep:once_cell\",\n    \"clipboard/unix-file-copy-paste\",\n]\nscreencapturekit = [\"cpal/screencapturekit\"]\n\n# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html\n\n[dependencies]\nasync-trait = \"0.1\"\nscrap = { path = \"libs/scrap\", features = [\"wayland\"] }\nhbb_common = { path = \"libs/hbb_common\" }\nserde_derive = \"1.0\"\nserde = \"1.0\"\nserde_json = \"1.0\"\nserde_repr = \"0.1\"\ncfg-if = \"1.0\"\nlazy_static = \"1.4\"\nsha2 = \"0.10\"\nrepng = \"0.2\"\nparity-tokio-ipc = { git = \"https://github.com/rustdesk-org/parity-tokio-ipc\" }\nmagnum-opus = { git = \"https://github.com/rustdesk-org/magnum-opus\" }\ndasp = { version = \"0.11\", features = [\"signal\", \"interpolate-linear\", \"interpolate\"], optional = true }\nrubato = { version = \"0.12\", optional = true }\nsamplerate = { version = \"0.2\", optional = true }\nuuid = { version = \"1.3\", features = [\"v4\"] }\nclap = \"4.2\"\nrpassword = \"7.2\"\nnum_cpus = \"1.15\"\nbytes = { version = \"1.4\", features = [\"serde\"] }\ndefault-net = \"0.14\"\nwol-rs = \"1.0\"\nflutter_rust_bridge = { version = \"=1.80\", features = [\"uuid\"], optional = true}\nerrno = \"0.3\"\nrdev = { git = \"https://github.com/rustdesk-org/rdev\" }\nurl = { version = \"2.3\", features = [\"serde\"] }\ncrossbeam-queue = \"0.3\"\nhex = \"0.4\"\nchrono = \"0.4\"\ncidr-utils = \"0.5\"\nfon = \"0.6\"\nzip = \"0.6\"\nshutdown_hooks = \"0.1\"\ntotp-rs = { version = \"5.4\", default-features = false, features = [\"gen_secret\", \"otpauth\"] }\nstunclient = \"0.4\"\nkcp-sys= { git = \"https://github.com/rustdesk-org/kcp-sys\"}\nreqwest = { version = \"0.12\", features = [\"blocking\", \"socks\", \"json\", \"native-tls\", \"rustls-tls\", \"rustls-tls-native-roots\", \"gzip\"], default-features=false }\n\n[target.'cfg(not(target_os = \"linux\"))'.dependencies]\n# https://github.com/rustdesk/rustdesk/discussions/10197, not use cpal on linux\ncpal = { git = \"https://github.com/rustdesk-org/cpal\", branch = \"osx-screencapturekit\" }\nringbuf = \"0.3\"\n\n[target.'cfg(not(any(target_os = \"android\", target_os = \"ios\")))'.dependencies]\nmac_address = \"1.1\"\nsciter-rs = { git = \"https://github.com/rustdesk-org/rust-sciter\", branch = \"dyn\" }\nsys-locale = \"0.3\"\nenigo = { path = \"libs/enigo\", features = [ \"with_serde\" ] }\nclipboard = { path = \"libs/clipboard\" }\nctrlc = \"3.2\"\n# arboard = { version = \"3.4\", features = [\"wayland-data-control\"] }\narboard = { git = \"https://github.com/rustdesk-org/arboard\", features = [\"wayland-data-control\"] }\nclipboard-master = { git = \"https://github.com/rustdesk-org/clipboard-master\" }\nportable-pty = { git = \"https://github.com/rustdesk-org/wezterm\", branch = \"rustdesk/pty_based_0.8.1\", package = \"portable-pty\" }\n\nsystem_shutdown = \"4.0\"\nqrcode-generator = \"4.1\"\n\n[target.'cfg(target_os = \"windows\")'.dependencies]\nwinapi = { version = \"0.3\", features = [\n    \"winuser\",\n    \"wincrypt\",\n    \"shellscalingapi\",\n    \"pdh\",\n    \"synchapi\",\n    \"memoryapi\",\n    \"shellapi\",\n    \"devguid\",\n    \"setupapi\",\n    \"cguid\",\n    \"cfgmgr32\",\n    \"ioapiset\",\n    \"winspool\",\n] }\nwindows = { version = \"0.61\", features = [\n    \"Win32\",\n    \"Win32_Foundation\",\n    \"Win32_Security\",\n    \"Win32_Security_Authorization\",\n    \"Win32_Storage_FileSystem\",\n    \"Win32_System\",\n    \"Win32_System_Diagnostics\",\n    \"Win32_System_Diagnostics_ToolHelp\",\n    \"Win32_System_Environment\",\n    \"Win32_System_IO\",\n    \"Win32_System_Memory\",\n    \"Win32_System_Pipes\",\n    \"Win32_System_Threading\",\n    \"Win32_UI_Shell\",\n] }\nwinreg = \"0.11\"\nwindows-service = \"0.6\"\nvirtual_display = { path = \"libs/virtual_display\" }\nremote_printer = { path = \"libs/remote_printer\" }\nimpersonate_system = { git = \"https://github.com/rustdesk-org/impersonate-system\" }\nshared_memory = \"0.12\"\ntauri-winrt-notification = \"0.1\"\nrunas = \"1.2\"\n\n[target.'cfg(target_os = \"macos\")'.dependencies]\nobjc = \"0.2\"\ncocoa = \"0.24\"\ndispatch = \"0.2\"\ncore-foundation = \"0.9\"\ncore-graphics = \"0.22\"\ninclude_dir = \"0.7\"\nfruitbasket = \"0.10\"\nobjc_id = \"0.1\"\n# If we use piet \"0.7\" here, we must also update core-graphics to \"0.24\".\npiet = \"0.6\"\npiet-coregraphics = \"0.6\"\nforeign-types = \"0.3\"\n\n[target.'cfg(any(target_os = \"macos\", target_os = \"linux\", target_os = \"windows\"))'.dependencies]\ntray-icon = { git = \"https://github.com/tauri-apps/tray-icon\", version ",
    "strategic_keywords": [
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 8,
      "total": 70
    },
    "strategic_score": 70
  },
  {
    "owner": "vercel-labs",
    "name": "skills",
    "full_name": "vercel-labs/skills",
    "url": "https://github.com/vercel-labs/skills",
    "description": "The open agent skills tool - npx skills",
    "language": "TypeScript",
    "total_stars": 23625,
    "forks": 1916,
    "stars_this_period": 106,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [],
      "license": "NOASSERTION",
      "open_issues": 796,
      "created_at": "2026-01-14T21:31:18Z",
      "pushed_at": "2026-06-25T17:36:54Z",
      "homepage": "https://skills.sh",
      "default_branch": "main",
      "forks": 1916,
      "watchers": 71,
      "archived": false,
      "size_kb": 1000
    },
    "readme_content": "# skills\n\nThe CLI for the open agent skills ecosystem.\n\n<!-- agent-list:start -->\nSupports **OpenCode**, **Claude Code**, **Codex**, **Cursor**, and [68 more](#supported-agents).\n<!-- agent-list:end -->\n\n[![skills.sh](https://skills.sh/b/vercel-labs/skills)](https://skills.sh/vercel-labs/skills)\n\n## Install a Skill\n\n```bash\nnpx skills add vercel-labs/agent-skills\n```\n\n## Use a Skill Without Installing\n\nGenerate a prompt for one skill, or start a supported coding agent interactively:\n\n```bash\nnpx skills use vercel-labs/agent-skills@web-design-guidelines | claude\nnpx skills use vercel-labs/agent-skills --skill web-design-guidelines --agent claude-code\n```\n\n`skills use` resolves sources the same way as `skills add`, writes the selected skill files to a temporary directory, and prints only the generated prompt to stdout unless `--agent` is provided. With `--agent`, it starts one supported agent interactively with the generated prompt.\n\n### Source Formats\n\n```bash\n# GitHub shorthand (owner/repo)\nnpx skills add vercel-labs/agent-skills\n\n# Full GitHub URL\nnpx skills add https://github.com/vercel-labs/agent-skills\n\n# Direct path to a skill in a repo\nnpx skills add https://github.com/vercel-labs/agent-skills/tree/main/skills/web-design-guidelines\n\n# GitLab URL\nnpx skills add https://gitlab.com/org/repo\n\n# Any git URL\nnpx skills add git@github.com:vercel-labs/agent-skills.git\n\n# Local path\nnpx skills add ./my-local-skills\n```\n\n### Options\n\n| Option                    | Description                                                                                                                                        |\n| ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `-g, --global`            | Install to user directory instead of project                                                                                                       |\n| `-a, --agent <agents...>` | <!-- agent-names:start -->Target specific agents (e.g., `claude-code`, `codex`). See [Supported Agents](#supported-agents)<!-- agent-names:end --> |\n| `-s, --skill <skills...>` | Install specific skills by name (use `'*'` for all skills)                                                                                         |\n| `-l, --list`              | List available skills without installing                                                                                                           |\n| `--copy`                  | Copy files instead of symlinking to agent directories                                                                                              |\n| `-y, --yes`               | Skip all confirmation prompts                                                                                                                      |\n| `--all`                   | Install all skills to all agents without prompts                                                                                                   |\n\n### Examples\n\n```bash\n# List skills in a repository\nnpx skills add vercel-labs/agent-skills --list\n\n# Install specific skills\nnpx skills add vercel-labs/agent-skills --skill frontend-design --skill skill-creator\n\n# Install a skill with spaces in the name (must be quoted)\nnpx skills add owner/repo --skill \"Convex Best Practices\"\n\n# Install to specific agents\nnpx skills add vercel-labs/agent-skills -a claude-code -a opencode\n\n# Non-interactive installation (CI/CD friendly)\nnpx skills add vercel-labs/agent-skills --skill frontend-design -g -a claude-code -y\n\n# Install all skills from a repo to all agents\nnpx skills add vercel-labs/agent-skills --all\n\n# Install all skills to specific agents\nnpx skills add vercel-labs/agent-skills --skill '*' -a claude-code\n\n# Install specific skills to all agents\nnpx skills add vercel-labs/agent-skills --agent '*' --skill frontend-design\n```\n\n### Installation Scope\n\n| Scope       | Flag      | Location            | Use Case                                      |\n| ----------- | --------- | ------------------- | --------------------------------------------- |\n| **Project** | (default) | `./<agent>/skills/` | Committed with your project, shared with team |\n| **Global**  | `-g`      | `~/<agent>/skills/` | Available across all projects                 |\n\n### Installation Methods\n\nWhen installing interactively, you can choose:\n\n| Method                    | Description                                                                                 |\n| ------------------------- | ------------------------------------------------------------------------------------------- |\n| **Symlink** (Recommended) | Creates symlinks from each agent to a canonical copy. Single source of truth, easy updates. |\n| **Copy**                  | Creates independent copies for each agent. Use when symlinks aren't supported.              |\n\n## Other Commands\n\n| Command                      | Description                                   |\n| ---------------------------- | --------------------------------------------- |\n| `npx skills use <source>`    | Use one skill without installing              |\n| `npx skills list`            | List installed skills (alias: `ls`)           |\n| `npx skills find [query]`    | Search for skills interactively or by keyword |\n| `npx skills remove [skills]` | Remove installed skills from agents           |\n| `npx skills update [skills]` | Update installed skills to latest versions    |\n| `npx skills init [name]`     | Create a new SKILL.md template                |\n\n### `skills list`\n\nList all installed skills. Similar to `npm ls`.\n\n```bash\n# List all installed skills (project and global)\nnpx skills list\n\n# List only global skills\nnpx skills ls -g\n\n# Filter by specific agents\nnpx skills ls -a claude-code -a cursor\n```\n\n### `skills find`\n\nSearch for skills interactively or by keyword.\n\n```bash\n# Interactive search (fzf-style)\nnpx skills find\n\n# Search by keyword\nnpx skills find typescript\n\n# Search across every repository owned by an organization or user\nnpx skills find react --owner vercel\n```\n\n### `skills update`\n\n```bash\n# Update all skills (interactive scope prompt)\nnpx skills update\n\n# Update a single skill by name\nnpx skills update my-skill\n\n# Update multiple specific skills\nnpx skills update frontend-design web-design-guidelines\n\n# Update only global or project skills\nnpx skills update -g\nnpx skills update -p\n\n# Non-interactive (auto-detects scope: project if in a project, else global)\nnpx skills update -y\n```\n\n| Option          | Description                                                               |\n| --------------- | ------------------------------------------------------------------------- |\n| `-g, --global`  | Only update global skills                                                 |\n| `-p, --project` | Only update project skills                                                |\n| `-y, --yes`     | Skip scope prompt (auto-detect: project if in a project dir, else global) |\n| `[skills...]`   | Update specific skills by name instead of all                             |\n\n### `skills init`\n\n```bash\n# Create SKILL.md in current directory\nnpx skills init\n\n# Create a new skill in a subdirectory\nnpx skills init my-skill\n```\n\n### `skills remove`\n\nRemove installed skills from agents.\n\n```bash\n# Remove interactively (select from installed skills)\nnpx skills remove\n\n# Remove specific skill by name\nnpx skills remove web-design-guidelines\n\n# Remove multiple skills\nnpx skills remove frontend-design web-design-guidelines\n\n# Remove from global scope\nnpx skills remove --global web-design-guidelines\n\n# Remove from specific agents only\nnpx skills remove --agent claude-code cursor my-skill\n\n# Remove all installed skills without confirmation\nnpx skills remove --all\n\n# Remove all skills from a specific agent\nnpx skills remove --skill '*' -a cursor\n\n# Remove a specific skill from all agents\nnpx skills remove my-skill --agent '*'\n\n# Use 'rm' alias\nnpx skills rm my-skill\n```\n\n| Option         | Description                                      |\n| -------------- | ------------------------------------------------ |\n| `-g, --global` | Remove from global scope (~/) instead of project |\n| `-a, --agent`  | Remove from specific agents (use `'*'` for all)  |\n| `-s, --skill`  | Specify skills to remove (use `'*'` for all)     |\n| `-y, --yes`    | Skip confirmation prompts                        |\n| `--all`        | Shorthand for `--skill '*' --agent '*' -y`       |\n\n## What are Agent Skills?\n\nAgent skills are reusable instruction sets that extend your coding agent's capabilities. They're defined in `SKILL.md`\nfiles with YAML frontmatter containing a `name` and `description`.\n\nSkills let agents perform specialized tasks like:\n\n- Generating release notes from git history\n- Creating PRs following your team's conventions\n- Integrating with external tools (Linear, Notion, etc.)\n\nDiscover skills at **[skills.sh](https://skills.sh)**\n\n## Supported Agents\n\nSkills can be installed to any of these agents:\n\n<!-- supported-agents:start -->\n| Agent | `--agent` | Project Path | Global Path |\n|-------|-----------|--------------|-------------|\n| AiderDesk | `aider-desk` | `.aider-desk/skills/` | `~/.aider-desk/skills/` |\n| Amp, Replit, Universal | `amp`, `replit`, `universal` | `.agents/skills/` | `~/.config/agents/skills/` |\n| Antigravity | `antigravity` | `.agents/skills/` | `~/.gemini/antigravity/skills/` |\n| Antigravity CLI | `antigravity-cli` | `.agents/skills/` | `~/.gemini/antigravity-cli/skills/` |\n| AstrBot | `astrbot` | `data/skills/` | `~/.astrbot/data/skills/` |\n| Autohand Code CLI | `autohand-code` | `.autohand/skills/` | `~/.autohand/skills/` |\n| Augment | `augment` | `.augment/skills/` | `~/.augment/skills/` |\n| IBM Bob | `bob` | `.bob/skills/` | `~/.bob/skills/` |\n| Claude Code | `claude-code` | `.claude/skills/` | `~/.claude/skills/` |\n| OpenClaw | `openclaw` | `skills/` | `~/.openclaw/skills/` |\n| Cline, Dexto, Kimi Code CLI, Loaf, Warp, Zed | `cline`, `dexto`, `kimi-code-cli`, `loaf`, `warp`, `zed` | `.agents/skills/` | `~/.agents/skills/` |\n| CodeArts Agent | `codearts-agent` | `.codeartsdoer/skills/` | `~/.codeartsdoer/skills/` |\n| CodeBuddy | `codebuddy` | `.codebuddy/skills/` | `~/.codebuddy/skills/` |\n| Codemaker | `codemaker` | `.codemaker/skills/` | `~/.codemaker/skills/` |\n| Code Studio | `codestudio` | `.codestudio/skills/` | `~/.codestudio/skills/` |\n| Codex | `codex` | `.agents/skills/` | `~/.codex/skills/` |\n| Command Code | `command-code` | `.commandcode/skills/` | `~/.commandcode/skills/` |\n| Continue | `continue` | `.continue/skills/` | `~/.continue/skills/` |\n| Cortex Code | `cortex` | `.cortex/skills/` | `~/.snowflake/cortex/skills/` |\n| Crush | `crush` | `.crush/skills/` | `~/.config/crush/skills/` |\n| Cursor | `cursor` | `.agents/skills/` | `~/.cursor/skills/` |\n| Deep Agents | `deepagents` | `.agents/skills/` | `~/.deepagents/agent/skills/` |\n| Devin for Terminal | `devin` | `.devin/skills/` | `~/.config/devin/skills/` |\n| Droid | `droid` | `.factory/skills/` | `~/.factory/skills/` |\n| Eve | `eve` | `agent/skills/` | N/A (project-only) |\n| Firebender | `firebender` | `.agents/skills/` | `~/.firebender/skills/` |\n| ForgeCode | `forgecode` | `.forge/skills/` | `~/.forge/skills/` |\n| Gemini CLI | `gemini-cli` | `.agents/skills/` | `~/.gemini/skills/` |\n| GitHub Copilot | `github-copilot` | `.agents/skills/` | `~/.copilot/skills/` |\n| Goose | `goose` | `.goose/skills/` | `~/.config/goose/skills/` |\n| Hermes Agent | `hermes-agent` | `.hermes/skills/` | `~/.hermes/skills/` |\n| inference.sh | `inference-sh` | `.inferencesh/skills/` | `~/.inferencesh/skills/` |\n| Jazz | `jazz` | `.jazz/skills/` | `~/.jazz/skills/` |\n| Junie | `junie` | `.junie/skills/` | `~/.junie/skills/` |\n| iFlow CLI | `iflow-cli` | `.iflow/skills/` | `~/.iflow/skills/` |\n| Kilo Code | `kilo` | `.kilocode/skills/` | `~/.kilocode/skills/` |\n| Kiro CLI | `kiro-cli` | `.ki",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"skills\",\n  \"version\": \"1.5.13\",\n  \"description\": \"The open agent skills ecosystem\",\n  \"type\": \"module\",\n  \"bin\": {\n    \"skills\": \"./bin/cli.mjs\",\n    \"add-skill\": \"./bin/cli.mjs\"\n  },\n  \"files\": [\n    \"dist\",\n    \"bin\",\n    \"README.md\",\n    \"ThirdPartyNoticeText.txt\"\n  ],\n  \"scripts\": {\n    \"build\": \"node scripts/generate-licenses.ts && obuild\",\n    \"generate-licenses\": \"node scripts/generate-licenses.ts\",\n    \"dev\": \"node src/cli.ts\",\n    \"exec:test\": \"node scripts/execute-tests.ts\",\n    \"prepublishOnly\": \"npm run build\",\n    \"format\": \"prettier --write \\\"src/**/*.ts\\\" \\\"scripts/**/*.ts\\\"\",\n    \"format:check\": \"prettier --check \\\"src/**/*.ts\\\" \\\"scripts/**/*.ts\\\"\",\n    \"prepare\": \"husky\",\n    \"test\": \"vitest\",\n    \"type-check\": \"tsc --noEmit\",\n    \"publish:snapshot\": \"npm version prerelease --preid=snapshot --no-git-tag-version && npm publish --tag snapshot\"\n  },\n  \"lint-staged\": {\n    \"src/**/*.ts\": \"prettier --write\",\n    \"scripts/**/*.ts\": \"prettier --write\",\n    \"tests/**/*.ts\": \"prettier --write\"\n  },\n  \"keywords\": [\n    \"cli\",\n    \"agent-skills\",\n    \"skills\",\n    \"ai-agents\",\n    \"aider-desk\",\n    \"amp\",\n    \"antigravity\",\n    \"antigravity-cli\",\n    \"astrbot\",\n    \"autohand-code\",\n    \"augment\",\n    \"bob\",\n    \"claude-code\",\n    \"openclaw\",\n    \"cline\",\n    \"codearts-agent\",\n    \"codebuddy\",\n    \"codemaker\",\n    \"codestudio\",\n    \"codex\",\n    \"command-code\",\n    \"continue\",\n    \"cortex\",\n    \"crush\",\n    \"cursor\",\n    \"deepagents\",\n    \"devin\",\n    \"dexto\",\n    \"droid\",\n    \"eve\",\n    \"firebender\",\n    \"forgecode\",\n    \"gemini-cli\",\n    \"github-copilot\",\n    \"goose\",\n    \"hermes-agent\",\n    \"inference-sh\",\n    \"jazz\",\n    \"junie\",\n    \"iflow-cli\",\n    \"kilo\",\n    \"kimi-code-cli\",\n    \"kiro-cli\",\n    \"kode\",\n    \"lingma\",\n    \"loaf\",\n    \"mcpjam\",\n    \"mistral-vibe\",\n    \"moxby\",\n    \"mux\",\n    \"opencode\",\n    \"openhands\",\n    \"ona\",\n    \"pi\",\n    \"qoder\",\n    \"qoder-cn\",\n    \"qwen-code\",\n    \"replit\",\n    \"reasonix\",\n    \"rovodev\",\n    \"roo\",\n    \"tabnine-cli\",\n    \"terramind\",\n    \"tinycloud\",\n    \"trae\",\n    \"trae-cn\",\n    \"warp\",\n    \"windsurf\",\n    \"zed\",\n    \"zencoder\",\n    \"zenflow\",\n    \"neovate\",\n    \"pochi\",\n    \"promptscript\",\n    \"adal\",\n    \"universal\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/vercel-labs/skills.git\"\n  },\n  \"homepage\": \"https://github.com/vercel-labs/skills#readme\",\n  \"bugs\": {\n    \"url\": \"https://github.com/vercel-labs/skills/issues\"\n  },\n  \"author\": \"\",\n  \"license\": \"MIT\",\n  \"devDependencies\": {\n    \"@clack/prompts\": \"^0.11.0\",\n    \"@types/bun\": \"latest\",\n    \"@types/node\": \"^22.10.0\",\n    \"@vercel/detect-agent\": \"^1.2.1\",\n    \"husky\": \"^9.1.7\",\n    \"lint-staged\": \"^16.2.7\",\n    \"obuild\": \"^0.4.22\",\n    \"picocolors\": \"^1.1.1\",\n    \"prettier\": \"^3.8.1\",\n    \"simple-git\": \"^3.27.0\",\n    \"typescript\": \"^5.9.3\",\n    \"vitest\": \"^4.0.17\",\n    \"xdg-basedir\": \"^5.1.0\"\n  },\n  \"engines\": {\n    \"node\": \">=18\"\n  },\n  \"packageManager\": \"pnpm@10.17.1\",\n  \"dependencies\": {\n    \"yaml\": \"^2.8.3\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "skill"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "medium",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 20,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 8,
      "total": 80
    },
    "strategic_score": 80
  },
  {
    "owner": "MHSanaei",
    "name": "3x-ui",
    "full_name": "MHSanaei/3x-ui",
    "url": "https://github.com/MHSanaei/3x-ui",
    "description": "Xray panel supporting multi-protocol multi-user expire day & traffic & IP limit (Vmess, Vless, Trojan, ShadowSocks, Wireguard, Hysteria, Tunnel, Mixed, HTTP, Tun)",
    "language": "Go",
    "total_stars": 41609,
    "forks": 7752,
    "stars_this_period": 103,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "ech",
        "fail2ban",
        "http",
        "hysteria2",
        "mixed",
        "nodes",
        "post-quantum",
        "reality",
        "shadowsocks",
        "shadowsocks2022",
        "tls",
        "trojan",
        "tun",
        "tunnel",
        "vless",
        "vmess",
        "wireguard",
        "x25519",
        "xhttp"
      ],
      "license": "GPL-3.0",
      "open_issues": 79,
      "created_at": "2023-02-09T19:16:57Z",
      "pushed_at": "2026-06-26T20:30:34Z",
      "homepage": "https://docs.sanaei.dev/",
      "default_branch": "main",
      "forks": 7752,
      "watchers": 271,
      "archived": false,
      "size_kb": 50261
    },
    "readme_content": "[English](/README.md) | [فارسی](/README.fa_IR.md) | [العربية](/README.ar_EG.md) | [中文](/README.zh_CN.md) | [Español](/README.es_ES.md) | [Русский](/README.ru_RU.md) | [Türkçe](/README.tr_TR.md)\n\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"./media/3x-ui-dark.png\">\n    <img alt=\"3x-ui\" src=\"./media/3x-ui-light.png\">\n  </picture>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/MHSanaei/3x-ui/releases\"><img src=\"https://img.shields.io/github/v/release/mhsanaei/3x-ui\" alt=\"Release\"></a>\n  <a href=\"https://github.com/MHSanaei/3x-ui/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/mhsanaei/3x-ui/release.yml.svg\" alt=\"Build\"></a>\n  <a href=\"#\"><img src=\"https://img.shields.io/github/go-mod/go-version/mhsanaei/3x-ui.svg\" alt=\"GO Version\"></a>\n  <a href=\"https://github.com/MHSanaei/3x-ui/releases/latest\"><img src=\"https://img.shields.io/github/downloads/mhsanaei/3x-ui/total.svg\" alt=\"Downloads\"></a>\n  <a href=\"https://www.gnu.org/licenses/gpl-3.0.en.html\"><img src=\"https://img.shields.io/badge/license-GPL%20V3-blue.svg?longCache=true\" alt=\"License\"></a>\n  <a href=\"https://pkg.go.dev/github.com/mhsanaei/3x-ui/v3\"><img src=\"https://pkg.go.dev/badge/github.com/mhsanaei/3x-ui/v3.svg\" alt=\"Go Reference\"></a>\n  <a href=\"https://goreportcard.com/report/github.com/mhsanaei/3x-ui/v3\"><img src=\"https://goreportcard.com/badge/github.com/mhsanaei/3x-ui/v3\" alt=\"Go Report Card\"></a>\n</p>\n\n**3X-UI** is an advanced, open-source web control panel for managing [Xray-core](https://github.com/XTLS/Xray-core) servers. It provides a clean, multi-language interface for deploying, configuring, and monitoring a wide range of proxy and VPN protocols — from a single VPS to multi-node deployments.\n\nBuilt as an enhanced fork of the original X-UI project, 3X-UI adds broader protocol support, improved stability, per-client traffic accounting, and many quality-of-life features.\n\n> [!IMPORTANT]\n> This project is intended for personal use only. Please do not use it for illegal purposes or in a production environment.\n\n## Features\n\n- **Multi-protocol inbounds** — VLESS, VMess, Trojan, Shadowsocks, WireGuard, Hysteria2, HTTP, SOCKS (Mixed), Dokodemo-door / Tunnel, and TUN.\n- **Modern transports & security** — TCP (Raw), mKCP, WebSocket, gRPC, HTTPUpgrade, and XHTTP, secured with TLS, XTLS, and REALITY.\n- **Fallbacks** — serve multiple protocols on a single port (e.g. VLESS and Trojan on 443) using Xray's fallback support.\n- **Per-client management** — traffic quotas, expiry dates, IP limits, live online status, and one-click share links, QR codes, and subscriptions.\n- **Traffic statistics** — per inbound, per client, and per outbound, with reset controls.\n- **Multi-node support** — manage and scale across multiple servers from a single panel.\n- **Outbound & routing** — WARP, NordVPN, custom routing rules, load balancers, and outbound proxy chaining.\n- **Built-in subscription server** with multiple output formats and [custom page templates](docs/custom-subscription-templates.md).\n- **Telegram bot** for remote monitoring and management.\n- **RESTful API** with in-panel Swagger documentation.\n- **Flexible storage** — SQLite (default) or PostgreSQL.\n- **13 UI languages** with dark and light themes.\n- **Fail2ban integration** for enforcing per-client IP limits.\n\n## Screenshots\n\n<details>\n<summary>Click to expand</summary>\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"./media/01-overview-dark.png\">\n  <img alt=\"Overview\" src=\"./media/01-overview-light.png\">\n</picture>\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"./media/02-add-inbound-dark.png\">\n  <img alt=\"Inbounds\" src=\"./media/02-add-inbound-light.png\">\n</picture>\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"./media/03-add-client-dark.png\">\n  <img alt=\"Add client\" src=\"./media/03-add-client-light.png\">\n</picture>\n\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"./media/05-add-nodes-dark.png\">\n  <img alt=\"Configs\" src=\"./media/05-add-nodes-light.png\">\n</picture>\n\n</details>\n\n## Quick Start\n\n```bash\nbash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)\n```\n\nTo install a specific version, append its tag (e.g. `v3.4.0`):\n\n```bash\nbash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) v3.4.0\n```\n\nTo install the rolling **dev** build (latest per-commit pre-release from `main`, not a stable release), pass `dev-latest`:\n\n```bash\nbash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) dev-latest\n```\n\nDuring installation a random username, password, and access path are generated. After installation, run `x-ui` to open the management menu, where you can start/stop the service, view or reset your login credentials, manage SSL certificates, and more.\n\nFor full documentation, please visit the [project Wiki](https://github.com/MHSanaei/3x-ui/wiki).\n\n### Unattended install\n\nThe installer also runs **non-interactively** for cloud-init.\nSet `XUI_NONINTERACTIVE=1` (or pipe with no TTY) and it installs end-to-end with\nzero prompts, generating random credentials and writing them to\n`/etc/x-ui/install-result.env`. See [`deploy/`](deploy/) for:\n\n- [Cloud-init user-data](deploy/cloud-init/) — unattended install on any cloud (Hetzner/AWS/DO/Vultr/GCP/Azure/Oracle)\n- [Hetzner Cloud notes](deploy/marketplace/hetzner/) — cloud-init deployment on Hetzner\n\n## Supported Platforms\n\n**Operating systems:** Ubuntu, Debian, Armbian, Fedora, CentOS, RHEL, AlmaLinux, Rocky Linux, Oracle Linux, Amazon Linux, Virtuozzo, Arch, Manjaro, Parch, openSUSE (Tumbleweed / Leap), Alpine, and Windows.\n\n**Architectures:** `amd64` · `386` · `arm64` (aarch64) · `armv7` · `armv6` · `armv5` · `s390x`.\n\n## Database Options\n\n3X-UI supports two backends, chosen during the install:\n\n- **SQLite** (default) — a single file at `/etc/x-ui/x-ui.db`. Zero setup, ideal for small and medium deployments.\n- **PostgreSQL** — recommended for high client counts or multi-node setups. The installer can install PostgreSQL locally for you, or accept a DSN to an existing server.\n\nAt runtime the backend is selected via environment variables (the installer writes these to `/etc/default/x-ui` for you):\n\n```\nXUI_DB_TYPE=postgres\nXUI_DB_DSN=postgres://xui:password@127.0.0.1:5432/xui?sslmode=disable\n```\n\n### Migrating an existing SQLite install to PostgreSQL\n\n```bash\nx-ui migrate-db --dsn \"postgres://xui:password@127.0.0.1:5432/xui?sslmode=disable\"\n# then set XUI_DB_TYPE and XUI_DB_DSN in /etc/default/x-ui and restart:\nsystemctl restart x-ui\n```\n\nThe source SQLite file is left untouched; remove it manually once you have verified the new backend.\n\n### Docker\n\nThe default `docker compose up -d` keeps using SQLite. To run with the bundled PostgreSQL service, uncomment the two `XUI_DB_*` env lines in `docker-compose.yml` and start with the profile:\n\n```bash\ndocker compose --profile postgres up -d\n```\n\nThe image bundles Fail2ban (enabled by default) to enforce per-client **IP limits**. Fail2ban bans offenders with `iptables`, which requires the `NET_ADMIN` capability. `docker-compose.yml` already grants it via `cap_add`; if you start the container with `docker run` instead, add the capabilities yourself, otherwise bans are logged but never applied:\n\n```bash\ndocker run -d --cap-add=NET_ADMIN --cap-add=NET_RAW ... ghcr.io/mhsanaei/3x-ui\n```\n\n## Environment Variables\n\n| Variable | Description | Default |\n| --- | --- | --- |\n| `XUI_DB_TYPE` | Database backend: `sqlite` or `postgres` | `sqlite` |\n| `XUI_DB_DSN` | PostgreSQL connection string (when `XUI_DB_TYPE=postgres`) | — |\n| `XUI_DB_FOLDER` | Directory for the SQLite database file | `/etc/x-ui` |\n| `XUI_DB_MAX_OPEN_CONNS` | Maximum open connections (PostgreSQL pool) | — |\n| `XUI_DB_MAX_IDLE_CONNS` | Maximum idle connections (PostgreSQL pool) | — |\n| `XUI_INIT_WEB_BASE_PATH` | The initial URI path for the web panel | `/` |\n| `XUI_ENABLE_FAIL2BAN` | Enable Fail2ban-based IP-limit enforcement | `true` |\n| `XUI_LOG_LEVEL` | Log verbosity (`debug`, `info`, `warning`, `error`) | `info` |\n| `XUI_DEBUG` | Enable debug mode | `false` |\n| `XUI_TUNNEL_HEALTH_MONITOR` | Enable the tunnel health monitor (probes a URL and restarts xray after repeated failures; a restart drops all clients) | `false` |\n| `XUI_TUNNEL_HEALTH_PROXY` | Proxy the probe is sent through; point it at a local xray inbound so the probe tests the tunnel (e.g. `socks5://127.0.0.1:1080`). Empty means the probe only checks host connectivity | — |\n| `XUI_TUNNEL_HEALTH_URL` | URL probed for tunnel health | `https://www.cloudflare.com/cdn-cgi/trace` |\n| `XUI_TUNNEL_HEALTH_INTERVAL` | Interval between probes | `30s` |\n| `XUI_TUNNEL_HEALTH_TIMEOUT` | Per-probe timeout | `10s` |\n| `XUI_TUNNEL_HEALTH_FAILURES` | Consecutive failures before a restart is triggered | `3` |\n| `XUI_TUNNEL_HEALTH_COOLDOWN` | Minimum delay between consecutive restarts | `5m` |\n\n## Supported Languages\n\nThe panel UI is available in 13 languages:\n\nEnglish · فارسی · العربية · 中文（简体） · 中文（繁體） · Español · Русский · Українська · Türkçe · Tiếng Việt · 日本語 · Bahasa Indonesia · Português (Brasil)\n\n## Contributing\n\nContributions are welcome. Please read the [Contributing Guide](/CONTRIBUTING.md) before opening an issue or pull request.\n\n## A Special Thanks to\n\n- [alireza0](https://github.com/alireza0/)\n\n## Acknowledgment\n\n- [Iran v2ray rules](https://github.com/chocolate4u/Iran-v2ray-rules) (License: **GPL-3.0**): _Enhanced v2ray/xray and v2ray/xray-clients routing rules with built-in Iranian domains and a focus on security and adblocking._\n- [Russia v2ray rules](https://github.com/runetfreedom/russia-v2ray-rules-dat) (License: **GPL-3.0**): _This repository contains automatically updated V2Ray routing rules based on data on blocked domains and addresses in Russia._\n\n## Community Tools\n\nTools and integrations built by the community around 3x-ui.\n\n- [terraform-provider-3x-ui](https://github.com/batonogov/terraform-provider-threexui) (License: **MIT**): _Manage inbounds, clients, panel settings, and Xray configuration as code with Terraform / OpenTofu._\n\n## Support project\n\n**If this project is helpful to you, you may wish to give it a**:star2:\n\n<a href=\"https://www.buymeacoffee.com/MHSanaei\" target=\"_blank\">\n<img src=\"./media/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 70px !important;width: 277px !important;\" >\n</a>\n\n</br>\n<a href=\"https://nowpayments.io/donation/hsanaei\" target=\"_blank\" rel=\"noreferrer noopener\">\n   <img src=\"./media/donation-button-black.svg\" alt=\"Crypto donation button by NOWPayments\">\n</a>\n\n## Stargazers over Time\n\n[![Stargazers over time](https://starchart.cc/MHSanaei/3x-ui.svg?variant=adaptive)](https://starchart.cc/MHSanaei/3x-ui)\n",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/mhsanaei/3x-ui/v3\n\ngo 1.26.4\n\nrequire (\n\tgithub.com/gin-contrib/gzip v1.2.6\n\tgithub.com/gin-contrib/sessions v1.1.0\n\tgithub.com/gin-gonic/gin v1.12.0\n\tgithub.com/go-ldap/ldap/v3 v3.4.13\n\tgithub.com/go-playground/validator/v10 v10.30.3\n\tgithub.com/goccy/go-json v0.10.6\n\tgithub.com/goccy/go-yaml v1.19.2\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gorilla/websocket v1.5.3\n\tgithub.com/joho/godotenv v1.5.1\n\tgithub.com/mymmrac/telego v1.10.0\n\tgithub.com/nicksnyder/go-i18n/v2 v2.6.1\n\tgithub.com/op/go-logging v0.0.0-20160315200505-970db520ece7\n\tgithub.com/robfig/cron/v3 v3.0.1\n\tgithub.com/shirou/gopsutil/v4 v4.26.5\n\tgithub.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e\n\tgithub.com/valyala/fasthttp v1.71.0\n\tgithub.com/xlzd/gotp v0.1.0\n\tgithub.com/xtls/xray-core v1.260327.1-0.20260622185510-b99c3e56574f\n\tgo.uber.org/atomic v1.11.0\n\tgolang.org/x/crypto v0.53.0\n\tgolang.org/x/sys v0.46.0\n\tgolang.org/x/text v0.38.0\n\tgoogle.golang.org/grpc v1.81.1\n\tgopkg.in/natefinch/lumberjack.v2 v2.2.1\n\tgorm.io/driver/postgres v1.6.0\n\tgorm.io/driver/sqlite v1.6.0\n\tgorm.io/gorm v1.31.2\n\tpgregory.net/rapid v1.3.0\n)\n\nrequire (\n\tgithub.com/Azure/go-ntlmssp v0.1.1 // indirect\n\tgithub.com/andybalholm/brotli v1.2.1 // indirect\n\tgithub.com/apernet/quic-go v0.59.1-0.20260425001925-6c6cc9bcb716 // indirect\n\tgithub.com/bytedance/gopkg v0.1.4 // indirect\n\tgithub.com/bytedance/sonic v1.15.2 // indirect\n\tgithub.com/bytedance/sonic/loader v0.5.1 // indirect\n\tgithub.com/cloudflare/circl v1.6.4 // indirect\n\tgithub.com/cloudwego/base64x v0.1.7 // indirect\n\tgithub.com/ebitengine/purego v0.10.1 // indirect\n\tgithub.com/gabriel-vasile/mimetype v1.4.13 // indirect\n\tgithub.com/gin-contrib/sse v1.1.1 // indirect\n\tgithub.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 // indirect\n\tgithub.com/go-ole/go-ole v1.3.0 // indirect\n\tgithub.com/go-playground/locales v0.14.1 // indirect\n\tgithub.com/go-playground/universal-translator v0.18.1 // indirect\n\tgithub.com/google/btree v1.1.3 // indirect\n\tgithub.com/gorilla/context v1.1.2 // indirect\n\tgithub.com/gorilla/securecookie v1.1.2 // indirect\n\tgithub.com/gorilla/sessions v1.4.0 // indirect\n\tgithub.com/grbit/go-json v0.11.0 // indirect\n\tgithub.com/jackc/pgpassfile v1.0.0 // indirect\n\tgithub.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect\n\tgithub.com/jackc/pgx/v5 v5.10.0 // indirect\n\tgithub.com/jackc/puddle/v2 v2.2.2 // indirect\n\tgithub.com/jinzhu/inflection v1.0.0 // indirect\n\tgithub.com/jinzhu/now v1.1.5 // indirect\n\tgithub.com/json-iterator/go v1.1.12 // indirect\n\tgithub.com/juju/ratelimit v1.0.2 // indirect\n\tgithub.com/klauspost/compress v1.18.6\n\tgithub.com/klauspost/cpuid/v2 v2.3.0 // indirect\n\tgithub.com/leodido/go-urn v1.4.0 // indirect\n\tgithub.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect\n\tgithub.com/mattn/go-isatty v0.0.22 // indirect\n\tgithub.com/mattn/go-sqlite3 v1.14.47 // indirect\n\tgithub.com/miekg/dns v1.1.72 // indirect\n\tgithub.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect\n\tgithub.com/modern-go/reflect2 v1.0.2 // indirect\n\tgithub.com/pelletier/go-toml/v2 v2.4.2 // indirect\n\tgithub.com/pion/dtls/v3 v3.1.4 // indirect\n\tgithub.com/pion/logging v0.2.4 // indirect\n\tgithub.com/pion/stun/v3 v3.1.6 // indirect\n\tgithub.com/pion/transport/v4 v4.0.2 // indirect\n\tgithub.com/pires/go-proxyproto v0.12.0 // indirect\n\tgithub.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect\n\tgithub.com/quic-go/qpack v0.6.0 // indirect\n\tgithub.com/quic-go/quic-go v0.60.0 // indirect\n\tgithub.com/refraction-networking/utls v1.8.3-0.20260301010127-aa6edf4b11af\n\tgithub.com/rogpeppe/go-internal v1.15.0 // indirect\n\tgithub.com/sagernet/sing v0.8.10 // indirect\n\tgithub.com/sagernet/sing-shadowsocks v0.2.9 // indirect\n\tgithub.com/tklauser/go-sysconf v0.4.0 // indirect\n\tgithub.com/tklauser/numcpus v0.12.0 // indirect\n\tgithub.com/twitchyliquid64/golang-asm v0.15.1 // indirect\n\tgithub.com/ugorji/go/codec v1.3.1 // indirect\n\tgithub.com/valyala/bytebufferpool v1.0.0 // indirect\n\tgithub.com/valyala/fastjson v1.6.10 // indirect\n\tgithub.com/vishvananda/netlink v1.3.1 // indirect\n\tgithub.com/vishvananda/netns v0.0.5 // indirect\n\tgithub.com/wlynxg/anet v0.0.5 // indirect\n\tgithub.com/xtls/reality v0.0.0-20260322125925-9234c772ba8f // indirect\n\tgithub.com/yusufpapurcu/wmi v1.2.4 // indirect\n\tgo.mongodb.org/mongo-driver/v2 v2.7.0 // indirect\n\tgo4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect\n\tgolang.org/x/arch v0.28.0 // indirect\n\tgolang.org/x/exp v0.0.0-20260611194520-c48552f49976 // indirect\n\tgolang.org/x/mod v0.37.0 // indirect\n\tgolang.org/x/net v0.56.0\n\tgolang.org/x/sync v0.21.0 // indirect\n\tgolang.org/x/time v0.15.0 // indirect\n\tgolang.org/x/tools v0.47.0 // indirect\n\tgolang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect\n\tgolang.zx2c4.com/wireguard v0.0.0-20260522210424-ecfc5a8d5446 // indirect\n\tgolang.zx2c4.com/wireguard/windows v1.0.1 // indirect\n\tgoogle.golang.org/genproto/googleapis/rpc v0.0.0-20",
    "strategic_keywords": [
      "rag",
      "workflow",
      "protocol"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 15,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "Tencent",
    "name": "WeKnora",
    "full_name": "Tencent/WeKnora",
    "url": "https://github.com/Tencent/WeKnora",
    "description": "Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.",
    "language": "Go",
    "total_stars": 17385,
    "forks": 2279,
    "stars_this_period": 83,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agentic",
        "ai",
        "chatbot",
        "embeddings",
        "evaluation",
        "generative-ai",
        "golang",
        "knowledge-base",
        "llm",
        "multi-tenant",
        "multimodel",
        "ollama",
        "openai",
        "question-answering",
        "rag",
        "reranking",
        "semantic-search",
        "vector-search",
        "wiki"
      ],
      "license": "NOASSERTION",
      "open_issues": 285,
      "created_at": "2025-07-22T08:01:23Z",
      "pushed_at": "2026-06-26T14:41:04Z",
      "homepage": "https://weknora.weixin.qq.com",
      "default_branch": "main",
      "forks": 2279,
      "watchers": 84,
      "archived": false,
      "size_kb": 78813
    },
    "readme_content": "<p align=\"center\">\n  <picture>\n    <img src=\"./docs/images/logo.png\" alt=\"WeKnora Logo\" height=\"120\"/>\n  </picture>\n</p>\n\n<p align=\"center\">\n  <picture>\n    <a href=\"https://trendshift.io/repositories/15289\" target=\"_blank\">\n      <img src=\"https://trendshift.io/api/badge/repositories/15289\" alt=\"Tencent%2FWeKnora | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/>\n    </a>\n  </picture>\n</p>\n<p align=\"center\">\n    <a href=\"https://weknora.weixin.qq.com\" target=\"_blank\">\n        <img alt=\"Official Website\" src=\"https://img.shields.io/badge/Official Website-WeKnora-4e6b99\">\n    </a>\n    <a href=\"https://chatbot.weixin.qq.com\" target=\"_blank\">\n        <img alt=\"WeChat Dialog Open Platform\" src=\"https://img.shields.io/badge/WeChat Dialog Open Platform-5ac725\">\n    </a>\n    <a href=\"https://chromewebstore.google.com/detail/jpemjbopikggjlmikmclgbmkhhopjdgd\" target=\"_blank\">\n        <img alt=\"Chrome Extension\" src=\"https://img.shields.io/badge/Chrome Extension-WeKnora-4285F4\">\n    </a>\n    <a href=\"https://clawhub.ai/lyingbug/weknora\" target=\"_blank\">\n        <img alt=\"ClawHub Skill\" src=\"https://img.shields.io/badge/ClawHub Skill-WeKnora-ff6b35\">\n    </a>\n    <a href=\"https://github.com/Tencent/WeKnora/blob/main/LICENSE\">\n        <img src=\"https://img.shields.io/badge/License-MIT-ffffff?labelColor=d4eaf7&color=2e6cc4\" alt=\"License\">\n    </a>\n    <a href=\"./CHANGELOG.md\">\n        <img alt=\"Version\" src=\"https://img.shields.io/badge/version-0.6.3-2e6cc4?labelColor=d4eaf7\">\n    </a>\n</p>\n\n<p align=\"center\">\n| <b>English</b> | <a href=\"./README_CN.md\"><b>简体中文</b></a> | <a href=\"./README_JA.md\"><b>日本語</b></a> | <a href=\"./README_KO.md\"><b>한국어</b></a> |\n</p>\n\n<p align=\"center\">\n  <h4 align=\"center\">\n\n  [Overview](#-overview) • [Architecture](#-architecture) • [Key Features](#-key-features) • [Getting Started](#-getting-started) • [API Reference](#-api-reference) • [Developer Guide](#-developer-guide)\n  \n  </h4>\n</p>\n\n# 💡 WeKnora — Turn Documents into Living Knowledge with RAG, Agents and Auto-Wiki\n\n## 📌 Overview\n\n[**WeKnora**](https://weknora.weixin.qq.com) is an open-source, LLM-powered knowledge framework built for enterprise-grade document understanding, semantic retrieval, and autonomous reasoning.\n\nIt is organized around three core capabilities: **RAG-based Quick Q&A** for everyday lookups, a **ReAct Agent** that autonomously orchestrates retrieval, MCP tools and web search to handle complex multi-step tasks, and a brand-new **Wiki Mode** in which agents distill raw documents into a self-maintaining, interlinked markdown knowledge base with an interactive knowledge graph. Combined with multi-source ingestion (Feishu / Notion / Yuque / RSS, and growing), **website embed widgets** for publishing agents to external sites, 20+ LLM provider integrations, full Langfuse observability, **enterprise-ready multi-tenant RBAC** (4-tier role matrix + per-resource ownership + per-tenant audit log), and a fully self-hostable modular architecture, WeKnora turns scattered documents into a queryable, reasoning-capable, continuously evolving knowledge asset.\n\nThe framework supports auto-syncing knowledge from Feishu, Notion, and Yuque (more data sources coming soon), handles 10+ document formats including PDF, Word, images, and Excel, and can serve Q&A directly through IM channels like WeCom, Feishu, Slack, and Telegram. It is compatible with major LLM providers including OpenAI, DeepSeek, Qwen (Alibaba Cloud), Zhipu, Hunyuan, Gemini, MiniMax, NVIDIA, and Ollama. Its fully modular design allows swapping LLMs, vector databases, and storage backends, with support for local and private cloud deployment ensuring complete data sovereignty. WeKnora also integrates with **Langfuse** for comprehensive observability into agent reasoning, token usage, and pipeline tracing.\n\n\n## ✨ Latest Updates\n\n- **v0.6.3** — Website embed widget & Integrations Center (secure-mode token exchange + rate limits); chat experience overhaul (citation popovers, RAG pipeline progress, streaming markdown); document multi-tag & batch reparse; Wiki folders & hierarchy navigation; RSS data source; MCP OAuth2; EPUB / MHTML parsing; agent model-readiness checks; model test debugger; session source filter; workspace deletion UI. See [`CHANGELOG.md`](./CHANGELOG.md).\n- **v0.6.2** — Per-upload process configuration with upload-confirm dialog; document reparse with `process_config`; `weknora` CLI v0.9 (bundled Agent Skills, `session stop`, auth/profile harmonization); KB marquee multi-select; HNSW index for 1024-dim pgvector embeddings; chat resources store refactor; Langfuse-only tracing (Jaeger removed). See [`CHANGELOG.md`](./CHANGELOG.md).\n- **v0.6.1** — Document parsing trace timeline (Langfuse-style span tree with stage-by-stage progress + stop-parse); OpenSearch vector store driver; declarative built-in models via YAML; system admin & consolidated platform settings + audit log; new-user onboarding guide; settings UI redesign; `weknora` CLI v0.7 / v0.8 (agent-first wire contract, NDJSON, `--dry-run`); OpenDataLoader + PaddleOCR-VL parsers; MCP server multi-transport (stdio / SSE / HTTP); per-model thinking-mode config; Tencent LKEAP rerank + native Gemini embeddings + MiniMax-M3. See [`CHANGELOG.md`](./CHANGELOG.md).\n- **v0.6.0** — Tenant RBAC (4-tier role matrix `Owner` / `Admin` / `Contributor` / `Viewer` + per-KB ownership + per-tenant audit log), tenant member management & multi-workspace UX, self-service workspaces; `weknora` CLI v0.4 GA with `mcp serve`; KB retrieval fan-out across vector stores; AES-256-GCM credential encryption + docreader gRPC TLS + Token; Zhipu embedder + Huawei OBS; server-side user preferences; Go 1.26.0. See [`docs/RBAC说明.md`](./docs/RBAC说明.md) and [`CHANGELOG.md`](./CHANGELOG.md).\n- **v0.5.2** — Wiki ingest scales to 40k-document KBs (task queue + DLQ); MCP human-in-the-loop tool approval; Anthropic / Apache Doris / Tencent VectorDB / KS3 / SearXNG backends; adaptive 3-tier chunking with live preview; global ⌘K command palette; Yuque connector + WeChat Mini Program; `weknora` CLI preview.\n- **v0.5.1** — Knowledge-base batch management; tenant-wide IM channels overview; session search + user-scoped pinning; unified Model / Web Search / MCP settings cards; per-agent LLM timeout; desktop tenant switching.\n- **v0.5.0** — Wiki Mode GA — agents auto-generate structured, interlinked Markdown wiki pages with a knowledge graph; wiki browser + visual graph in the UI.\n- **v0.4.0** — WeKnora Cloud (hosted LLM + parsing); Chrome Extension; ClawHub Skill; WeChat IM; attachment processing; Azure OpenAI / Alibaba OSS; Notion connector; Baidu + Ollama web search; VectorStore management.\n- **v0.3.6** — ASR (audio); Feishu data-source auto-sync; OIDC; IM quote-reply context + thread-based sessions; document summarization; Tavily search; parallel tool calling; agent @mention scope restriction.\n- **v0.3.5** — Telegram / DingTalk / Mattermost IM; IM slash commands + QA queue; suggested questions; VLM auto-describe MCP tool images; Novita AI; channel tracking.\n- **v0.3.4** — WeCom / Feishu / Slack IM; multimodal image support; NVIDIA model API; Weaviate; AWS S3; AES-256-GCM API-key encryption; built-in MCP service; hybrid-search optimization; `final_answer` tool.\n- **v0.3.3** — Parent-child chunking; KB pinning; fallback response; passage cleaning for rerank; storage auto-creation; Milvus.\n- **v0.3.2** — Knowledge Search entry; per-source parser & storage engine config; image rendering in local storage; document preview; Volcengine TOS; Mermaid rendering; batch session management; memory graph preview.\n- **v0.3.0** — Shared Space; Agent Skills + sandboxed execution; custom agents; Data Analyst agent; thinking mode; Bing / Google web search; API Key auth; Helm chart; Korean i18n; Qdrant.\n- **v0.2.0** — Agent Mode (ReACT); multi-type knowledge bases (FAQ + document); conversation strategy config; DuckDuckGo web search; MCP tool integration; new UI with agent mode switching; MQ async task management.\n\n\n## 📱 Interface Showcase\n\n<table>\n  <tr>\n    <td colspan=\"2\" align=\"center\"><b>💬 Intelligent Q&A Conversation</b><br/><img src=\"./docs/images/qa.png\" alt=\"Intelligent Q&A Conversation\" width=\"100%\"></td>\n  </tr>\n  <tr>\n    <td width=\"50%\" align=\"center\"><b>📖 Wiki Browser</b><br/><img src=\"./docs/images/wiki-browser.png\" alt=\"Wiki Browser\" width=\"100%\"></td>\n    <td width=\"50%\" align=\"center\"><b>🕸️ Wiki Knowledge Graph</b><br/><img src=\"./docs/images/wiki-graph.png\" alt=\"Wiki Knowledge Graph\" width=\"100%\"></td>\n  </tr>\n  <tr>\n    <td width=\"50%\" align=\"center\"><b>🤖 Agent Mode · Tool Call Process</b><br/><img src=\"./docs/images/agent-qa.png\" alt=\"Agent Mode Tool Call Process\" width=\"100%\"></td>\n    <td width=\"50%\" align=\"center\"><b>⚙️ Conversation Settings</b><br/><img src=\"./docs/images/settings.png\" alt=\"Conversation Settings\" width=\"100%\"></td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" align=\"center\"><b>🔭 Observability · Langfuse Tracing</b><br/><img src=\"./docs/images/langfuse.png\" alt=\"Observability Langfuse Tracing\" width=\"100%\"></td>\n  </tr>\n</table>\n\n## 🏗️ Architecture\n\n![weknora-architecture.png](./docs/images/architecture.png)\n\nFully modular pipeline from document parsing, vectorization, and retrieval to LLM inference — every component is swappable and extensible. Supports local / private cloud deployment with full data sovereignty and a zero-barrier Web UI for quick onboarding.\n\n## 🧩 Feature Overview\n\n**Intelligent Conversation**\n\n| Capability | Details |\n|------------|---------|\n| Intelligent Reasoning | ReACT progressive multi-step reasoning, autonomously orchestrating knowledge retrieval, MCP tools, and web search |\n| Quick Q&A | RAG-based Q&A over knowledge bases for fast and accurate answers |\n| Wiki Mode | Agent-driven auto-generation of structured, interlinked markdown Wiki pages from raw documents |\n| Tool Calling | Built-in tools, MCP tools (incl. OAuth2 remote services), web search |\n| Conversation Strategy | Online Prompt editing, retrieval threshold tuning, multi-turn context awareness |\n| Suggested Questions | Auto-generated question suggestions based on knowledge base content |\n| Citations & RAG Progress | Inline citation popovers, shared markdown rendering, and stage-by-stage RAG pipeline progress in chat |\n| Session Management | Filter and group sidebar sessions by source (Web / IM / Embed) |\n\n**Knowledge Management**\n\n| Capability | Details |\n|------------|---------|\n| Knowledge Base Types | FAQ / Document / Wiki with folder import, URL import, multi-tag management, and online entry |\n| Per-Upload Process Config | Override parser, chunking, multimodal (VLM / ASR), graph extraction, and question generation per upload batch via upload-confirm dialog or `process_config` API; reparse with new settings |\n| Batch Reparse | Re-queue parsing for multiple documents at once with optional per-batch `process_config` |\n| Data Source Import | Auto-sync from Feishu / Notion / Yuque / RSS feeds (more data sources coming soon); incremental and full sync |\n| Document Formats | PDF / Word / Txt / Markdown / HTML / EPUB / MHTML / Images / CSV / Excel / PPT / JSON |\n| Retrieval Strategies | BM25 sparse / Dense retrieval / GraphRAG / parent-child chunking / HNSW-accelerated pgvector (1024-dim) / multi-dimensional indexing |\n| Batch Selection | Marquee drag-select multiple documents in the KB list for batch operations |\n| E2E Testing | Full-pipeline visualization with recall hit rate, BLEU / ROUGE metric evaluation |\n\n**Integrations & Extensions**\n\n| Capability | Details |\n|------------|---------|\n| LLMs | OpenAI / Azure OpenAI / Anthropic (Claude) / DeepSeek / Qwen (Alibaba Cloud) / Zhipu / Hunyuan / Doubao (Volcengine) / Gemini / MiniMax / NVIDIA / Novita AI / SiliconFlow / OpenRouter / Ollama |\n| Embeddings | Ollama / BGE / GTE / Zhipu / OpenAI-compatible APIs |\n| Vector DBs | PostgreSQL (pgvector) / Elasticsearch / OpenSearch / Milvus / Weaviate / Qdrant / Apache Doris / Tencent VectorDB |\n| Object Storage",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/Tencent/WeKnora\n\ngo 1.26.0\n\nrequire (\n\tcodeberg.org/readeck/go-readability/v2 v2.1.2\n\tgithub.com/DATA-DOG/go-sqlmock v1.5.2\n\tgithub.com/JohannesKaufmann/html-to-markdown/v2 v2.5.1\n\tgithub.com/PuerkitoBio/goquery v1.12.0\n\tgithub.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.5.1\n\tgithub.com/asg017/sqlite-vec-go-bindings v0.1.6\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.7\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.17\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.16\n\tgithub.com/aws/aws-sdk-go-v2/service/s3 v1.101.0\n\tgithub.com/chromedp/chromedp v0.15.1\n\tgithub.com/duckdb/duckdb-go/v2 v2.10502.0\n\tgithub.com/elastic/go-elasticsearch/v7 v7.17.10\n\tgithub.com/elastic/go-elasticsearch/v8 v8.19.6\n\tgithub.com/gin-contrib/cors v1.7.7\n\tgithub.com/gin-gonic/gin v1.12.0\n\tgithub.com/go-openapi/strfmt v0.26.2\n\tgithub.com/go-sql-driver/mysql v1.10.0\n\tgithub.com/go-viper/mapstructure/v2 v2.5.0\n\tgithub.com/golang-jwt/jwt/v5 v5.3.1\n\tgithub.com/golang-migrate/migrate/v4 v4.19.1\n\tgithub.com/google/jsonschema-go v0.4.3\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/gorilla/websocket v1.5.3\n\tgithub.com/hibiken/asynq v0.26.0\n\tgithub.com/jackc/pgx/v5 v5.9.2\n\tgithub.com/joho/godotenv v1.5.1\n\tgithub.com/ks3sdklib/aws-sdk-go v1.11.0\n\tgithub.com/larksuite/oapi-sdk-go/v3 v3.6.1\n\tgithub.com/longbridgeapp/opencc v0.3.13\n\tgithub.com/mark3labs/mcp-go v0.52.0\n\tgithub.com/milvus-io/milvus/client/v2 v2.6.4\n\tgithub.com/minio/minio-go/v7 v7.1.0\n\tgithub.com/mmcdole/gofeed v1.3.0\n\tgithub.com/neo4j/neo4j-go-driver/v6 v6.0.0\n\tgithub.com/ollama/ollama v0.23.2\n\tgithub.com/open-dingtalk/dingtalk-stream-sdk-go v0.9.1\n\tgithub.com/opensearch-project/opensearch-go/v4 v4.6.0\n\tgithub.com/panjf2000/ants/v2 v2.12.0\n\tgithub.com/parquet-go/parquet-go v0.29.0\n\tgithub.com/pganalyze/pg_query_go/v6 v6.2.2\n\tgithub.com/pgvector/pgvector-go v0.3.0\n\tgithub.com/qdrant/go-client v1.18.1\n\tgithub.com/redis/go-redis/v9 v9.14.1\n\tgithub.com/robfig/cron/v3 v3.0.1\n\tgithub.com/sashabaranov/go-openai v1.41.2\n\tgithub.com/sirupsen/logrus v1.9.4\n\tgithub.com/slack-go/slack v0.23.1\n\tgithub.com/spf13/viper v1.21.0\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/swaggo/files v1.0.1\n\tgithub.com/swaggo/gin-swagger v1.6.1\n\tgithub.com/swaggo/swag v1.16.6\n\tgithub.com/tencent/vectordatabase-sdk-go v1.8.4\n\tgithub.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.3.103\n\tgithub.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lkeap v1.3.103\n\tgithub.com/tencentyun/cos-go-sdk-v5 v0.7.73\n\tgithub.com/tiktoken-go/tokenizer v0.7.0\n\tgithub.com/volcengine/ve-tos-golang-sdk/v2 v2.9.4\n\tgithub.com/wailsapp/wails/v2 v2.12.0\n\tgithub.com/weaviate/weaviate v1.37.3\n\tgithub.com/weaviate/weaviate-go-client/v5 v5.7.3\n\tgithub.com/xuri/excelize/v2 v2.10.1\n\tgithub.com/yanyiwu/gojieba v1.4.7\n\tgo.uber.org/dig v1.19.0\n\tgolang.org/x/crypto v0.51.0\n\tgolang.org/x/mod v0.36.0\n\tgolang.org/x/net v0.54.0\n\tgolang.org/x/sync v0.20.0\n\tgolang.org/x/time v0.15.0\n\tgoogle.golang.org/api v0.278.0\n\tgoogle.golang.org/grpc v1.81.0\n\tgoogle.golang.org/protobuf v1.36.11\n\tgopkg.in/natefinch/lumberjack.v2 v2.2.1\n\tgopkg.in/yaml.v3 v3.0.1\n\tgorm.io/driver/postgres v1.6.0\n\tgorm.io/driver/sqlite v1.6.0\n\tgorm.io/gorm v1.31.1\n)\n\nrequire (\n\tcloud.google.com/go/auth v0.20.0 // indirect\n\tcloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tfilippo.io/edwards25519 v1.2.0 // indirect\n\tgit.sr.ht/~jackmordaunt/go-toast/v2 v2.0.3 // indirect\n\tgithub.com/JohannesKaufmann/dom v0.2.0 // indirect\n\tgithub.com/KyleBanks/depth v1.2.1 // indirect\n\tgithub.com/andybalholm/brotli v1.2.0 // indirect\n\tgithub.com/andybalholm/cascadia v1.3.3 // indirect\n\tgithub.com/apache/arrow-go/v18 v18.5.1 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.10 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.24 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.9 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.15 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.23 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.11 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.17 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.21 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.42.1 // indirect\n\tgithub.com/aws/smithy-go v1.25.1 // indirect\n\tgithub.com/bahlo/generic-list-go v0.2.0 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/bep/debounce v1.2.1 // indirect\n\tgithub.com/blang/semver/v4 v4.0.0 // indirect\n\tgithub.com/buger/jsonparser v1.1.2 // indirect\n\tgithub.com/bytedance/gopkg v0.1.3 // indirect\n\tgithub.com/bytedance/sonic v1.15.0 // indirect\n\tgithub.com/byteda",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "rag",
      "skill",
      "llm",
      "eval",
      "vector",
      "embedding"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "infiniflow",
    "name": "ragflow",
    "full_name": "infiniflow/ragflow",
    "url": "https://github.com/infiniflow/ragflow",
    "description": "RAGFlow is a leading open-source Retrieval-Augmented Generation (RAG) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs",
    "language": "Go",
    "total_stars": 83694,
    "forks": 9712,
    "stars_this_period": 77,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "agentic-ai",
        "agentic-retrieval",
        "agentic-search",
        "ai",
        "ai-agents",
        "context-engine",
        "context-management",
        "llm-apps",
        "rag",
        "retrieval-augmented-generation"
      ],
      "license": "Apache-2.0",
      "open_issues": 2822,
      "created_at": "2023-12-12T06:13:13Z",
      "pushed_at": "2026-06-26T14:55:49Z",
      "homepage": "https://ragflow.io",
      "default_branch": "main",
      "forks": 9712,
      "watchers": 344,
      "archived": false,
      "size_kb": 131822
    },
    "readme_content": "<div align=\"center\">\n<a href=\"https://cloud.ragflow.io/\">\n<img src=\"web/src/assets/logo-with-text.svg\" width=\"520\" alt=\"ragflow logo\">\n</a>\n</div>\n\n<p align=\"center\">\n  <a href=\"./README.md\"><img alt=\"README in English\" src=\"https://img.shields.io/badge/English-DBEDFA\"></a>\n  <a href=\"./README_zh.md\"><img alt=\"简体中文版自述文件\" src=\"https://img.shields.io/badge/简体中文-DFE0E5\"></a>\n  <a href=\"./README_tzh.md\"><img alt=\"繁體版中文自述文件\" src=\"https://img.shields.io/badge/繁體中文-DFE0E5\"></a>\n  <a href=\"./README_ja.md\"><img alt=\"日本語のREADME\" src=\"https://img.shields.io/badge/日本語-DFE0E5\"></a>\n  <a href=\"./README_ko.md\"><img alt=\"한국어\" src=\"https://img.shields.io/badge/한국어-DFE0E5\"></a>\n  <a href=\"./README_fr.md\"><img alt=\"README en Français\" src=\"https://img.shields.io/badge/Français-DFE0E5\"></a>\n  <a href=\"./README_id.md\"><img alt=\"Bahasa Indonesia\" src=\"https://img.shields.io/badge/Bahasa Indonesia-DFE0E5\"></a>\n  <a href=\"./README_pt_br.md\"><img alt=\"Português(Brasil)\" src=\"https://img.shields.io/badge/Português(Brasil)-DFE0E5\"></a>\n  <a href=\"./README_ar.md\"><img alt=\"README in Arabic\" src=\"https://img.shields.io/badge/Arabic-DFE0E5\"></a>\n  <a href=\"./README_tr.md\"><img alt=\"Türkçe README\" src=\"https://img.shields.io/badge/Türkçe-DFE0E5\"></a>\n</p>\n\n<p align=\"center\">\n    <a href=\"https://x.com/intent/follow?screen_name=infiniflowai\" target=\"_blank\">\n        <img src=\"https://img.shields.io/twitter/follow/infiniflow?logo=X&color=%20%23f5f5f5\" alt=\"follow on X(Twitter)\">\n    </a>\n    <a href=\"https://cloud.ragflow.io\" target=\"_blank\">\n        <img alt=\"Static Badge\" src=\"https://img.shields.io/badge/Get-Started-4e6b99\">\n    </a>\n    <a href=\"https://hub.docker.com/r/infiniflow/ragflow\" target=\"_blank\">\n        <img src=\"https://img.shields.io/docker/pulls/infiniflow/ragflow?label=Docker%20Pulls&color=0db7ed&logo=docker&logoColor=white&style=flat-square\" alt=\"docker pull infiniflow/ragflow:v0.26.1\">\n    </a>\n    <a href=\"https://github.com/infiniflow/ragflow/releases/latest\">\n        <img src=\"https://img.shields.io/github/v/release/infiniflow/ragflow?color=blue&label=Latest%20Release\" alt=\"Latest Release\">\n    </a>\n    <a href=\"https://github.com/infiniflow/ragflow/blob/main/LICENSE\">\n        <img height=\"21\" src=\"https://img.shields.io/badge/License-Apache--2.0-ffffff?labelColor=d4eaf7&color=2e6cc4\" alt=\"license\">\n    </a>\n    <a href=\"https://deepwiki.com/infiniflow/ragflow\">\n        <img alt=\"Ask DeepWiki\" src=\"https://deepwiki.com/badge.svg\">\n    </a>\n</p>\n\n<h4 align=\"center\">\n  <a href=\"https://cloud.ragflow.io\">Cloud</a> |\n  <a href=\"https://ragflow.io/docs/dev/\">Document</a> |\n  <a href=\"https://github.com/infiniflow/ragflow/issues/12241\">Roadmap</a> |\n  <a href=\"https://discord.gg/NjYzJD3GM3\">Discord</a>\n</h4>\n\n<div align=\"center\" style=\"margin-top:20px;margin-bottom:20px;\">\n<img src=\"https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/ragflow-octoverse.png\" width=\"1200\"/>\n</div>\n\n<div align=\"center\">\n<a href=\"https://trendshift.io/repositories/9064\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/9064\" alt=\"infiniflow%2Fragflow | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</div>\n\n<details open>\n<summary><b>📕 Table of Contents</b></summary>\n\n- 💡 [What is RAGFlow?](#-what-is-ragflow)\n- 🎮 [Get Started](#-get-started)\n- 📌 [Latest Updates](#-latest-updates)\n- 🌟 [Key Features](#-key-features)\n- 🔎 [System Architecture](#-system-architecture)\n- 🎬 [Self-Hosting](#-self-hosting)\n- 🔧 [Configurations](#-configurations)\n- 🔧 [Build a Docker image](#-build-a-docker-image)\n- 🔨 [Launch service from source for development](#-launch-service-from-source-for-development)\n- 📚 [Documentation](#-documentation)\n- 📜 [Roadmap](#-roadmap)\n- 🏄 [Community](#-community)\n- 🙌 [Contributing](#-contributing)\n\n</details>\n\n## 💡 What is RAGFlow?\n\n[RAGFlow](https://ragflow.io/) is a leading open-source Retrieval-Augmented Generation ([RAG](https://ragflow.io/basics/what-is-rag)) engine that fuses cutting-edge RAG with Agent capabilities to create a superior context layer for LLMs. It offers a streamlined RAG workflow adaptable to enterprises of any scale. Powered by a converged [context engine](https://ragflow.io/basics/what-is-agent-context-engine) and pre-built agent templates, RAGFlow enables developers to transform complex data into high-fidelity, production-ready AI systems with exceptional efficiency and precision.\n\n## 🎮 Get Started\n\nTry our cloud service at [https://cloud.ragflow.io](https://cloud.ragflow.io).\n\n<div align=\"center\" style=\"margin-top:20px;margin-bottom:20px;\">\n<img src=\"https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/chunking.gif\" width=\"1200\"/>\n<img src=\"https://raw.githubusercontent.com/infiniflow/ragflow-docs/refs/heads/image/image/agentic-dark.gif\" width=\"1200\"/>\n</div>\n\n## 🔥 Latest Updates\n\n- 2026-06-15 Support multiple chat channels such as Feishu, Discord, Telegram, Line, etc.\n- 2026-04-24 Supports DeepSeek v4.\n- 2026-03-24 [RAGFlow Skill on OpenClaw](https://clawhub.ai/yingfeng/ragflow-skill) — Provides an official skill for accessing RAGFlow datasets via OpenClaw.\n- 2025-12-26 Supports 'Memory' for AI agent.\n- 2025-11-19 Supports Gemini 3 Pro.\n- 2025-11-12 Supports data synchronization from Confluence, S3, Notion, Discord, Google Drive.\n- 2025-10-23 Supports MinerU & Docling as document parsing methods.\n- 2025-10-15 Supports orchestrable ingestion pipeline.\n- 2025-08-08 Supports OpenAI's latest GPT-5 series models.\n- 2025-08-01 Supports agentic workflow and MCP.\n- 2025-05-23 Adds a Python/JavaScript code executor component to Agent.\n- 2025-03-19 Supports using a multi-modal model to make sense of images within PDF or DOCX files.\n\n## 🎉 Stay Tuned\n\n⭐️ Star our repository to stay up-to-date with exciting new features and improvements! Get instant notifications for new\nreleases! 🌟\n\n<div align=\"center\" style=\"margin-top:20px;margin-bottom:20px;\">\n<img src=\"https://github.com/user-attachments/assets/18c9707e-b8aa-4caf-a154-037089c105ba\" width=\"1200\"/>\n</div>\n\n## 🌟 Key Features\n\n### 🍭 **\"Quality in, quality out\"**\n\n- [Deep document understanding](./deepdoc/README.md)-based knowledge extraction from unstructured data with complicated\n  formats.\n- Finds \"needle in a data haystack\" of literally unlimited tokens.\n\n### 🍱 **Template-based chunking**\n\n- Intelligent and explainable.\n- Plenty of template options to choose from.\n\n### 🌱 **Grounded citations with reduced hallucinations**\n\n- Visualization of text chunking to allow human intervention.\n- Quick view of the key references and traceable citations to support grounded answers.\n\n### 🍔 **Compatibility with heterogeneous data sources**\n\n- Supports Word, slides, excel, txt, images, scanned copies, structured data, web pages, and more.\n\n### 🛀 **Automated and effortless RAG workflow**\n\n- Streamlined RAG orchestration catered to both personal and large businesses.\n- Configurable LLMs as well as embedding models.\n- Multiple recall paired with fused re-ranking.\n- Intuitive APIs for seamless integration with business.\n\n## 🔎 System Architecture\n\n<div align=\"center\" style=\"margin-top:20px;margin-bottom:20px;\">\n<img src=\"https://github.com/user-attachments/assets/31b0dd6f-ca4f-445a-9457-70cb44a381b2\" width=\"1000\"/>\n</div>\n\n## 🎬 Self-Hosting\n\n### 📝 Prerequisites\n\n- CPU >= 4 cores\n- RAM >= 16 GB\n- Disk >= 50 GB\n- Docker >= 24.0.0 & Docker Compose >= v2.26.1\n- Python >= 3.13\n- [gVisor](https://gvisor.dev/docs/user_guide/install/): Required only if you intend to use the code executor (sandbox) feature of RAGFlow.\n\n> [!TIP]\n> If you have not installed Docker on your local machine (Windows, Mac, or Linux), see [Install Docker Engine](https://docs.docker.com/engine/install/).\n\n### 🚀 Start up the server\n\n1. Ensure `vm.max_map_count` >= 262144:\n\n   > To check the value of `vm.max_map_count`:\n   >\n   > ```bash\n   > $ sysctl vm.max_map_count\n   > ```\n   >\n   > Reset `vm.max_map_count` to a value at least 262144 if it is not.\n   >\n   > ```bash\n   > # In this case, we set it to 262144:\n   > $ sudo sysctl -w vm.max_map_count=262144\n   > ```\n   >\n   > This change will be reset after a system reboot. To ensure your change remains permanent, add or update the\n   > `vm.max_map_count` value in **/etc/sysctl.conf** accordingly:\n   >\n   > ```bash\n   > vm.max_map_count=262144\n   > ```\n   >\n2. Clone the repo:\n\n   ```bash\n   $ git clone https://github.com/infiniflow/ragflow.git\n   ```\n3. Start up the server using the pre-built Docker images:\n\n> [!CAUTION]\n> All Docker images are built for x86 platforms. We don't currently offer Docker images for ARM64.\n> If you are on an ARM64 platform, follow [this guide](https://ragflow.io/docs/dev/build_docker_image) to build a Docker image compatible with your system.\n\n> The command below downloads the `v0.26.1` edition of the RAGFlow Docker image. See the following table for descriptions of different RAGFlow editions. To download a RAGFlow edition different from `v0.26.1`, update the `RAGFLOW_IMAGE` variable accordingly in **docker/.env** before using `docker compose` to start the server.\n\n```bash\n   $ cd ragflow/docker\n\n   # git checkout v0.26.1\n   # Optional: use a stable tag (see releases: https://github.com/infiniflow/ragflow/releases)\n   # This step ensures the **entrypoint.sh** file in the code matches the Docker image version.\n\n   # Use CPU for DeepDoc tasks:\n   $ docker compose -f docker-compose.yml up -d\n\n   # To use GPU to accelerate DeepDoc tasks:\n   # sed -i '1i DEVICE=gpu' .env\n   # docker compose -f docker-compose.yml up -d\n```\n\n> Note: Prior to `v0.22.0`, we provided both images with embedding models and slim images without embedding models. Details as follows:\n\n| RAGFlow image tag | Image size (GB) | Has embedding models? | Stable?        |\n|-------------------|-----------------|-----------------------|----------------|\n| v0.21.1           | &approx;9       | ✔️                    | Stable release |\n| v0.21.1-slim      | &approx;2       | ❌                     | Stable release |\n\n> Starting with `v0.22.0`, we ship only the slim edition and no longer append the **-slim** suffix to the image tag.\n\n4. Check the server status after having the server up and running:\n\n   ```bash\n   $ docker logs -f docker-ragflow-cpu-1\n   ```\n\n   _The following output confirms a successful launch of the system:_\n\n   ```bash\n\n         ____   ___    ______ ______ __\n        / __ \\ /   |  / ____// ____// /____  _      __\n       / /_/ // /| | / / __ / /_   / // __ \\| | /| / /\n      / _, _// ___ |/ /_/ // __/  / // /_/ /| |/ |/ /\n     /_/ |_|/_/  |_|\\____//_/    /_/ \\____/ |__/|__/\n\n    * Running on all addresses (0.0.0.0)\n   ```\n\n   > If you skip this confirmation step and directly log in to RAGFlow, your browser may prompt a `network abnormal`\n   > error because, at that moment, your RAGFlow may not be fully initialized.\n   >\n5. In your web browser, enter the IP address of your server and log in to RAGFlow.\n\n   > With the default settings, you only need to enter `http://IP_OF_YOUR_MACHINE` (**sans** port number) as the default\n   > HTTP serving port `80` can be omitted when using the default configurations.\n   >\n6. In [service_conf.yaml.template](./docker/service_conf.yaml.template), select the desired LLM factory in `user_default_llm` and update\n   the `API_KEY` field with the corresponding API key.\n\n   > See [llm_api_key_setup](https://ragflow.io/docs/dev/llm_api_key_setup) for more information.\n   >\n\n   _The show is on!_\n\n## 🔧 Configurations\n\nWhen it comes to system configurations, you will need to manage the following files:\n\n- [.env](./docker/.env): Keeps the fundamental setups for the system, such as `SVR_HTTP_PORT`, `MYSQL_PASSWORD`, and\n  `MINIO_PASSWORD`.\n- [service_conf.yaml.template](./docker/service_conf.yaml.template): Configures the back-end services. The environment variables in this file will be automatically populated when the Docker container starts. Any environment variables set within the Docker container will be available ",
    "manifest_file": "go.mod",
    "manifest_content": "module ragflow\n\ngo 1.26.4\n\nrequire (\n\tgithub.com/DATA-DOG/go-sqlmock v1.5.2\n\tgithub.com/alibabacloud-go/agentrun-20250910/v5 v5.8.4\n\tgithub.com/alibabacloud-go/darabonba-openapi/v2 v2.2.1\n\tgithub.com/alicebob/miniredis/v2 v2.38.0\n\tgithub.com/aws/aws-sdk-go-v2 v1.41.3\n\tgithub.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.6\n\tgithub.com/aws/aws-sdk-go-v2/config v1.32.11\n\tgithub.com/aws/aws-sdk-go-v2/credentials v1.19.11\n\tgithub.com/aws/aws-sdk-go-v2/service/s3 v1.96.4\n\tgithub.com/aws/aws-sdk-go-v2/service/sts v1.41.8\n\tgithub.com/aws/smithy-go v1.24.2\n\tgithub.com/browserbase/stagehand-go/v3 v3.21.0\n\tgithub.com/cenkalti/backoff/v5 v5.0.3\n\tgithub.com/cespare/xxhash/v2 v2.3.0\n\tgithub.com/cloudwego/eino v0.9.9\n\tgithub.com/denisenkom/go-mssqldb v0.12.3\n\tgithub.com/elastic/go-elasticsearch/v8 v8.19.1\n\tgithub.com/eric642/e2b-go-sdk v0.1.3\n\tgithub.com/gin-gonic/gin v1.10.1\n\tgithub.com/glebarez/sqlite v1.11.0\n\tgithub.com/go-sql-driver/mysql v1.7.0\n\tgithub.com/goccy/go-json v0.10.2\n\tgithub.com/gomarkdown/markdown v0.0.0-20260614204949-e08cff860f76\n\tgithub.com/google/uuid v1.6.0\n\tgithub.com/infiniflow/infinity-go-sdk v0.0.0-00010101000000-000000000000\n\tgithub.com/iromli/go-itsdangerous v0.0.0-20220223194502-9c8bef8dac6a\n\tgithub.com/json-iterator/go v1.1.12\n\tgithub.com/kaptinlin/jsonrepair v0.4.8\n\tgithub.com/lib/pq v1.10.9\n\tgithub.com/minio/minio-go/v7 v7.0.99\n\tgithub.com/nats-io/nats.go v1.52.0\n\tgithub.com/nikolalohinski/gonja v1.5.3\n\tgithub.com/peterh/liner v1.2.2\n\tgithub.com/pkoukk/tiktoken-go v0.1.8\n\tgithub.com/prometheus/client_golang v1.23.2\n\tgithub.com/prometheus/client_model v0.6.2\n\tgithub.com/redis/go-redis/v9 v9.18.0\n\tgithub.com/signintech/gopdf v0.36.1\n\tgithub.com/siongui/gojianfan v0.0.0-20210926212422-2f175ac615de\n\tgithub.com/spf13/viper v1.18.2\n\tgithub.com/xuri/excelize/v2 v2.10.1\n\tgithub.com/yfedoseev/office_oxide/go v0.1.2\n\tgithub.com/yfedoseev/pdf_oxide/go v0.3.67\n\tgithub.com/zeebo/xxh3 v1.0.2\n\tgo.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.69.0\n\tgo.opentelemetry.io/otel v1.44.0\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0\n\tgo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.44.0\n\tgo.opentelemetry.io/otel/sdk v1.44.0\n\tgo.opentelemetry.io/otel/trace v1.44.0\n\tgo.uber.org/zap v1.27.1\n\tgolang.org/x/crypto v0.51.0\n\tgolang.org/x/net v0.55.0\n\tgolang.org/x/sync v0.20.0\n\tgolang.org/x/term v0.43.0\n\tgolang.org/x/text v0.37.0\n\tgoogle.golang.org/genai v1.54.0\n\tgoogle.golang.org/grpc v1.81.1\n\tgopkg.in/natefinch/lumberjack.v2 v2.2.1\n\tgopkg.in/yaml.v3 v3.0.1\n\tgorm.io/driver/mysql v1.5.2\n\tgorm.io/gorm v1.25.7\n)\n\nrequire (\n\tcloud.google.com/go v0.116.0 // indirect\n\tcloud.google.com/go/auth v0.9.3 // indirect\n\tcloud.google.com/go/compute/metadata v0.9.0 // indirect\n\tconnectrpc.com/connect v1.19.2 // indirect\n\tgithub.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect\n\tgithub.com/alibabacloud-go/debug v1.0.1 // indirect\n\tgithub.com/alibabacloud-go/tea v1.5.0 // indirect\n\tgithub.com/alibabacloud-go/tea-utils/v2 v2.0.9 // indirect\n\tgithub.com/aliyun/credentials-go v1.4.5 // indirect\n\tgithub.com/apache/thrift v0.23.0 // indirect\n\tgithub.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/configsources v1.4.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/ini v1.8.5 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/internal/v4a v1.4.20 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.6 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.11 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.19 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/signin v1.0.7 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/sso v1.30.12 // indirect\n\tgithub.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.16 // indirect\n\tgithub.com/bahlo/generic-list-go v0.2.0 // indirect\n\tgithub.com/beorn7/perks v1.0.1 // indirect\n\tgithub.com/buger/jsonparser v1.1.1 // indirect\n\tgithub.com/bytedance/gopkg v0.1.3 // indirect\n\tgithub.com/bytedance/sonic v1.15.0 // indirect\n\tgithub.com/bytedance/sonic/loader v0.5.0 // indirect\n\tgithub.com/clbanning/mxj/v2 v2.7.0 // indirect\n\tgithub.com/cloudwego/base64x v0.1.6 // indirect\n\tgithub.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect\n\tgithub.com/dlclark/regexp2 v1.10.0 // indirect\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/ebitengine/purego v0.10.1 // indirect\n\tgithub.com/eino-contrib/jsonschema v1.0.3 // indirect\n\tgithub.com/elastic/elastic-transport-go/v8 v8.8.0 // indirect\n\tgithub.com/felixge/httpsnoop v1.0.4 // indirect\n\tgithub.com/fsnotify/fsnotify v1.7.0 // indirect\n\tgithub.com/gabriel-vasile/mimetype v1.4.3 // indirect\n\tgithub.com/gin-contrib/sse v0.1.0 // indirect\n\tgithub.com/glebarez/go-sqlit",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "llm",
      "eval",
      "protocol"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "warpdotdev",
    "name": "warp",
    "full_name": "warpdotdev/warp",
    "url": "https://github.com/warpdotdev/warp",
    "description": "Warp is an agentic development environment, born out of the terminal.",
    "language": "Rust",
    "total_stars": 62450,
    "forks": 5112,
    "stars_this_period": 75,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "bash",
        "linux",
        "macos",
        "rust",
        "shell",
        "terminal",
        "wasm",
        "zsh"
      ],
      "license": "AGPL-3.0",
      "open_issues": 4425,
      "created_at": "2021-07-08T18:48:08Z",
      "pushed_at": "2026-06-26T21:59:18Z",
      "homepage": "https://warp.dev",
      "default_branch": "master",
      "forks": 5112,
      "watchers": 346,
      "archived": false,
      "size_kb": 289949
    },
    "readme_content": "<a href=\"https://www.warp.dev\">\n    <img width=\"1024\" alt=\"Warp Agentic Development Environment product preview\" src=\"https://github.com/user-attachments/assets/9976b2da-2edd-4604-a36c-8fd53719c6d4\" />\n</a>\n&nbsp;\n<p align=\"center\">\n  <a href=\"https://www.warp.dev\"><img height=\"20\" alt=\"Built with Warp\" src=\"https://raw.githubusercontent.com/warpdotdev/brand-assets/main/Github/Built-With-Warp-Export@2x.png\" /></a>\n  &nbsp;\n  <a href=\"https://oz.warp.dev\"><img height=\"20\" alt=\"Powered by Oz\" src=\"https://raw.githubusercontent.com/warpdotdev/brand-assets/main/Github/Powered-By-Oz-Export@2x.png\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.warp.dev\">Website</a>\n  ·\n  <a href=\"https://www.warp.dev/code\">Code</a>\n  ·\n  <a href=\"https://www.warp.dev/agents\">Agents</a>\n  ·\n  <a href=\"https://www.warp.dev/terminal\">Terminal</a>\n  ·\n  <a href=\"https://www.warp.dev/drive\">Drive</a>\n  ·\n  <a href=\"https://docs.warp.dev\">Docs</a>\n  ·\n  <a href=\"https://www.warp.dev/blog/how-warp-works\">How Warp Works</a>\n</p>\n\n> [!NOTE]\n> OpenAI is the founding sponsor of the new, open-source Warp repository, and the new agentic management workflows are powered by GPT models.\n\n<h1></h1>\n\n## About\n\n[Warp](https://www.warp.dev) is an agentic development environment, born out of the terminal. Use Warp's built-in coding agent, or bring your own CLI agent (Claude Code, Codex, Gemini CLI, and others).\n\n## Installation\n\nYou can [download Warp](https://www.warp.dev/download) and [read our docs](https://docs.warp.dev/) for platform-specific instructions.\n\n## Warp Contributions Overview Dashboard\n\nExplore [build.warp.dev](https://build.warp.dev) to:\n- Watch thousands of Oz agents triage issues, write specs, implement changes, and review PRs\n- View top contributors and in-flight features\n- Track your own issues with GitHub sign-in\n- Click into active agent sessions in a web-compiled Warp terminal\n\n## Oz for OSS\n\nMaintaining a popular open-source project? [Apply for Oz credits](https://tally.so/r/LZWxqG) to explore [Oz for OSS](https://github.com/warpdotdev/oz-for-oss).\n\nOz for OSS is our partner program for bringing the same agentic open-source management workflows used in this repository to select partner repositories. We work directly with maintainers to implement workflows for issue triage, PR review, community management, and contributor coordination in a way that fits each project.\n\n## Licensing\n\nWarp's UI framework (the `warpui_core` and `warpui` crates) are licensed under the [MIT license](LICENSE-MIT).\n\nThe rest of the code in this repository is licensed under the [AGPL v3](LICENSE-AGPL).\n\n## Open Source & Contributing\n\nWarp's client codebase is open source and lives in this repository. We welcome community contributions and have designed a lightweight workflow to help new contributors get started. For the full contribution flow, read our [CONTRIBUTING.md](CONTRIBUTING.md) guide.\n\n> [!TIP]\n> **Chat with contributors and the Warp team** in the [`#oss-contributors`](https://warpcommunity.slack.com/archives/C0B0LM8N4DB) Slack channel — a good place for ad-hoc questions, design discussion, and pairing with maintainers. New here? [Join the Warp Slack community](https://go.warp.dev/join-preview) first, then jump into `#oss-contributors`.\n\n### Issue to PR\n\nBefore filing, [search existing issues](https://github.com/warpdotdev/warp/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc) for your bug or feature request. If nothing exists, [file an issue](https://github.com/warpdotdev/warp/issues/new/choose) using our templates. Security vulnerabilities should be reported privately as described in [CONTRIBUTING.md](CONTRIBUTING.md#reporting-security-issues).\n\nOnce filed, a Warp maintainer reviews the issue and may apply a readiness label: [`ready-to-spec`](https://github.com/warpdotdev/warp/issues?q=is%3Aissue+is%3Aopen+label%3Aready-to-spec) signals the design is open for contributors to spec out, and [`ready-to-implement`](https://github.com/warpdotdev/warp/issues?q=is%3Aissue+is%3Aopen+label%3Aready-to-implement) signals the design is settled and code PRs are welcome. Anyone can pick up a labeled issue — mention **@oss-maintainers** on an issue if you'd like it considered for a readiness label.\n\n### Building the Repo Locally\n\nTo build and run Warp from source:\n\n```bash\n./script/bootstrap   # platform-specific setup\n./script/run         # build and run Warp\n./script/presubmit   # fmt, clippy, and tests\n```\n\nSee [AGENTS.md](AGENTS.md) for the full engineering guide, including coding style, testing, and platform-specific notes.\n\n## Joining the Team\n\nInterested in joining the team? See our [open roles](https://www.warp.dev/careers).\n\n## Support and Questions\n\n1. See our [docs](https://docs.warp.dev/) for a comprehensive guide to Warp's features.\n2. Join our [Slack Community](https://go.warp.dev/join-preview) to connect with other users and get help from the Warp team — contributors hang out in [`#oss-contributors`](https://warpcommunity.slack.com/archives/C0B0LM8N4DB).\n3. Try our [Preview build](https://www.warp.dev/download-preview) to test the latest experimental features.\n4. Mention **@oss-maintainers** on any issue to escalate to the team — for example, if you encounter problems with the automated agents.\n\n## Code of Conduct\n\nWe ask everyone to be respectful and empathetic. Warp follows the [Code of Conduct](CODE_OF_CONDUCT.md). To report violations, email warp-coc at warp.dev.\n\n## Open Source Dependencies\n\nWe'd like to call out a few of the [open source dependencies](https://docs.warp.dev/help/licenses) that have helped Warp to get off the ground:\n\n- [Tokio](https://github.com/tokio-rs/tokio)\n- [NuShell](https://github.com/nushell/nushell)\n- [Fig Completion Specs](https://github.com/withfig/autocomplete)\n- [Warp Server Framework](https://github.com/seanmonstar/warp)\n- [Alacritty](https://github.com/alacritty/alacritty)\n- [Hyper HTTP library](https://github.com/hyperium/hyper)\n- [FontKit](https://github.com/servo/font-kit)\n- [Core-foundation](https://github.com/servo/core-foundation-rs)\n- [Smol](https://github.com/smol-rs/smol)\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nmembers = [\n  \"crates/*\",\n  \"app\",\n]\nresolver = \"2\"\n\n# Include all members except serve-wasm (since it's a helper helper for serving\n# wasm binaries and not something we want to regularly compile or run\n# tests against) and integration (since it is only used for testing).\ndefault-members = [\n  \"app\",\n  \"crates/channel_versions\",\n  \"crates/command\",\n  \"crates/editor\",\n  \"crates/graphql\",\n  \"crates/markdown_parser\",\n  \"crates/sum_tree\",\n  \"crates/warpui\",\n  \"crates/warp_completer\",\n  \"crates/warp_terminal\",\n  \"crates/warp_util\",\n]\n\n[workspace.package]\nauthors = [\"Warp Team <dev@warp.dev>\"]\nlicense = \"AGPL-3.0-only\"\npublish = false\n\n[workspace.dependencies]\n# Local workspace crates. This lets us reference them in other crates without specifying a path.\nai = { path = \"crates/ai\" }\napp-installation-detection = { path = \"crates/app-installation-detection\" }\nasset_cache = { path = \"crates/asset_cache\" }\nasset_macro = { path = \"crates/asset_macro\" }\nchannel_versions = { path = \"crates/channel_versions\", default-features = false }\ncommand = { path = \"crates/command\" }\ncommand-signatures-v2 = { path = \"crates/command-signatures-v2\" }\ncloud_objects = { path = \"crates/cloud_objects\" }\ncloud_object_client = { path = \"crates/cloud_object_client\" }\ncloud_object_persistence = { path = \"crates/cloud_object_persistence\" }\ncloud_object_models = { path = \"crates/cloud_object_models\" }\ncomputer_use = { path = \"crates/computer_use\" }\nfield_mask = { path = \"crates/field_mask\" }\nfirebase = { path = \"crates/firebase\" }\nfuzzy_match = { path = \"crates/fuzzy_match\" }\nhandlebars = { path = \"crates/handlebars\" }\nhttp_client = { path = \"crates/http_client\" }\nhttp_server = { path = \"crates/http_server\" }\ninput_classifier = { path = \"crates/input_classifier\" }\nintegration = { path = \"crates/integration\" }\nipc = { path = \"crates/ipc\" }\nipynb_parser = { path = \"crates/ipynb_parser\" }\njsonrpc = { path = \"crates/jsonrpc\" }\nlanguages = { path = \"crates/languages\" }\nlocal_control = { path = \"crates/local_control\" }\nlsp = { path = \"crates/lsp\" }\nmarkdown_parser = { path = \"crates/markdown_parser\" }\nmcp = { path = \"crates/mcp\" }\nnatural_language_detection = { path = \"crates/natural_language_detection\" }\nnode_runtime = { path = \"crates/node_runtime\" }\nonboarding = { path = \"crates/onboarding\" }\npersistence = { path = \"crates/persistence\" }\nprevent_sleep = { path = \"crates/prevent_sleep\" }\nremote_server = { path = \"crates/remote_server\" }\nrepo_metadata = { path = \"crates/repo_metadata\" }\nsettings = { path = \"crates/settings\" }\nsettings_value = { path = \"crates/settings_value\", default-features = false }\nsettings_value_derive = { path = \"crates/settings_value_derive\" }\nsimple_logger = { path = \"crates/simple_logger\" }\nstring-offset = { path = \"crates/string-offset\" }\nsum_tree = { path = \"crates/sum_tree\" }\nsyntax_tree = { path = \"crates/syntax_tree\" }\nui_components = { path = \"crates/ui_components\" }\nvim = { path = \"crates/vim\" }\nvirtual-fs = { path = \"crates/virtual_fs\" }\nvoice_input = { path = \"crates/voice_input\" }\nwarp = { path = \"app\" }\nwarp_assets = { path = \"crates/warp_assets\" }\nwarp_channel_config = { path = \"crates/warp_channel_config\" }\nwarp_cli = { path = \"crates/warp_cli\" }\nwarp_completer = { path = \"crates/warp_completer\" }\nwarp_core = { path = \"crates/warp_core\" }\nwarp_editor = { path = \"crates/editor\" }\nwarp_features = { path = \"crates/warp_features\" }\nwarp_files = { path = \"crates/warp_files\" }\nwarp_graphql = { path = \"crates/graphql\" }\nwarp_graphql_schema = { path = \"crates/warp_graphql_schema\" }\nwarp_isolation_platform = { path = \"crates/isolation_platform\" }\nwarp_js = { path = \"crates/warp_js\" }\nwarp_logging = { path = \"crates/warp_logging\" }\nwarp_managed_secrets = { path = \"crates/managed_secrets\" }\nwarp_multi_agent_client = { path = \"crates/warp_multi_agent_client\" }\nwarp_ripgrep = { path = \"crates/warp_ripgrep\" }\nwarp_search_core = { path = \"crates/warp_search_core\" }\nwarp_server_auth = { path = \"crates/warp_server_auth\" }\nwarp_server_client = { path = \"crates/warp_server_client\" }\nwarp_terminal = { path = \"crates/warp_terminal\" }\nwarp_util = { path = \"crates/warp_util\" }\nwarp_web_event_bus = { path = \"crates/warp_web_event_bus\" }\nwarpui = { path = \"crates/warpui\" }\nwarpui_core = { path = \"crates/warpui_core\" }\nwarpui_extras = { path = \"crates/warpui_extras\", default-features = false }\nwatcher = { path = \"crates/watcher\" }\nwebsocket = { path = \"crates/websocket\" }\n\n# Workspace-level dependencies used by multiple crates. Prefer adding dependencies\n# here to copying-and-pasting versions.\naxum = \"0.8.4\"\nanyhow = \"1.0\"\narboard = { version = \"3.6.1\", default-features = false }\narrayvec = \"0.7.4\"\nasync-broadcast = \"0.7.2\"\nashpd = { version = \"0.11\", default-features = false, features = [\"async-std\"] }\nasync-channel = \"2.3.1\"\nasync-compat = \"0.2.5\"\nasync-io = \"2.4.0\"\nasync-process = \"2.3.0\"\nasync-stream = \"0.3.5\"\nasync-task = \"4.2.0\"\nasync-trait = \"0.1.89\"\nasync-fs = \"2.1.2\"\nbacktrace = \"0.3.76\"\nbase64 = \"0.22\"\nbincode = \"",
    "strategic_keywords": [
      "agent",
      "agents",
      "workspace",
      "workflow"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 10,
      "total": 93
    },
    "strategic_score": 93
  },
  {
    "owner": "EKKOLearnAI",
    "name": "hermes-studio",
    "full_name": "EKKOLearnAI/hermes-studio",
    "url": "https://github.com/EKKOLearnAI/hermes-studio",
    "description": "Web dashboard for Hermes Agent — multi-platform AI chat, session management, scheduled jobs, usage analytics",
    "language": "TypeScript",
    "total_stars": 8549,
    "forks": 1050,
    "stars_this_period": 68,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "agent",
        "ai-agent",
        "chat-ui",
        "dashboard",
        "hermes",
        "hermes-agent",
        "hermes-web-ui",
        "llm",
        "multi-model",
        "multi-platform",
        "self-hosted",
        "typescript",
        "vue3",
        "web-ui"
      ],
      "license": "NOASSERTION",
      "open_issues": 82,
      "created_at": "2026-04-11T07:38:18Z",
      "pushed_at": "2026-06-26T06:34:28Z",
      "homepage": "https://hermes-studio.ai",
      "default_branch": "main",
      "forks": 1050,
      "watchers": 31,
      "archived": false,
      "size_kb": 104478
    },
    "readme_content": "<p align=\"center\">\n  <strong>Hermes Studio</strong>\n  <a href=\"./README_zh.md\">中文</a>\n</p>\n\n<p align=\"center\">\n  A desktop app, local runtime, and web console for <a href=\"https://github.com/NousResearch/hermes-agent\">Hermes Agent</a>.<br/>\n  Chat with agents, manage models and profiles, connect platform channels,<br/>\n  automate jobs, inspect files, run coding agents, and keep everything local.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/EKKOLearnAI/hermes-studio/releases/latest\">Download Hermes Studio Desktop</a>\n  ·\n  <code>npm install -g hermes-web-ui && hermes-web-ui start</code>\n</p>\n\n<p align=\"center\">\n  <img src=\"https://github.com/EKKOLearnAI/hermes-studio/blob/main/packages/client/src/assets/image.gif\" alt=\"Hermes Web UI Demo\" width=\"680\"/>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/hermes-web-ui\"><img src=\"https://img.shields.io/npm/v/hermes-web-ui?style=flat-square&color=blue\" alt=\"npm version\"/></a>\n  <a href=\"https://github.com/EKKOLearnAI/hermes-studio/blob/main/LICENSE\"><img src=\"https://img.shields.io/npm/l/hermes-web-ui?style=flat-square\" alt=\"license\"/></a>\n  <a href=\"https://github.com/EKKOLearnAI/hermes-studio/stargazers\"><img src=\"https://img.shields.io/github/stars/EKKOLearnAI/hermes-studio?style=flat-square\" alt=\"stars\"/></a>\n</p>\n\n## Core Capabilities\n\n| Area | What Hermes Studio does |\n| --- | --- |\n| Agent chat | Runs Hermes Agent conversations with streaming responses, tool traces, file upload/download, and persistent local sessions. |\n| Local control plane | Manages profiles, providers, models, credentials, memory, skills, plugins, logs, and runtime settings from one dashboard. |\n| Automation | Configures platform channels, cron jobs, Kanban tasks, group-chat rooms, and MCP servers around the same Hermes profiles. |\n| Workspace tools | Provides a file browser, web terminal, voice input/output, coding-agent runners, device discovery, and performance views. |\n| Distribution | Ships as a desktop app for Windows/macOS/Linux, an npm CLI package, and a Docker image. |\n\n## Features\n\n### AI Chat\n\n- Real-time chat streaming over Socket.IO `/chat-run`; chat runs execute through the Hermes agent bridge\n- Multi-session management — create, rename, delete, switch between sessions\n- **Self-built session database** — local SQLite storage for Web UI sessions; Hermes state.db remains a read-only source for Hermes history APIs\n- Session grouping by source (Telegram, Discord, Slack, etc.) with collapsible accordion\n- Active session indicator — live sessions pin to top with spinner icon\n- Sessions sorted by latest message time\n- Markdown rendering with syntax highlighting and code copy\n- Tool call detail expansion (arguments / result)\n- Profile-scoped file uploads\n- File download support — download uploaded files and agent-generated files by resolved path across local, Docker, SSH, and Singularity backends\n- Session search — Ctrl+K search across the Web UI local session database; read-only Hermes history sessions are not included\n- Profile-aware model selector — discovers models available to the signed-in account through authorized Hermes profiles\n- Per-session model display badge and context token usage\n\n### Platform Channels\n\nUnified configuration for **8 platforms** in one page:\n\n| Platform      | Features                                                               |\n| ------------- | ---------------------------------------------------------------------- |\n| Telegram      | Bot token, mention control, reactions, free-response chats             |\n| Discord       | Bot token, mention, auto-thread, reactions, channel allow/ignore lists |\n| Slack         | Bot token, mention control, bot message handling                       |\n| WhatsApp      | Enable/disable, mention control, mention patterns                      |\n| Matrix        | Access token, homeserver, auto-thread, DM mention threads              |\n| Feishu (Lark) | App ID / Secret, mention control                                       |\n| WeChat        | QR code login (scan in browser, auto-save credentials)                 |\n| WeCom         | Bot ID / Secret                                                        |\n\n- Credential management writes to `~/.hermes/.env`\n- Channel behavior settings write to `~/.hermes/config.yaml`\n- Per-platform configured/unconfigured status detection\n\n### Usage Analytics\n\n- Total token usage breakdown (input / output)\n- Session count with daily average\n- Estimated cost tracking & cache hit rate\n- Model usage distribution chart\n- 30-day daily trend (bar chart + data table)\n\n### Scheduled Jobs\n\n- Create, edit, pause, resume, delete cron jobs\n- Trigger immediate execution\n- Cron expression quick presets\n\n### Kanban\n\n- Profile-aware Kanban board for planning and tracking agent work\n- Task creation, updates, and status movement from the dashboard\n- Shared with the same local Web UI state and authentication model\n\n### Model Management\n\n- Auto-discover models from credential pool (`~/.hermes/auth.json`)\n- Fetch available models from each provider endpoint (`/v1/models`)\n- Add, update, and delete providers (preset & custom OpenAI-compatible)\n- OpenAI Codex & Nous Portal OAuth login\n- Provider URL auto-detection for non-v1 API versions (e.g. `/v4`)\n- Provider-level model grouping with default model switching\n\n### Multi-Profile\n\n- Create, rename, delete, and switch between Hermes profiles\n- Clone existing profile or import from archive (`.tar.gz`)\n- Export profile for backup or sharing\n- Profile-scoped configuration, cache, uploads, sessions, jobs, usage, memory, skills, plugins, providers, and model visibility\n- Account-bound profile access: super administrators can manage every profile; regular administrators only see and use profiles assigned to their account\n\n### File Browser\n\n- Browse files on remote backends (local, Docker, SSH, Singularity)\n- Upload, download, rename, copy, move, and delete files\n- Store uploaded files under the selected/requested Hermes profile while keeping downloads path-based for agent-generated artifacts outside the upload directory\n- Create directories\n- View file content with syntax highlighting\n\n### Group Chat\n\n- Multi-agent chat rooms with real-time messaging via Socket.IO\n- @mention routing — mention an agent to trigger a contextual reply\n- Context compression — automatic conversation summarization when history exceeds token threshold\n- Typing status and reply progress indicators\n- Room creation, deletion, and invite code management\n- Agent management — add/remove agents from rooms with per-agent profiles\n- SQLite message persistence\n- Mobile responsive with collapsible sidebar\n\n### Coding Agents\n\n- Launch and monitor local coding-agent sessions from the web dashboard\n- Dedicated proxy routes for Codex and Claude Code integrations\n- Stores agent output and reasoning metadata for later inspection\n\n### Skills & Memory\n\n- Browse and search installed skills\n- View skill details and attached files\n- User notes and profile management\n\n### Logs\n\n- View agent / server / error logs\n- Filter by log level, log file, and keyword\n- Structured log parsing with HTTP access log highlighting\n\n### Admin & Runtime Management\n\n- Device and LAN peer views for local-network discovery and peer tooling\n- MCP manager for the managed `hermes-studio` MCP server and profile injection\n- Runtime version and version-preview tooling for testing newer builds in isolation\n- Performance monitor views for super administrators\n\n### Authentication\n\n- Token-based auth (auto-generated on first run or set via `AUTH_TOKEN` env var)\n- Username/password login with account management in Settings\n- Default bootstrap credentials are `admin` / `123456`; users are prompted after login to change the default username and password\n- Super administrators can manage users and profile bindings; regular administrators can manage their own account details\n\nCLI maintenance commands:\n\n```bash\n# Delete persisted login IP lock records\nhermes-web-ui clear-login-locks\n\n# Delete login locks and restart the running Web UI process\nhermes-web-ui clear-login-locks --restart\n\n# Create or reset the default super administrator login to admin / 123456\nhermes-web-ui reset-default-login\n```\n\n`clear-login-locks` removes `${HERMES_WEB_UI_HOME:-~/.hermes-web-ui}/.login-lock.json`. If the server is running, restart it to clear in-memory lock state. `reset-default-login` updates the Web UI account database; if an `admin` user already exists, its password is reset to `123456` and the account is enabled as a super administrator.\n\n### Settings\n\n- Display (streaming, compact mode, reasoning, cost display)\n- Agent (max turns, timeout, tool enforcement)\n- Memory (enable/disable, char limits)\n- Session reset (idle timeout, scheduled reset)\n- Privacy (PII redaction)\n- Model settings (default model & provider)\n- Profile and provider configuration\n\n### Voice / TTS / STT\n\n- Read assistant replies aloud from chat and group-chat messages.\n- Providers: browser Web Speech, built-in Edge TTS, OpenAI-compatible `/audio/speech`, custom OpenAI-compatible TTS endpoints, and MiMo.\n- MiMo supports preset voices, voice design prompts, and voice clone reference audio (`.mp3`/`.wav`, max 10 MB) with selectable auth header mode (`Authorization`, `api-key`, or both).\n- Edge/OpenAI-compatible/custom/MiMo playback uses the Web UI backend's unified `/api/hermes/tts/synthesize` endpoint, so stop/pause state is shared and in-flight fetches are aborted when possible.\n- Provider API keys and MiMo clone reference audio are saved in server-side TTS settings, with only masked secret status shown back to the browser.\n- Save provider settings in Settings → Voice before using OpenAI/custom/MiMo playback. Message playback sends text and non-secret playback options; the backend reads the stored per-user secret when synthesizing.\n- Turn-based voice input is available from the chat input mic control: start/stop a voice turn, transcribe it, stage the transcript in the current input box for editing, then send it with the normal Send button.\n- Voice input / STT can use browser speech recognition when available or a server-backed provider configured in Settings → Voice.\n- Starting a new voice turn while assistant audio is playing stops playback first. This barge-in boundary does not implicitly cancel an active agent run; stopping a run remains an explicit action.\n- For supported settings, security notes, and current non-goals, see [`docs/voice-dialogue.md`](./docs/voice-dialogue.md).\n- Limitation: external TTS providers may continue processing a request after the browser/server aborts; custom/OpenAI-compatible and MiMo base URLs must be public `http`/`https` endpoints and cannot target localhost/private networks.\n\n### Web Terminal\n\n- Integrated terminal powered by node-pty and @xterm/xterm\n- Multi-session support — create, switch between, and close terminal sessions\n- Real-time keyboard input and PTY output streaming via WebSocket\n- Window resize support\n\n### Desktop App & Updates\n\n- Native Electron shell for Windows, macOS, and Linux\n- Bundles the Web UI runtime and starts the local Hermes Studio server automatically\n- Uses Cloudflare download endpoints for desktop auto-update metadata and assets first\n- Falls back to GitHub Releases `latest` assets if the Cloudflare update feed is unavailable\n- Windows upgrades attempt to close an existing Hermes Studio process before replacing files\n\n---\n\n## Quick Start\n\n### Desktop App (Recommended)\n\nDownload the latest **Hermes Studio** desktop installer from\n[GitHub Releases](https://github.com/EKKOLearnAI/hermes-studio/releases/latest).\n\nDesktop builds are published for macOS, Windows, and Linux, with separate\narchitecture assets where applicable. The desktop app bundles the Web UI\nruntime and stores Hermes Agent data in the native Hermes location:\n\n- Windows: `%LOCALAPPDATA%\\hermes` (falls back to `%APPDATA%\\hermes`)\n- macOS/Linux: `~/.hermes`\n\nThe desktop wrapper stores its own Web UI state separ",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"hermes-web-ui\",\n  \"version\": \"0.6.21\",\n  \"description\": \"Self-hosted AI chat dashboard for Hermes Agent — multi-model web UI with multi-platform integration\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/EKKOLearnAI/hermes-studio.git\"\n  },\n  \"homepage\": \"https://hermes-studio.ai\",\n  \"license\": \"BSL-1.1\",\n  \"engines\": {\n    \"node\": \">=23.0.0\"\n  },\n  \"keywords\": [\n    \"hermes\",\n    \"hermes-agent\",\n    \"hermes-web\",\n    \"agent\",\n    \"ai\",\n    \"ai-agent\",\n    \"ai-chat\",\n    \"ai-dashboard\",\n    \"llm\",\n    \"multi-model\",\n    \"chat-ui\",\n    \"dashboard\",\n    \"self-hosted\",\n    \"multi-platform\",\n    \"vue3\",\n    \"typescript\"\n  ],\n  \"bin\": {\n    \"hermes-web-ui\": \"./bin/hermes-web-ui.mjs\",\n    \"hermes-web-ui-mcp\": \"./bin/hermes-studio-mcp.mjs\",\n    \"hermes-studio-mcp\": \"./bin/hermes-studio-mcp.mjs\"\n  },\n  \"scripts\": {\n    \"start\": \"vite --host --port 8648\",\n    \"dev\": \"concurrently \\\"npm run dev:server\\\" \\\"npm run dev:client\\\"\",\n    \"dev:client\": \"cross-env HERMES_WEB_UI_BACKEND_PORT=8647 vite --host --port 8649 --strictPort\",\n    \"dev:server\": \"nodemon\",\n    \"build\": \"npm run openapi:generate && vue-tsc -b && vite build && tsc --noEmit -p packages/server/tsconfig.json && node scripts/build-server.mjs\",\n    \"harness:check\": \"node scripts/harness-check.mjs\",\n    \"prepare\": \"[ -d dist ] || npm run build\",\n    \"preview\": \"NODE_ENV=production vite preview\",\n    \"test\": \"vitest run\",\n    \"test:watch\": \"vitest\",\n    \"test:coverage\": \"vitest run --coverage\",\n    \"test:e2e\": \"playwright test\",\n    \"test:e2e:ui\": \"playwright test --ui\",\n    \"dev:website\": \"vite --config vite.config.website.ts\",\n    \"build:website\": \"vite build --config vite.config.website.ts\",\n    \"preview:website\": \"vite preview --config vite.config.website.ts\",\n    \"mcu:flash:clean\": \"pio run -d packages/esp32-c3 && pio run -d packages/esp32-c3 -t erase && pio run -d packages/esp32-c3 -t upload\",\n    \"desktop:install\": \"npm ci --prefix packages/desktop --no-audit --no-fund\",\n    \"desktop:prepare-runtime\": \"npm --prefix packages/desktop run prepare:runtime\",\n    \"desktop:prepare-python\": \"npm --prefix packages/desktop run prepare:python\",\n    \"desktop:dev\": \"HERMES_WEB_UI_DIR=\\\"$PWD\\\" npm --prefix packages/desktop run dev\",\n    \"build:desktop\": \"npm run build && npm run desktop:install && npm --prefix packages/desktop run dist -- --publish never\",\n    \"build:desktop:mac\": \"npm run build && npm run desktop:install && npm --prefix packages/desktop run dist -- --mac --publish never\",\n    \"build:desktop:win\": \"npm run build && npm run desktop:install && npm --prefix packages/desktop run dist -- --win --publish never\",\n    \"build:desktop:linux\": \"npm run build && npm run desktop:install && npm --prefix packages/desktop run dist -- --linux --publish never\",\n    \"openapi:generate\": \"node scripts/generate-openapi.mjs\",\n    \"claude\": \"claude --dangerously-skip-permissions\"\n  },\n  \"files\": [\n    \"bin/\",\n    \"dist/\"\n  ],\n  \"dependencies\": {\n    \"@audio/decode-mp3\": \"^1.1.0\",\n    \"@audio/decode-wav\": \"^1.2.0\",\n    \"@vscode/markdown-it-katex\": \"^1.1.2\",\n    \"@vue-flow/background\": \"^1.3.2\",\n    \"@vue-flow/controls\": \"^1.1.3\",\n    \"@vue-flow/core\": \"^1.48.2\",\n    \"@vue-flow/minimap\": \"^1.5.4\",\n    \"@vue-flow/node-resizer\": \"^1.5.1\",\n    \"adm-zip\": \"^0.5.17\",\n    \"eventsource\": \"^4.1.0\",\n    \"js-tiktoken\": \"^1.0.21\",\n    \"katex\": \"^0.17.0\",\n    \"node-edge-tts\": \"^1.2.10\",\n    \"node-pty\": \"^1.1.0\",\n    \"socket.io\": \"^4.8.3\",\n    \"socket.io-client\": \"^4.8.3\"\n  },\n  \"devDependencies\": {\n    \"@koa/bodyparser\": \"^5.0.0\",\n    \"@koa/cors\": \"^5.0.0\",\n    \"@koa/router\": \"^15.4.0\",\n    \"@multiavatar/multiavatar\": \"^1.0.7\",\n    \"@pinia/testing\": \"^1.0.3\",\n    \"@playwright/test\": \"^1.60.0\",\n    \"@types/adm-zip\": \"^0.5.8\",\n    \"@types/eventsource\": \"^1.1.15\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/katex\": \"^0.16.8\",\n    \"@types/koa\": \"^2.15.0\",\n    \"@types/koa__cors\": \"^5.0.0\",\n    \"@types/koa__router\": \"^12.0.5\",\n    \"@types/koa-send\": \"^4.1.6\",\n    \"@types/koa-static\": \"^4.0.4\",\n    \"@types/markdown-it\": \"^14.1.2\",\n    \"@types/node\": \"^24.12.2\",\n    \"@types/qrcode\": \"^1.5.6\",\n    \"@types/ws\": \"^8.18.1\",\n    \"@vitejs/plugin-vue\": \"^6.0.5\",\n    \"@vitest/coverage-v8\": \"^3.2.4\",\n    \"@vue/test-utils\": \"^2.4.6\",\n    \"@vue/tsconfig\": \"^0.9.1\",\n    \"@xterm/addon-fit\": \"^0.11.0\",\n    \"@xterm/addon-web-links\": \"^0.12.0\",\n    \"@xterm/xterm\": \"^6.0.0\",\n    \"axios\": \"^1.9.0\",\n    \"concurrently\": \"^9.2.1\",\n    \"cross-env\": \"^10.1.0\",\n    \"esbuild\": \"^0.27.0\",\n    \"highlight.js\": \"^11.11.1\",\n    \"js-yaml\": \"^4.1.1\",\n    \"jsdom\": \"^27.0.1\",\n    \"koa\": \"^2.15.3\",\n    \"koa-send\": \"^5.0.1\",\n    \"koa-static\": \"^5.0.0\",\n    \"markdown-it\": \"^14.1.1\",\n    \"mermaid\": \"^11.14.0\",\n    \"monaco-editor\": \"^0.55.1\",\n    \"naive-ui\": \"^2.44.1\",\n    \"nodemon\": \"^3.1.14\",\n    \"pinia\": \"^3.0.4\",\n    \"pino\": \"^10.3.1\",\n    \"pino-pretty\": \"^13.1.3\",\n    \"qrcode\": \"^1.5.4\",\n    \"sass\": \"^1.99.0\",\n    \"tar\": \"^7.5.16\",\n    \"ts-node\": \"^10.9.2\",\n    \"ts-node-dev\": \"^2.0.0\",\n    \"tsoa",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "rag",
      "runtime",
      "skill",
      "workspace",
      "llm",
      "automation"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "commaai",
    "name": "openpilot",
    "full_name": "commaai/openpilot",
    "url": "https://github.com/commaai/openpilot",
    "description": "openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300+ supported cars.",
    "language": "Python",
    "total_stars": 61754,
    "forks": 11044,
    "stars_this_period": 67,
    "source_slice": "all",
    "source_slices": [
      "all",
      "python"
    ],
    "metadata": {
      "topics": [
        "advanced-driver-assistance-systems",
        "driver-assistance-systems",
        "robotics"
      ],
      "license": "MIT",
      "open_issues": 137,
      "created_at": "2016-11-24T01:33:30Z",
      "pushed_at": "2026-06-26T21:57:21Z",
      "homepage": "https://comma.ai/openpilot",
      "default_branch": "master",
      "forks": 11044,
      "watchers": 1316,
      "archived": false,
      "size_kb": 1152128
    },
    "readme_content": "<div align=\"center\" style=\"text-align: center;\">\n\n<h1>openpilot</h1>\n\n<p>\n  <b>openpilot is an operating system for robotics.</b>\n  <br>\n  Currently, it upgrades the driver assistance system in 300+ supported cars.\n</p>\n\n<h3>\n  <a href=\"https://docs.comma.ai\">Docs</a>\n  <span> · </span>\n  <a href=\"https://docs.comma.ai/contributing/roadmap/\">Roadmap</a>\n  <span> · </span>\n  <a href=\"https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md\">Contribute</a>\n  <span> · </span>\n  <a href=\"https://discord.comma.ai\">Community</a>\n  <span> · </span>\n  <a href=\"https://comma.ai/shop\">Try it on a comma four</a>\n</h3>\n\nQuick start: `bash <(curl -fsSL openpilot.comma.ai)`\n\n[![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/tests.yaml/badge.svg)](https://github.com/commaai/openpilot/actions/workflows/tests.yaml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![X Follow](https://img.shields.io/twitter/follow/comma_ai)](https://x.com/comma_ai)\n[![Discord](https://img.shields.io/discord/469524606043160576)](https://discord.comma.ai)\n\n</div>\n\n<table>\n  <tr>\n    <td><a href=\"https://youtu.be/NmBfgOanCyk\" title=\"Video By Greer Viau\"><img src=\"https://github.com/commaai/openpilot/assets/8762862/2f7112ae-f748-4f39-b617-fabd689c3772\"></a></td>\n    <td><a href=\"https://youtu.be/VHKyqZ7t8Gw\" title=\"Video By Logan LeGrand\"><img src=\"https://github.com/commaai/openpilot/assets/8762862/92351544-2833-40d7-9e0b-7ef7ae37ec4c\"></a></td>\n    <td><a href=\"https://youtu.be/SUIZYzxtMQs\" title=\"A drive to Taco Bell\"><img src=\"https://github.com/commaai/openpilot/assets/8762862/05ceefc5-2628-439c-a9b2-89ce77dc6f63\"></a></td>\n  </tr>\n</table>\n\n\nUsing openpilot in a car\n------\n\nTo use openpilot in a car, you need four things:\n1. **Supported Device:** a comma four, available at [comma.ai/shop/comma-four](https://www.comma.ai/shop/comma-four).\n2. **Software:** The setup procedure for the comma four allows users to enter a URL for custom software. Use the URL `openpilot.comma.ai` to install the release version.\n3. **Supported Car:** Ensure that you have one of [the 300+ supported cars](docs/CARS.md).\n4. **Car Harness:** You will also need a [car harness](https://comma.ai/shop/car-harness) to connect your comma four to your car.\n\nWe have detailed instructions for [how to install the harness and device in a car](https://comma.ai/setup). Note that it's possible to run openpilot on [other hardware](https://blog.comma.ai/self-driving-car-for-free/), although it's not plug-and-play.\n\n\n### Branches\n\nRunning `master` and other branches directly is supported, but it's recommended to run one of the following prebuilt branches:\n\n| comma four branch      | comma 3X branch        | URL                                    | description                                                                         |\n|------------------------|------------------------|----------------------------------------|-------------------------------------------------------------------------------------|\n| `release-mici`         | `release-tizi`         | openpilot.comma.ai                     | This is openpilot's release branch.                                                 |\n| `release-mici-staging` | `release-tizi-staging` | openpilot-test.comma.ai                | This is the staging branch for releases. Use it to get new releases slightly early. |\n| `nightly`              | `nightly`              | openpilot-nightly.comma.ai             | This is the bleeding edge development branch. Do not expect this to be stable.      |\n| `nightly-dev`          | `nightly-dev`          | installer.comma.ai/commaai/nightly-dev | Same as nightly, but includes experimental development features for some cars.      |\n\nTo start developing openpilot\n------\n\nopenpilot is developed by [comma](https://comma.ai/) and by users like you. We welcome both pull requests and issues on [GitHub](http://github.com/commaai/openpilot).\n\n* Join the [community Discord](https://discord.comma.ai)\n* Check out [the contributing docs](docs/CONTRIBUTING.md)\n* Check out the [openpilot tools](openpilot/tools/)\n* Code documentation lives at https://docs.comma.ai\n* Information about running openpilot lives on the [community wiki](https://github.com/commaai/openpilot/wiki)\n\nWant to get paid to work on openpilot? [comma is hiring](https://comma.ai/jobs#open-positions) and offers lots of [bounties](https://comma.ai/bounties) for external contributors.\n\nSafety and Testing\n----\n\n* openpilot observes [ISO26262](https://en.wikipedia.org/wiki/ISO_26262) guidelines, see [SAFETY.md](docs/SAFETY.md) for more details.\n* openpilot has software-in-the-loop [tests](.github/workflows/tests.yaml) that run on every commit.\n* The code enforcing the safety model lives in panda and is written in C, see [code rigor](https://github.com/commaai/panda#code-rigor) for more details.\n* panda has software-in-the-loop [safety tests](https://github.com/commaai/panda/tree/master/tests/safety).\n* Internally, we have a hardware-in-the-loop Jenkins test suite that builds and unit tests the various processes.\n* panda has additional hardware-in-the-loop [tests](https://github.com/commaai/panda/blob/master/Jenkinsfile).\n* We run the latest openpilot in a testing closet containing 10 comma devices continuously replaying routes.\n\n<details>\n<summary>MIT Licensed</summary>\n\nopenpilot is released under the MIT license. Some parts of the software are released under other licenses as specified.\n\nAny user of this software shall indemnify and hold harmless Comma.ai, Inc. and its directors, officers, employees, agents, stockholders, affiliates, subcontractors and customers from and against all allegations, claims, actions, suits, demands, damages, liabilities, obligations, losses, settlements, judgments, costs and expenses (including without limitation attorneys’ fees and costs) which arise out of, relate to or result from any use of this software by user.\n\n**THIS IS ALPHA QUALITY SOFTWARE FOR RESEARCH PURPOSES ONLY. THIS IS NOT A PRODUCT.\nYOU ARE RESPONSIBLE FOR COMPLYING WITH LOCAL LAWS AND REGULATIONS.\nNO WARRANTY EXPRESSED OR IMPLIED.**\n</details>\n\n<details>\n<summary>User Data and comma Account</summary>\n\nBy default, openpilot uploads driving data to our servers. You can also access your data through [comma connect](https://connect.comma.ai/). We use your data to train better models and improve openpilot for everyone.\n\nopenpilot is open source software, and users can disable data collection if they wish.\n\nopenpilot logs the road-facing cameras, CAN, GPS, IMU, magnetometer, thermal sensors, crashes, and operating system logs.\nThe driver-facing camera and microphone are only logged if you explicitly opt-in in settings.\n\nBy using openpilot, you agree to [our Privacy Policy](https://comma.ai/privacy). You understand that use of this software or its related services will generate certain types of user data, which may be logged and stored at the sole discretion of comma. By accepting this agreement, you grant an irrevocable, perpetual, worldwide right to comma for the use of this data.\n</details>\n",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"openpilot\"\nrequires-python = \">= 3.12.3, < 3.13\"\nlicense = {text = \"MIT License\"}\nversion = \"0.1.0\"\ndescription = \"an open source driver assistance system\"\nauthors = [\n  {name = \"Vehicle Researcher\", email=\"user@comma.ai\"}\n]\n\ndependencies = [\n  # multiple users\n  \"sounddevice\",  # micd + soundd\n  \"pyserial\",     # pigeond + qcomgpsd\n  \"requests\",     # many one-off uses\n  \"sympy\",        # rednose + friends\n  \"crcmod-plus\",  # cars + qcomgpsd\n  \"tqdm\",         # cars (fw_versions.py) on start + many one-off uses\n\n  # core\n  \"cffi\",\n  \"scons\",\n  \"pycapnp==2.1.0\",  # 2.2 introduces a memory leak due to cyclic references\n  \"Cython\",\n  \"setuptools\",\n  \"numpy >=2.0\",\n\n  # vendored native dependencies\n  \"bzip2 @ git+https://github.com/commaai/dependencies.git@release-bzip2#subdirectory=bzip2\",\n  \"bootstrap-icons @ git+https://github.com/commaai/dependencies.git@release-bootstrap-icons#subdirectory=bootstrap-icons\",\n  \"capnproto @ git+https://github.com/commaai/dependencies.git@release-capnproto#subdirectory=capnproto\",\n  \"catch2 @ git+https://github.com/commaai/dependencies.git@release-catch2#subdirectory=catch2\",\n  \"acados @ git+https://github.com/commaai/dependencies.git@release-acados#subdirectory=acados\",\n  \"eigen @ git+https://github.com/commaai/dependencies.git@release-eigen#subdirectory=eigen\",\n  \"ffmpeg @ git+https://github.com/commaai/dependencies.git@release-ffmpeg#subdirectory=ffmpeg\",\n  \"libjpeg @ git+https://github.com/commaai/dependencies.git@release-libjpeg#subdirectory=libjpeg\",\n  \"libyuv @ git+https://github.com/commaai/dependencies.git@release-libyuv#subdirectory=libyuv\",\n  \"zstd @ git+https://github.com/commaai/dependencies.git@release-zstd#subdirectory=zstd\",\n  \"ncurses @ git+https://github.com/commaai/dependencies.git@release-ncurses#subdirectory=ncurses\",\n  \"zeromq @ git+https://github.com/commaai/dependencies.git@release-zeromq#subdirectory=zeromq\",\n  \"libusb @ git+https://github.com/commaai/dependencies.git@release-libusb#subdirectory=libusb\",\n  \"json11 @ git+https://github.com/commaai/dependencies.git@release-json11#subdirectory=json11\",\n  \"git-lfs @ git+https://github.com/commaai/dependencies.git@release-git-lfs#subdirectory=git-lfs\",\n  \"gcc-arm-none-eabi @ git+https://github.com/commaai/dependencies.git@release-gcc-arm-none-eabi#subdirectory=gcc-arm-none-eabi\",\n  \"xvfb @ git+https://github.com/commaai/dependencies.git@release-xvfb#subdirectory=xvfb\",\n\n  # body / webrtcd\n  \"av\",\n  \"aiortc\",\n\n  # panda\n  \"libusb1\",\n  \"spidev; platform_system == 'Linux'\",\n\n  # logging\n  \"pyzmq\",\n  \"sentry-sdk\",\n  \"xattr\",  # used in place of 'os.getxattr' for macOS compatibility\n\n  # athena\n  \"PyJWT\",\n  \"json-rpc\",\n  \"websocket_client\",\n\n  # joystickd\n  \"inputs\",\n\n  # these should be removed\n  \"psutil\",\n  \"pycryptodome\", # used in panda, body, and a test\n  \"setproctitle\",\n\n  # logreader\n  \"zstandard\",\n\n  # ui\n  \"raylib @ git+https://github.com/commaai/dependencies.git@release-raylib#subdirectory=raylib\",\n  \"qrcode\",\n  \"jeepney\",\n  \"pillow\",\n]\n\n[project.optional-dependencies]\ndocs = [\n  \"Jinja2\",\n  \"zensical\",\n]\n\ntesting = [\n  \"coverage\",\n  \"hypothesis ==6.47.*\",\n  \"ty\",\n  \"pytest\",\n  \"pytest-cpp\",\n  \"pytest-subtests\",\n  # https://github.com/pytest-dev/pytest-xdist/pull/1229\n  \"pytest-xdist @ git+https://github.com/sshane/pytest-xdist@2b4372bd62699fb412c4fe2f95bf9f01bd2018da\",\n  \"pytest-mock\",\n  \"ruff\",\n  \"codespell\",\n  \"pre-commit-hooks\",\n]\n\ndev = [\n  \"matplotlib\",\n]\n\ntools = [\n  \"imgui @ git+https://github.com/commaai/dependencies.git@release-imgui#subdirectory=imgui\",\n\n  # this can be added back once it's stripped down some more\n  #\"metadrive-simulator @ git+https://github.com/commaai/metadrive.git@minimal ; (platform_machine != 'aarch64')\",\n]\n\n[project.urls]\nHomepage = \"https://github.com/commaai/openpilot\"\n\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\n[tool.hatch.build.targets.wheel]\npackages = [\n  \"openpilot\",\n  \"msgq\",\n  \"opendbc\",\n  \"panda\",\n  \"rednose\",\n  \"teleoprtc\",\n  \"tinygrad\",\n]\n\n[tool.hatch.metadata]\nallow-direct-references = true\n\n[tool.pytest.ini_options]\nminversion = \"6.0\"\naddopts = \"-Werror --strict-config --strict-markers --durations=10 -n auto --dist=loadgroup\"\ncpp_files = \"test_*\"\ncpp_harness = \"openpilot/selfdrive/test/cpp_harness.py\"\npython_files = \"test_*.py\"\nmarkers = [\n  \"slow: tests that take awhile to run and can be skipped with -m 'not slow'\",\n  \"tici: tests that are only meant to run on the C3/C3X\",\n  \"skip_tici_setup: mark test to skip tici setup fixture\",\n  \"nocapture: don't capture test output\",\n  \"shared_download_cache: share download cache between tests\",\n  \"xdist_group_class_property: group tests by a property of the class that contains them\",\n]\ntestpaths = [\n  \"openpilot\",\n]\n\n[tool.codespell]\nquiet-level = 3\n# if you've got a short variable name that's getting flagged, add it here\nignore-words-list = \"bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints,whit,indexIn,ws,uint,grey,deque,stdio,",
    "strategic_keywords": [
      "memory",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 16,
      "relevance": 16,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "Mintplex-Labs",
    "name": "anything-llm",
    "full_name": "Mintplex-Labs/anything-llm",
    "url": "https://github.com/Mintplex-Labs/anything-llm",
    "description": "Stop renting your intelligence. Own it with AnythingLLM. Everything you need for a powerful local-first agent experience",
    "language": "JavaScript",
    "total_stars": 62151,
    "forks": 6779,
    "stars_this_period": 66,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "agent-harness",
        "agentic-ai",
        "ai-agents",
        "hermes-agent",
        "llm",
        "local-ai",
        "localai",
        "multimodal",
        "no-code",
        "open-claw",
        "rag",
        "self-hosted-ai",
        "vector-database"
      ],
      "license": "MIT",
      "open_issues": 318,
      "created_at": "2023-06-04T02:29:14Z",
      "pushed_at": "2026-06-26T20:57:59Z",
      "homepage": "https://anythingllm.com",
      "default_branch": "master",
      "forks": 6779,
      "watchers": 393,
      "archived": false,
      "size_kb": 60876
    },
    "readme_content": "<a name=\"readme-top\"></a>\n\n<p align=\"center\">\n  <a href=\"https://anythingllm.com\"><img src=\"https://github.com/Mintplex-Labs/anything-llm/blob/master/images/wordmark.png?raw=true\" alt=\"AnythingLLM logo\"></a>\n</p>\n\n<div align='center'>\n<a href=\"https://trendshift.io/repositories/2415\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/2415\" alt=\"Mintplex-Labs%2Fanything-llm | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</div>\n\n<p align=\"center\">\n    <b>AnythingLLM:</b> The all-in-one AI app you were looking for.<br />\n    Chat with your docs, use AI Agents, hyper-configurable, multi-user, & no frustrating setup required.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://discord.gg/6UyHPeGZAC\" target=\"_blank\">\n      <img src=\"https://img.shields.io/badge/chat-mintplex_labs-blue.svg?style=flat&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAH1UExURQAAAP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////r6+ubn5+7u7/3+/v39/enq6urq6/v7+97f39rb26eoqT1BQ0pOT4+Rkuzs7cnKykZKS0NHSHl8fdzd3ejo6UxPUUBDRdzc3RwgIh8jJSAkJm5xcvHx8aanqB4iJFBTVezt7V5hYlJVVuLj43p9fiImKCMnKZKUlaaoqSElJ21wcfT09O3u7uvr6zE0Nr6/wCUpK5qcnf7+/nh7fEdKTHx+f0tPUOTl5aipqiouMGtubz5CRDQ4OsTGxufn515hY7a3uH1/gXBydIOFhlVYWvX29qaoqCQoKs7Pz/Pz87/AwUtOUNfY2dHR0mhrbOvr7E5RUy8zNXR2d/f39+Xl5UZJSx0hIzQ3Odra2/z8/GlsbaGjpERHSezs7L/BwScrLTQ4Odna2zM3Obm7u3x/gKSmp9jZ2T1AQu/v71pdXkVISr2+vygsLiInKTg7PaOlpisvMcXGxzk8PldaXPLy8u7u7rm6u7S1tsDBwvj4+MPExbe4ueXm5s/Q0Kyf7ewAAAAodFJOUwAABClsrNjx/QM2l9/7lhmI6jTB/kA1GgKJN+nea6vy/MLZQYeVKK3rVA5tAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+cKBAAmMZBHjXIAAAISSURBVDjLY2CAAkYmZhZWNnYODnY2VhZmJkYGVMDIycXNw6sBBbw8fFycyEoYGfkFBDVQgKAAPyMjQl5IWEQDDYgIC8FUMDKKsmlgAWyiEBWMjGJY5YEqxMAqGMWFNXAAYXGgAkYJSQ2cQFKCkYFRShq3AmkpRgYJbghbU0tbB0Tr6ukbgGhDI10gySfBwCwDUWBsYmpmDqQtLK2sbTQ0bO3sHYA8GWYGWWj4WTs6Obu4ami4OTm7exhqeHp5+4DCVJZBDmqdr7ufn3+ArkZgkJ+fU3CIRmgYWFiOARYGvo5OQUHhEUAFTkF+kVHRsLBgkIeyYmLjwoOc4hMSk5JTnINS06DC8gwcEEZ6RqZGlpOfc3ZObl5+gZ+TR2ERWFyBQQFMF5eklmqUpQb5+ReU61ZUOvkFVVXXQBSAraitq29o1GiKcfLzc29u0mjxBzq0tQ0kww5xZHtHUGeXhkZhdxBYgZ4d0LI6c4gjwd7siQQraOp1AivQ6CuAKZCDBBRQQQNQgUb/BGf3cqCCiZOcnCe3QQIKHNRTpk6bDgpZjRkzg3pBQTBrdtCcuZCgluAD0vPmL1gIdvSixUuWgqNs2YJ+DUhkEYxuggkGmOQUcckrioPTJCOXEnZ5JS5YslbGnuyVERlDDFvGEUPOWvwqaH6RVkHKeuDMK6SKnHlVhTgx8jeTmqy6Eij7K6nLqiGyPwChsa1MUrnq1wAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0xMC0wNFQwMDozODo0OSswMDowMB9V0a8AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMTAtMDRUMDA6Mzg6NDkrMDA6MDBuCGkTAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDIzLTEwLTA0VDAwOjM4OjQ5KzAwOjAwOR1IzAAAAABJRU5ErkJggg==\" alt=\"Discord\">\n  </a> |\n  <a href=\"https://github.com/Mintplex-Labs/anything-llm/blob/master/LICENSE\" target=\"_blank\">\n      <img src=\"https://img.shields.io/static/v1?label=license&message=MIT&color=white\" alt=\"License\">\n  </a> |\n  <a href=\"https://docs.anythingllm.com\" target=\"_blank\">\n    Docs\n  </a> |\n   <a href=\"https://my.mintplexlabs.com/aio-checkout?product=anythingllm\" target=\"_blank\">\n    Hosted Instance\n  </a>\n</p>\n\n<p align=\"center\">\n  <b>English</b> · <a href='./locales/README.zh-CN.md'>简体中文</a> · <a href='./locales/README.ja-JP.md'>日本語</a>\n</p>\n\n<p align=\"center\">\n👉 AnythingLLM for desktop (Mac, Windows, & Linux)! <a href=\"https://anythingllm.com/download\" target=\"_blank\"> Download Now</a>\n</p>\n\nChat with your docs. Automate complex workflows with AI Agents. Hyper-configurable, multi-user ready, battle-tested—and runs locally by default with zero setup friction.\n\n![Chatting](https://github.com/Mintplex-Labs/anything-llm/releases/download/v1.11.2/AnythingLLM720p.gif)\n\n<details>\n<summary><kbd>Watch the demo!</kbd></summary>\n\n[![Watch the video](/images/youtube.png)](https://youtu.be/f95rGD9trL0)\n\n</details>\n\n### Product Overview\n\nAnythingLLM is the all-in-one AI application that lets you build a private, fully-featured ChatGPT—without compromises. Connect your favorite local or cloud LLM, ingest your documents, and start chatting in minutes. Out of the box you get built-in agents, multi-user support, vector databases, and document pipelines — no extra configuration required.\n\nAnythingLLM supports multiple users as well where you can control the access and experience per user without compromising the security or privacy of the instance or your intellectual property.\n\n## Cool Features of AnythingLLM\n\n- [Dynamic Model Routing](https://docs.anythingllm.com/model-router/overview) - Automatically route chats to the best provider & model for the conversation based on rules you define.\n- [Automatic & User Managed Memories](https://docs.anythingllm.com/features/memories) - Have your LLM remember important information about you or your workspace.\n- [Scheduled Tasks](https://docs.anythingllm.com/scheduled-jobs/overview) - Run recurring tasks or prompts on a cron schedule with full agent capabilities.\n- [Intelligent Skill Selection](https://docs.anythingllm.com/agent/intelligent-tool-selection) Enable **unlimited** tools for your models while reducing token usage by up to 80% per query\n- [No-code AI Agent builder](https://docs.anythingllm.com/agent-flows/overview)\n- [MCP-compatibility](https://docs.anythingllm.com/mcp-compatibility/overview)\n- [Multi-modal support (both closed and open-source LLMs!)](https://docs.anythingllm.com/features/multimodal)\n- [Custom AI Agents](https://docs.anythingllm.com/agent/custom/introduction)\n- 👤 Multi-user instance support and permissioning _Docker version only_\n- 🦾 Agents inside your workspace (browse the web, etc)\n- 💬 [Custom Embeddable Chat widget for your website](https://github.com/Mintplex-Labs/anythingllm-embed/blob/main/README.md) _Docker version only_\n- 📖 Multiple document type support (PDF, TXT, DOCX, etc)\n- Intuitive chat UI with drag-and-drop uploads and source citations.\n- Production-ready for any cloud deployment.\n- Works with all popular [closed and open-source LLM providers](#supported-llms-embedder-models-speech-models-and-vector-databases).\n- Built-in optimizations for large document sets—lower costs and faster responses than other chat UIs.\n- Full Developer API for custom integrations!\n- ...and much more—install in minutes and see for yourself.\n\n### Supported LLMs, Embedder Models, Speech models, and Vector Databases\n\n**Large Language Models (LLMs):**\n\n- [Any open-source llama.cpp compatible model](/server/storage/models/README.md#text-generation-llm-selection)\n- [OpenAI](https://openai.com)\n- [OpenAI (Generic)](https://openai.com)\n- [Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-services/openai-service)\n- [AWS Bedrock](https://aws.amazon.com/bedrock/)\n- [Anthropic](https://www.anthropic.com/)\n- [NVIDIA NIM (chat models)](https://build.nvidia.com/explore/discover)\n- [Google Gemini Pro](https://ai.google.dev/)\n- [Ollama (chat models)](https://ollama.ai/)\n- [LM Studio (all models)](https://lmstudio.ai)\n- [LocalAI (all models)](https://localai.io/)\n- [Together AI (chat models)](https://www.together.ai/)\n- [Fireworks AI (chat models)](https://fireworks.ai/)\n- [Perplexity (chat models)](https://www.perplexity.ai/)\n- [OpenRouter (chat models)](https://openrouter.ai/)\n- [DeepSeek (chat models)](https://deepseek.com/)\n- [Mistral](https://mistral.ai/)\n- [Groq](https://groq.com/)\n- [Cohere](https://cohere.com/)\n- [KoboldCPP](https://github.com/LostRuins/koboldcpp)\n- [LiteLLM](https://github.com/BerriAI/litellm)\n- [Text Generation Web UI](https://github.com/oobabooga/text-generation-webui)\n- [Apipie](https://apipie.ai/)\n- [xAI](https://x.ai/)\n- [Z.AI (chat models)](https://z.ai/model-api)\n- [Novita AI (chat models)](https://novita.ai/model-api/product/llm-api?utm_source=github_anything-llm&utm_medium=github_readme&utm_campaign=link)\n- [PPIO](https://ppinfra.com?utm_source=github_anything-llm)\n- [Gitee AI](https://ai.gitee.com/)\n- [Moonshot AI](https://www.moonshot.ai/)\n- [Microsoft Foundry Local](https://github.com/microsoft/Foundry-Local)\n- [CometAPI (chat models)](https://api.cometapi.com/)\n- [Docker Model Runner](https://docs.docker.com/ai/model-runner/)\n- [PrivateModeAI (chat models)](https://privatemode.ai/)\n- [SambaNova Cloud (chat models)](https://cloud.sambanova.ai/)\n- [Lemonade by AMD](https://lemonade-server.ai)\n- [Minimax](https://platform.minimax.io)\n- [Cerebras (chat models)](https://www.cerebras.ai/)\n\n**Embedder models:**\n\n- [AnythingLLM Native Embedder](/server/storage/models/README.md) (default)\n- [OpenAI](https://openai.com)\n- [Azure OpenAI](https://azure.microsoft.com/en-us/products/ai-services/openai-service)\n- [Gemini](https://ai.google.dev/)\n- [LocalAI (all)](https://localai.io/)\n- [Ollama (all)](https://ollama.ai/)\n- [LM Studio (all)](https://lmstudio.ai)\n- [Lemonade](https://lemonade-server.ai)\n- [OpenRouter](https://openrouter.ai/)\n- [LiteLLM](https://github.com/BerriAI/litellm)\n- [Cohere](https://cohere.com/)\n- [Voyage AI](https://www.voyageai.com/)\n- [Mistral](https://mistral.ai/)\n- Generic OpenAI-compatible embedding APIs\n\n**Audio Transcription models:**\n\n- [AnythingLLM Built-in](https://github.com/Mintplex-Labs/anything-llm/tree/master/server/storage/models#audiovideo-transcription) (default)\n- [OpenAI](https://openai.com/)\n\n**TTS (text-to-speech) support:**\n\n- Native Browser Built-in (default)\n- [PiperTTSLocal - runs in browser](https://github.com/rhasspy/piper)\n- [OpenAI TTS](https://platform.openai.com/docs/guides/text-to-speech/voice-options)\n- [ElevenLabs](https://elevenlabs.io/)\n- Any OpenAI Compatible TTS service.\n\n**STT (speech-to-text) support:**\n\n- Native Browser Built-in (default)\n\n**Vector Databases:**\n\n- [LanceDB](https://github.com/lancedb/lancedb) (default)\n- [PGVector](https://github.com/pgvector/pgvector)\n- [Astra DB](https://www.datastax.com/products/datastax-astra)\n- [Pinecone](https://pinecone.io)\n- [Chroma & ChromaCloud](https://trychroma.com)\n- [Weaviate](https://weaviate.io)\n- [Qdrant](https://qdrant.tech)\n- [Milvus](https://milvus.io)\n- [Zilliz](https://zilliz.com)\n\n### Technical Overview\n\nThis monorepo consists of six main sections:\n\n- `frontend`: A viteJS + React frontend that you can run to easily create and manage all your content the LLM can use.\n- `server`: A NodeJS express server to handle all the interactions and do all the vectorDB management and LLM interactions.\n- `collector`: NodeJS express server that processes and parses documents from the UI.\n- `docker`: Docker instructions and build process + information for building from source.\n- `embed`: Submodule for generation & creation of the [web embed widget](https://github.com/Mintplex-Labs/anythingllm-embed).\n- `browser-extension`: Submodule for the [chrome browser extension](https://github.com/Mintplex-Labs/anythingllm-extension).\n\n## 🛳 Self-Hosting\n\nMintplex Labs & the community maintain a number of deployment methods, scripts, and templates that you can use to run AnythingLLM locally. Refer to the table below to read how to deploy on your preferred environment or to automatically deploy.\n| Docker | AWS | GCP | Digital Ocean | Render.com |\n|----------------------------------------|----|-----|---------------|------------|\n| [![Deploy on Docker][docker-btn]][docker-deploy] | [![Deploy on AWS][aws-btn]][aws-deploy] | [![Deploy on GCP][gcp-btn]][gcp-deploy] | [![Deploy on DigitalOcean][do-btn]][do-deploy] | [![Deploy on Render.com][render-btn]][render-deploy] |\n\n| Railway                                             | RepoCloud                                                 | Elestio                                             | Northflank                                                   |\n| --------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------------------ |\n| [![Deploy on Railway][railway-btn]][railway-deploy] | [![Deploy on RepoCloud][repocloud-btn]][repocloud-deploy] | [![Depl",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"anything-llm\",\n  \"version\": \"1.15.0\",\n  \"description\": \"The best solution for turning private documents into a chat bot using off-the-shelf tools and commercially viable AI technologies.\",\n  \"main\": \"index.js\",\n  \"type\": \"module\",\n  \"author\": \"Timothy Carambat (Mintplex Labs)\",\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/mintplex-labs/anything-llm.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/mintplex-labs/anything-llm/issues\"\n  },\n  \"homepage\": \"https://github.com/mintplex-labs/anything-llm#readme\",\n  \"engines\": {\n    \"node\": \">=18\"\n  },\n  \"scripts\": {\n    \"test\": \"jest\",\n    \"lint\": \"cd server && yarn lint && cd ../frontend && yarn lint && cd ../collector && yarn lint\",\n    \"lint:ci\": \"cd server && yarn lint:check && cd ../frontend && yarn lint:check && cd ../collector && yarn lint:check\",\n    \"setup\": \"cd server && yarn && cd ../collector && yarn && cd ../frontend && yarn && cd .. && yarn setup:envs && yarn prisma:setup && echo \\\"Please run yarn dev:server, yarn dev:collector, and yarn dev:frontend in separate terminal tabs.\\\"\",\n    \"setup:envs\": \"cp -n ./frontend/.env.example ./frontend/.env; cp -n ./server/.env.example ./server/.env.development; cp -n ./collector/.env.example ./collector/.env; cp -n ./docker/.env.example ./docker/.env; echo \\\"All ENV files copied!\\n\\\"\",\n    \"dev:server\": \"cd server && yarn dev\",\n    \"dev:collector\": \"cd collector && yarn dev\",\n    \"dev:frontend\": \"cd frontend && yarn dev\",\n    \"dev\": \"npx concurrently \\\"yarn dev:server\\\" \\\"yarn dev:frontend\\\" \\\"yarn dev:collector\\\"\",\n    \"prisma:generate\": \"cd server && npx prisma generate\",\n    \"prisma:migrate\": \"cd server && npx prisma migrate dev --name init\",\n    \"prisma:seed\": \"cd server && npx prisma db seed\",\n    \"prisma:setup\": \"yarn prisma:generate && yarn prisma:migrate && yarn prisma:seed\",\n    \"prisma:reset\": \"truncate -s 0 server/storage/anythingllm.db && yarn prisma:migrate\",\n    \"prod:server\": \"cd server && yarn start\",\n    \"prod:frontend\": \"cd frontend && yarn build\",\n    \"generate:cloudformation\": \"node cloud-deployments/aws/cloudformation/generate.mjs\",\n    \"generate::gcp_deployment\": \"node cloud-deployments/gcp/deployment/generate.mjs\",\n    \"translations:verify\": \"cd frontend/src/locales && node verifyTranslations.mjs\",\n    \"translations:normalize\": \"cd frontend/src/locales && node normalizeEn.mjs && cd ../../.. && cd frontend && yarn lint && cd .. && yarn translations:verify\",\n    \"translations:prune\": \"cd frontend/src/locales && node findUnusedTranslations.mjs --delete && cd ../../../ && yarn translations:normalize\",\n    \"translations:create\": \"cd extras/translator && node index.mjs --all && cd ../../frontend && yarn lint && cd ../..\"\n  },\n  \"private\": false,\n  \"devDependencies\": {\n    \"concurrently\": \"^9.1.2\",\n    \"jest\": \"^29.7.0\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "llm",
      "workflow",
      "vector"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 14,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 91
    },
    "strategic_score": 91
  },
  {
    "owner": "Neet-Nestor",
    "name": "Telegram-Media-Downloader",
    "full_name": "Neet-Nestor/Telegram-Media-Downloader",
    "url": "https://github.com/Neet-Nestor/Telegram-Media-Downloader",
    "description": "A script allowing you to download images and videos from Telegram web even if the group restricts downloading.",
    "language": "JavaScript",
    "total_stars": 4581,
    "forks": 468,
    "stars_this_period": 62,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "greasyfork",
        "greasymonkey",
        "greasymonkey-userscript",
        "javascript",
        "telegram",
        "userscript"
      ],
      "license": "GPL-3.0",
      "open_issues": 66,
      "created_at": "2022-06-11T06:20:37Z",
      "pushed_at": "2026-03-09T06:52:52Z",
      "homepage": "https://greasyfork.org/scripts/446342-telegram-media-downloader",
      "default_branch": "main",
      "forks": 468,
      "watchers": 33,
      "archived": false,
      "size_kb": 1059
    },
    "readme_content": "<div align=\"center\">\n\n# Telegram Video Downloader / Telegram Media Downloader\n\n**Unlock Telegram: Download Anything You Like.**\n\n[![GitHub License](https://img.shields.io/github/license/Neet-Nestor/Telegram-Media-Downloader)](./LICENSE)\n[![Greasy Fork Version](https://img.shields.io/greasyfork/v/446342-telegram-media-downloader)](https://greasyfork.org/scripts/446342-telegram-media-downloader)\n[![Greasy Fork Downloads](https://img.shields.io/greasyfork/dt/446342-telegram-media-downloader)](https://greasyfork.org/scripts/446342-telegram-media-downloader)\n\n</div>\n\n## Overview\nThis user script unlocks and enables download of images, GIFs, audios, and videos in Telegram webapps from chats, stories, and even private channels where downloading is disabled or restricted.\n\n(Note: some features are only available for specific Telegram webapp version. e.g. Audio message download is only available for the K webapp version.)\n\n### What are user scripts?\nUser scripts put you in control of your  browsing experience. Once installed, they automatically make the sites you visit better by adding features, making them easier to use, or taking out the annoying bits. The user scripts on Greasy Fork were written by other users and posted to share with the world. They're free to install and easy to use.\n\n## Installation\n### Greasy Fork\n1. install a user script manager\n\n    To use user scripts you need to first install a user script manager. Which user script manager you can use depends on which browser you use.\n\n    - Chrome: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Firefox: [Greasemonkey](https://addons.mozilla.org/firefox/addon/greasemonkey/), [Tampermonkey](https://addons.mozilla.org/firefox/addon/tampermonkey/), or [Violentmonkey](https://addons.mozilla.org/firefox/addon/violentmonkey/)\n    - Safari: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Userscripts](https://apps.apple.com/app/userscripts/id1463298887)\n    - Microsoft Edge: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Opera: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Maxthon: [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n\n    (Note, If you are using Tampermonkey extension in a Chrome-based browser, following [instructions](https://www.tampermonkey.net/faq.php#Q209) to enable Developer Mode.)\n\n2. Install this script by visiting Greasy Fork:\n    https://greasyfork.org/scripts/446342-telegram-media-downloader\n\n### Manual Installation\n1. install a user script manager\n\n    To use user scripts you need to first install a user script manager. Which user script manager you can use depends on which browser you use.\n\n    - Chrome: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Firefox: [Greasemonkey](https://addons.mozilla.org/firefox/addon/greasemonkey/), [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo), or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Safari: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Userscripts](https://apps.apple.com/app/userscripts/id1463298887)\n    - Microsoft Edge: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Opera: [Tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n    - Maxthon: [Violentmonkey](https://chrome.google.com/webstore/detail/violent-monkey/jinjaccalgkegednnccohejagnlnfdag)\n\n    (Note, If you are using Tampermonkey extension in a Chrome-based browser, following [instructions](https://www.tampermonkey.net/faq.php#Q209) to enable Developer Mode.)\n    \n2. Open Tampermonkey Dashboard, drag & drop src/tel_download.js into it and clicks the \"install\" button\n\n## How to Use\nThis script only works on Telegram Webapp.\n\nFor channels and chats that allow saving content, this script will have no effect. Please just use the official download button provided by the telegram webapp instead.\n\nFor channels and chats that disable downloading and restrict saving content, this script will add the download button back for images, GIFs and videos.\n\n![Image Download](https://media2.giphy.com/media/v1.Y2lkPTc5MGI3NjExY2VjNmU2ZDM0YTFlOWY4YTMzZDZmNjVlMDE2ODQ4OGY4N2E3MDFkNSZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/lqCVcw0pCd2VA3zqoE/giphy.gif)\n![GIF Download](https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExMzYwMzM3ZTMzYmI1MzA4M2EyYmY0NTFlOTg4OWFhNjhjNDk5YTkzYiZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/wnYzW4vwpPdeuo62nQ/giphy.gif)\n![Video Download](https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExMXcxYnJxaXMxcW05YW5rZ2YzZzE0bTU4aTBwYXI1N3pmdnVzbDFrdSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/EEPbblwmSpteAmwLls/giphy.gif)\n![Story Download](https://media0.giphy.com/media/v1.Y2lkPTc5MGI3NjExZ3Z5Y2VzM2QzbW1xc3ZwNTQ2N3Q0a3lnanpxdW55c2Qzajl5NXZsaCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/xJFjBGi8isHPR5cuHl/giphy.gif)\n\nFor videos, a progress bar will show on the bottom-right corder after you started downloading. For images and audios, there won't be a progress bar.\n\n### Supported Webapp Versions\nThere are 2 different versions of telegram webapps:\n- https://webk.telegram.org / https://web.telegram.org/k/ (**Recommended**)\n- https://webz.telegram.org / https://web.telegram.org/a/\n\nThis script should work on both versions of webapp, but some features are only available in the /k/ version (such as voice message downloads). If certain features are not working, switching to the /k/ version is recommended.\n\n### Check Downloading Progress\nA progress bar will show on the bottom-right of the screen for videos. You can also check [DevTools console](https://developer.chrome.com/docs/devtools/open/) for logs.\n\n## Contributing\n\nWe welcome contributions from the community! If you’d like to contribute to Telegram Media Downloader, follow these steps:\n\n### Reporting Issues\nIf you find a bug, compatibility issue, or have a feature request, please:\n\n1. Check if the issue has already been reported in the Issues tab.\n2. If not, create a new issue with a clear title and description. Attach screenshots or logs if applicable.\n\n### Submitting Pull Requests\n\n1. **Fork the repository**: Click on the \"Fork\" button in the top-right of the repo.\n\n2. **Clone your fork**:\n\n    ```bash\n    git clone https://github.com/YOUR-USERNAME/Telegram-Media-Downloader.git\n    cd Telegram-Media-Downloader\n    ```\n\n3. **Create a new branch** for your feature or bugfix:\n\n    ```bash\n    git checkout -b feature-or-bugfix-name\n    ```\n\n    Make your changes and ensure the script still works correctly on supported Telegram webapps.\n\n4. **Make your changes** and ensure the script still works correctly on supported Telegram webapps.\n\n5. **Commit your changes** with a descriptive message:\n\n    ```bash\n    git commit -m \"Add feature/fix issue: Brief description\"\n    ```\n\n6. **Push to your fork:**\n\n    ```bash\n    git push origin feature-or-bugfix-name\n    ```\n\n7. **Submit a Pull Request (PR):**\n\n    - Go to the original repository: [Neet-Nestor/Telegram-Media-Downloader](https://github.com/Neet-Nestor/Telegram-Media-Downloader).\n\n    - Click \"New Pull Request\" and select your branch.\n\n    - Add a description of your changes and submit.\n\n### Development Guidelines\n- Keep your code clean and well-documented.\n- Follow the existing coding style.\n- Test your changes on both Telegram WebK and WebZ versions.\n- Ensure compatibility with major user script managers like Tampermonkey and Violentmonkey.\n\n### Help with Translations\nWe want Telegram Media Downloader to be accessible to users worldwide! If you’d like to help translate the script’s Greasy Fork page, follow these steps:\n\n#### How to Contribute a Translation\n\nCheck for existing translations in the [`docs/greasyfork`](/docs/greasyfork/) folder of the repository.\n\nAdd a new file in docs/<language-code>.md, using the appropriate language code (e.g., docs/fr-FR.md for French, docs/de-DE.md for German).\n\nTranslate the content from [`docs/greasyfork/en-US.md`](/docs/greasyfork/en-US.md) into your language while keeping the formatting intact. Submit a Pull Request following the steps in the [Submitting Pull Requests](#submitting-pull-requests) section above.\n\n#### Language Codes\nUse standard IETF Language Tag (e.g., `es-ES` for Spanish, `ja-JP` for Japanese). You can find a full list of codes [here](https://docs.dyspatch.io/localization/supported_languages/).\n\n## Support Author\nIf you like this script, you can support me via [Venmo](https://venmo.com/u/NeetNestor) or [buy me a coffee](https://ko-fi.com/neetnestor) :)\n",
    "strategic_keywords": [],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 11,
      "relevance": 0,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 6,
      "risk_signal": 10,
      "total": 57
    },
    "strategic_score": 57
  },
  {
    "owner": "react",
    "name": "react",
    "full_name": "react/react",
    "url": "https://github.com/react/react",
    "description": "The library for web and native user interfaces.",
    "language": "JavaScript",
    "total_stars": 246136,
    "forks": 51086,
    "stars_this_period": 57,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "declarative",
        "frontend",
        "javascript",
        "library",
        "react",
        "ui"
      ],
      "license": "MIT",
      "open_issues": 1269,
      "created_at": "2013-05-24T16:15:54Z",
      "pushed_at": "2026-06-26T17:09:57Z",
      "homepage": "https://react.dev",
      "default_branch": "main",
      "forks": 51086,
      "watchers": 6687,
      "archived": false,
      "size_kb": 1000080
    },
    "readme_content": "# [React](https://react.dev/) &middot; [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/facebook/react/blob/main/LICENSE) [![npm version](https://img.shields.io/npm/v/react.svg?style=flat)](https://www.npmjs.com/package/react) [![(Runtime) Build and Test](https://github.com/facebook/react/actions/workflows/runtime_build_and_test.yml/badge.svg)](https://github.com/facebook/react/actions/workflows/runtime_build_and_test.yml) [![(Compiler) TypeScript](https://github.com/facebook/react/actions/workflows/compiler_typescript.yml/badge.svg?branch=main)](https://github.com/facebook/react/actions/workflows/compiler_typescript.yml) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://legacy.reactjs.org/docs/how-to-contribute.html#your-first-pull-request)\n\nReact is a JavaScript library for building user interfaces.\n\n* **Declarative:** React makes it painless to create interactive UIs. Design simple views for each state in your application, and React will efficiently update and render just the right components when your data changes. Declarative views make your code more predictable, simpler to understand, and easier to debug.\n* **Component-Based:** Build encapsulated components that manage their own state, then compose them to make complex UIs. Since component logic is written in JavaScript instead of templates, you can easily pass rich data through your app and keep the state out of the DOM.\n* **Learn Once, Write Anywhere:** We don't make assumptions about the rest of your technology stack, so you can develop new features in React without rewriting existing code. React can also render on the server using [Node](https://nodejs.org/en) and power mobile apps using [React Native](https://reactnative.dev/).\n\n[Learn how to use React in your project](https://react.dev/learn).\n\n## Installation\n\nReact has been designed for gradual adoption from the start, and **you can use as little or as much React as you need**:\n\n* Use [Quick Start](https://react.dev/learn) to get a taste of React.\n* [Add React to an Existing Project](https://react.dev/learn/add-react-to-an-existing-project) to use as little or as much React as you need.\n* [Create a New React App](https://react.dev/learn/start-a-new-react-project) if you're looking for a powerful JavaScript toolchain.\n\n## Documentation\n\nYou can find the React documentation [on the website](https://react.dev/).\n\nCheck out the [Getting Started](https://react.dev/learn) page for a quick overview.\n\nThe documentation is divided into several sections:\n\n* [Quick Start](https://react.dev/learn)\n* [Tutorial](https://react.dev/learn/tutorial-tic-tac-toe)\n* [Thinking in React](https://react.dev/learn/thinking-in-react)\n* [Installation](https://react.dev/learn/installation)\n* [Describing the UI](https://react.dev/learn/describing-the-ui)\n* [Adding Interactivity](https://react.dev/learn/adding-interactivity)\n* [Managing State](https://react.dev/learn/managing-state)\n* [Advanced Guides](https://react.dev/learn/escape-hatches)\n* [API Reference](https://react.dev/reference/react)\n* [Where to Get Support](https://react.dev/community)\n* [Contributing Guide](https://legacy.reactjs.org/docs/how-to-contribute.html)\n\nYou can improve it by sending pull requests to [this repository](https://github.com/reactjs/react.dev).\n\n## Examples\n\nWe have several examples [on the website](https://react.dev/). Here is the first one to get you started:\n\n```jsx\nimport { createRoot } from 'react-dom/client';\n\nfunction HelloMessage({ name }) {\n  return <div>Hello {name}</div>;\n}\n\nconst root = createRoot(document.getElementById('container'));\nroot.render(<HelloMessage name=\"Taylor\" />);\n```\n\nThis example will render \"Hello Taylor\" into a container on the page.\n\nYou'll notice that we used an HTML-like syntax; [we call it JSX](https://react.dev/learn#writing-markup-with-jsx). JSX is not required to use React, but it makes code more readable, and writing it feels like writing HTML.\n\n## Contributing\n\nThe main purpose of this repository is to continue evolving React core, making it faster and easier to use. Development of React happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving React.\n\n### [Code of Conduct](https://code.fb.com/codeofconduct)\n\nFacebook has adopted a Code of Conduct that we expect project participants to adhere to. Please read [the full text](https://code.fb.com/codeofconduct) so that you can understand what actions will and will not be tolerated.\n\n### [Contributing Guide](https://legacy.reactjs.org/docs/how-to-contribute.html)\n\nRead our [contributing guide](https://legacy.reactjs.org/docs/how-to-contribute.html) to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to React.\n\n### [Good First Issues](https://github.com/facebook/react/labels/good%20first%20issue)\n\nTo help you get your feet wet and get you familiar with our contribution process, we have a list of [good first issues](https://github.com/facebook/react/labels/good%20first%20issue) that contain bugs that have a relatively limited scope. This is a great place to get started.\n\n### License\n\nReact is [MIT licensed](./LICENSE).\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"private\": true,\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.10.5\",\n    \"@babel/code-frame\": \"^7.10.4\",\n    \"@babel/core\": \"^7.11.1\",\n    \"@babel/helper-define-map\": \"^7.18.6\",\n    \"@babel/helper-module-imports\": \"^7.10.4\",\n    \"@babel/parser\": \"^7.11.3\",\n    \"@babel/plugin-external-helpers\": \"^7.10.4\",\n    \"@babel/plugin-proposal-class-properties\": \"^7.10.4\",\n    \"@babel/plugin-proposal-object-rest-spread\": \"^7.11.0\",\n    \"@babel/plugin-syntax-dynamic-import\": \"^7.8.3\",\n    \"@babel/plugin-syntax-import-meta\": \"^7.10.4\",\n    \"@babel/plugin-syntax-jsx\": \"^7.23.3\",\n    \"@babel/plugin-syntax-typescript\": \"^7.14.5\",\n    \"@babel/plugin-transform-arrow-functions\": \"^7.10.4\",\n    \"@babel/plugin-transform-block-scoped-functions\": \"^7.10.4\",\n    \"@babel/plugin-transform-block-scoping\": \"^7.11.1\",\n    \"@babel/plugin-transform-class-properties\": \"^7.25.9\",\n    \"@babel/plugin-transform-classes\": \"^7.10.4\",\n    \"@babel/plugin-transform-destructuring\": \"^7.10.4\",\n    \"@babel/plugin-transform-for-of\": \"^7.10.4\",\n    \"@babel/plugin-transform-literals\": \"^7.10.4\",\n    \"@babel/plugin-transform-modules-commonjs\": \"^7.10.4\",\n    \"@babel/plugin-transform-object-super\": \"^7.10.4\",\n    \"@babel/plugin-transform-parameters\": \"^7.10.5\",\n    \"@babel/plugin-transform-private-methods\": \"^7.10.4\",\n    \"@babel/plugin-transform-react-jsx\": \"^7.23.4\",\n    \"@babel/plugin-transform-react-jsx-development\": \"^7.22.5\",\n    \"@babel/plugin-transform-react-jsx-source\": \"^7.10.5\",\n    \"@babel/plugin-transform-shorthand-properties\": \"^7.10.4\",\n    \"@babel/plugin-transform-spread\": \"^7.11.0\",\n    \"@babel/plugin-transform-template-literals\": \"^7.10.5\",\n    \"@babel/preset-env\": \"^7.26.9\",\n    \"@babel/preset-flow\": \"^7.10.4\",\n    \"@babel/preset-react\": \"^7.23.3\",\n    \"@babel/preset-typescript\": \"^7.26.0\",\n    \"@babel/traverse\": \"^7.11.0\",\n    \"@rollup/plugin-babel\": \"^6.0.3\",\n    \"@rollup/plugin-commonjs\": \"^24.0.1\",\n    \"@rollup/plugin-node-resolve\": \"^15.0.1\",\n    \"@rollup/plugin-replace\": \"^5.0.2\",\n    \"@rollup/plugin-typescript\": \"^12.1.2\",\n    \"@types/invariant\": \"^2.2.35\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.21.0\",\n    \"@typescript-eslint/parser\": \"^6.21.0\",\n    \"abortcontroller-polyfill\": \"^1.7.5\",\n    \"art\": \"0.10.1\",\n    \"babel-plugin-syntax-hermes-parser\": \"^0.36.1\",\n    \"babel-plugin-syntax-trailing-function-commas\": \"^6.5.0\",\n    \"busboy\": \"^1.6.0\",\n    \"chalk\": \"^3.0.0\",\n    \"cli-table\": \"^0.3.1\",\n    \"coffee-script\": \"^1.12.7\",\n    \"confusing-browser-globals\": \"^1.0.9\",\n    \"core-js\": \"^3.6.4\",\n    \"create-react-class\": \"^15.6.3\",\n    \"danger\": \"^11.2.3\",\n    \"error-stack-parser\": \"^2.0.6\",\n    \"eslint\": \"^7.7.0\",\n    \"eslint-config-prettier\": \"^6.9.0\",\n    \"eslint-plugin-babel\": \"^5.3.0\",\n    \"eslint-plugin-es\": \"^4.1.0\",\n    \"eslint-plugin-eslint-plugin\": \"^3.5.3\",\n    \"eslint-plugin-ft-flow\": \"^2.0.3\",\n    \"eslint-plugin-jest\": \"28.4.0\",\n    \"eslint-plugin-no-for-of-loops\": \"^1.0.0\",\n    \"eslint-plugin-no-function-declare-after-return\": \"^1.0.0\",\n    \"eslint-plugin-react\": \"^6.7.1\",\n    \"eslint-plugin-react-hooks-published\": \"npm:eslint-plugin-react-hooks@^5.2.0\",\n    \"eslint-plugin-react-internal\": \"link:./scripts/eslint-rules\",\n    \"fbjs-scripts\": \"^3.0.1\",\n    \"filesize\": \"^6.0.1\",\n    \"flow-bin\": \"^0.317.0\",\n    \"flow-remove-types\": \"^2.317.0\",\n    \"flow-typed\": \"^4.1.1\",\n    \"glob\": \"^7.1.6\",\n    \"glob-stream\": \"^6.1.0\",\n    \"google-closure-compiler\": \"^20230206.0.0\",\n    \"gzip-size\": \"^5.1.1\",\n    \"hermes-eslint\": \"^0.36.1\",\n    \"hermes-parser\": \"^0.36.1\",\n    \"jest\": \"^29.4.2\",\n    \"jest-cli\": \"^29.4.2\",\n    \"jest-diff\": \"^29.4.2\",\n    \"jest-environment-jsdom\": \"^29.4.2\",\n    \"jest-silent-reporter\": \"^0.6.0\",\n    \"jest-snapshot-serializer-raw\": \"^1.2.0\",\n    \"minimatch\": \"^3.0.4\",\n    \"minimist\": \"^1.2.3\",\n    \"mkdirp\": \"^0.5.1\",\n    \"ncp\": \"^2.0.0\",\n    \"prettier\": \"^3.3.3\",\n    \"prettier-2\": \"npm:prettier@^2\",\n    \"prettier-plugin-hermes-parser\": \"^0.36.1\",\n    \"pretty-format\": \"^29.4.1\",\n    \"prop-types\": \"^15.6.2\",\n    \"random-seed\": \"^0.3.0\",\n    \"react-lifecycles-compat\": \"^3.0.4\",\n    \"rimraf\": \"^3.0.0\",\n    \"rollup\": \"^3.29.5\",\n    \"rollup-plugin-dts\": \"^6.1.1\",\n    \"rollup-plugin-prettier\": \"^4.1.1\",\n    \"rollup-plugin-strip-banner\": \"^3.0.0\",\n    \"semver\": \"^7.1.1\",\n    \"shelljs\": \"^0.8.5\",\n    \"signedsource\": \"^2.0.0\",\n    \"targz\": \"^1.0.1\",\n    \"through2\": \"^3.0.1\",\n    \"tmp\": \"^0.1.0\",\n    \"to-fast-properties\": \"^2.0.0\",\n    \"tsup\": \"^8.4.0\",\n    \"typescript\": \"^5.4.3\",\n    \"undici\": \"^5.28.4\",\n    \"web-streams-polyfill\": \"^3.1.1\",\n    \"yargs\": \"^15.3.1\"\n  },\n  \"jest\": {\n    \"testRegex\": \"/scripts/jest/dont-run-jest-directly\\\\.js$\"\n  },\n  \"scripts\": {\n    \"prebuild\": \"./scripts/react-compiler/link-compiler.sh\",\n    \"build\": \"node ./scripts/rollup/build-all-release-channels.js\",\n    \"build-for-devtools\": \"cross-env yarn build react/index,react/jsx,react/compiler-runtime,react-dom/index,react-dom/client,react-dom/unstable_testing,react-dom/test-utils,react-is,react-d",
    "strategic_keywords": [
      "runtime",
      "workspace",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 6,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "golang",
    "name": "go",
    "full_name": "golang/go",
    "url": "https://github.com/golang/go",
    "description": "The Go programming language",
    "language": "Go",
    "total_stars": 134953,
    "forks": 19028,
    "stars_this_period": 54,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "go",
        "golang",
        "language",
        "programming-language"
      ],
      "license": "BSD-3-Clause",
      "open_issues": 10166,
      "created_at": "2014-08-19T04:33:40Z",
      "pushed_at": "2026-06-26T19:47:40Z",
      "homepage": "https://go.dev",
      "default_branch": "master",
      "forks": 19028,
      "watchers": 3407,
      "archived": false,
      "size_kb": 443498
    },
    "readme_content": "# The Go Programming Language\n\nGo is an open source programming language that makes it easy to build simple,\nreliable, and efficient software.\n\n![Gopher image](https://golang.org/doc/gopher/fiveyears.jpg)\n*Gopher image by [Renee French][rf], licensed under [Creative Commons 4.0 Attribution license][cc4-by].*\n\nOur canonical Git repository is located at https://go.googlesource.com/go.\nThere is a mirror of the repository at https://github.com/golang/go.\n\nUnless otherwise noted, the Go source files are distributed under the\nBSD-style license found in the LICENSE file.\n\n### Download and Install\n\n#### Binary Distributions\n\nOfficial binary distributions are available at https://go.dev/dl/.\n\nAfter downloading a binary release, visit https://go.dev/doc/install\nfor installation instructions.\n\n#### Install From Source\n\nIf a binary distribution is not available for your combination of\noperating system and architecture, visit\nhttps://go.dev/doc/install/source\nfor source installation instructions.\n\n### Contributing\n\nGo is the work of thousands of contributors. We appreciate your help!\n\nTo contribute, please read the contribution guidelines at https://go.dev/doc/contribute.\n\nNote that the Go project uses the issue tracker for bug reports and\nproposals only. See https://go.dev/wiki/Questions for a list of\nplaces to ask questions about the Go language.\n\n[rf]: https://reneefrench.blogspot.com/\n[cc4-by]: https://creativecommons.org/licenses/by/4.0/\n",
    "strategic_keywords": [],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 0,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 6,
      "risk_signal": 6,
      "total": 55
    },
    "strategic_score": 55
  },
  {
    "owner": "tauri-apps",
    "name": "tauri",
    "full_name": "tauri-apps/tauri",
    "url": "https://github.com/tauri-apps/tauri",
    "description": "Build smaller, faster, and more secure desktop and mobile applications with a web frontend.",
    "language": "Rust",
    "total_stars": 108379,
    "forks": 3728,
    "stars_this_period": 54,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "desktop-app",
        "high-performance",
        "mobile-app",
        "native-app",
        "rust",
        "web-frontend",
        "webview"
      ],
      "license": "Apache-2.0",
      "open_issues": 1436,
      "created_at": "2019-07-13T09:09:37Z",
      "pushed_at": "2026-06-26T18:13:45Z",
      "homepage": "https://tauri.app",
      "default_branch": "dev",
      "forks": 3728,
      "watchers": 545,
      "archived": false,
      "size_kb": 105187
    },
    "readme_content": "<img src=\".github/splash.png\" alt=\"Tauri\" />\n\n[![status](https://img.shields.io/badge/status-stable-blue.svg)](https://github.com/tauri-apps/tauri/tree/dev)\n[![License](https://img.shields.io/badge/License-MIT%20or%20Apache%202-green.svg)](https://opencollective.com/tauri)\n[![test core](https://img.shields.io/github/actions/workflow/status/tauri-apps/tauri/test-core.yml?label=test%20core&logo=github)](https://github.com/tauri-apps/tauri/actions/workflows/test-core.yml)\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)\n[![Chat Server](https://img.shields.io/badge/chat-discord-7289da.svg)](https://discord.com/invite/tauri)\n[![website](https://img.shields.io/badge/website-tauri.app-purple.svg)](https://tauri.app)\n[![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n[![support](https://img.shields.io/badge/sponsor-Open%20Collective-blue.svg)](https://opencollective.com/tauri)\n\n## Introduction\n\nTauri is a framework for building tiny, blazingly fast binaries for all major desktop platforms. Developers can integrate any front-end framework that compiles to HTML, JS and CSS for building their user interface. The backend of the application is a rust-sourced binary with an API that the front-end can interact with.\n\nThe user interface in Tauri apps currently leverages [`tao`](https://docs.rs/tao) as a window handling library on macOS, Windows, Linux, Android and iOS. To render your application, Tauri uses [WRY](https://github.com/tauri-apps/wry), a library which provides a unified interface to the system webview, leveraging WKWebView on macOS & iOS, WebView2 on Windows, WebKitGTK on Linux and Android System WebView on Android.\n\nTo learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.\n\n## Getting Started\n\nIf you are interested in making a tauri app, please visit the [documentation website](https://tauri.app).\n\nThe quickest way to get started is to install the [prerequisites](https://v2.tauri.app/start/prerequisites/) for your system and create a new project with [`create-tauri-app`](https://github.com/tauri-apps/create-tauri-app/#usage). For example with `npm`:\n\n```sh\nnpm create tauri-app@latest\n```\n\n## Features\n\nThe list of Tauri's features includes, but is not limited to:\n\n- Built-in app bundler to create app bundles in formats like `.app`, `.dmg`, `.deb`, `.rpm`, `.AppImage` and Windows installers like `.exe` (via NSIS) and `.msi` (via WiX).\n- Built-in self updater (desktop only)\n- System tray icons\n- Native notifications\n- Native WebView Protocol (tauri doesn't create a localhost http(s) server to serve the WebView contents)\n- GitHub action for streamlined CI\n- VS Code extension\n\n### Platforms\n\nTauri currently supports development and distribution on the following platforms:\n\n| Platform   | Versions                                                                                                        |\n| :--------- | :-------------------------------------------------------------------------------------------------------------- |\n| Windows    | 7 and above                                                                                                     |\n| macOS      | 10.15 and above                                                                                                 |\n| Linux      | webkit2gtk 4.0 for Tauri v1 (for example Ubuntu 18.04). webkit2gtk 4.1 for Tauri v2 (for example Ubuntu 22.04). |\n| iOS/iPadOS | 9 and above                                                                                                     |\n| Android    | 7 and above (currently 8 and above)                                                                             |\n\n## Contributing\n\nBefore you start working on something, it's best to check if there is an existing issue first. It's also a good idea to stop by the Discord server and confirm with the team if it makes sense or if someone else is already working on it.\n\nPlease make sure to read the [Contributing Guide](./.github/CONTRIBUTING.md) before making a pull request.\n\nThank you to everyone contributing to Tauri!\n\n### Documentation\n\nDocumentation in a polyglot system is a tricky proposition. To this end, we prefer to use inline documentation in the Rust & JS source code as much as possible. Check out the hosting repository for the documentation site for further information: <https://github.com/tauri-apps/tauri-docs>\n\n## Partners\n\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\" valign=\"middle\">\n        <a href=\"https://crabnebula.dev\" target=\"_blank\">\n          <img src=\".github/sponsors/crabnebula.svg\" alt=\"CrabNebula\" width=\"283\">\n        </a>\n      </td>\n    </tr>\n  </tbody>\n</table>\n\nFor the complete list of sponsors please visit our [website](https://tauri.app#sponsors) and [Open Collective](https://opencollective.com/tauri).\n\n## Organization\n\nTauri aims to be a sustainable collective based on principles that guide sustainable free and open software communities. To this end it has become a Programme within the [Commons Conservancy](https://commonsconservancy.org/), and you can contribute financially via [Open Collective](https://opencollective.com/tauri).\n\n## Licenses\n\nCode: (c) 2015 - Present - The Tauri Programme within The Commons Conservancy.\n\nMIT or MIT/Apache 2.0 where applicable.\n\nLogo: CC-BY-NC-ND\n\n- Original Tauri Logo Designs by [Alve Larsson](https://alve.io/), [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_large)\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nmembers = [\n  \"crates/tauri\",\n  \"crates/tauri-runtime\",\n  \"crates/tauri-runtime-wry\",\n  \"crates/tauri-macros\",\n  \"crates/tauri-utils\",\n  \"crates/tauri-build\",\n  \"crates/tauri-codegen\",\n  \"crates/tauri-plugin\",\n  \"crates/tauri-schema-generator\",\n  \"crates/tauri-schema-worker\",\n  \"crates/tauri-cli\",\n  \"crates/tauri-bundler\",\n  \"crates/tauri-macos-sign\",\n  \"crates/tauri-driver\",\n\n  # @tauri-apps/cli rust project\n  \"packages/cli\",\n\n  # integration tests\n  \"crates/tests/restart\",\n  \"crates/tests/acl\",\n\n  # bench\n  \"bench\",\n  \"bench/tests/cpu_intensive/src-tauri\",\n  \"bench/tests/files_transfer/src-tauri\",\n  \"bench/tests/helloworld/src-tauri\",\n\n  # examples\n  \"examples/file-associations/src-tauri\",\n  \"examples/resources/src-tauri\",\n  \"examples/api/src-tauri\",\n  \"examples/api/src-tauri/tauri-plugin-sample\",\n]\nresolver = \"2\"\n\n[workspace.package]\nauthors = [\"Tauri Programme within The Commons Conservancy\"]\nhomepage = \"https://tauri.app/\"\nrepository = \"https://github.com/tauri-apps/tauri\"\ncategories = [\"gui\", \"web-programming\"]\nlicense = \"Apache-2.0 OR MIT\"\nedition = \"2021\"\nrust-version = \"1.77.2\"\n\n# default to small, optimized workspace release binaries\n[profile.release]\npanic = \"abort\"\ncodegen-units = 1\nlto = true\nincremental = false\nopt-level = \"s\"\nstrip = true\n\n# profiles for tauri-cli\n[profile.dev.package.miniz_oxide]\nopt-level = 3\n\n[profile.release-size-optimized]\ninherits = \"release\"\ncodegen-units = 1\nlto = true\nincremental = false\nopt-level = \"s\"\n\n# Temporary patch to schemars to preserve newlines in docstrings for our reference docs schemas\n# See https://github.com/GREsau/schemars/issues/120 for reference\n[patch.crates-io]\nschemars_derive = { git = 'https://github.com/tauri-apps/schemars.git', branch = 'feat/preserve-description-newlines' }\ntauri = { path = \"./crates/tauri\" }\ntauri-plugin = { path = \"./crates/tauri-plugin\" }\ntauri-utils = { path = \"./crates/tauri-utils\" }\n",
    "strategic_keywords": [
      "rag",
      "runtime",
      "workspace",
      "workflow",
      "codegen",
      "protocol"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "run-llama",
    "name": "llama_index",
    "full_name": "run-llama/llama_index",
    "url": "https://github.com/run-llama/llama_index",
    "description": "LlamaIndex is the leading document agent and OCR platform",
    "language": "Python",
    "total_stars": 50433,
    "forks": 7640,
    "stars_this_period": 49,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "agents",
        "application",
        "data",
        "fine-tuning",
        "framework",
        "llamaindex",
        "llm",
        "multi-agents",
        "rag",
        "vector-database"
      ],
      "license": "MIT",
      "open_issues": 503,
      "created_at": "2022-11-02T04:24:54Z",
      "pushed_at": "2026-06-26T14:23:35Z",
      "homepage": "https://developers.llamaindex.ai",
      "default_branch": "main",
      "forks": 7640,
      "watchers": 281,
      "archived": false,
      "size_kb": 470816
    },
    "readme_content": "# 🗂️ LlamaIndex 🦙\n\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/llama-index)](https://pypi.org/project/llama-index/)\n[![Build](https://github.com/run-llama/llama_index/actions/workflows/build_package.yml/badge.svg)](https://github.com/run-llama/llama_index/actions/workflows/build_package.yml)\n[![GitHub contributors](https://img.shields.io/github/contributors/jerryjliu/llama_index)](https://github.com/jerryjliu/llama_index/graphs/contributors)\n[![Discord](https://img.shields.io/discord/1059199217496772688)](https://discord.gg/dGcwcsnxhU)\n[![Twitter](https://img.shields.io/twitter/follow/llama_index)](https://x.com/llama_index)\n[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/LlamaIndex?style=plastic&logo=reddit&label=r%2FLlamaIndex&labelColor=white)](https://www.reddit.com/r/LlamaIndex/)\n[![Ask AI](https://img.shields.io/badge/Phorm-Ask_AI-%23F2777A.svg?&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNSIgaGVpZ2h0PSI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxwYXRoIGQ9Ik00LjQzIDEuODgyYTEuNDQgMS40NCAwIDAgMS0uMDk4LjQyNmMtLjA1LjEyMy0uMTE1LjIzLS4xOTIuMzIyLS4wNzUuMDktLjE2LjE2NS0uMjU1LjIyNmExLjM1MyAxLjM1MyAwIDAgMS0uNTk1LjIxMmMtLjA5OS4wMTItLjE5Mi4wMTQtLjI3OS4wMDZsLTEuNTkzLS4xNHYtLjQwNmgxLjY1OGMuMDkuMDAxLjE3LS4xNjkuMjQ2LS4xOTFhLjYwMy42MDMgMCAwIDAgLjItLjEwNi41MjkuNTI5IDAgMCAwIC4xMzgtLjE3LjY1NC42NTQgMCAwIDAgLjA2NS0uMjRsLjAyOC0uMzJhLjkzLjkzIDAgMCAwLS4wMzYtLjI0OS41NjcuNTY3IDAgMCAwLS4xMDMtLjIuNTAyLjUwMiAwIDAgMC0uMTY4LS4xMzguNjA4LjYwOCAwIDAgMC0uMjQtLjA2N0wyLjQzNy43MjkgMS42MjUuNjcxYS4zMjIuMzIyIDAgMCAwLS4yMzIuMDU4LjM3NS4zNzUgMCAwIDAtLjExNi4yMzJsLS4xMTYgMS40NS0uMDU4LjY5Ny0uMDU4Ljc1NEwuNzA1IDRsLS4zNTctLjA3OUwuNjAyLjkwNkMuNjE3LjcyNi42NjMuNTc0LjczOS40NTRhLjk1OC45NTggMCAwIDEgLjI3NC0uMjg1Ljk3MS45NzEgMCAwIDEgLjMzNy0uMTRjLjExOS0uMDI2LjIyNy0uMDM0LjMyNS0uMDI2TDMuMjMyLjE2Yy4xNTkuMDE0LjMzNi4wMy40NTkuMDgyYTEuMTczIDEuMTczIDAgMCAxIC41NDUuNDQ3Yy4wNi4wOTQuMTA5LjE5Mi4xNDQuMjkzYTEuMzkyIDEuMzkyIDAgMCAxIC4wNzguNThsLS4wMjkuMzJaIiBmaWxsPSIjRjI3NzdBIi8+CiAgPHBhdGggZD0iTTQuMDgyIDIuMDA3YTEuNDU1IDEuNDU1IDAgMCAxLS4wOTguNDI3Yy0uMDUuMTI0LS4xMTQuMjMyLS4xOTIuMzI0YTEuMTMgMS4xMyAwIDAgMS0uMjU0LjIyNyAxLjM1MyAxLjM1MyAwIDAgMS0uNTk1LjIxNGMtLjEuMDEyLS4xOTMuMDE0LS4yOC4wMDZsLTEuNTYtLjEwOC4wMzQtLjQwNi4wMy0uMzQ4IDEuNTU5LjE1NGMuMDkgMCAuMTczLS4wMS4yNDgtLjAzM2EuNjAzLjYwMyAwIDAgMCAuMi0uMTA2LjUzMi41MzIgMCAwIDAgLjEzOS0uMTcyLjY2LjY2IDAgMCAwIC4wNjQtLjI0MWwuMDI5LS4zMjFhLjk0Ljk0IDAgMCAwLS4wMzYtLjI1LjU3LjU3IDAgMCAwLS4xMDMtLjIwMi41MDIuNTAyIDAgMCAwLS4xNjgtLjEzOC42MDUuNjA1IDAgMCAwLS4yNC0uMDY3TDEuMjczLjgyN2MtLjA5NC0uMDA4LS4xNjguMDEtLjIyMS4wNTUtLjA1My4wNDUtLjA4NC4xMTQtLjA5Mi4yMDZMLjcwNSA0IDAgMy45MzhsLjI1NS0yLjkxMUExLjAxIDEuMDEgMCAwIDEgLjM5My41NzIuOTYyLjk2MiAwIDAgMSAuNjY2LjI4NmEuOTcuOTcgMCAwIDEgLjMzOC0uMTRDMS4xMjIuMTIgMS4yMy4xMSAxLjMyOC4xMTlsMS41OTMuMTRjLjE2LjAxNC4zLjA0Ny40MjMuMWExLjE3IDEuMTcgMCAwIDEgLjU0NS40NDhjLjA2MS4wOTUuMTA5LjE5My4xNDQuMjk1YTEuNDA2IDEuNDA2IDAgMCAxIC4wNzcuNTgzbC0uMDI4LjMyMloiIGZpbGw9IndoaXRlIi8+CiAgPHBhdGggZD0iTTQuMDgyIDIuMDA3YTEuNDU1IDEuNDU1IDAgMCAxLS4wOTguNDI3Yy0uMDUuMTI0LS4xMTQuMjMyLS4xOTIuMzI0YTEuMTMgMS4xMyAwIDAgMS0uMjU0LjIyNyAxLjM1MyAxLjM1MyAwIDAgMS0uNTk1LjIxNGMtLjEuMDEyLS4xOTMuMDE0LS4yOC4wMDZsLTEuNTYtLjEwOC4wMzQtLjQwNi4wMy0uMzQ4IDEuNTU5LjE1NGMuMDkgMCAuMTczLS4wMS4yNDgtLjAzM2EuNjAzLjYwMyAwIDAgMCAuMi0uMTA2LjUzMi41MzIgMCAwIDAgLjEzOS0uMTcyLjY2LjY2IDAgMCAwIC4wNjQtLjI0MWwuMDI5LS4zMjFhLjk0Ljk0IDAgMCAwLS4wMzYtLjI1LjU3LjU3IDAgMCAwLS4xMDMtLjIwMi41MDIuNTAyIDAgMCAwLS4xNjgtLjEzOC42MDUuNjA1IDAgMCAwLS4yNC0uMDY3TDEuMjczLjgyN2MtLjA5NC0uMDA4LS4xNjguMDEtLjIyMS4wNTUtLjA1My4wNDUtLjA4NC4xMTQtLjA5Mi4yMDZMLjcwNSA0IDAgMy45MzhsLjI1NS0yLjkxMUExLjAxIDEuMDEgMCAwIDEgLjM5My41NzIuOTYyLjk2MiAwIDAgMSAuNjY2LjI4NmEuOTcuOTcgMCAwIDEgLjMzOC0uMTRDMS4xMjIuMTIgMS4yMy4xMSAxLjMyOC4xMTlsMS41OTMuMTRjLjE2LjAxNC4zLjA0Ny40MjMuMWExLjE3IDEuMTcgMCAwIDEgLjU0NS40NDhjLjA2MS4wOTUuMTA5LjE5My4xNDQuMjk1YTEuNDA2IDEuNDA2IDAgMCAxIC4wNzcuNTgzbC0uMDI4LjMyMloiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=)](https://www.phorm.ai/query?projectId=c5863b56-6703-4a5d-87b6-7e6031bf16b6)\n\nLlamaIndex OSS (by [LlamaIndex](https://llamaindex.ai?utm_medium=li_github&utm_source=github&utm_campaign=2026--)) is an open-source framework to build agentic applications. **[Parse](https://cloud.llamaindex.ai?utm_medium=li_github&utm_source=github&utm_campaign=2026--)** is our enterprise platform for agentic OCR, parsing, extraction, indexing and more. You can use LlamaParse with this framework or on its own; see [LlamaParse](#llamacloud-document-agent-platform) below for signup and product links.\n\n> ### 📚 **Documentation:**\n>\n> - [LlamaParse](https://developers.llamaindex.ai/python/cloud/llamaparse/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n> - [LlamaIndex OSS](https://developers.llamaindex.ai/python/framework/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n> - [LlamaAgents](https://developers.llamaindex.ai/python/llamaagents/overview/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n\nBuilding with LlamaIndex typically involves working with LlamaIndex core and a chosen set of integrations (or plugins). There are two ways to start building with LlamaIndex in\nPython:\n\n1. **Starter**: [`llama-index`](https://pypi.org/project/llama-index/). A starter Python package that includes core LlamaIndex as well as a selection of integrations.\n\n2. **Customized**: [`llama-index-core`](https://pypi.org/project/llama-index-core/). Install core LlamaIndex and add your chosen LlamaIndex integration packages on [LlamaHub](https://llamahub.ai/)\n   that are required for your application. There are over 300 LlamaIndex integration\n   packages that work seamlessly with core, allowing you to build with your preferred\n   LLM, embedding, and vector store providers.\n\nThe LlamaIndex Python library is namespaced such that import statements which\ninclude `core` imply that the core package is being used. In contrast, those\nstatements without `core` imply that an integration package is being used.\n\n```python\n# typical pattern\nfrom llama_index.core.xxx import ClassABC  # core submodule xxx\nfrom llama_index.xxx.yyy import (\n    SubclassABC,\n)  # integration yyy for submodule xxx\n\n# concrete example\nfrom llama_index.core.llms import LLM\nfrom llama_index.llms.openai import OpenAI\n```\n\n### LlamaParse (document agent platform)\n\n**LlamaParse** is its own platform—focused on document agents and agentic OCR. It includes **Parse** (parsing), **LlamaAgents** (deployed document agents), **Extract** (structured extraction), and **Index** (ingest and RAG). You can use it with the LlamaIndex framework or standalone.\n\n- **[Sign up for LlamaParse](https://cloud.llamaindex.ai?utm_medium=li_github&utm_source=github&utm_campaign=2026--)** — Create an account and get your API key.\n- **Parse** — Agentic OCR and document parsing (130+ formats). [Docs](https://developers.llamaindex.ai/python/cloud/llamaparse/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n- **Extract** — Structured data extraction from documents. [Docs](https://developers.llamaindex.ai/python/cloud/llamaextract/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n- **Index** — Ingest, index, and RAG pipelines. [Docs](https://developers.llamaindex.ai/python/cloud/llamacloud/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n- **Split** — Split large documents into subcategories. [Docs](https://developers.llamaindex.ai/python/cloud/split/getting_started/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n- **Agents** — Build end-to-end document agents with `Workflows` and Agent Builder. [Docs](https://developers.llamaindex.ai/python/llamaagents/overview/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n\n### Important Links\n\n[Documentation](https://developers.llamaindex.ai/python/framework/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n\n[X (formerly Twitter)](https://x.com/llama_index)\n\n[LinkedIn](https://www.linkedin.com/company/llamaindex/)\n\n[Reddit](https://www.reddit.com/r/LlamaIndex/)\n\n[Discord](https://discord.gg/dGcwcsnxhU)\n\n## 🚀 Overview\n\n**NOTE**: This README is not updated as frequently as the documentation. Please check out the documentation above for the latest updates!\n\n### Context\n\n- LLMs are a phenomenal piece of technology for knowledge generation and reasoning. They are pre-trained on large amounts of publicly available data.\n- How do we best augment LLMs with our own private data?\n\nWe need a comprehensive toolkit to help perform this data augmentation for LLMs.\n\n### Proposed Solution\n\nThat's where **LlamaIndex** comes in. LlamaIndex is a \"data framework\" to help you build LLM apps. It provides the following tools:\n\n- Offers **data connectors** to ingest your existing data sources and data formats (APIs, PDFs, docs, SQL, etc.).\n- Provides ways to **structure your data** (indices, graphs) so that this data can be easily used with LLMs.\n- Provides an **advanced retrieval/query interface over your data**: Feed in any LLM input prompt, get back retrieved context and knowledge-augmented output.\n- Allows easy integrations with your outer application framework (e.g. with LangChain, Flask, Docker, ChatGPT, or anything else).\n\nLlamaIndex provides tools for both beginner users and advanced users. Our high-level API allows beginner users to use LlamaIndex to ingest and query their data in\n5 lines of code. Our lower-level APIs allow advanced users to customize and extend any module (data connectors, indices, retrievers, query engines, reranking modules),\nto fit their needs.\n\n## 💡 Contributing\n\nInterested in contributing? Contributions to LlamaIndex core as well as contributing\nintegrations that build on the core are both accepted and highly encouraged! See our [Contribution Guide](CONTRIBUTING.md) for more details.\n\nNew integrations should meaningfully integrate with existing LlamaIndex framework components. At the discretion of LlamaIndex maintainers, some integrations may be declined.\n\n## 📄 Documentation\n\nFull documentation can be found [here](https://developers.llamaindex.ai/python/framework/?utm_medium=li_github&utm_source=github&utm_campaign=2026--)\n\nPlease check it out for the most up-to-date tutorials, how-to guides, references, and other resources!\n\n## 💻 Example Usage\n\n```sh\n# custom selection of integrations to work with core\npip install llama-index-core\npip install llama-index-llms-openai\npip install llama-index-llms-ollama\npip install llama-index-embeddings-huggingface\n```\n\nExamples are in the `docs/examples` folder. Indices are in the `indices` folder (see list of indices below).\n\nTo build a simple vector store index using OpenAI:\n\n```python\nimport os\n\nos.environ[\"OPENAI_API_KEY\"] = \"YOUR_OPENAI_API_KEY\"\n\nfrom llama_index.core import VectorStoreIndex, SimpleDirectoryReader\n\ndocuments = SimpleDirectoryReader(\"YOUR_DATA_DIRECTORY\").load_data()\nindex = VectorStoreIndex.from_documents(documents)\n```\n\nTo build a simple vector store index using non-OpenAI LLMs, e.g. LLMs hosted through Ollama:\n\n```python\nfrom llama_index.core import Settings, VectorStoreIndex, SimpleDirectoryReader\nfrom llama_index.embeddings.huggingface import HuggingFaceEmbedding\nfrom llama_index.llms.ollama import Ollama\nfrom transformers import AutoTokenizer\n\n# set the LLM\nSettings.llm = Ollama(\n    model=\"llama-3.1:latest\",\n    request_timeout=360.0,\n)\n\n# set tokenizer to match LLM\nSettings.tokenizer = AutoTokenizer.from_pretrained(\n    \"meta-llama/Llama-3.1-8B-Instruct\"\n)\n\n# set the embed model\nSettings.embed_model = HuggingFaceEmbedding(\n    model_name=\"BAAI/bge-small-en-v1.5\"\n)\n\ndocuments = SimpleDirectoryReader(\"YOUR_DATA_DIRECTORY\").load_data()\nindex = VectorStoreIndex.from_documents(\n    documents,\n)\n```\n\nTo query:\n\n```python\nquery_engine = index.as_query_engine()\nquery_engine.query(\"YOUR_QUESTION\")\n```\n\nBy default, data is stored in-memory.\nTo persist to disk (under `./storage`):\n\n```python\nindex.storage_context.persist()\n```\n\nTo reload from disk:\n\n```python\nfrom llama_index.core import StorageContext, load_index_from_storage\n\n# rebuild storage context\nstorage_context =",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[build-system]\nbuild-backend = \"hatchling.build\"\nrequires = [\"hatchling\"]\n\n[dependency-groups]\ndev = [\n    \"black[jupyter]>=23.7.0,<=26.5.1\",\n    \"codespell[toml]>=v2.2.6\",\n    \"ipykernel>=6.29.5,<7\",\n    \"mypy==1.11.0\",\n    \"openai\",\n    \"pandas\",\n    \"pre-commit==3.2.0\",\n    \"pylint==2.15.10\",\n    \"pytest-asyncio>=0.23.7\",\n    \"pytest-mock>=3.14.0\",\n    \"pytest>=8.2.1\",\n    \"ruff==0.11.11\",\n    \"types-Deprecated>=0.1.0\",\n    \"types-PyYAML>=6.0.12.12,<7\",\n    \"types-protobuf>=4.24.0.4,<5\",\n    \"types-redis==4.5.5.0\",\n    \"types-requests==2.28.11.8\",\n    \"types-setuptools==67.1.0.0\",\n    \"tomli>=2.2.1\",\n]\n\n[lint.flake8-annotations]\nmypy-init-return = true\n\n[lint.pydocstyle]\nconvention = \"google\"\n\n[project]\nauthors = [{email = \"jerry@llamaindex.ai\", name = \"Jerry Liu\"}]\nclassifiers = [\n    \"Topic :: Scientific/Engineering :: Artificial Intelligence\",\n    \"Topic :: Software Development :: Libraries :: Application Frameworks\",\n    \"Topic :: Software Development :: Libraries :: Python Modules\",\n]\ndependencies = [\n    \"llama-index-core>=0.14.23,<0.15.0\",\n    \"llama-index-embeddings-openai>=0.6.0,<0.7\",\n    \"llama-index-llms-openai>=0.7.0,<0.8\",\n    \"nltk>=3.9.3\",\n]\ndescription = \"Interface between LLMs and your data\"\nkeywords = [\n    \"LLM\",\n    \"NLP\",\n    \"RAG\",\n    \"data\",\n    \"devtools\",\n    \"index\",\n    \"retrieval\",\n]\nlicense = \"MIT\"\nmaintainers = [\n    {email = \"andrei@runllama.ai\", name = \"Andrei Fajardo\"},\n    {email = \"ht@runllama.ai\", name = \"Haotian Zhang\"},\n    {email = \"jerry@llamaindex.ai\", name = \"Jerry Liu\"},\n    {email = \"logan@llamaindex.ai\", name = \"Logan Markewich\"},\n    {email = \"simon@llamaindex.ai\", name = \"Simon Suo\"},\n    {email = \"sourabh@llamaindex.ai\", name = \"Sourabh Desai\"},\n]\nname = \"llama-index\"\nreadme = \"README.md\"\nrequires-python = \">=3.10,<4.0\"\nversion = \"0.14.23\"\n\n[project.urls]\nDocumentation = \"https://docs.llamaindex.ai/en/stable/\"\nHomepage = \"https://llamaindex.ai\"\nRepository = \"https://github.com/run-llama/llama_index\"\n\n[tool.codespell]\ncheck-filenames = true\ncheck-hidden = true\nignore-words-list = \"astroid,gallary,momento,narl,ot,rouge\"\n# Feel free to un-skip examples, and experimental, you will just need to\n# work through many typos (--write-changes and --interactive will help)\nskip = \"./llama_index/core/_static,./examples,./experimental,*.csv,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb\"\n\n[tool.hatch.build.targets.sdist]\ninclude = [\"_llama-index/llama_index\"]\n\n[tool.hatch.build.targets.wheel]\ninclude = [\"_llama-index/llama_index\"]\n\n[tool.hatch.build.targets.wheel.sources]\n\"_llama-index/llama_index\" = \"llama_index\"\n\n[tool.mypy]\ndisallow_untyped_defs = true\n# Remove venv skip when integrated with pre-commit\nexclude = [\"_static\", \"build\", \"examples\", \"llama_index/ingestion/client\", \"notebooks\", \"venv\"]\nexplicit_package_bases = true\nignore_missing_imports = true\nmypy_path = \"llama_index\"\nnamespace_packages = true\nplugins = \"pydantic.mypy\"\npython_version = \"3.9\"\n\n[tool.ruff]\nexclude = [\n    \"_static\",\n    \"examples\",\n    \"llama_index/ingestion/client\",\n    \"notebooks\",\n]\ntarget-version = \"py312\"\nlint.ignore = [\n    \"COM812\",  # Too aggressive\n    \"D212\",  # Using D213\n    \"D400\",  # Too annoying/buggy\n    \"D415\",  # Too annoying/buggy\n    \"D417\",  # Too aggressive\n    \"F541\",  # Messes with prompts.py\n    \"RUF100\",  # Allow blanket noqa\n    \"TC002\",\n    \"UP\",  # Remove when we drop Python 3.9\n    \"PT001\",\n    \"E501\",  # Use best judgement for line-length\n    \"E402\",  # Annoying, use best judgement\n    \"PYI063\",\n    \"ANN204\",  # this is annoying\n    \"D401\",  # I disagree\n    \"D404\",\n]\n# Feel free to add more here\nlint.select = [\n    \"ANN204\",\n    \"B009\",\n    \"B010\",\n    \"B011\",\n    \"B013\",\n    \"B014\",\n    \"C4\",\n    \"COM812\",\n    \"COM819\",\n    \"D201\",\n    \"D202\",\n    \"D204\",\n    \"D207\",\n    \"D208\",\n    \"D209\",\n    \"D211\",\n    \"D213\",\n    \"D214\",\n    \"D215\",\n    \"D3\",\n    \"D4\",\n    \"E\",\n    \"EXE004\",\n    \"F401\",\n    \"F504\",\n    \"F541\",\n    \"F632\",\n    \"FLY\",\n    \"G010\",\n    \"I002\",\n    \"PERF1\",\n    \"PIE790\",\n    \"PIE794\",\n    \"PIE808\",\n    \"PIE810\",\n    \"PLC0414\",\n    \"PLE2510\",\n    \"PLE2512\",\n    \"PLE2513\",\n    \"PLE2514\",\n    \"PLE2515\",\n    \"PLR1711\",\n    \"PT001\",\n    \"PT003\",\n    \"PT006\",\n    \"PT02\",\n    \"PTH201\",\n    \"PYI\",\n    \"Q\",\n    \"RET501\",\n    \"RET502\",\n    \"RET503\",\n    \"RET504\",\n    \"RSE\",\n    \"RUF005\",\n    \"RUF010\",\n    \"RUF015\",\n    \"RUF1\",\n    \"SIM101\",\n    \"SIM103\",\n    \"SIM109\",\n    \"SIM118\",\n    \"SIM2\",\n    \"SIM300\",\n    \"SIM9\",\n    \"TC005\",\n    \"TD006\",\n    \"TID\",\n    \"TRY201\",\n    \"W\",\n]\nlint.unfixable = [\n    \"ERA001\",\n]\n\n[tool.tomlsort]\nall = false\nin_place = true\nspaces_before_inline_comment = 2  # Match Python PEP 8\nspaces_indent_inline_array = 4  # Match Python PEP 8\ntrailing_comma_inline_array = true\n\n[tool.uv]\ndefault-groups = [\n    \"dev\",\n]\n\n[[tool.uv.index]]\nname = \"nvidia-pypi\"\nurl = \"https://pypi.nvidia.com\"\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "rag",
      "llm",
      "workflow",
      "vector"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 20,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 83
    },
    "strategic_score": 83
  },
  {
    "owner": "voocel",
    "name": "ainovel-cli",
    "full_name": "voocel/ainovel-cli",
    "url": "https://github.com/voocel/ainovel-cli",
    "description": "✨多agent实现全自动AI小说生成",
    "language": "Go",
    "total_stars": 1085,
    "forks": 222,
    "stars_this_period": 48,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [
        "agents",
        "ai",
        "ai-agents",
        "claude",
        "go",
        "llm",
        "novel",
        "openai"
      ],
      "license": "Apache-2.0",
      "open_issues": 15,
      "created_at": "2026-03-07T12:24:45Z",
      "pushed_at": "2026-06-26T15:51:21Z",
      "homepage": "",
      "default_branch": "main",
      "forks": 222,
      "watchers": 3,
      "archived": false,
      "size_kb": 6257
    },
    "readme_content": "# ainovel-cli\n\n全自动 AI 长篇小说创作引擎。Coordinator 在一次 Prompt 里驱动 Architect / Writer / Editor 三个子代理完成整本书的创作，Host 只做启动、恢复和观察。从一句话需求到完整小说，全程无需人工干预。\n\n<p align=\"center\">\n  <img src=\"scripts/sample.gif\" alt=\"ainovel-cli demo\" width=\"800\">\n  <img src=\"scripts/novel.png\" alt=\"ainovel-cli bg\" width=\"800\">\n</p>\n\n## 特性\n\n- **多智能体协作** — Coordinator 在一次长循环中调度 Architect / Writer / Editor 三个子代理，自主决策创作流程\n- **LLM 驱动长循环** — 一次 Prompt 写完整本书，Host 不介入调度。越简单越稳定，拒绝复杂编排\n- **Step 级断点恢复** — 每个工具执行成功后写入 checkpoint，崩溃后精确到 plan/draft/check/commit 步骤级恢复\n- **卷弧双层滚动规划** — 长篇不再一次性规划全部章节。初始只规划前 2 卷弧骨架 + 第 1 弧详细章节，后续弧/卷在写作推进到时再由 Architect 展开，每次展开都参考前文摘要和角色状态，远期规划不空洞\n- **相关章节智能推荐** — 每章写作时从伏笔、角色出场、状态变化、关系四个维度自动推荐相关历史章节，配合下一章预告，确保 500+ 章长篇的连续性\n- **自适应上下文策略** — 根据总章节数自动切换全量 / 滑窗 / 分层摘要，支持 500+ 章长篇\n- **七维质量评审** — Editor 从设定一致性、角色行为、节奏、叙事连贯、伏笔、钩子、审美品质七个维度评审，审美维度细分描写质感/叙事手法/对话区分度/用词质量/情感打动力五项，每项必须引用原文举证\n- **用户实时干预** — 写作过程中随时在输入框注入修改意见（无需暂停），系统自动评估影响范围并重写受影响章节\n- **统一 TUI 入口** — 交互界面实时观察进度，也支持携带一句需求直接启动\n- **多 LLM 支持** — OpenRouter / Anthropic / Gemini / OpenAI 等等随意切换\n\n## 架构\n\n核心设计：**LLM 驱动，Host 服务**。Coordinator 在一次 Run 中自主决策整本书的创作流程，Host 只做启动、恢复和事件观察。\n\n```\n┌─────────────────────────────────────────────────┐\n│                Host（薄外壳）                     │\n│           启动 / 恢复 / 观察 / 干预注入            │\n└──────────────────────┬──────────────────────────┘\n                       │ 一次 Prompt\n┌──────────────────────▼──────────────────────────┐\n│              Coordinator（LLM 长循环）            │\n│    读 novel_context → 调子代理 → 读结果 → 继续     │\n└────┬──────────┬──────────┬──────────────────────┘\n     │          │          │\n ┌───▼────┐ ┌───▼───┐ ┌────▼────┐\n │Architect│ │Writer │ │ Editor  │\n └───┬────┘ └───┬───┘ └────┬────┘\n     └──────────┼──────────┘\n                │ 工具调用（IO + checkpoint）\n┌───────────────▼─────────────────────────────────┐\n│                   Store                         │\n│  Progress / Checkpoint / Outline / Drafts / ... │\n└─────────────────────────────────────────────────┘\n```\n\n- **Host** — 启动 Coordinator、崩溃恢复、事件投影给 TUI。不做任何调度决策\n- **Coordinator** — 唯一的决策者，在一次 Run 里驱动规划→写作→评审→总结的完整流程\n- **SubAgents** — Architect / Writer / Editor 各自独立 context，通过 Store 中的工件协作\n- **Tools** — 原子 IO + checkpoint 写入，只返事实 JSON，不夹带指令\n\n### 智能体职责\n\n| 智能体 | 职责 | 工具 |\n|--------|------|------|\n| **Coordinator** | 调度全局，处理评审裁定和用户干预 | `subagent` `novel_context` |\n| **Architect** | 生成前提、大纲、角色档案、世界规则 | `novel_context` `save_foundation` |\n| **Writer** | 自主完成一章的构思、写作、自审和提交 | `novel_context` `read_chapter` `plan_chapter` `draft_chapter` `check_consistency` `commit_chapter` |\n| **Editor** | 阅读原文，从结构和审美两个层面审阅 | `novel_context` `read_chapter` `save_review` `save_arc_summary` `save_volume_summary` |\n\n### 写作流程\n\n```\n用户需求 → Architect 规划骨架 + 首弧章节 → Writer 逐章写作 → Editor 弧级评审\n                                                  ↑                   │\n                                                  ├── 重写/打磨 ◄──────┘\n                                                  │\n                                           Architect 展开下一弧/卷\n                                          （参考前文摘要+角色快照）\n```\n\nWriter 按固定顺序完成每章（写作内容完全自主，工具调用顺序严格）：\n\n1. `novel_context` — 加载上下文（前情摘要、伏笔、角色状态、风格规则、相关章节推荐）\n2. `read_chapter` — 回读前文找回语气和节奏\n3. `plan_chapter` — 构思本章目标、冲突、情绪弧线\n4. `draft_chapter` — 写入整章正文\n5. `check_consistency` — 对照状态数据检查一致性（必须在 draft 之后）\n6. `commit_chapter` — 提交终稿，返回事实字段（`arc_end_reached` / `next_chapter` 等），下一步由 Reminder 驱动\n\n### 状态迁移规则\n\n系统内部把运行状态拆成两层：\n\n- **Phase** — 大阶段，表示作品目前处于设定期、写作期还是已完成\n- **Flow** — 当前活跃流程，表示系统此刻是在正常写作、审阅、重写、打磨还是处理用户干预\n\n#### Phase\n\n`Phase` 采用“只前进不回退”的规则：\n\n```text\ninit -> premise -> outline -> writing -> complete\n  \\-------> outline ------^\n  \\--------------> writing\n```\n\n含义：\n\n- `init` — 任务已创建，尚未形成稳定设定\n- `premise` — 已保存故事前提\n- `outline` — 已保存大纲，可以进入正式写作\n- `writing` — 已进入章节创作期\n- `complete` — 全书流程结束\n\n规则说明：\n\n- 允许同态更新，例如 `writing -> writing`\n- 允许前进，例如 `outline -> writing`\n- 不允许回退，例如 `writing -> premise`、`complete -> writing`\n\n#### Flow\n\n`Flow` 只描述写作期内的活跃流程，允许在几个工作流之间切换：\n\n```text\nwriting   -> reviewing / rewriting / polishing / steering / writing\nreviewing -> writing / rewriting / polishing / steering / reviewing\nrewriting -> writing / steering / rewriting\npolishing -> writing / steering / polishing\nsteering  -> writing / reviewing / rewriting / polishing / steering\n```\n\n含义：\n\n- `writing` — 正常推进下一章\n- `reviewing` — Editor 正在评审\n- `rewriting` — 处理必须重写的章节\n- `polishing` — 处理只需打磨的章节\n- `steering` — 正在评估并处理用户干预\n\n规则说明：\n\n- 允许 `writing -> reviewing`，例如章节提交后触发评审\n- 允许 `reviewing -> rewriting/polishing/writing`，由评审结果决定\n- 允许 `steering -> writing/reviewing/rewriting/polishing`，由干预影响范围决定\n- 不允许明显反常的跳转，例如 `rewriting -> reviewing`\n\n这些规则现在由代码中的轻量校验统一约束，避免状态回退或跳到不合理的流程分支。\n\n### 长篇滚动规划\n\n传统方案一次规划所有章节，300+ 章时大纲空洞、节奏像赶进度。本系统采用**指南针 + 视野滚动规划**，模拟网文作者的真实创作流程：\n\n```\n初始规划                     弧结束时                      卷结束时\n┌────────────────────┐    ┌─────────────────────┐    ┌─────────────────────┐\n│ 终局方向（指南针）    │    │ Editor 弧级评审      │    │ Editor 卷级评审       │\n│ 起步 2 卷，后续按需   │    │ 弧摘要 + 角色快照     │    │ 卷摘要               │\n│ 第1弧详细章节        │ →  │ Architect 展开下一弧  │ →  │ Architect 自主创建   │\n│ 角色 + 世界观        │    │ Writer 继续写作      │    │ 下一卷 + 更新指南针    │\n└────────────────────┘    └─────────────────────┘    └─────────────────────┘\n```\n\n- **指南针（Compass）** — 终局方向 + 活跃长线 + 规模估计，每次卷边界由 Architect 更新，故事方向可随创作演化\n- **按需生成** — 当前卷写完后，Architect 根据已写内容自主创建下一卷。初始规划生成 2 卷作为起步，后续卷按需生成\n- **骨架弧** — 只有 goal + 预估章数，到达时再展开详细章节\n- **渐进细化** — 每次展开都参考前文摘要、角色快照、风格规则，越往后写越精确\n- **通用节奏模板** — 成长突破弧 / 竞技对抗弧 / 探索发现弧 / 恩怨冲突弧 / 日常过渡弧，每种弧型有参考密度和适用题材映射\n\n### 长篇上下文管理\n\n500+ 章小说采用三级摘要 + 四级压缩管线 + 智能推荐：\n\n```\n卷（Volume）→ 卷摘要\n└── 弧（Arc）→ 弧摘要 + 角色快照 + 风格规则\n    └── 章（Chapter）→ 章摘要（滑窗最近3章）\n```\n\n- **分层摘要** — 近处用章摘要，中距离用弧摘要，远处用卷摘要，层层压缩不丢信息\n- **相关章节推荐** — 每章写作时从伏笔、角色出场、状态变化、关系四个维度反查历史章节，推荐 Writer 按需回读\n- **下一章预告** — 加载下一章大纲，帮 Writer 设计章末钩子和伏笔衔接\n- **弧边界检测** — 自动识别弧/卷结束，触发评审、摘要生成和下一弧/卷展开\n\n#### 上下文压缩管线\n\n当对话超出模型上下文窗口时，按代价从低到高逐级压缩：\n\n```\nToolResultMicrocompact → LightTrim → StoreSummaryCompact → FullSummary\n     清理旧工具结果        截断长文本      store 零 LLM 压缩      LLM 摘要兜底\n```\n\n- **StoreSummaryCompact** — Writer 专用，用 store 中已有的章节摘要、角色快照、伏笔台账直接替换旧消息，零 LLM 开销\n- **FullSummary 小说定制** — Writer 使用面向叙事连续性的摘要提示词，明确要求保留角色状态、伏笔线索、审稿待修项、风格锚点\n- **压缩后恢复包** — FullSummary 后自动注入当前章节计划、大纲和角色快照，防止 Writer 压缩后\"失忆\"\n- **熔断器** — 压缩连续失败时自动跳过并显式告警，采用半开模式，下轮自动重试\n- **CJK Token 估算** — 中文 `runes × 1.5`，不会因为 `bytes/4` 低估而导致压缩触发滞后\n- **TUI 健康度渐变** — 上下文占用绿(<70%)→黄(70-85%)→红(>85%)实时展示\n\n## 快速开始\n\n```bash\n# 一键安装（macOS / Linux，无需 Go）\ncurl -fsSL https://raw.githubusercontent.com/voocel/ainovel-cli/main/scripts/install.sh | sh\n\n# 安装指定版本\ncurl -fsSL https://raw.githubusercontent.com/voocel/ainovel-cli/main/scripts/install.sh | sh -s -- v1.2.3\n\n# 或通过 Go 安装\ngo install github.com/voocel/ainovel-cli/cmd/ainovel-cli@latest\n\n# 查看版本 / 更新到最新版本\nainovel-cli --version\nainovel-cli update\n\n# 首次运行，自动进入引导流程（选择 Provider → 输入 API Key → Base URL → 模型名）\nainovel-cli\n```\n\n> Windows 或手动安装：前往 [Releases](https://github.com/voocel/ainovel-cli/releases/latest) 下载对应平台的包。\n\n### Docker\n\nDocker 镜像适合在服务器/NAS 上运行 headless 长任务，也可以用 `-it` 进入 TUI。配置和作品目录建议挂载到宿主机：\n\n```bash\nmkdir -p config workspace\n\n# TUI\ndocker run --rm -it \\\n  -v \"$PWD/config:/root/.ainovel\" \\\n  -v \"$PWD/workspace:/workspace\" \\\n  ghcr.io/voocel/ainovel-cli:latest\n\n# Headless\ndocker run --rm \\\n  -v \"$PWD/config:/root/.ainovel\" \\\n  -v \"$PWD/workspace:/workspace\" \\\n  ghcr.io/voocel/ainovel-cli:latest \\\n  --headless --prompt \"写一本东方玄幻长篇，主角从边陲小城起步\"\n```\n\n也可以用 Compose：\n\n```bash\ndocker compose run --rm ainovel\ndocker compose run --rm ainovel --headless --prompt \"写一本悬疑短篇\"\n```\n\n进入 TUI 后，启动阶段支持两种前置交互：\n\n- `快速开始`：一句话直接进入创作\n- `共创规划`：与 AI 多轮对话澄清需求，**右侧实时同步整理出的创作指令草稿**；AI 每轮主动提供 1-3 条引导建议，按数字键一键填入输入框，按 `Ctrl+S` 进入正式创作\n\n两种模式最终都会收敛为同一份创作指令，再进入同一套创作引擎。\n\n### 管理多本小说\n\n每本小说绑定到启动目录，产物落在 `{cwd}/output/novel/`。换目录启动 = 换一本，`cd` 回去启动 = 自动从最近 checkpoint 恢复。配置 `~/.ainovel/config.json` 全局共享，无需复制。\n\n### 配置文件\n\n首次运行时自动引导生成配置文件 `~/.ainovel/config.json`，后续可直接编辑该文件调整设置。删除配置文件后重新运行会再次进入引导流程。\n\n也可以手动创建配置文件，参考 `~/.ainovel/config.example.jsonc`（引导时自动生成）。\n\n```jsonc\n{\n  \"provider\": \"openrouter\",\n  \"model\": \"google/gemini-2.5-flash\",\n  \"providers\": {\n    \"openrouter\": {\n      \"api_key\": \"sk-or-v1-xxx\",\n      \"base_url\": \"https://openrouter.ai/api/v1\",\n      \"models\": [\"google/gemini-2.5-flash\", \"google/gemini-2.5-pro\"],\n      \"extra\": {\n        \"user_agent\": \"my-client/1.0\",\n        \"headers\": { \"X-Custom-Client\": \"my-client\" }\n      }\n    }\n  },\n  \"style\": \"default\"\n}\n```\n\n#### 配置文件查找顺序（后者覆盖前者）\n\n1. `~/.ainovel/config.json` — 全局配置\n2. `./.ainovel/config.json` — 项目级覆盖（可选）\n3. `--config path/to/config.json` — 命令行指定\n\n> 项目级 `.ainovel/` 是全局 `~/.ainovel/` 的镜像：同样的结构、只是根目录从家目录换成当前项目。配置放 `./.ainovel/config.json`，写作规则放 `./.ainovel/rules/*.md`（详见下文「去 AI 味与自定义规则」）。该目录含密钥，已默认加入 `.gitignore`。\n\n覆盖规则说明：\n\n- 标量字段按后者覆盖前者，例如 `provider`、`model`、`style`\n- `providers` 和 `roles` 按 key 合并，同名项内部按字段覆盖\n- 未填写的字段会继承上层配置，例如项目级配置只写 `base_url` 时会保留全局配置中的 `api_key`\n- 当前不支持用空字符串显式清空上层已有值；如需清空，请直接编辑更高优先级的配置文件\n\n> ⚠️ `provider`（以及 `roles.*.provider`）的值是 `providers` 里的 **key 名**——一根指针，不是协议名。项目级若把 `provider` 切到一个全局 `providers` 里不存在的账号，必须在项目级同时补上该账号的凭证（`api_key` / `base_url`），否则启动会报“未配置凭证”。\n\n`providers.<name>.models` 为可选字段，用于声明该 provider 下允许在 TUI `/model` 面板中切换的模型列表；如果未配置，系统会回退为当前配置文件里已经出现过的该 provider 模型。\n\n`providers.<name>.extra` 为 provider 级配置，会传给底层 HTTP 客户端，适合配置 `user_agent`、`headers`、`anthropic_beta` 等代理识别字段；`providers.<name>.extra_body` 才是请求体扩展参数，两者不要混用。\n\n## 诊断报告\n\n在 TUI 中输入 `/diag` 可对当前小说的 output 产物进行诊断分析，产出可执行的发现和改进建议。\n\n诊断覆盖四个维度：\n\n- **流程** — 改写循环卡顿、未消费的转向指令、阶段/流程状态异常、章节跳号\n- **质量** — 评审维度持续低分、合同履约率、改写率、章节字数异常\n- **规划** — 伏笔停滞、指南针过时、大纲耗尽、摘要缺失\n- **上下文** — 角色消失、时间线缺口、关系数据停滞\n\n每条发现包含：问题描述、数据证据、改进建议（指向具体的 prompt/flow/config）。\n\n`/diag` 同时会写出一份**已脱敏**的 `meta/diag-export.md`（移除小说正文，仅保留工具调用、错误串、重复次数等行为骨架）。遇到死循环 / 中断类问题，把它贴到 GitHub issue 即可，方便维护者在拿不到本地数据的情况下定位。\n\n## 仿写画像\n\n把参考文章放到当前启动目录的 `simulate/` 文件夹中，然后在 TUI 输入 `/simulate`。系统会递归读取 `.txt`、`.md`、`.markdown` 文件，用 architect 模型分析语料，并写入：\n\n```text\noutput/novel/meta/simulation_profile.json\n```\n\n再次运行 `/simulate` 时，会按 `relative_path + sha256` 跳过未变化文件；如果没有新增或变更内容，会提示“画像已是最新”并且不会调用 LLM。若已有画像且 `simulate/` 中出现新增或修改文章，系统会在原画像基础上继续合成。\n\n也可以导入之前生成的画像，避免重复分析同一批文章：\n\n```text\n/simulate\n/importsim ./profile.json\n```\n\n`/importsim` 只接受本功能生成的 `simulation_profile.v1` JSON，并按语料指纹合并，重复来源会跳过。只导入可信来源的画像文件；导入内容会成为后续 Agent 的上下文参考。画像会以 compact 形式注入 `novel_context`，Coordinator、Architect、Writer、Editor 都能读取；各 Agent 只借鉴结构、节奏、钩子和吸引读者手法，不复制原文表达或专有设定。\n\n## 导入\n\n在 TUI 中输入 `/import <文件路径>` 可把一本已有的小说反推导入：先按章切分，再用 LLM 反推出前提 / 角色 / 世界观 / 分层大纲 / 指南针，逐章落盘。原文作为第一卷落成可续写的连载，导入完成后会**自动接力续写**——Coordinator 在第一卷末做评审/摘要、追加新卷，从下一章继续。\n\n```\n/import ~/我的小说.txt              # 从头导入并反推 foundation\n/import ~/我的小说.txt from=50      # 从第 50 章接着导入（跳过反推）\n```\n\n**章节切分规则**：自动识别这些标题格式（行首，可带 `#`/`##` Markdown 前缀、`【】`/`〖〗` 包裹、全角空格，兼容 GBK/BOM 编码）：\n\n- 中文编号：`第一章` `第3回` `第十话` `第二卷` `第五节` `第二幕`、独立 `卷一`，数字支持大写（`第壹章`），可带副标题（`第三章：决战`）\n- 中文特殊单元：`序章` `楔子` `引子` `前言` `尾声` `终章` `后记` `番外` `外传`\n- 英文：`Chapter 1` `Chapter II`、`Prologue` `Epilogue`，可带副标题（`Chapter 1: The Beginning`）\n\n若提示**\"未识别到任何章节\"**，请确认文件确为分章小说文本（章节标题独占一行、位于行首）。\n\n> 导入是确定性回放，不经过 Coordinator；原文会逐字落盘为已完成章节，因此适合\"续写同一本书\"。如果只想借鉴设定做全新创作，请用普通方式起一本新书、在需求里描述想要的风格设定。\n\n## 导出\n\n在 TUI 中输入 `/export` 可把已完成的章节合并导出，默认 TXT，写到 `{novelDir}/{NovelName}.txt`。导出是只读操作，写作中途也可以随时拿\"现阶段成品\"，不影响 Coordinator 运行。\n\n格式由**输出路径后缀**决定（`.txt` / `.epub`）：\n\n```text\n/export                            # 默认 TXT，{novelDir}/{NovelName}.txt\n/export ~/光斑.txt                  # 后缀 .txt → TXT\n/export ~/光斑.epub                 # 后缀 .epub → EPUB（Apple Books / 微信读书 / Kindle 转换器可读）\n/export from=10 to=30 --overwrite  # 章节区间 + 覆盖\n/export from=10 ~/x.epub --overwrite\n```\n\n- **TXT** — `《书名》` → 卷分隔 → 章节正文（长篇分层模式自动加卷分隔）。两类内部数据**不进导出**：premise（创作蓝图，含目标读者 / 写作禁区等后台信息，写给作者与引擎看的）、弧分隔（读者视角下弧是过细的内部结构）。导出器统一生成\"第 N 章 标题\"，正文里 writer 自带的重复标题（`# 第N章…` 或 `# 章节名`）会被剥掉。\n- **EPUB** — EPUB 3 标准容器，含封面页、目录、按章拆分的 XHTML，标识符基于内容稳定派生（重导出同一本书阅读器识别为更新版本）。不带封面图。\n\n范围内未完成的章节会跳过并显示在结果里，不算错误。\n\n#### 按角色使用不同模型\n\n通过 `roles` 字段为不同智能体分配不同的模型，未配置的角色使用默认模型：\n\n```jsonc\n{\n  \"provider\": \"openrouter\",\n  \"model\": \"google/gemini-2.5-flash\",\n ",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/voocel/ainovel-cli\n\ngo 1.25.5\n\nrequire (\n\tgithub.com/charmbracelet/bubbles v1.0.0\n\tgithub.com/charmbracelet/bubbletea v1.3.10\n\tgithub.com/charmbracelet/lipgloss v1.1.0\n\tgithub.com/charmbracelet/x/ansi v0.11.7\n\tgithub.com/voocel/agentcore v1.7.5\n\tgolang.org/x/text v0.38.0\n\tgopkg.in/yaml.v3 v3.0.1\n)\n\nrequire (\n\tgithub.com/atotto/clipboard v0.1.4 // indirect\n\tgithub.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect\n\tgithub.com/charmbracelet/colorprofile v0.4.1 // indirect\n\tgithub.com/charmbracelet/x/cellbuf v0.0.15 // indirect\n\tgithub.com/charmbracelet/x/term v0.2.2 // indirect\n\tgithub.com/clipperhouse/displaywidth v0.11.0 // indirect\n\tgithub.com/clipperhouse/uax29/v2 v2.7.0 // indirect\n\tgithub.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect\n\tgithub.com/lucasb-eyer/go-colorful v1.4.0 // indirect\n\tgithub.com/mattn/go-isatty v0.0.20 // indirect\n\tgithub.com/mattn/go-localereader v0.0.1 // indirect\n\tgithub.com/mattn/go-runewidth v0.0.23 // indirect\n\tgithub.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect\n\tgithub.com/muesli/cancelreader v0.2.2 // indirect\n\tgithub.com/muesli/termenv v0.16.0 // indirect\n\tgithub.com/rivo/uniseg v0.4.7 // indirect\n\tgithub.com/voocel/litellm v1.8.2 // indirect\n\tgithub.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect\n\tgolang.org/x/image v0.43.0 // indirect\n\tgolang.org/x/sys v0.38.0 // indirect\n)\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "llm"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 11,
      "relevance": 20,
      "novelty": 8,
      "productize": 11,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 6,
      "total": 75
    },
    "strategic_score": 75
  },
  {
    "owner": "vercel",
    "name": "next.js",
    "full_name": "vercel/next.js",
    "url": "https://github.com/vercel/next.js",
    "description": "The React Framework",
    "language": "JavaScript",
    "total_stars": 140238,
    "forks": 31267,
    "stars_this_period": 45,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "blog",
        "browser",
        "compiler",
        "components",
        "hybrid",
        "nextjs",
        "node",
        "react",
        "server-rendering",
        "ssg",
        "static",
        "static-site-generator",
        "universal",
        "vercel"
      ],
      "license": "MIT",
      "open_issues": 4142,
      "created_at": "2016-10-05T23:32:51Z",
      "pushed_at": "2026-06-26T22:02:52Z",
      "homepage": "https://nextjs.org",
      "default_branch": "canary",
      "forks": 31267,
      "watchers": 1650,
      "archived": false,
      "size_kb": 2498572
    },
    "readme_content": "packages/next/README.md",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"nextjs-project\",\n  \"version\": \"0.0.0\",\n  \"private\": true,\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"scripts\": {\n    \"new-error\": \"turbo gen error\",\n    \"new-test\": \"turbo gen test\",\n    \"clean\": \"lerna clean -y && lerna run clean && lerna exec 'node ../../scripts/rm.mjs dist'\",\n    \"build\": \"turbo run build --remote-cache-timeout 60 --summarize true\",\n    \"build-all\": \"turbo run build build-native-auto --remote-cache-timeout 60 --summarize true\",\n    \"lerna\": \"lerna\",\n    \"dev\": \"turbo run dev --parallel --filter=\\\"!@next/bundle-analyzer-ui\\\"\",\n    \"bench:render-pipeline\": \"tsx bench/render-pipeline/benchmark.ts\",\n    \"bench:render-pipeline:analyze\": \"tsx bench/render-pipeline/analyze-profiles.ts\",\n    \"pack-next\": \"tsx scripts/pack-next.ts\",\n    \"eval\": \"node run-evals.js\",\n    \"test-types\": \"tsc\",\n    \"test-unit\": \"jest test/unit/ packages/next/ packages/font\",\n    \"test-dev\": \"scripts/run-jest.sh --mode=dev --bundler=webpack --headless --\",\n    \"test-dev-webpack\": \"scripts/run-jest.sh --mode=dev --bundler=webpack --headless --\",\n    \"test-dev-experimental\": \"scripts/run-jest.sh --mode=dev --bundler=webpack --experimental --headless --\",\n    \"test-dev-experimental-webpack\": \"scripts/run-jest.sh --mode=dev --bundler=webpack --experimental --headless --\",\n    \"test-dev-rspack\": \"scripts/run-jest.sh --mode=dev --bundler=rspack --headless --\",\n    \"test-dev-experimental-rspack\": \"scripts/run-jest.sh --mode=dev --bundler=rspack --experimental --headless --\",\n    \"test-dev-turbo\": \"scripts/run-jest.sh --mode=dev --bundler=turbo --headless --\",\n    \"test-dev-experimental-turbo\": \"scripts/run-jest.sh --mode=dev --bundler=turbo --experimental --headless --\",\n    \"test-start\": \"scripts/run-jest.sh --mode=start --bundler=webpack --headless --\",\n    \"test-start-webpack\": \"scripts/run-jest.sh --mode=start --bundler=webpack --headless --\",\n    \"test-start-experimental\": \"scripts/run-jest.sh --mode=start --bundler=webpack --experimental --headless --\",\n    \"test-start-experimental-webpack\": \"scripts/run-jest.sh --mode=start --bundler=webpack --experimental --headless --\",\n    \"test-start-rspack\": \"scripts/run-jest.sh --mode=start --bundler=rspack --headless --\",\n    \"test-start-experimental-rspack\": \"scripts/run-jest.sh --mode=start --bundler=rspack --experimental --headless --\",\n    \"test-start-turbo\": \"scripts/run-jest.sh --mode=start --bundler=turbo --headless --\",\n    \"test-start-experimental-turbo\": \"scripts/run-jest.sh --mode=start --bundler=turbo --experimental --headless --\",\n    \"test-deploy\": \"scripts/run-jest.sh --mode=deploy --bundler=webpack --headless --\",\n    \"test-deploy-webpack\": \"scripts/run-jest.sh --mode=deploy --bundler=webpack --headless --\",\n    \"test-deploy-turbo\": \"scripts/run-jest.sh --mode=deploy --bundler=turbo --headless --\",\n    \"testonly-dev\": \"scripts/run-jest.sh --mode=dev --bundler=webpack --\",\n    \"testonly-dev-webpack\": \"scripts/run-jest.sh --mode=dev --bundler=webpack --\",\n    \"testonly-dev-rspack\": \"scripts/run-jest.sh --mode=dev --bundler=rspack --\",\n    \"testonly-dev-turbo\": \"scripts/run-jest.sh --mode=dev --bundler=turbo --\",\n    \"testonly-start\": \"scripts/run-jest.sh --mode=start --bundler=webpack --\",\n    \"testonly-start-webpack\": \"scripts/run-jest.sh --mode=start --bundler=webpack --\",\n    \"testonly-start-rspack\": \"scripts/run-jest.sh --mode=start --bundler=rspack --\",\n    \"testonly-start-turbo\": \"scripts/run-jest.sh --mode=start --bundler=turbo --\",\n    \"testonly-deploy\": \"scripts/run-jest.sh --mode=deploy --bundler=webpack --\",\n    \"testonly-deploy-webpack\": \"scripts/run-jest.sh --mode=deploy --bundler=webpack --\",\n    \"testonly-deploy-turbo\": \"scripts/run-jest.sh --mode=deploy --bundler=turbo --\",\n    \"test\": \"scripts/run-jest.sh --bundler=webpack --headless --\",\n    \"test-webpack\": \"scripts/run-jest.sh --bundler=webpack --headless --\",\n    \"test-rspack\": \"scripts/run-jest.sh --bundler=rspack --headless --\",\n    \"test-turbo\": \"scripts/run-jest.sh --bundler=turbo --headless --\",\n    \"testonly\": \"jest --runInBand\",\n    \"testheadless\": \"scripts/run-jest.sh --headless --\",\n    \"genstats\": \"cross-env LOCAL_STATS=true node .github/actions/next-stats-action/src/index.js\",\n    \"git-reset\": \"git reset --hard HEAD\",\n    \"git-clean\": \"git clean -d -x -e node_modules -e packages -f\",\n    \"typescript\": \"tsc --noEmit\",\n    \"lint-typescript\": \"turbo run typescript\",\n    \"lint-eslint\": \"eslint --config eslint.cli.config.mjs\",\n    \"lint-ast-grep\": \"ast-grep scan\",\n    \"lint-no-typescript\": \"cross-env NODE_OPTIONS=\\\"--max-old-space-size=8192\\\" run-p prettier-check \\\"lint-eslint .\\\" lint-language\",\n    \"types-and-precompiled\": \"run-p \\\"lint-typescript --log-order=stream\\\" check-compiler-fixtures types:test-lib && pnpm check-precompiled\",\n    \"check-compiler-fixtures\": \"find crates/next-custom-transforms/tests/fixture -type f -name 'tsconfig.json' -print0 | xargs --null -I'{}' pnpm tsc --noEmit --project '{}'\",\n    \"validate-externals-doc\": \"node ./scripts/validate-externals-doc.",
    "strategic_keywords": [
      "workspace",
      "eval"
    ],
    "relationship_label": "Workspace 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 16,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 8,
      "total": 77
    },
    "strategic_score": 77
  },
  {
    "owner": "louislam",
    "name": "uptime-kuma",
    "full_name": "louislam/uptime-kuma",
    "url": "https://github.com/louislam/uptime-kuma",
    "description": "A fancy self-hosted monitoring tool",
    "language": "JavaScript",
    "total_stars": 88466,
    "forks": 8043,
    "stars_this_period": 45,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "docker",
        "monitor",
        "monitoring",
        "responsive",
        "self-hosted",
        "selfhosted",
        "single-page-app",
        "socket-io",
        "uptime",
        "uptime-monitoring",
        "webapp",
        "websocket"
      ],
      "license": "MIT",
      "open_issues": 760,
      "created_at": "2021-07-03T01:02:42Z",
      "pushed_at": "2026-06-26T00:28:51Z",
      "homepage": "https://uptime.kuma.pet",
      "default_branch": "master",
      "forks": 8043,
      "watchers": 309,
      "archived": false,
      "size_kb": 37821
    },
    "readme_content": "<div align=\"center\" width=\"100%\">\n    <img src=\"./public/icon.svg\" width=\"128\" alt=\"Uptime Kuma Logo\" />\n</div>\n\n# Uptime Kuma\n\nUptime Kuma is an easy-to-use self-hosted monitoring tool.\n\n<a target=\"_blank\" href=\"https://github.com/louislam/uptime-kuma\"><img src=\"https://img.shields.io/github/stars/louislam/uptime-kuma?style=flat\" /></a> <a target=\"_blank\" href=\"https://hub.docker.com/r/louislam/uptime-kuma\"><img src=\"https://img.shields.io/docker/pulls/louislam/uptime-kuma\" /></a> <a target=\"_blank\" href=\"https://hub.docker.com/r/louislam/uptime-kuma\"><img src=\"https://img.shields.io/docker/v/louislam/uptime-kuma/2?label=docker%20image%20ver.\" /></a> <a target=\"_blank\" href=\"https://github.com/louislam/uptime-kuma\"><img src=\"https://img.shields.io/github/last-commit/louislam/uptime-kuma\" /></a> <a target=\"_blank\" href=\"https://opencollective.com/uptime-kuma\"><img src=\"https://opencollective.com/uptime-kuma/total/badge.svg?label=Open%20Collective%20Backers&color=brightgreen\" /></a>\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/louislam?label=GitHub%20Sponsors)](https://github.com/sponsors/louislam) <a href=\"https://weblate.kuma.pet/projects/uptime-kuma/uptime-kuma/\">\n<img src=\"https://weblate.kuma.pet/widgets/uptime-kuma/-/svg-badge.svg\" alt=\"Translation status\" />\n</a>\n\n<img src=\"https://user-images.githubusercontent.com/1336778/212262296-e6205815-ad62-488c-83ec-a5b0d0689f7c.jpg\" width=\"700\" alt=\"Uptime Kuma Dashboard Screenshot\" />\n\n## 🥔 Live Demo\n\nTry it!\n\nDemo Server (Location: Frankfurt - Germany): <https://demo.kuma.pet/start-demo>\n\nIt is a temporary live demo, all data will be deleted after 10 minutes. Sponsored by [Uptime Kuma Sponsors](https://github.com/louislam/uptime-kuma#%EF%B8%8F-sponsors).\n\n## ⭐ Features\n\n- Monitoring uptime for HTTP(s) / TCP / HTTP(s) Keyword / HTTP(s) Json Query / Websocket / Ping / DNS Record / Push / Steam Game Server / Docker Containers\n- Fancy, Reactive, Fast UI/UX\n- Notifications via Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP), and [90+ notification services, click here for the full list](https://github.com/louislam/uptime-kuma/tree/master/src/components/notifications)\n- 20-second intervals\n- [Multi Languages](https://github.com/louislam/uptime-kuma/tree/master/src/lang)\n- Multiple status pages\n- Map status pages to specific domains\n- Ping chart\n- Certificate info\n- Proxy support\n- 2FA support\n\n## 🔧 How to Install\n\n### 🐳 Docker Compose\n\n```bash\nmkdir uptime-kuma\ncd uptime-kuma\ncurl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml\ndocker compose up -d\n```\n\nUptime Kuma is now running on all network interfaces (e.g. http://localhost:3001 or http://your-ip:3001).\n\n> [!WARNING]\n> File Systems like **NFS** (Network File System) are **NOT** supported. Please map to a local directory or volume.\n\n### 🐳 Docker Command\n\n```bash\ndocker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2\n```\n\nUptime Kuma is now running on all network interfaces (e.g. http://localhost:3001 or http://your-ip:3001).\n\nIf you want to limit exposure to localhost only:\n\n```bash\ndocker run ... -p 127.0.0.1:3001:3001 ...\n```\n\n### 💪🏻 Non-Docker\n\nRequirements:\n\n- Platform\n  - ✅ Major Linux distros such as Debian, Ubuntu, Fedora and ArchLinux etc.\n  - ✅ Windows 10 (x64), Windows Server 2012 R2 (x64) or higher\n  - ❌ FreeBSD / OpenBSD / NetBSD\n  - ❌ Replit / Heroku\n- [Node.js](https://nodejs.org/en/download/) >= 20.4\n- [Git](https://git-scm.com/downloads)\n- [pm2](https://pm2.keymetrics.io/) - For running Uptime Kuma in the background\n\n```bash\ngit clone https://github.com/louislam/uptime-kuma.git\ncd uptime-kuma\nnpm run setup\n\n# Option 1. Try it\nnode server/server.js\n\n# (Recommended) Option 2. Run in the background using PM2\n# Install PM2 if you don't have it:\nnpm install pm2 -g && pm2 install pm2-logrotate\n\n# Start Server\npm2 start server/server.js --name uptime-kuma\n```\n\nUptime Kuma is now running on all network interfaces (e.g. http://localhost:3001 or http://your-ip:3001).\n\nMore useful PM2 Commands\n\n```bash\n# If you want to see the current console output\npm2 monit\n\n# If you want to add it to startup\npm2 startup && pm2 save\n```\n\n### Advanced Installation\n\nIf you need more options or need to browse via a reverse proxy, please read:\n\n<https://github.com/louislam/uptime-kuma/wiki/%F0%9F%94%A7-How-to-Install>\n\n## 🆙 How to Update\n\nPlease read:\n\n<https://github.com/louislam/uptime-kuma/wiki/%F0%9F%86%99-How-to-Update>\n\n## 🆕 What's Next?\n\nI will assign requests/issues to the next milestone.\n\n<https://github.com/louislam/uptime-kuma/milestones>\n\n## ❤️ Sponsors\n\nThank you so much! (GitHub Sponsors will be updated manually. OpenCollective sponsors will be updated automatically, the list will be cached by GitHub though. It may need some time to be updated)\n\n<img src=\"https://uptime.kuma.pet/sponsors?v=6\" alt=\"Uptime Kuma Sponsors\" />\n\n## 🖼 More Screenshots\n\nLight Mode:\n\n<img src=\"https://uptime.kuma.pet/img/light.jpg\" width=\"512\" alt=\"Uptime Kuma Light Mode Screenshot of how the Dashboard looks\" />\n\nStatus Page:\n\n<img src=\"https://user-images.githubusercontent.com/1336778/134628766-a3fe0981-0926-4285-ab46-891a21c3e4cb.png\" width=\"512\" alt=\"Uptime Kuma Status Page Screenshot\" />\n\nSettings Page:\n\n<img src=\"https://louislam.net/uptimekuma/2.jpg\" width=\"400\" alt=\"Uptime Kuma Settings Page Screenshot\" />\n\nTelegram Notification Sample:\n\n<img src=\"https://louislam.net/uptimekuma/3.jpg\" width=\"400\" alt=\"Uptime Kuma Telegram Notification Sample Screenshot\" />\n\n## Motivation\n\n- I was looking for a self-hosted monitoring tool like \"Uptime Robot\", but it is hard to find a suitable one. One of the closest ones is statping. Unfortunately, it is not stable and no longer maintained.\n- Wanted to build a fancy UI.\n- Learn Vue 3 and vite.js.\n- Show the power of Bootstrap 5.\n- Try to use WebSocket with SPA instead of a REST API.\n- Deploy my first Docker image to Docker Hub.\n\nIf you love this project, please consider giving it a ⭐.\n\n## 🗣️ Discussion / Ask for Help\n\n⚠️ For any general or technical questions, please don't send me an email, as I am unable to provide support in that manner. I will not respond if you ask questions there.\n\nI recommend using Google, GitHub Issues, or Uptime Kuma's subreddit for finding answers to your question. If you cannot find the information you need, feel free to ask:\n\n- [GitHub Issues](https://github.com/louislam/uptime-kuma/issues)\n- [Subreddit (r/UptimeKuma)](https://www.reddit.com/r/UptimeKuma/)\n\nMy Reddit account: [u/louislamlam](https://reddit.com/u/louislamlam)\nYou can mention me if you ask a question on the subreddit.\n\n## Contributions\n\n### Create Pull Requests\n\nPull requests are awesome.\nTo keep reviews fast and effective, please make sure you’ve [read our pull request guidelines](https://github.com/louislam/uptime-kuma/blob/master/CONTRIBUTING.md#can-i-create-a-pull-request-for-uptime-kuma).\n\n### Test Pull Requests\n\nThere are a lot of pull requests right now, but I don't have time to test them all.\n\nIf you want to help, you can check this:\n<https://github.com/louislam/uptime-kuma/wiki/Test-Pull-Requests>\n\n### Test Beta Version\n\nCheck out the latest beta release here: <https://github.com/louislam/uptime-kuma/releases>\n\n### Bug Reports / Feature Requests\n\nIf you want to report a bug or request a new feature, feel free to open a [new issue](https://github.com/louislam/uptime-kuma/issues).\n\n### Translations\n\nIf you want to translate Uptime Kuma into your language, please visit [Weblate Readme](https://github.com/louislam/uptime-kuma/blob/master/src/lang/README.md).\n\n### Spelling & Grammar\n\nFeel free to correct the grammar in the documentation or code.\nMy mother language is not English and my grammar is not that great.\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n    \"name\": \"uptime-kuma\",\n    \"version\": \"2.4.0\",\n    \"license\": \"MIT\",\n    \"repository\": {\n        \"type\": \"git\",\n        \"url\": \"https://github.com/louislam/uptime-kuma.git\"\n    },\n    \"engines\": {\n        \"node\": \">= 20.4.0\"\n    },\n    \"scripts\": {\n        \"lint:js\": \"eslint --ext \\\".js,.vue\\\" --ignore-path .gitignore .\",\n        \"lint:js-prod\": \"npm run lint:js\",\n        \"lint-fix:js\": \"eslint --ext \\\".js,.vue\\\" --fix --ignore-path .gitignore .\",\n        \"lint:style\": \"stylelint \\\"**/*.{vue,css,scss}\\\" --ignore-path .gitignore\",\n        \"lint-fix:style\": \"stylelint \\\"**/*.{vue,css,scss}\\\" --fix --ignore-path .gitignore\",\n        \"lint\": \"npm run lint:js && npm run lint:style\",\n        \"fmt\": \"prettier --write \\\"**/*.{js,ts,vue,css,scss,json,md,yml,yaml}\\\"\",\n        \"lint:prod\": \"npm run lint:js-prod && npm run lint:style\",\n        \"dev\": \"concurrently -k -r \\\"wait-on tcp:3000 && npm run start-server-dev \\\" \\\"npm run start-frontend-dev\\\"\",\n        \"start-frontend-dev\": \"cross-env NODE_ENV=development vite --host --config ./config/vite.config.js\",\n        \"start-frontend-devcontainer\": \"cross-env NODE_ENV=development DEVCONTAINER=1 vite --host --config ./config/vite.config.js\",\n        \"start\": \"npm run start-server\",\n        \"start-server\": \"node server/server.js\",\n        \"start-server-dev\": \"cross-env NODE_ENV=development node server/server.js\",\n        \"start-server-dev:watch\": \"cross-env NODE_ENV=development node --watch server/server.js\",\n        \"build\": \"vite build --config ./config/vite.config.js\",\n        \"test\": \"npm run test-backend && npm run test-e2e\",\n        \"test-with-build\": \"npm run build && npm test\",\n        \"test-backend\": \"node test/test-backend.mjs\",\n        \"test-backend-22\": \"cross-env TEST_BACKEND=1 node --test --test-reporter=spec \\\"test/backend-test/**/*.js\\\"\",\n        \"test-backend-20\": \"cross-env TEST_BACKEND=1 node --test --test-reporter=spec test/backend-test\",\n        \"test-e2e\": \"playwright test --config ./config/playwright.config.js\",\n        \"test-e2e-ui\": \"playwright test --config ./config/playwright.config.js --ui --ui-port=51063\",\n        \"playwright-codegen\": \"playwright codegen localhost:3000 --save-storage=./private/e2e-auth.json\",\n        \"playwright-show-report\": \"playwright show-report ./private/playwright-report\",\n        \"tsc\": \"tsc --project ./tsconfig-backend.json\",\n        \"vite-preview-dist\": \"vite preview --host --config ./config/vite.config.js\",\n        \"build-docker-base\": \"docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base2 --target base2 . --push\",\n        \"build-docker-base-slim\": \"docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base2-slim --target base2-slim . --push\",\n        \"build-docker-builder-go\": \"docker buildx build -f docker/builder-go.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:builder-go . --push\",\n        \"build-docker-nightly-local\": \"npm run build && docker build -f docker/dockerfile -t louislam/uptime-kuma:nightly2 --target nightly .\",\n        \"build-docker-pr-test\": \"docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test2 --target pr-test2 . --push\",\n        \"upload-artifacts\": \"node extra/release/upload-artifacts.mjs\",\n        \"upload-artifacts-beta\": \"node extra/release/upload-artifacts-beta.mjs\",\n        \"setup\": \"git checkout 2.4.0 && npm ci --omit dev --no-audit && npm run download-dist\",\n        \"download-dist\": \"node extra/download-dist.js\",\n        \"mark-as-nightly\": \"node extra/mark-as-nightly.js\",\n        \"reset-password\": \"node extra/reset-password.js\",\n        \"remove-2fa\": \"node extra/remove-2fa.js\",\n        \"simple-dns-server\": \"node extra/simple-dns-server.js\",\n        \"simple-mqtt-server\": \"node extra/simple-mqtt-server.js\",\n        \"simple-mongo\": \"docker run --rm -p 27017:27017 mongo\",\n        \"simple-postgres\": \"docker run --rm -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres\",\n        \"simple-mariadb\": \"docker run --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb# mariadb\",\n        \"release-final\": \"node ./extra/release/final.mjs\",\n        \"release-beta\": \"node ./extra/release/beta.mjs\",\n        \"release-nightly\": \"node ./extra/release/nightly.mjs\",\n        \"git-remove-tag\": \"git tag -d\",\n        \"build-dist-and-restart\": \"npm run build && npm run start-server-dev\",\n        \"start-pr-test\": \"node extra/checkout-pr.mjs && npm install && npm run dev\",\n        \"build-healthcheck-armv7\": \"cross-env GOOS=linux GOARCH=arm GOARM=7 go build -x -o ./extra/healthcheck-armv7 ./extra/healthcheck.go\",\n        \"deploy-demo-server\": \"node extra/deploy-demo-server.js\",\n        \"quick-run-nightly\": \"docker run --rm --env NODE_ENV=development -p 3001:3001 louislam/uptime-kuma:nightly2\",\n        \"start-dev-container\": \"cd docker && docker-compose -f docker-compose-dev.yml up --force",
    "strategic_keywords": [],
    "relationship_label": "开发者工具",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 13,
      "relevance": 0,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 6,
      "risk_signal": 6,
      "total": 53
    },
    "strategic_score": 53
  },
  {
    "owner": "SagerNet",
    "name": "sing-box",
    "full_name": "SagerNet/sing-box",
    "url": "https://github.com/SagerNet/sing-box",
    "description": "The universal proxy platform",
    "language": "Go",
    "total_stars": 35392,
    "forks": 4218,
    "stars_this_period": 40,
    "source_slice": "go",
    "source_slices": [
      "go"
    ],
    "metadata": {
      "topics": [],
      "license": "NOASSERTION",
      "open_issues": 271,
      "created_at": "2022-06-30T13:27:22Z",
      "pushed_at": "2026-06-25T11:15:01Z",
      "homepage": "https://sing-box.sagernet.org/",
      "default_branch": "testing",
      "forks": 4218,
      "watchers": 193,
      "archived": false,
      "size_kb": 21162
    },
    "readme_content": "# sing-box\n\nThe universal proxy platform.\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/sing-box.svg)](https://repology.org/project/sing-box/versions)\n\n## Documentation\n\nhttps://sing-box.sagernet.org\n\n## License\n\n```\nCopyright (C) 2022 by nekohasekai <contact-sagernet@sekai.icu>\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see <http://www.gnu.org/licenses/>.\n\nIn addition, no derivative work may use the name or imply association\nwith this application without prior consent.\n```",
    "manifest_file": "go.mod",
    "manifest_content": "module github.com/sagernet/sing-box\n\ngo 1.24.7\n\nrequire (\n\tgithub.com/anthropics/anthropic-sdk-go v1.26.0\n\tgithub.com/anytls/sing-anytls v0.0.11\n\tgithub.com/caddyserver/certmagic v0.25.3-0.20260421143802-60d9d8b415d6\n\tgithub.com/caddyserver/zerossl v0.1.5\n\tgithub.com/coder/websocket v1.8.14\n\tgithub.com/creack/pty v1.1.24\n\tgithub.com/cretz/bine v0.2.0\n\tgithub.com/database64128/tfo-go/v2 v2.3.2\n\tgithub.com/go-chi/chi/v5 v5.2.5\n\tgithub.com/go-chi/render v1.0.3\n\tgithub.com/godbus/dbus/v5 v5.2.2\n\tgithub.com/gofrs/uuid/v5 v5.4.0\n\tgithub.com/insomniacslk/dhcp v0.0.0-20260220084031-5adc3eb26f91\n\tgithub.com/jsimonetti/rtnetlink v1.4.0\n\tgithub.com/keybase/go-keychain v0.0.1\n\tgithub.com/libdns/acmedns v0.5.0\n\tgithub.com/libdns/alidns v1.0.6\n\tgithub.com/libdns/cloudflare v0.2.2\n\tgithub.com/libdns/libdns v1.1.1\n\tgithub.com/logrusorgru/aurora v2.0.3+incompatible\n\tgithub.com/mdlayher/netlink v1.9.0\n\tgithub.com/metacubex/utls v1.8.4\n\tgithub.com/mholt/acmez/v3 v3.1.6\n\tgithub.com/miekg/dns v1.1.72\n\tgithub.com/openai/openai-go/v3 v3.26.0\n\tgithub.com/oschwald/maxminddb-golang v1.13.1\n\tgithub.com/pkg/sftp v1.13.10\n\tgithub.com/sagernet/asc-go v0.0.0-20241217030726-d563060fe4e1\n\tgithub.com/sagernet/bbolt v0.0.0-20231014093535-ea5cb2fe9f0a\n\tgithub.com/sagernet/cors v1.2.1\n\tgithub.com/sagernet/cronet-go v0.0.0-20260620140045-05ab0dc17597\n\tgithub.com/sagernet/cronet-go/all v0.0.0-20260620140045-05ab0dc17597\n\tgithub.com/sagernet/fswatch v0.1.2\n\tgithub.com/sagernet/gliderssh v0.3.4-0.20260531100337-2194faca5648\n\tgithub.com/sagernet/gomobile v0.1.12\n\tgithub.com/sagernet/gvisor v0.0.0-20250811.0-sing-box-mod.1\n\tgithub.com/sagernet/quic-go v0.59.0-sing-box-mod.4\n\tgithub.com/sagernet/sing v0.8.12-0.20260625092856-31bbf21d4b12\n\tgithub.com/sagernet/sing-cloudflared v0.1.1\n\tgithub.com/sagernet/sing-mux v0.3.5\n\tgithub.com/sagernet/sing-quic v0.6.2-0.20260525051024-9467ede27fb7\n\tgithub.com/sagernet/sing-shadowsocks v0.2.8\n\tgithub.com/sagernet/sing-shadowsocks2 v0.2.1\n\tgithub.com/sagernet/sing-shadowtls v0.2.1\n\tgithub.com/sagernet/sing-tun v0.8.12-0.20260623031040-54c9dbda5fe7\n\tgithub.com/sagernet/sing-vmess v0.2.8-0.20250909125414-3aed155119a1\n\tgithub.com/sagernet/smux v1.5.50-sing-box-mod.1\n\tgithub.com/sagernet/tailscale v1.92.4-sing-box-1.13-mod.7.0.20260527101438-dc40932c32d9\n\tgithub.com/sagernet/wireguard-go v0.0.3\n\tgithub.com/sagernet/ws v0.0.0-20231204124109-acfe8907c854\n\tgithub.com/spf13/cobra v1.10.2\n\tgithub.com/stretchr/testify v1.11.1\n\tgithub.com/vishvananda/netns v0.0.5\n\tgo.uber.org/zap v1.27.1\n\tgo4.org/netipx v0.0.0-20231129151722-fdeea329fbba\n\tgolang.org/x/crypto v0.48.0\n\tgolang.org/x/exp v0.0.0-20251219203646-944ab1f22d93\n\tgolang.org/x/mod v0.33.0\n\tgolang.org/x/net v0.50.0\n\tgolang.org/x/sync v0.19.0\n\tgolang.org/x/sys v0.41.0\n\tgolang.zx2c4.com/wireguard/wgctrl v0.0.0-20241231184526-a9ab2273dd10\n\tgoogle.golang.org/grpc v1.79.1\n\tgoogle.golang.org/protobuf v1.36.11\n\thowett.net/plist v1.0.1\n)\n\nrequire (\n\tfilippo.io/edwards25519 v1.1.0 // indirect\n\tgithub.com/ajg/form v1.5.1 // indirect\n\tgithub.com/akutz/memconn v0.1.0 // indirect\n\tgithub.com/alexbrainman/sspi v0.0.0-20231016080023-1a75b4708caa // indirect\n\tgithub.com/andybalholm/brotli v1.1.0 // indirect\n\tgithub.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect\n\tgithub.com/cenkalti/backoff/v4 v4.3.0 // indirect\n\tgithub.com/coreos/go-iptables v0.7.1-0.20240112124308-65c67c9f46e6 // indirect\n\tgithub.com/coreos/go-oidc/v3 v3.17.0 // indirect\n\tgithub.com/database64128/netx-go v0.1.1 // indirect\n\tgithub.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect\n\tgithub.com/dblohm7/wingoes v0.0.0-20240119213807-a09d6be7affa // indirect\n\tgithub.com/dgrijalva/jwt-go/v4 v4.0.0-preview1 // indirect\n\tgithub.com/ebitengine/purego v0.10.0 // indirect\n\tgithub.com/florianl/go-nfqueue/v2 v2.0.2 // indirect\n\tgithub.com/fsnotify/fsnotify v1.9.0 // indirect\n\tgithub.com/fxamacker/cbor/v2 v2.7.0 // indirect\n\tgithub.com/gaissmai/bart v0.18.0 // indirect\n\tgithub.com/go-jose/go-jose/v4 v4.1.3 // indirect\n\tgithub.com/go-json-experiment/json v0.0.0-20250813024750-ebf49471dced // indirect\n\tgithub.com/go-ole/go-ole v1.3.0 // indirect\n\tgithub.com/gobwas/httphead v0.1.0 // indirect\n\tgithub.com/gobwas/pool v0.2.1 // indirect\n\tgithub.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect\n\tgithub.com/google/btree v1.1.3 // indirect\n\tgithub.com/google/go-cmp v0.7.0 // indirect\n\tgithub.com/google/go-querystring v1.1.0 // indirect\n\tgithub.com/google/nftables v0.2.1-0.20240414091927-5e242ec57806 // indirect\n\tgithub.com/google/uuid v1.6.0 // indirect\n\tgithub.com/hashicorp/yamux v0.1.2 // indirect\n\tgithub.com/hdevalence/ed25519consensus v0.2.0 // indirect\n\tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect\n\tgithub.com/klauspost/compress v1.18.0 // indirect\n\tgithub.com/klauspost/cpuid/v2 v2.3.0 // indirect\n\tgithub.com/kr/fs v0.1.0 // indirect\n\tgithub.com/mdlayher/socket v0.5.1 // indirect\n\tgithub.com/mitchellh/go-ps v1.0.0 // indirect\n\tgithub.com/philhofer/fwd v1.2.0 // indirec",
    "strategic_keywords": [],
    "relationship_label": "架构参考",
    "data_confidence": "medium",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "go.mod"
    ],
    "score_breakdown": {
      "heat": 12,
      "relevance": 0,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 6,
      "risk_signal": 6,
      "total": 52
    },
    "strategic_score": 52
  },
  {
    "owner": "freestylefly",
    "name": "awesome-gpt-image-2",
    "full_name": "freestylefly/awesome-gpt-image-2",
    "url": "https://github.com/freestylefly/awesome-gpt-image-2",
    "description": "Prompt as Code | GPT-Image2 工业级提示词引擎与模板库，470+ 个案例逆向工程，20+ 套工业级模板，并提炼出Skills，持续更新中",
    "language": "JavaScript",
    "total_stars": 7943,
    "forks": 1030,
    "stars_this_period": 40,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "agents",
        "ai-image-generation",
        "chatgpt",
        "gpt-image-2",
        "image-prompts",
        "prompt-as-code",
        "prompt-engineering",
        "skills",
        "workflow-automation"
      ],
      "license": "MIT",
      "open_issues": 6,
      "created_at": "2026-04-25T09:19:13Z",
      "pushed_at": "2026-06-20T09:26:38Z",
      "homepage": "https://gpt-image2.canghe.ai",
      "default_branch": "main",
      "forks": 1030,
      "watchers": 24,
      "archived": false,
      "size_kb": 187106
    },
    "readme_content": "<p align=\"center\"><img src=\"./data/images/banner.svg\" alt=\"GPT-Image2 Prompt System\" width=\"800\" /></p>\n\n<h3 align=\"center\">Prompt as Code | GPT-Image2 Industrial Prompt Engine & Template Library, 400+ Reverse-Engineered Cases, 20+ Industrial Templates</h3>\n\n<p align=\"center\">\n  <a href=\"https://github.com/freestylefly/awesome-gpt-image-2\"><img src=\"https://img.shields.io/github/stars/freestylefly/awesome-gpt-image-2?style=flat-square&color=rgb(25%2C%20121%2C%20255)\" alt=\"Stars\"></a>\n  <a href=\"https://github.com/freestylefly/awesome-gpt-image-2\"><img src=\"https://img.shields.io/github/forks/freestylefly/awesome-gpt-image-2?style=flat-square&color=green\" alt=\"Forks\"></a>\n  <a href=\"https://github.com/freestylefly/awesome-gpt-image-2\"><img src=\"https://img.shields.io/badge/Cases-508-blueviolet?style=flat-square\" alt=\"Cases\"></a>\n  <a href=\"https://github.com/freestylefly/awesome-gpt-image-2\"><img src=\"https://img.shields.io/badge/100%25-Original_AI_Rewritten-green?style=flat-square\" alt=\"Original\"></a>\n  <a href=\"https://github.com/sponsors/freestylefly\"><img src=\"https://img.shields.io/badge/Sponsor-GitHub%20Sponsors-ff69b4?style=flat-square\" alt=\"Sponsor\"></a>\n</p>\n\n<p align=\"center\">\n  <strong>English</strong> | <a href=\"./README.zh-CN.md\">简体中文</a> | <a href=\"./README.ja.md\">日本語</a>\n</p>\n\n> Updated irregularly with new workflows. Stars are welcome.\n> This project is sponsored by [Ciyuan API](https://ciyuan.today/), an AI aggregation platform for cost-effective GPT Image 2 access.\n\n## 🌐 Visual Website\n\nUse the live site at [gpt-image2.canghe.ai](https://gpt-image2.canghe.ai/) to browse the gallery as a product experience: open large previews, copy full prompts, filter by style or scenario, test generation after Google sign-in, and jump back to the source case on GitHub.\n\n<p align=\"center\">\n  <a href=\"https://gpt-image2.canghe.ai/\">\n    <img src=\"data/images/site-preview.png\" alt=\"GPT-Image2 Gallery website preview\" width=\"900\">\n  </a>\n</p>\n\n## WeChat Official Account\n\nSearch **苍何** on WeChat or scan the QR card below. To join the GPT-Image2 community group, follow the account and reply with **gpt-image-2交流群**.\n\n<p align=\"center\">\n  <img src=\"data/images/wechat-community.jpg\" alt=\"Canghe WeChat community QR card\" width=\"760\">\n</p>\n\n## ❤️ Sponsors\n\n> [Want to appear here?](data/images/sponsors/wechat-personal.jpg) Support the project through GitHub Sponsors, or follow the WeChat official account above and send your product name plus a short sponsorship note.\n\n| Sponsor | Description |\n| ------- | ----------- |\n| <a href=\"https://www.hiapi.ai/zh/register?aff=DzuH\"><img src=\"data/images/sponsors/hiapi.jpg\" alt=\"hiapi\" width=\"240\"></a> | Thanks to hiapi for sponsoring this project! hiapi is an AI image & video generation API platform — GPT-Image-2 (text-to-image, image edit, 1K–4K) alongside video models like Seedance, Kling and Wan, all through one unified async API: submit a task, get a `task_id`, fetch results by polling or callback, batch without timeouts, switch models without code changes. Every result is stored on hiapi's own CDN with **persistent storage**, so your image/video URLs stay available long-term and can be fetched anytime — no rushing to download and back them up yourself. Native Remote MCP and Agent Skills plug straight into Claude Code & Cursor. Chinese UI & docs, WeChat Pay, pay-as-you-go with no monthly fee — new users get $1 free credit (~50 images). [Sign up here](https://www.hiapi.ai/en/register?aff=DzuH&utm_source=github&utm_medium=sponsor&utm_campaign=awesome-gpt-image-2). |\n| <a href=\"https://apimart.ai/register?aff=oQgzUQ\"><img src=\"data/images/sponsors/apimart.jpg\" alt=\"APIMart\" width=\"240\"></a> | Thanks to APIMart for sponsoring this project! APIMart is a low-cost API platform for AI image & video generation — GPT-Image-2 from `$0.006/image`, 160+ images per dollar. One async API covers both image and video: submit a task, get an ID, fetch results via polling or callback. Batch tens of thousands of images without timeouts, switch models without changing code. Pay-as-you-go with no monthly fee — [sign up here](https://apimart.ai/register?aff=oQgzUQ) to get started. |\n| <a href=\"https://doloffer.com/friend/HuHEKQOk\"><img src=\"data/images/sponsors/doloffer.jpg\" alt=\"DolOffer\" width=\"240\"></a> | Thank you to DolOffer for supporting this project. DolOffer is a platform focused on digital product recommendations and deal sharing, helping users quickly discover useful tools, services, and limited-time benefits. It offers popular subscriptions including YouTube Premium, Claude, ChatGPT Plus, Spotify, and Apple Music at prices as low as 30% of official pricing or even lower, with genuine stable service and worry-free support. Register through our [exclusive link](https://doloffer.com/friend/HuHEKQOk) and enter promo code `AI8888` when topping up to get an extra 10% off. |\n| <a href=\"https://pptoken.cc/\"><img src=\"data/images/sponsors/pptoken.png\" alt=\"PPToken\" width=\"240\"></a> | Project sponsor. PPToken provides API relay and key distribution for ChatGPT, Claude, Gemini, and other mainstream AI models, with low-latency access, high availability, pay-as-you-go billing, and flexible subscription plans. |\n| <a href=\"https://ciyuan.today/\"><img src=\"data/images/sponsors/ciyuan-api.jpg\" alt=\"Ciyuan API\" width=\"240\"></a> | Project sponsor. Ciyuan API is an AI aggregation platform for stable, low-latency large-model API services, and supports this project in making GPT Image 2 exploration more practical for developers. |\n| <a href=\"https://github.com/sponsors/freestylefly\"><img src=\"https://img.shields.io/badge/GitHub%20Sponsors-freestylefly-ff69b4?style=for-the-badge\" alt=\"GitHub Sponsors\" width=\"240\"></a> | Community sponsor channel. GitHub Sponsors helps fund ongoing case collection, website maintenance, industrial template distillation, and Agent Skill updates. |\n\n<a name=\"section-vision\"></a>\n\n## ⚡️ Project Vision\n\nAfter GPT-Image2 became widely available, AI image generation moved from \"can it make an image?\" to \"can it make stable, controllable, reusable images?\" This project turns scattered community examples into Prompt-as-Code assets that are easier for agents and automation workflows to reuse.\n\nThe core goal is simple: compress prose-style prompts into structured protocols. When you need batch generation, template systems, or production workflows, this structure is more valuable than a pile of isolated examples.\n\n- 🧱 Atomic schema: split subjects, lighting, materials, layout, and visual details into composable parts\n- ⚙️ Workflow friendly: designed for agents, scripts, and automation systems\n- 🧬 Structured control: improve controllability for layout, copy, and information hierarchy\n\n## 📖 Quick Links\n\n- [Full case gallery](docs/gallery.md)\n- [Gallery Part 1: cases 1-165](docs/gallery-part-1.md)\n- [Gallery Part 2: cases 166-508](docs/gallery-part-2.md)\n- [Industrial prompt templates and pitfalls guide](docs/templates.md)\n- [Agent skill: GPT-Image2 Style Library](agents/skills/gpt-image-2-style-library/SKILL.md)\n- [MIT License](LICENSE)\n- [Full disclaimer](docs/disclaimer.md#section-disclaimer)\n\n## 🗂️ Category Overview\n\nStart with the case album to find a visual direction, then open the prompt template categories to turn that direction into reusable structure.\n\n### 🖼️ Case Album\n\n<table>\n  <tr>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>🧩 UI & Interfaces</strong><br><sub>73 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-ui\"><img src=\"data/images/category-covers/ui.jpg\" alt=\"UI and interfaces\" width=\"220\"></a><br>\n      <sub>Apps, websites, dashboards, social screenshots, and product interfaces.</sub><br>\n      <a href=\"docs/gallery.md#cat-ui\"><strong>View Cases</strong></a>\n    </td>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>📊 Charts & Infographics</strong><br><sub>52 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-infographic\"><img src=\"data/images/category-covers/infographic.jpg\" alt=\"Charts and infographics\" width=\"220\"></a><br>\n      <sub>Infographics, knowledge maps, technical explainers, and structured diagrams.</sub><br>\n      <a href=\"docs/gallery.md#cat-infographic\"><strong>View Cases</strong></a>\n    </td>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>📰 Posters & Typography</strong><br><sub>80 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-poster\"><img src=\"data/images/category-covers/poster.jpg\" alt=\"Posters and typography\" width=\"220\"></a><br>\n      <sub>Event posters, covers, type-driven visuals, and strong layout compositions.</sub><br>\n      <a href=\"docs/gallery.md#cat-poster\"><strong>View Cases</strong></a>\n    </td>\n  </tr>\n  <tr>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>🛍️ Products & E-commerce</strong><br><sub>38 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-product\"><img src=\"data/images/category-covers/product.jpg\" alt=\"Products and e-commerce\" width=\"220\"></a><br>\n      <sub>Product shots, detail pages, packaging, selling points, and ads.</sub><br>\n      <a href=\"docs/gallery.md#cat-product\"><strong>View Cases</strong></a>\n    </td>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>🏷️ Brand & Logos</strong><br><sub>25 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-brand\"><img src=\"data/images/category-covers/brand.jpg\" alt=\"Brand and logos\" width=\"220\"></a><br>\n      <sub>Logos, identity systems, brand touchpoints, and campaign visuals.</sub><br>\n      <a href=\"docs/gallery.md#cat-brand\"><strong>View Cases</strong></a>\n    </td>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>🏛️ Architecture & Spaces</strong><br><sub>12 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-architecture\"><img src=\"data/images/category-covers/architecture.jpg\" alt=\"Architecture and spaces\" width=\"220\"></a><br>\n      <sub>Architecture renders, interiors, city maps, and spatial concepts.</sub><br>\n      <a href=\"docs/gallery.md#cat-architecture\"><strong>View Cases</strong></a>\n    </td>\n  </tr>\n  <tr>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>📷 Photography & Realism</strong><br><sub>73 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-photo\"><img src=\"data/images/category-covers/photo.jpg\" alt=\"Photography and realism\" width=\"220\"></a><br>\n      <sub>Portraits, phone photography, film texture, and commercial photography.</sub><br>\n      <a href=\"docs/gallery.md#cat-photo\"><strong>View Cases</strong></a>\n    </td>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>🎨 Illustration & Art</strong><br><sub>53 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-illustration\"><img src=\"data/images/category-covers/illustration.jpg\" alt=\"Illustration and art\" width=\"220\"></a><br>\n      <sub>Illustration, art styles, material experiments, and decorative images.</sub><br>\n      <a href=\"docs/gallery.md#cat-illustration\"><strong>View Cases</strong></a>\n    </td>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>🧍 Characters & People</strong><br><sub>25 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-character\"><img src=\"data/images/category-covers/character.jpg\" alt=\"Characters and people\" width=\"220\"></a><br>\n      <sub>Character design, pose references, cards, and 3D toys.</sub><br>\n      <a href=\"docs/gallery.md#cat-character\"><strong>View Cases</strong></a>\n    </td>\n  </tr>\n  <tr>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>🎬 Scenes & Storytelling</strong><br><sub>20 cases</sub></p>\n      <a href=\"docs/gallery.md#cat-scene\"><img src=\"data/images/category-covers/scene.jpg\" alt=\"Scenes and storytelling\" width=\"220\"></a><br>\n      <sub>Storyboards, narrative scenes, livestream frames, and worldbuilding.</sub><br>\n      <a href=\"docs/gallery.md#cat-scene\"><strong>View Cases</strong></a>\n    </td>\n    <td width=\"33%\" valign=\"top\" align=\"center\">\n      <p><strong>🏮 History & Classical Chinese Themes</strong><br><sub>16 cases</sub></p>\n      <a",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"awesome-gpt-image-2-site\",\n  \"private\": true,\n  \"version\": \"1.0.0\",\n  \"type\": \"module\",\n  \"scripts\": {\n    \"generate:site-data\": \"node scripts/generate-site-data.mjs\",\n    \"generate:style-skill\": \"node scripts/generate-style-skill.mjs\",\n    \"ga4:oauth\": \"node scripts/google-analytics-oauth.mjs\",\n    \"install:skill\": \"node scripts/install-style-skill.mjs\",\n    \"pack:skill\": \"npm pack ./agents/skills/gpt-image-2-style-library --dry-run\",\n    \"publish:skill:npm\": \"npm publish ./agents/skills/gpt-image-2-style-library --access public\",\n    \"predev\": \"npm run generate:site-data && npm run generate:style-skill\",\n    \"dev\": \"vite\",\n    \"prebuild\": \"npm run generate:site-data && npm run generate:style-skill\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"dependencies\": {\n    \"@google-analytics/data\": \"^5.2.2\",\n    \"@supabase/supabase-js\": \"^2.105.4\",\n    \"@vitejs/plugin-react\": \"^5.1.1\",\n    \"google-auth-library\": \"^10.6.2\",\n    \"lucide-react\": \"^0.561.0\",\n    \"react\": \"^19.2.1\",\n    \"react-dom\": \"^19.2.1\",\n    \"stripe\": \"^22.1.1\",\n    \"vite\": \"^7.2.7\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "rag",
      "skill",
      "workflow",
      "automation"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 12,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "4ian",
    "name": "GDevelop",
    "full_name": "4ian/GDevelop",
    "url": "https://github.com/4ian/GDevelop",
    "description": "🎮 Open-source, cross-platform 2D/3D/multiplayer game engine designed for everyone.",
    "language": "JavaScript",
    "total_stars": 24161,
    "forks": 1422,
    "stars_this_period": 34,
    "source_slice": "javascript",
    "source_slices": [
      "javascript"
    ],
    "metadata": {
      "topics": [
        "2d-game",
        "2d-game-engine",
        "3d",
        "3d-game",
        "3d-game-engine",
        "game",
        "game-development",
        "game-engine",
        "gamedev",
        "gamemaker",
        "gdevelop",
        "hacktoberfest",
        "html5",
        "html5-game-engine",
        "javascript",
        "multiplayer",
        "no-code",
        "open-source",
        "vibe-coding"
      ],
      "license": "NOASSERTION",
      "open_issues": 604,
      "created_at": "2014-06-29T19:58:38Z",
      "pushed_at": "2026-06-26T17:49:32Z",
      "homepage": "https://gdevelop.io",
      "default_branch": "master",
      "forks": 1422,
      "watchers": 356,
      "archived": false,
      "size_kb": 1665694
    },
    "readme_content": "![GDevelop logo](https://raw.githubusercontent.com/4ian/GDevelop/master/newIDE/GDevelop%20banner.png \"GDevelop logo\")\n\nGDevelop is a **full-featured, no-code, open-source** game development software. You can build **2D, 3D and multiplayer games** for mobile (iOS, Android), desktop and the web. GDevelop is designed to be fast and incredibly intuitive: make games using an easy-to-understand yet powerful event-based system and modular behaviors. Create with AI that assists or builds alongside you.\n\n![The GDevelop editor when editing a game level](https://raw.githubusercontent.com/4ian/GDevelop/master/newIDE/GDevelop%20screenshot.png \"The GDevelop editor when editing a 3D game level\")\n\n![The GDevelop editor when editing a game level](./newIDE/GDevelop%202D%20screenshot.png \"The GDevelop editor when editing a 2D game level\")\n\n## Getting started\n\n| ❔ I want to...                                   | 🚀 What to do                                                                                                                                                     |\n| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 🎮 Use GDevelop to make games                     | Go to [GDevelop homepage](https://gdevelop.io) to download the app!                                                                                               |\n| ⚙️ Create/improve an extension                    | Read about [creating an extension](https://wiki.gdevelop.io/gdevelop5/extensions/create), with no-code or code.                                                   |\n| 🧑‍💻 Contribute to the editor or game engine        | Follow this [README](newIDE/README.md).                                                                                                                           |\n| 👾 Create or sell a game template                 | Submit a [free example or a paid template on the Asset Store](https://wiki.gdevelop.io/gdevelop5/community/guide-for-submitting-an-example/).                     |\n| 🎨 Share or sell an asset pack                    | Submit a [free or paid asset pack on the Asset Store](https://wiki.gdevelop.io/gdevelop5/community/sell-asset-pack-store).                                        |\n| 🌐 Help translate GDevelop                        | Go on the [GDevelop project on Crowdin](https://crowdin.com/project/gdevelop) or translate [in-app tutorials](https://github.com/GDevelopApp/GDevelop-tutorials). |\n| 👥 Get online game services or commercial support | See offers for [professionals, teams or individual creators](https://gdevelop.io/pricing).                                                                        |\n\n> Are you interested in contributing to GDevelop for the first time? Take a look at the list of **[good first issues](https://github.com/4ian/GDevelop/issues?q=is%3Aissue+is%3Aopen+label%3A%22%F0%9F%91%8Cgood+first+issue%22)**, **[good first contributions](https://github.com/4ian/GDevelop/discussions/categories/good-first-contribution)** or the **[\"🏐 not too hard\" cards](https://trello.com/b/qf0lM7k8/gdevelop-roadmap?menu=filter&filter=label:Not%20too%20hard%20%E2%9A%BD%EF%B8%8F)** on the Roadmap.\n\n## Games made with GDevelop\n\n- Find GDevelop games on [gd.games](https://gd.games), the gaming platform for games powered by GDevelop.\n- See the [showcase of games](https://gdevelop.io/games) created with GDevelop and published on Steam, iOS (App Store), Android (Google Play), Itch.io, Newgrounds, CrazyGames, Poki...\n  - Suggest your game to be [added to the showcase here](https://docs.google.com/forms/d/e/1FAIpQLSfjiOnkbODuPifSGuzxYY61vB5kyMWdTZSSqkJsv3H6ePRTQA/viewform).\n\n[![Some games made with GDevelop](https://raw.githubusercontent.com/4ian/GDevelop/master/newIDE/GDevelop%20games.png \"Some games made with GDevelop\")](https://gdevelop.io/games)\n\n## Technical architecture\n\nGDevelop is composed of an **editor**, a **game engine**, an **ecosystem** of extensions as well as **online services** and commercial support.\n\n| Directory     | ℹ️ Description                                                                                                                                                                                                                                                                                           |\n| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `Core`        | Core classes, describing the structure of a game and tools to implement the IDE and work with GDevelop games.                                                                                                                                                                                            |\n| `GDJS`        | The game engine, written in TypeScript, using PixiJS and Three.js for 2D and 3D rendering (WebGL), powering all GDevelop games.                                                                                                                                                                          |\n| `GDevelop.js` | Bindings of `Core`, `GDJS` and `Extensions` to JavaScript (with WebAssembly), used by the IDE.                                                                                                                                                                                                           |\n| `newIDE`      | The game editor, written in JavaScript with React, Electron, PixiJS and Three.js.                                                                                                                                                                                                                        |\n| `Extensions`  | Built-in extensions for the game engine, providing objects, behaviors and new features. For example, this includes the physics engines running in WebAssembly (Box2D or Jolt Physics for 3D). All the [official and experimental extensions are on this repository](https://github.com/GDevelopApp/GDevelop-extensions). [Community extensions are available here](https://github.com/GDevelopApp/GDevelop-community-list). |\n\nTo learn more about GDevelop Architecture, read the [architecture overview here](Core/GDevelop-Architecture-Overview.md).\n\nPre-generated documentation of the game engine is [available here](https://docs.gdevelop.io).\n\nStatus of the tests and builds: [![macOS and Linux build status](https://circleci.com/gh/4ian/GDevelop.svg?style=shield)](https://app.circleci.com/pipelines/github/4ian/GDevelop) [![Fast tests status](https://gdevelop.semaphoreci.com/badges/GDevelop/branches/master.svg?style=shields)](https://gdevelop.semaphoreci.com/projects/GDevelop) [![Windows Build status](https://ci.appveyor.com/api/projects/status/84uhtdox47xp422x/branch/master?svg=true)](https://ci.appveyor.com/project/4ian/gdevelop/branch/master) [![https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg](https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg)](https://good-labs.github.io/greater-good-affirmation)\n\n## Links\n\n### Community\n\n- [GDevelop forums](https://forum.gdevelop.io) and [Discord chat](https://discord.gg/gdevelop).\n- [GDevelop homepage](https://gdevelop.io).\n- [GDevelop wiki (documentation)](https://wiki.gdevelop.io/gdevelop5/start).\n- Help translate GDevelop in your language: [GDevelop project on Crowdin](https://crowdin.com/project/gdevelop).\n- Open-source [extensions (official or experimental)](https://github.com/GDevelopApp/GDevelop-extensions), [community extensions](https://github.com/GDevelopApp/GDevelop-community-list), [examples](https://github.com/GDevelopApp/GDevelop-examples), [tutorials](https://github.com/GDevelopApp/GDevelop-tutorials) are on GitHub.\n\n### Development Roadmap\n\n- [GDevelop Roadmap on Trello.com](https://trello.com/b/qf0lM7k8/gdevelop-roadmap), for a global view of the features that could be added. Please vote and comment here for new features/requests.\n- [GitHub issue page](https://github.com/4ian/GDevelop/issues), for technical issues and bugs.\n- [Github discussions](https://github.com/4ian/GDevelop/discussions) to talk about new features and ideas.\n\n## License\n\n- The Core library, the native and HTML5 game engines, the IDE, and all extensions (respectively `Core`, `GDJS`, `newIDE` and `Extensions` folders) are under the **MIT license**.\n- The name, GDevelop, and its logo are the exclusive property of Florian Rival.\n\nGames exported with GDevelop are based on the GDevelop game engine (see `Core` and `GDJS` folders): this engine is distributed under the MIT license so that you can **distribute, sell or do anything** with the games you created with GDevelop. In particular, you are not forced to make your game open-source.\n\n[node.js]: https://nodejs.org\n\n## Star History\n\nHelp us spread the word about GDevelop by starring the repository on GitHub!\n\n[![Star History Chart](https://api.star-history.com/svg?repos=4ian/gdevelop&type=Date)](https://star-history.com/#4ian/gdevelop&Date)\n",
    "strategic_keywords": [],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme"
    ],
    "score_breakdown": {
      "heat": 12,
      "relevance": 0,
      "novelty": 8,
      "productize": 14,
      "adoption": 8,
      "relation": 6,
      "risk_signal": 6,
      "total": 54
    },
    "strategic_score": 54
  },
  {
    "owner": "strapi",
    "name": "strapi",
    "full_name": "strapi/strapi",
    "url": "https://github.com/strapi/strapi",
    "description": "🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first.",
    "language": "TypeScript",
    "total_stars": 72527,
    "forks": 9765,
    "stars_this_period": 33,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "api",
        "cms",
        "cms-framework",
        "content-management",
        "content-management-system",
        "customizable",
        "dashboard",
        "graphql",
        "hacktoberfest",
        "headless-cms",
        "jamstack",
        "javascript",
        "mysql",
        "no-code",
        "nodejs",
        "posgresql",
        "rest",
        "strapi",
        "typescript"
      ],
      "license": "NOASSERTION",
      "open_issues": 549,
      "created_at": "2015-09-30T15:34:48Z",
      "pushed_at": "2026-06-26T19:58:53Z",
      "homepage": "https://strapi.io",
      "default_branch": "develop",
      "forks": 9765,
      "watchers": 645,
      "archived": false,
      "size_kb": 649684
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://strapi.io/#gh-light-mode-only\">\n    <img src=\"https://strapi.io/assets/strapi-logo-dark.svg\" width=\"318px\" alt=\"Strapi logo\" />\n  </a>\n  <a href=\"https://strapi.io/#gh-dark-mode-only\">\n    <img src=\"https://strapi.io/assets/strapi-logo-light.svg\" width=\"318px\" alt=\"Strapi logo\" />\n  </a>\n</p>\n\n<h3 align=\"center\">Open-source headless CMS, self-hosted or Cloud you're in control.</h3>\n<p align=\"center\">The leading open-source headless CMS, 100% JavaScript/TypeScript, flexible and fully customizable.</p>\n<p align=\"center\"><a href=\"https://docs.strapi.io\">Docs</a> · <a href=\"https://strapi.io/cloud\">Strapi Cloud</a> · <a href=\"https://feedback.strapi.io\">Roadmap</a> · <a href=\"https://discord.strapi.io\">Discord</a> · <a href=\"https://github.com/strapi/strapi/discussions\">Discussions</a></p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.org/package/@strapi/strapi\">\n    <img src=\"https://img.shields.io/npm/v/@strapi/strapi/latest.svg\" alt=\"NPM Version\" />\n  </a>\n  <a href=\"https://github.com/strapi/strapi/actions/workflows/tests.yml\">\n    <img src=\"https://github.com/strapi/strapi/actions/workflows/tests.yml/badge.svg?branch=main\" alt=\"Tests\" />\n  </a>\n  <a href=\"https://discord.strapi.io\">\n    <img src=\"https://img.shields.io/discord/811989166782021633?label=Discord\" alt=\"Strapi on Discord\" />\n  </a>\n  <a href=\"https://github.com/strapi/strapi/actions/workflows/nightly.yml\">\n    <img src=\"https://github.com/strapi/strapi/actions/workflows/nightly.yml/badge.svg\" alt=\"Strapi Nightly Release Build Status\" />\n  </a>\n</p>\n\n<br>\n\nStrapi is an open-source, self-hosted headless CMS that lets developers build content APIs fast while giving content creators a friendly editing interface. Define your content models and Strapi generates a full API, ready to consume from any frontend, mobile app, or IoT device.\n\n- Design content structures visually with the [**Content-Type Builder**](https://docs.strapi.io/cms/features/content-type-builder), no code required\n- Auto-generated [**REST**](https://docs.strapi.io/cms/api/rest) & [**GraphQL**](https://docs.strapi.io/cms/plugins/graphql) APIs for every content type\n- Granular [**Roles & Permissions**](https://docs.strapi.io/cms/features/users-permissions) out of the box\n- Built-in [**Media Library**](https://docs.strapi.io/cms/features/media-library), [**Internationalization (i18n)**](https://docs.strapi.io/cms/features/internationalization), and [**Draft & Publish**](https://docs.strapi.io/cms/features/draft-and-publish)\n- First-class **TypeScript** support with flexible database options (SQLite, PostgreSQL, MySQL, MariaDB)\n- Extensible [**plugin system**](https://docs.strapi.io/cms/plugins-development/developing-plugins) and customizable admin dashboard\n\n> Explore all features at **[strapi.io/features](https://strapi.io/features)**\n\n> **Strapi AI** — Automate content modeling, media alt text, and translations with Strapi's built-in AI layer. [Learn more](https://strapi.io/ai)\n\n### How Strapi handles requests\n\nEvery incoming request flows through a layered backend architecture: **Routes → Middlewares → Controllers → Services**.\n\n<p align=\"center\">\n  <img src=\"https://docs.strapi.io/img/assets/backend-customization/diagram-routes.png\" alt=\"Strapi backend request flow: Routes, Middlewares, Controllers, and Services\" />\n</p>\n\n> Learn more about backend customization in the [official docs](https://docs.strapi.io/cms/backend-customization).\n\n## Getting Started\n\n<a href=\"https://docs.strapi.io/developer-docs/latest/getting-started/quick-start.html\" target=\"_blank\">Read the Getting Started tutorial</a> or follow the steps below:\n\n### ⏳ Installation\n\nUse the **Quickstart** command below to create a new Strapi project instantly:\n\n```bash\nnpx create-strapi@latest my-project\n```\n\nThis command generates a brand new project with the default features (authentication, permissions, content management, content type builder & file upload).\n\n> Full installation options (including TypeScript, `--quickstart`, etc.) in the **[CLI installation docs](https://docs.strapi.io/cms/installation/cli#creating-a-strapi-project)**\n\n### Requirements\n\n> Hardware & software requirements (OS, Node.js, databases) at **[Requirements docs](https://docs.strapi.io/cms/deployment#hardware-and-software-requirements)**\n\n## Docker\n\nStrapi doesn't ship official Docker images, so you build your own from your project. The fastest way to get started is with the community CLI tool:\n\n```bash\nnpx @strapi-community/dockerize@latest\n```\n\nThis generates a `Dockerfile` and `docker-compose.yml` tailored to your project. See the [strapi-tool-dockerize](https://github.com/strapi-community/strapi-tool-dockerize) repo for more details.\n\n> Dockerfiles, Docker Compose examples, production builds at **[Docker installation docs](https://docs.strapi.io/cms/installation/docker)**\n\n## Deploy to Strapi Cloud\n\nThe fastest way to go from local to production. Strapi Cloud is the official managed hosting platform with zero DevOps, a built-in database, media library, and CDN.\n\n> [**Deploy now**](https://cloud.strapi.io)\n\n## LaunchPad\n\nThe official demo template combining Strapi with Next.js to get you started quickly.\n\n> [**LaunchPad template**](https://github.com/strapi/LaunchPad)\n\n### Try live demo\n\nSee for yourself what's under the hood by getting access to a [hosted Strapi project](https://strapi.io/demo) with sample data — [try it live](https://strapi.io/demo) or [pull locally](https://github.com/strapi/LaunchPad).\n\n## Repositories\n\n| Repository                                                          | Description                                   |\n| ------------------------------------------------------------------- | --------------------------------------------- |\n| [**strapi/strapi**](https://github.com/strapi/strapi)               | Core monorepo, the CMS itself                 |\n| [**strapi/design-system**](https://github.com/strapi/design-system) | Strapi Design System, React component library |\n| [**strapi/LaunchPad**](https://github.com/strapi/LaunchPad)         | Demo app: Strapi + Next.js                    |\n\n## Contributing & Community\n\nStrapi is community-built and open source. For help, feedback, or to get involved:\n\n- **[Discord](https://discord.strapi.io)**: Live discussion with the community and Strapi team\n- **[GitHub Discussions](https://github.com/strapi/strapi/discussions)**: Ask questions, share projects, get feedback\n- **[GitHub](https://github.com/strapi/strapi)**: Bug reports and contributions\n- **[Contributing Guide](https://contributor.strapi.io/)**: How to contribute code, docs, and translations\n- **[Community Content](https://github.com/strapi/community-content)**: Showcase, tutorials, starters, and templates\n- **[Feedback](https://feedback.strapi.io)**: Roadmap and feature requests\n- **[Twitter](https://twitter.com/strapijs)**: Get the news fast\n- **[YouTube Channel](https://www.youtube.com/strapi)**: Learn from video tutorials\n\nFor general help, refer to the [official Strapi documentation](https://docs.strapi.io). New to open source? Check out [How to Contribute to Open Source](https://opensource.guide/).\n\n## Migration\n\nFollow our [migration guides](https://docs.strapi.io/developer-docs/latest/update-migration-guides/migration-guides.html) on the documentation to keep your projects up-to-date.\n\n## Roadmap\n\nCheck out our [roadmap](https://feedback.strapi.io) to get informed of the latest features released and the upcoming ones. You may also give us insights and vote for a specific feature.\n\n## Documentation\n\nSee our dedicated [repository](https://github.com/strapi/documentation) for the Strapi documentation, or view our documentation live:\n\n- [CMS docs](https://docs.strapi.io/cms/intro)\n- [Cloud docs](https://docs.strapi.io/cloud/intro)\n\n## Security\n\nIf you discover a security issue, please report it responsibly. See our [Security Policy](https://github.com/strapi/strapi/blob/main/SECURITY.md) for our disclosure process and contact info.\n\n## About Strapi\n\n- **[Company Handbook](https://handbook.strapi.io)**: Our values, how we work, and more\n- **[About Us](https://strapi.io/about-us)**: The story of Strapi\n\n[Contact us](https://strapi.io/contact)\n\n## Support Strapi\n\nIf Strapi is useful to you, give us a star. It helps more than you think!\n\n## Thanks to All Contributors\n\nThank you to everyone who has contributed code, reported issues, and helped shape Strapi.\n\n[![Strapi contributors](https://contrib.rocks/image?repo=strapi/strapi&max=400&columns=20)](https://github.com/strapi/strapi/graphs/contributors)\n\n## License\n\nSee the [LICENSE](./LICENSE) file for licensing information.\n\n---\n\n[Website](https://strapi.io) · [Docs](https://docs.strapi.io) · [Blog](https://strapi.io/blog) · [Twitter](https://twitter.com/strapijs) · [LinkedIn](https://www.linkedin.com/company/strapi/)\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"strapi\",\n  \"private\": true,\n  \"bugs\": {\n    \"url\": \"https://github.com/strapi/strapi/issues\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/strapi/strapi.git\"\n  },\n  \"license\": \"SEE LICENSE IN LICENSE\",\n  \"author\": {\n    \"name\": \"Strapi Solutions SAS\",\n    \"email\": \"hi@strapi.io\",\n    \"url\": \"https://strapi.io\"\n  },\n  \"maintainers\": [\n    {\n      \"name\": \"Strapi Solutions SAS\",\n      \"email\": \"hi@strapi.io\",\n      \"url\": \"https://strapi.io\"\n    }\n  ],\n  \"workspaces\": [\n    \"packages/*\",\n    \"packages/*/*\",\n    \"examples/*\",\n    \"examples/plugins/*\",\n    \"examples/*/src/plugins/*\",\n    \".github/actions/*\",\n    \"scripts/*\"\n  ],\n  \"scripts\": {\n    \"build\": \"nx run-many --targets build:code,build:types --nx-ignore-cycles\",\n    \"build:code\": \"nx run-many --target=build:code --nx-ignore-cycles\",\n    \"build:types\": \"nx run-many --target=build:types --nx-ignore-cycles\",\n    \"watch\": \"nx watch --all -- 'nx run-many --targets build:code,build:types --projects $NX_PROJECT_NAME'\",\n    \"build:size\": \"cd examples/getstarted && yarn build\",\n    \"build:ts\": \"nx run-many --target=build:ts --nx-ignore-cycles\",\n    \"build:watch\": \"nx watch --all --nx-ignore-cycles -- nx run \\\\$NX_PROJECT_NAME:build --nx-ignore-cycles\",\n    \"clean\": \"nx run-many --target=clean --nx-ignore-cycles\",\n    \"commit\": \"commit\",\n    \"doc:api\": \"node scripts/open-api/serve.js\",\n    \"format\": \"yarn format:code && yarn format:other\",\n    \"format:code\": \"yarn prettier:code --write\",\n    \"format:other\": \"yarn prettier:other --write\",\n    \"lint\": \"nx run-many --target=lint --nx-ignore-cycles && yarn lint:other\",\n    \"lint:fix\": \"nx run-many --target=lint --nx-ignore-cycles -- --fix\",\n    \"lint:other\": \"npm run prettier:other -- --check\",\n    \"version:check\": \"node scripts/check-package-versions.mjs && syncpack lint\",\n    \"version:fix\": \"node scripts/check-package-versions.mjs --fix --prompt && syncpack prompt && syncpack fix-mismatches\",\n    \"ai:sync\": \"tsx scripts/ai-tooling/index.ts sync\",\n    \"ai:unlink\": \"tsx scripts/ai-tooling/index.ts unlink\",\n    \"ai:status\": \"tsx scripts/ai-tooling/index.ts status\",\n    \"ai:test\": \"tsx --test scripts/ai-tooling/__tests__/*.test.ts\",\n    \"postinstall\": \"husky\",\n    \"prepack\": \"pinst --disable\",\n    \"postpack\": \"pinst --enable\",\n    \"prettier:check\": \"yarn prettier:code --check && yarn prettier:other --check\",\n    \"prettier:code\": \"prettier --cache --cache-strategy content \\\"**/*.{js,ts,jsx,tsx,json}\\\"\",\n    \"prettier:other\": \"prettier --cache --cache-strategy content \\\"**/*.{md,mdx,css,scss,yaml,yml}\\\"\",\n    \"prettier:write\": \"prettier --write \\\"**/*.{js,ts,jsx,tsx,json,md,mdx,css,scss,yaml,yml}\\\"\",\n    \"release\": \"node scripts/release.js\",\n    \"setup\": \"yarn && yarn clean && yarn build --skip-nx-cache && tsx scripts/ai-tooling/post-setup.ts\",\n    \"test:api\": \"node tests/scripts/run-api-tests.js\",\n    \"test:api:clean\": \"rimraf ./coverage\",\n    \"test:clean\": \"run-s -c test:api:clean test:e2e:clean test:cli:clean\",\n    \"test:cli\": \"node tests/scripts/run-cli-tests.js\",\n    \"test:cli:clean\": \"node tests/scripts/run-cli-tests.js clean\",\n    \"test:cli:debug\": \"node tests/scripts/run-cli-tests.js --debug\",\n    \"test:cli:update\": \"node tests/scripts/run-cli-tests.js -u\",\n    \"test:e2e\": \"node tests/scripts/run-e2e-tests.js\",\n    \"test:e2e:ce\": \"cross-env STRAPI_E2E_EDITION=ce node tests/scripts/run-e2e-tests.js\",\n    \"test:e2e:ee\": \"cross-env STRAPI_E2E_EDITION=ee node tests/scripts/run-e2e-tests.js\",\n    \"test:e2e:clean\": \"node tests/scripts/run-e2e-tests.js clean\",\n    \"test:front\": \"cross-env IS_EE=true jest --config jest.config.front.js --runInBand\",\n    \"test:front:all\": \"cross-env IS_EE=true nx run-many --target=test:front --nx-ignore-cycles\",\n    \"test:front:all:ce\": \"cross-env IS_EE=false nx run-many --target=test:front:ce --nx-ignore-cycles\",\n    \"test:front:ce\": \"cross-env IS_EE=false run test:front\",\n    \"test:front:update\": \"run test:front -u\",\n    \"test:front:update:ce\": \"yarn test:front:ce -u\",\n    \"test:front:watch\": \"cross-env IS_EE=true run test:front --watch\",\n    \"test:front:watch:ce\": \"cross-env IS_EE=false run test:front --watch\",\n    \"test:generate-app\": \"yarn build:ts && node tests/scripts/generate-test-app.js\",\n    \"test:generate-app:no-build\": \"node tests/scripts/generate-test-app.js\",\n    \"test:ts\": \"yarn test:ts:packages && yarn test:ts:front && yarn test:ts:back\",\n    \"test:ts:back\": \"nx run-many --target=test:ts:back --nx-ignore-cycles\",\n    \"test:ts:front\": \"nx run-many --target=test:ts:front --nx-ignore-cycles\",\n    \"test:ts:packages\": \"nx run-many --target=test:ts --nx-ignore-cycles\",\n    \"test:unit\": \"jest --config jest.config.js\",\n    \"test:unit:update\": \"jest --config jest.config.js -u\",\n    \"test:unit:all\": \"nx run-many --target=test:unit --nx-ignore-cycles\",\n    \"test:unit:watch\": \"run test:unit --watch\",\n    \"test:unit:coverage\": \"jest --config jest.config.js --coverage\",\n    \"test:front:coverage\": \"cross-env IS_EE=true jest --config jest.config.fr",
    "strategic_keywords": [
      "workspace",
      "workflow"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 12,
      "relevance": 16,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 8,
      "risk_signal": 6,
      "total": 74
    },
    "strategic_score": 74
  },
  {
    "owner": "denoland",
    "name": "deno",
    "full_name": "denoland/deno",
    "url": "https://github.com/denoland/deno",
    "description": "A modern runtime for JavaScript and TypeScript.",
    "language": "Rust",
    "total_stars": 107329,
    "forks": 6087,
    "stars_this_period": 30,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "deno",
        "javascript",
        "rust",
        "typescript"
      ],
      "license": "MIT",
      "open_issues": 1331,
      "created_at": "2018-05-15T01:34:26Z",
      "pushed_at": "2026-06-26T20:28:02Z",
      "homepage": "https://deno.com",
      "default_branch": "main",
      "forks": 6087,
      "watchers": 1427,
      "archived": false,
      "size_kb": 238341
    },
    "readme_content": "# Deno\n\n[![](https://img.shields.io/crates/v/deno.svg)](https://crates.io/crates/deno)\n[![Twitter badge][]][Twitter link] [![Bluesky badge][]][Bluesky link]\n[![Discord badge][]][Discord link] [![YouTube badge][]][YouTube link]\n\n<img align=\"right\" src=\"https://deno.land/logo.svg\" height=\"150px\" alt=\"the deno mascot dinosaur standing in the rain\">\n\n[Deno](https://deno.com)\n([/ˈdiːnoʊ/](https://ipa-reader.com/?text=%CB%88di%CB%90no%CA%8A), pronounced\n`dee-no`) is a JavaScript, TypeScript, and WebAssembly runtime with secure\ndefaults and a great developer experience. It's built on [V8](https://v8.dev/),\n[Rust](https://www.rust-lang.org/), and [Tokio](https://tokio.rs/).\n\nLearn more about the Deno runtime\n[in the documentation](https://docs.deno.com/runtime/manual).\n\n## Installation\n\nInstall the Deno runtime on your system using one of the commands below. Note\nthat there are a number of ways to install Deno - a comprehensive list of\ninstallation options can be found\n[here](https://docs.deno.com/runtime/manual/getting_started/installation).\n\nShell (Mac, Linux):\n\n```sh\ncurl -fsSL https://deno.land/install.sh | sh\n```\n\nPowerShell (Windows):\n\n```powershell\nirm https://deno.land/install.ps1 | iex\n```\n\n[Homebrew](https://formulae.brew.sh/formula/deno) (Mac):\n\n```sh\nbrew install deno\n```\n\n[Chocolatey](https://community.chocolatey.org/packages/deno) (Windows):\n\n```powershell\nchoco install deno\n```\n\n[WinGet](https://winstall.app/apps/DenoLand.Deno) (Windows):\n\n```powershell\nwinget install --id=DenoLand.Deno\n```\n\n[Scoop](https://scoop.sh/#/apps?q=deno&id=678d8fb557b611df996989c675b1099630a5bbee)\n(Windows):\n\n```powershell\nscoop install main/deno\n```\n\n### Build and install from source\n\nComplete instructions for building Deno from source can be found\n[here](https://github.com/denoland/deno/blob/main/.github/CONTRIBUTING.md#building-from-source).\n\n## Your first Deno program\n\nDeno can be used for many different applications, but is most commonly used to\nbuild web servers. Create a file called `server.ts` and include the following\nTypeScript code:\n\n```ts\nDeno.serve((_req: Request) => {\n  return new Response(\"Hello, world!\");\n});\n```\n\nRun your server with the following command:\n\n```sh\ndeno run --allow-net server.ts\n```\n\nThis should start a local web server on\n[http://localhost:8000](http://localhost:8000).\n\nLearn more about writing and running Deno programs\n[in the docs](https://docs.deno.com/runtime/manual).\n\n## Additional resources\n\n- **[Deno Docs](https://docs.deno.com)**: official guides and reference docs for\n  the Deno runtime, [Deno Deploy](https://deno.com/deploy), and beyond.\n- **[Deno Standard Library](https://jsr.io/@std)**: officially supported common\n  utilities for Deno programs.\n- **[JSR](https://jsr.io/)**: The open-source package registry for modern\n  JavaScript and TypeScript\n- **[Developer Blog](https://deno.com/blog)**: Product updates, tutorials, and\n  more from the Deno team.\n\n## Contributing\n\nWe appreciate your help! To contribute, please read our\n[contributing instructions](.github/CONTRIBUTING.md).\n\n[Build status - Cirrus]: https://github.com/denoland/deno/workflows/ci/badge.svg?branch=main&event=push\n[Build status]: https://github.com/denoland/deno/actions\n[Twitter badge]: https://img.shields.io/twitter/follow/deno_land.svg?style=social&label=Follow\n[Twitter link]: https://twitter.com/intent/follow?screen_name=deno_land\n[Bluesky badge]: https://img.shields.io/badge/Follow-whitesmoke?logo=bluesky\n[Bluesky link]: https://bsky.app/profile/deno.land\n[YouTube badge]: https://img.shields.io/youtube/channel/subscribers/UCqC2G2M-rg4fzg1esKFLFIw?style=social\n[YouTube link]: https://www.youtube.com/@deno_land\n[Discord badge]: https://img.shields.io/discord/684898665143206084?logo=discord&style=social\n[Discord link]: https://discord.gg/deno\n",
    "manifest_file": "Cargo.toml",
    "manifest_content": "# Copyright 2018-2026 the Deno authors. MIT license.\n\n[workspace]\nresolver = \"2\"\nmembers = [\n  \"cli\",\n  \"cli/lib\",\n  \"cli/rt\",\n  \"cli/rt_desktop\",\n  \"cli/snapshot\",\n  \"ext/bundle\",\n  \"ext/cache\",\n  \"ext/canvas\",\n  \"ext/cron\",\n  \"ext/crypto\",\n  \"ext/fetch\",\n  \"ext/ffi\",\n  \"ext/fs\",\n  \"ext/http\",\n  \"ext/image\",\n  \"ext/io\",\n  \"ext/kv\",\n  \"ext/napi\",\n  \"ext/napi/sym\",\n  \"ext/net\",\n  \"ext/node\",\n  \"ext/node_crypto\",\n  \"ext/node_sqlite\",\n  \"ext/rt_helper\",\n  \"ext/signals\",\n  \"ext/telemetry\",\n  \"ext/url\",\n  \"ext/web\",\n  \"ext/webgpu\",\n  \"ext/webidl\",\n  \"ext/websocket\",\n  \"ext/webstorage\",\n  \"libs/cache_dir\",\n  \"libs/cli_parser\",\n  \"libs/config\",\n  \"libs/core\",\n  \"libs/core/examples/snapshot\",\n  \"libs/core_testing\",\n  \"libs/crypto\",\n  \"libs/dcore\",\n  \"libs/dotenv\",\n  \"libs/eszip\",\n  \"libs/http_h1\",\n  \"libs/inspector_server\",\n  \"libs/lockfile\",\n  \"libs/maybe_sync\",\n  \"libs/napi_sys\",\n  \"libs/node_resolver\",\n  \"libs/node_shim\",\n  \"libs/npm\",\n  \"libs/npm_cache\",\n  \"libs/npm_installer\",\n  \"libs/npmrc\",\n  \"libs/ops\",\n  \"libs/ops/compile_test_runner\",\n  \"libs/package_json\",\n  \"libs/resolver\",\n  \"libs/serde_v8\",\n  \"libs/typescript_go_client\",\n  \"runtime\",\n  \"runtime/features\",\n  \"runtime/permissions\",\n  \"runtime/subprocess_windows\",\n  \"tests/bench\",\n  \"tests/bench_util\",\n  \"tests/ffi\",\n  \"tests/integration\",\n  \"tests/napi\",\n  \"tests/node_compat\",\n  \"tests/specs\",\n  \"tests/unit\",\n  \"tests/unit_node\",\n  \"tests/util/lib\",\n  \"tests/util/server\",\n  \"tests/util/test_macro\",\n  \"tools/bsdiff_helper\",\n]\n# tests/sqlite_extension is excluded because it requires rusqlite's \"loadable_extension\"\n# feature, which is incompatible with the \"session\" feature used by the rest of the workspace.\nexclude = [\"tests/util/std/hash/_wasm\", \"tests/sqlite_extension\"]\n\n[workspace.package]\nauthors = [\"the Deno authors\"]\nedition = \"2024\"\nlicense = \"MIT\"\nrepository = \"https://github.com/denoland/deno\"\n\n[workspace.dependencies]\ndeno_ast = { version = \"=0.53.2\", features = [\"transpiling\"] }\ndeno_core_icudata = \"0.77.0\"\ndeno_doc = \"=0.200.0\"\ndeno_error = \"=0.7.1\"\ndeno_graph = { version = \"=0.109.0\", default-features = false }\ndeno_lint = \"=0.84.1\"\ndeno_media_type = { version = \"=0.4.0\", features = [\"module_specifier\"] }\ndeno_native_certs = \"0.3.0\"\ndeno_path_util = \"=0.6.4\"\ndeno_semver = \"=0.10.0\"\ndeno_task_shell = \"=0.33.0\"\ndeno_terminal = \"=0.2.3\"\ndeno_unsync = { version = \"0.4.4\", default-features = false }\ndeno_whoami = \"0.1.0\"\nv8 = { version = \"149.4.0\", default-features = false, features = [\"simdutf\"] }\n\ndenokv_proto = \"0.13.0\"\ndenokv_remote = \"0.13.0\"\n# denokv_sqlite brings in bundled sqlite if we don't disable the default features\ndenokv_sqlite = { default-features = false, version = \"0.13.0\" }\n\n# exts\ndeno_bundle_runtime = { version = \"0.39.0\", path = \"./ext/bundle\" }\ndeno_cache = { version = \"0.185.0\", path = \"./ext/cache\" }\ndeno_canvas = { version = \"0.114.0\", path = \"./ext/canvas\" }\ndeno_cron = { version = \"0.132.0\", path = \"./ext/cron\" }\ndeno_crypto = { version = \"0.266.0\", path = \"./ext/crypto\" }\ndeno_fetch = { version = \"0.276.0\", path = \"./ext/fetch\" }\ndeno_ffi = { version = \"0.239.0\", path = \"./ext/ffi\" }\ndeno_fs = { version = \"0.162.0\", path = \"./ext/fs\" }\ndeno_http = { version = \"0.250.0\", path = \"./ext/http\" }\ndeno_image = { version = \"0.28.0\", path = \"./ext/image\" }\ndeno_io = { version = \"0.162.0\", path = \"./ext/io\" }\ndeno_kv = { version = \"0.160.0\", path = \"./ext/kv\" }\ndeno_napi = { version = \"0.183.0\", path = \"./ext/napi\" }\ndeno_net = { version = \"0.244.0\", path = \"./ext/net\" }\ndeno_node = { version = \"0.190.0\", path = \"./ext/node\" }\ndeno_node_crypto = { version = \"0.22.0\", path = \"./ext/node_crypto\" }\ndeno_node_sqlite = { version = \"0.22.0\", path = \"./ext/node_sqlite\" }\ndeno_os = { version = \"0.69.0\", path = \"./ext/os\" }\ndeno_process = { version = \"0.67.0\", path = \"./ext/process\" }\ndeno_signals = { version = \"0.43.0\", path = \"./ext/signals\" }\ndeno_telemetry = { version = \"0.74.0\", path = \"./ext/telemetry\" }\ndeno_tls = { version = \"0.239.0\", path = \"./ext/tls\" }\ndeno_web = { version = \"0.283.0\", path = \"./ext/web\" }\ndeno_webgpu = { version = \"0.219.0\", path = \"./ext/webgpu\" }\ndeno_webidl = { version = \"0.252.0\", path = \"./ext/webidl\" }\ndeno_websocket = { version = \"0.257.0\", path = \"./ext/websocket\" }\ndeno_webstorage = { version = \"0.247.0\", path = \"./ext/webstorage\" }\ndenort_helper = { version = \"0.50.0\", path = \"./ext/rt_helper\" }\n\n# workspace libraries\ndeno_bench_util = { version = \"0.246.0\", path = \"./tests/bench_util\" }\ndeno_cache_dir = { version = \"0.44.0\", path = \"./libs/cache_dir\" }\ndeno_cli_parser = { version = \"0.2.0\", path = \"./libs/cli_parser\" }\ndeno_config = { version = \"0.102.0\", features = [\"workspace\"], path = \"./libs/config\" }\ndeno_core = { version = \"0.405.0\", path = \"./libs/core\" }\ndeno_core_testing = { path = \"./libs/core_testing\" }\ndeno_crypto_provider = { version = \"0.46.0\", path = \"./libs/crypto\" }\ndeno_dotenv = { version = \"0.21.0\", path = \"./libs/dotenv\" }\ndeno_features = { version = \"0.49.0\", path = \"./runtime",
    "strategic_keywords": [
      "rag",
      "runtime",
      "workspace",
      "workflow"
    ],
    "relationship_label": "Runtime 参考",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 12,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 87
    },
    "strategic_score": 87
  },
  {
    "owner": "medusajs",
    "name": "medusa",
    "full_name": "medusajs/medusa",
    "url": "https://github.com/medusajs/medusa",
    "description": "The world's most flexible commerce platform.",
    "language": "TypeScript",
    "total_stars": 34670,
    "forks": 4784,
    "stars_this_period": 30,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "commerce",
        "e-commerce",
        "ecommerce",
        "framework",
        "javascript",
        "medusa",
        "nodejs",
        "react",
        "typescript"
      ],
      "license": "MIT",
      "open_issues": 134,
      "created_at": "2020-01-18T13:39:04Z",
      "pushed_at": "2026-06-26T17:28:37Z",
      "homepage": "https://medusajs.com",
      "default_branch": "develop",
      "forks": 4784,
      "watchers": 190,
      "archived": false,
      "size_kb": 797256
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://www.medusajs.com\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg\">\n    <img alt=\"Medusa logo\" src=\"https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg\">\n    </picture>\n  </a>\n</p>\n<h1 align=\"center\">\n  Medusa\n</h1>\n\n<h4 align=\"center\">\n  <a href=\"https://docs.medusajs.com\">Documentation</a> |\n  <a href=\"https://www.medusajs.com\">Website</a>\n</h4>\n\n<p align=\"center\">\n  Building blocks for digital commerce\n</p>\n<p align=\"center\">\n  <a href=\"https://github.com/medusajs/medusa/blob/develop/LICENSE\">\n    <img src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"Medusa is released under the MIT license.\" />\n  </a>\n  <a href=\"https://github.com/medusajs/medusa/blob/develop/CONTRIBUTING.md\">\n    <img src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat\" alt=\"PRs welcome!\" />\n  </a>\n <p align=\"center\">\n  <a href=\"https://twitter.com/intent/follow?screen_name=medusajs\">\n    <img src=\"https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs\" alt=\"Follow @medusajs\" />\n  <a href=\"https://discord.gg/medusajs\">\n    <img src=\"https://img.shields.io/badge/chat-on%20discord-7289DA.svg\" alt=\"Discord Chat\" />\n  </a>\n</p>\n\n## Getting Started\n\nThe fastest way to get started is with [Medusa Cloud](https://medusajs.com/cloud/). It provides a managed environment optimized for Medusa applications, with automated deployments, scaling, and maintenance. [Get started on Medusa Cloud](https://cloud.medusajs.com)\n\nTo set up a Medusa application locally, visit the [Documentation](https://docs.medusajs.com/learn).\n\n## About Medusa\n\nMedusa is a commerce platform with a built-in framework for customization that allows you to build custom commerce applications without reinventing core commerce logic. The framework and modules can be used to support advanced B2B or DTC commerce stores, marketplaces, distributor platforms, PoS systems, service businesses, or similar solutions that need foundational commerce primitives. All commerce modules are open-source and freely available on npm.\n\nLearn more about [Medusa’s architecture](https://docs.medusajs.com/learn/advanced-development/architecture/overview) and [commerce modules](https://docs.medusajs.com/resources/commerce-modules) in the Docs.\n\n## Upgrades & Integrations\n\nFollow the [Release Notes](https://github.com/medusajs/medusa/releases) to keep your Medusa project up-to-date.\n\nCheck out all [available Medusa integrations](https://medusajs.com/integrations/).\n\n## Community & Contributions\n\nThe core team is available in [GitHub Discussions](https://github.com/medusajs/medusa/discussions), where you can create issues, share ideas, and discuss roadmap.\n\nOur [Contribution Guide](https://github.com/medusajs/medusa/blob/develop/CONTRIBUTING.md) describes how to contribute to the codebase and Docs.\n\nJoin our [Discord server](https://discord.gg/medusajs) to meet and discuss with more than 14,000 other community members.\n\n## Other channels\n\n- [GitHub Issues](https://github.com/medusajs/medusa/issues)\n- [Community Discord](https://discord.gg/medusajs)\n- [Twitter](https://twitter.com/medusajs)\n- [LinkedIn](https://www.linkedin.com/company/medusajs)\n- [Medusa Blog](https://medusajs.com/blog/)\n\n## License\n\nLicensed under the [MIT License](https://github.com/medusajs/medusa/blob/develop/LICENSE).\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"root\",\n  \"private\": true,\n  \"workspaces\": {\n    \"packages\": [\n      \"packages/medusa\",\n      \"packages/medusa-test-utils\",\n      \"packages/modules/*\",\n      \"packages/modules/providers/*\",\n      \"packages/plugins/*\",\n      \"packages/core/*\",\n      \"packages/framework/*\",\n      \"packages/cli/*\",\n      \"packages/cli/oas/*\",\n      \"packages/*\",\n      \"packages/admin/*\",\n      \"packages/design-system/*\",\n      \"packages/generated/*\",\n      \"integration-tests/**/*\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@atomico/rollup-plugin-sizes\": \"^1.1.4\",\n    \"@faker-js/faker\": \"^9.2.0\",\n    \"@medusajs/eslint-plugin\": \"workspace:^\",\n    \"@rollup/plugin-node-resolve\": \"^15.1.0\",\n    \"@rollup/plugin-replace\": \"^5.0.2\",\n    \"@storybook/addon-essentials\": \"^8.3.5\",\n    \"@storybook/addon-interactions\": \"^8.3.5\",\n    \"@storybook/addon-links\": \"^8.3.5\",\n    \"@storybook/addon-styling\": \"^1.3.7\",\n    \"@storybook/blocks\": \"^8.3.5\",\n    \"@storybook/react\": \"^8.3.5\",\n    \"@storybook/react-vite\": \"^8.3.5\",\n    \"@storybook/testing-library\": \"^0.2.2\",\n    \"@swc/core\": \"^1.7.28\",\n    \"@swc/helpers\": \"^0.5.11\",\n    \"@swc/jest\": \"^0.2.36\",\n    \"@testing-library/dom\": \"^9.3.1\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^14.0.0\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@types/autocannon\": \"^7.12.5\",\n    \"@types/chalk\": \"^2.2.0\",\n    \"@types/commander\": \"^2.12.2\",\n    \"@types/compression\": \"^1.7.5\",\n    \"@types/configstore\": \"^6.0.0\",\n    \"@types/cors\": \"^2.8.17\",\n    \"@types/express\": \"^4.17.21\",\n    \"@types/fs-extra\": \"11.0.1\",\n    \"@types/inquirer\": \"^9.0.3\",\n    \"@types/js-yaml\": \"^4.0.9\",\n    \"@types/jsdom\": \"^27.0.0\",\n    \"@types/jsonwebtoken\": \"^8.5.9\",\n    \"@types/lodash\": \"^4.17.15\",\n    \"@types/lodash.debounce\": \"^4.0.9\",\n    \"@types/lodash.isequal\": \"^4.5.8\",\n    \"@types/lodash.mergewith\": \"^4.6.9\",\n    \"@types/multer\": \"^2.0.0\",\n    \"@types/node\": \"^20.12.11\",\n    \"@types/node-emoji\": \"^1.8.2\",\n    \"@types/react\": \"^18.3.2\",\n    \"@types/react-dom\": \"^18.2.25\",\n    \"@types/validator\": \"^13.7.17\",\n    \"@types/wait-on\": \"^5.3.1\",\n    \"@types/yargs\": \"^15.0.15\",\n    \"@typescript-eslint/eslint-plugin\": \"^6.19.0\",\n    \"@typescript-eslint/parser\": \"^6.19.0\",\n    \"@typescript-eslint/rule-tester\": \"^8.0.0\",\n    \"@vitejs/plugin-react\": \"^4.2.1\",\n    \"@vitest/coverage-v8\": \"^0.32.2\",\n    \"ajv\": \"^8.17.1\",\n    \"autocannon\": \"^8.0.0\",\n    \"autoprefixer\": \"^10.4.19\",\n    \"awilix\": \"^8.0.1\",\n    \"axios\": \"^1.13.1\",\n    \"axios-mock-adapter\": \"^1.19.0\",\n    \"chromatic\": \"^6.20.0\",\n    \"configstore\": \"^5.0.1\",\n    \"cross-env\": \"^5.2.1\",\n    \"esbuild\": \"^0.25.0\",\n    \"eslint\": \"^8.40.0\",\n    \"eslint-config-google\": \"^0.14.0\",\n    \"eslint-config-prettier\": \"^8.8.0\",\n    \"eslint-plugin-prettier\": \"^4.2.1\",\n    \"eslint-plugin-react\": \"^7.31.11\",\n    \"eslint-plugin-react-hooks\": \"^4.6.0\",\n    \"eslint-plugin-react-refresh\": \"^0.4.5\",\n    \"eslint-plugin-storybook\": \"^10.0.1\",\n    \"eslint-plugin-unused-imports\": \"^2.0.0\",\n    \"expect-type\": \"^0.20.0\",\n    \"express\": \"^4.21.0\",\n    \"faker\": \"^5.5.3\",\n    \"get-port\": \"^5.1.1\",\n    \"glob\": \"13.0.6\",\n    \"import-from\": \"^3.0.0\",\n    \"ioredis\": \"^5.4.1\",\n    \"jest\": \"^29.7.0\",\n    \"js-yaml\": \"^4.1.0\",\n    \"jsdom\": \"^27.1.0\",\n    \"lint-staged\": \"^11.2.6\",\n    \"msw\": \"^2.3.0\",\n    \"node-notifier\": \"^10.0.1\",\n    \"nodemon\": \"^2.0.20\",\n    \"pg-god\": \"^1.0.12\",\n    \"postcss\": \"^8.4.38\",\n    \"posthog-node\": \"^5.11.0\",\n    \"prettier\": \"^2.8.8\",\n    \"prettier-plugin-tailwindcss\": \"^0.2.3\",\n    \"prop-types\": \"^15.8.1\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\",\n    \"react-router-dom\": \"6.30.3\",\n    \"resize-observer-polyfill\": \"^1.5.1\",\n    \"resolve-cwd\": \"^3.0.0\",\n    \"rimraf\": \"^5.0.1\",\n    \"rollup\": \"^4.28.1\",\n    \"rollup-plugin-esbuild\": \"^5.0.0\",\n    \"rollup-plugin-ts\": \"^3.2.0\",\n    \"rollup-plugin-visualizer\": \"^5.9.2\",\n    \"storybook\": \"^8.3.5\",\n    \"supertest\": \"^7.1.4\",\n    \"tailwindcss\": \"^3.4.3\",\n    \"ts-jest\": \"^29.1.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"tsc-alias\": \"^1.8.7\",\n    \"tsup\": \"^8.4.0\",\n    \"turbo\": \"^1.6.3\",\n    \"typescript\": \"^5.6.2\",\n    \"uuid\": \"^9.0.0\",\n    \"vite\": \"^5.4.21\",\n    \"vite-plugin-inspect\": \"^0.8.7\",\n    \"vite-plugin-turbosnap\": \"^1.0.2\",\n    \"vitest\": \"^3.0.5\",\n    \"yalc\": \"^1.0.0-pre.53\",\n    \"zod\": \"4.2.0\",\n    \"zod-validation-error\": \"5.0.0\"\n  },\n  \"lint-staged\": {\n    \"*.{js,jsx,ts,tsx}\": \"yarn run lint\",\n    \"*.{md,yaml,yml}\": \"prettier --write\"\n  },\n  \"scripts\": {\n    \"build\": \"turbo run build --concurrency=100% --no-daemon\",\n    \"lint\": \"eslint --ignore-path .eslintignore --ext .js,.ts,.tsx .\",\n    \"lint:medusa\": \"eslint --no-eslintrc --config eslint.medusa.cjs --ignore-path .eslintignore --ext .js,.ts,.tsx .\",\n    \"lint:path\": \"eslint --ignore-path .eslintignore --ext .js,.ts,.tsx\",\n    \"prettier\": \"prettier\",\n    \"jest\": \"jest\",\n    \"test\": \"turbo run test --no-daemon --no-cache --force\",\n    \"test:chunk\": \"./scripts/run-workspace-unit-tests-in-chunks.sh\",\n    \"test:integration:packages:fast\": \"turbo run test:in",
    "strategic_keywords": [
      "workspace"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 12,
      "relevance": 8,
      "novelty": 8,
      "productize": 14,
      "adoption": 10,
      "relation": 7,
      "risk_signal": 6,
      "total": 65
    },
    "strategic_score": 65
  },
  {
    "owner": "oven-sh",
    "name": "bun",
    "full_name": "oven-sh/bun",
    "url": "https://github.com/oven-sh/bun",
    "description": "Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one",
    "language": "Rust",
    "total_stars": 93471,
    "forks": 4734,
    "stars_this_period": 29,
    "source_slice": "rust",
    "source_slices": [
      "rust"
    ],
    "metadata": {
      "topics": [
        "bun",
        "bundler",
        "javascript",
        "javascriptcore",
        "jsx",
        "nodejs",
        "npm",
        "react",
        "transpiler",
        "typescript",
        "zig",
        "ziglang"
      ],
      "license": "NOASSERTION",
      "open_issues": 6629,
      "created_at": "2021-04-14T00:48:17Z",
      "pushed_at": "2026-06-26T22:03:26Z",
      "homepage": "https://bun.com",
      "default_branch": "main",
      "forks": 4734,
      "watchers": 629,
      "archived": false,
      "size_kb": 588577
    },
    "readme_content": "<p align=\"center\">\n  <a href=\"https://bun.com\"><img src=\"https://github.com/user-attachments/assets/50282090-adfd-4ddb-9e27-c30753c6b161\" alt=\"Logo\" height=170></a>\n</p>\n<h1 align=\"center\">Bun</h1>\n\n<p align=\"center\">\n<a href=\"https://bun.com/discord\" target=\"_blank\"><img height=20 src=\"https://img.shields.io/discord/876711213126520882\" /></a>\n<img src=\"https://img.shields.io/github/stars/oven-sh/bun\" alt=\"stars\">\n<a href=\"https://twitter.com/jarredsumner/status/1542824445810642946\"><img src=\"https://img.shields.io/static/v1?label=speed&message=fast&color=success\" alt=\"Bun speed\" /></a>\n</p>\n\n<div align=\"center\">\n  <a href=\"https://bun.com/docs\">Documentation</a>\n  <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>\n  <a href=\"https://bun.com/discord\">Discord</a>\n  <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>\n  <a href=\"https://github.com/oven-sh/bun/issues/new\">Issues</a>\n  <span>&nbsp;&nbsp;•&nbsp;&nbsp;</span>\n  <a href=\"https://github.com/oven-sh/bun/issues/159\">Roadmap</a>\n  <br />\n</div>\n\n### [Read the docs →](https://bun.com/docs)\n\n## What is Bun?\n\nBun is an all-in-one toolkit for JavaScript and TypeScript apps. It ships as a single executable called `bun`.\n\nAt its core is the _Bun runtime_, a fast JavaScript runtime designed as **a drop-in replacement for Node.js**. It's written in Zig and powered by JavaScriptCore under the hood, dramatically reducing startup times and memory usage.\n\n```bash\nbun run index.tsx             # TS and JSX supported out-of-the-box\n```\n\nThe `bun` command-line tool also implements a test runner, script runner, and Node.js-compatible package manager. Instead of 1,000 node_modules for development, you only need `bun`. Bun's built-in tools are significantly faster than existing options and usable in existing Node.js projects with little to no changes.\n\n```bash\nbun test                      # run tests\nbun run start                 # run the `start` script in `package.json`\nbun install <pkg>             # install a package\nbunx cowsay 'Hello, world!'   # execute a package\n```\n\n## Install\n\nBun supports Linux (x64 & arm64), macOS (x64 & Apple Silicon), and Windows (x64 & arm64).\n\n> **Linux users** — Kernel version 5.6 or higher is strongly recommended, but the minimum is 5.1.\n\n> **x64 users** — if you see \"illegal instruction\" or similar errors, check our [CPU requirements](https://bun.com/docs/installation#cpu-requirements-and-baseline-builds)\n\n```sh\n# with install script (recommended)\ncurl -fsSL https://bun.com/install | bash\n\n# on windows\npowershell -c \"irm bun.sh/install.ps1 | iex\"\n\n# with npm\nnpm install -g bun\n\n# with Homebrew\nbrew tap oven-sh/bun\nbrew install bun\n\n# with Docker\ndocker pull oven/bun\ndocker run --rm --init --ulimit memlock=-1:-1 oven/bun\n```\n\n### Upgrade\n\nTo upgrade to the latest version of Bun, run:\n\n```sh\nbun upgrade\n```\n\nBun automatically releases a canary build on every commit to `main`. To upgrade to the latest canary build, run:\n\n```sh\nbun upgrade --canary\n```\n\n[View canary build](https://github.com/oven-sh/bun/releases/tag/canary)\n\n## Quick links\n\n- Intro\n  - [What is Bun?](https://bun.com/docs/index)\n  - [Installation](https://bun.com/docs/installation)\n  - [Quickstart](https://bun.com/docs/quickstart)\n  - [TypeScript](https://bun.com/docs/typescript)\n  - [TypeScript 6](https://bun.com/docs/typescript-6)\n\n- Templating\n  - [`bun init`](https://bun.com/docs/runtime/templating/init)\n  - [`bun create`](https://bun.com/docs/runtime/templating/create)\n\n- Runtime\n  - [`bun run`](https://bun.com/docs/runtime/index)\n  - [File types (Loaders)](https://bun.com/docs/runtime/file-types)\n  - [JSX](https://bun.com/docs/runtime/jsx)\n  - [Environment variables](https://bun.com/docs/runtime/environment-variables)\n  - [Bun APIs](https://bun.com/docs/runtime/bun-apis)\n  - [Web APIs](https://bun.com/docs/runtime/web-apis)\n  - [Node.js compatibility](https://bun.com/docs/runtime/nodejs-compat)\n  - [Plugins](https://bun.com/docs/runtime/plugins)\n  - [Watch mode / Hot Reloading](https://bun.com/docs/runtime/watch-mode)\n  - [Module resolution](https://bun.com/docs/runtime/module-resolution)\n  - [Auto-install](https://bun.com/docs/runtime/auto-install)\n  - [bunfig.toml](https://bun.com/docs/runtime/bunfig)\n  - [Debugger](https://bun.com/docs/runtime/debugger)\n  - [REPL](https://bun.com/docs/runtime/repl)\n  - [$ Shell](https://bun.com/docs/runtime/shell)\n\n- Package manager\n  - [`bun install`](https://bun.com/docs/pm/cli/install)\n  - [`bun add`](https://bun.com/docs/pm/cli/add)\n  - [`bun remove`](https://bun.com/docs/pm/cli/remove)\n  - [`bun update`](https://bun.com/docs/pm/cli/update)\n  - [`bun link`](https://bun.com/docs/pm/cli/link)\n  - [`bun pm`](https://bun.com/docs/pm/cli/pm)\n  - [`bun outdated`](https://bun.com/docs/pm/cli/outdated)\n  - [`bun publish`](https://bun.com/docs/pm/cli/publish)\n  - [`bun patch`](https://bun.com/docs/pm/cli/patch)\n  - [`bun why`](https://bun.com/docs/pm/cli/why)\n  - [`bun audit`](https://bun.com/docs/pm/cli/audit)\n  - [`bun info`](https://bun.com/docs/pm/cli/info)\n  - [Global cache](https://bun.com/docs/pm/global-cache)\n  - [Global store](https://bun.com/docs/pm/global-store)\n  - [Isolated installs](https://bun.com/docs/pm/isolated-installs)\n  - [Workspaces](https://bun.com/docs/pm/workspaces)\n  - [Catalogs](https://bun.com/docs/pm/catalogs)\n  - [Lifecycle scripts](https://bun.com/docs/pm/lifecycle)\n  - [Filter](https://bun.com/docs/pm/filter)\n  - [Lockfile](https://bun.com/docs/pm/lockfile)\n  - [Scopes and registries](https://bun.com/docs/pm/scopes-registries)\n  - [Overrides and resolutions](https://bun.com/docs/pm/overrides)\n  - [Security scanner API](https://bun.com/docs/pm/security-scanner-api)\n  - [`.npmrc`](https://bun.com/docs/pm/npmrc)\n\n- Bundler\n  - [`Bun.build`](https://bun.com/docs/bundler/index)\n  - [Loaders](https://bun.com/docs/bundler/loaders)\n  - [Plugins](https://bun.com/docs/bundler/plugins)\n  - [Macros](https://bun.com/docs/bundler/macros)\n  - [vs esbuild](https://bun.com/docs/bundler/esbuild)\n  - [Single-file executable](https://bun.com/docs/bundler/executables)\n  - [CSS](https://bun.com/docs/bundler/css)\n  - [HTML & static sites](https://bun.com/docs/bundler/html-static)\n  - [Hot Module Replacement (HMR)](https://bun.com/docs/bundler/hot-reloading)\n  - [Full-stack with HTML imports](https://bun.com/docs/bundler/fullstack)\n  - [Standalone HTML](https://bun.com/docs/bundler/standalone-html)\n  - [Bytecode caching](https://bun.com/docs/bundler/bytecode)\n  - [Minifier](https://bun.com/docs/bundler/minifier)\n\n- Test runner\n  - [`bun test`](https://bun.com/docs/test/index)\n  - [Writing tests](https://bun.com/docs/test/writing-tests)\n  - [Lifecycle hooks](https://bun.com/docs/test/lifecycle)\n  - [Mocks](https://bun.com/docs/test/mocks)\n  - [Snapshots](https://bun.com/docs/test/snapshots)\n  - [Dates and times](https://bun.com/docs/test/dates-times)\n  - [DOM testing](https://bun.com/docs/test/dom)\n  - [Code coverage](https://bun.com/docs/test/code-coverage)\n  - [Configuration](https://bun.com/docs/test/configuration)\n  - [Discovery](https://bun.com/docs/test/discovery)\n  - [Reporters](https://bun.com/docs/test/reporters)\n  - [Runtime Behavior](https://bun.com/docs/test/runtime-behavior)\n\n- Package runner\n  - [`bunx`](https://bun.com/docs/pm/bunx)\n\n- API\n  - [HTTP server (`Bun.serve`)](https://bun.com/docs/runtime/http/server)\n  - [HTTP routing](https://bun.com/docs/runtime/http/routing)\n  - [HTTP error handling](https://bun.com/docs/runtime/http/error-handling)\n  - [HTTP metrics](https://bun.com/docs/runtime/http/metrics)\n  - [WebSockets](https://bun.com/docs/runtime/http/websockets)\n  - [Workers](https://bun.com/docs/runtime/workers)\n  - [Binary data](https://bun.com/docs/runtime/binary-data)\n  - [Streams](https://bun.com/docs/runtime/streams)\n  - [File I/O (`Bun.file`)](https://bun.com/docs/runtime/file-io)\n  - [Archive (tar)](https://bun.com/docs/runtime/archive)\n  - [SQLite (`bun:sqlite`)](https://bun.com/docs/runtime/sqlite)\n  - [PostgreSQL (`Bun.sql`)](https://bun.com/docs/runtime/sql)\n  - [Redis (`Bun.redis`)](https://bun.com/docs/runtime/redis)\n  - [S3 Client (`Bun.s3`)](https://bun.com/docs/runtime/s3)\n  - [FileSystemRouter](https://bun.com/docs/runtime/file-system-router)\n  - [TCP sockets](https://bun.com/docs/runtime/networking/tcp)\n  - [UDP sockets](https://bun.com/docs/runtime/networking/udp)\n  - [Globals](https://bun.com/docs/runtime/globals)\n  - [Child processes (spawn)](https://bun.com/docs/runtime/child-process)\n  - [Cron (`Bun.cron`)](https://bun.com/docs/runtime/cron)\n  - [WebView](https://bun.com/docs/runtime/webview)\n  - [Transpiler (`Bun.Transpiler`)](https://bun.com/docs/runtime/transpiler)\n  - [Hashing](https://bun.com/docs/runtime/hashing)\n  - [Colors (`Bun.color`)](https://bun.com/docs/runtime/color)\n  - [Console](https://bun.com/docs/runtime/console)\n  - [FFI (`bun:ffi`)](https://bun.com/docs/runtime/ffi)\n  - [C Compiler (`bun:ffi` cc)](https://bun.com/docs/runtime/c-compiler)\n  - [HTMLRewriter](https://bun.com/docs/runtime/html-rewriter)\n  - [Cookies (`Bun.Cookie`)](https://bun.com/docs/runtime/cookies)\n  - [CSRF (`Bun.CSRF`)](https://bun.com/docs/runtime/csrf)\n  - [Secrets (`Bun.secrets`)](https://bun.com/docs/runtime/secrets)\n  - [YAML (`Bun.YAML`)](https://bun.com/docs/runtime/yaml)\n  - [TOML (`Bun.TOML`)](https://bun.com/docs/runtime/toml)\n  - [JSON5](https://bun.com/docs/runtime/json5)\n  - [JSONL](https://bun.com/docs/runtime/jsonl)\n  - [Markdown](https://bun.com/docs/runtime/markdown)\n  - [Image processing](https://bun.com/docs/runtime/image)\n  - [Utils](https://bun.com/docs/runtime/utils)\n  - [Node-API](https://bun.com/docs/runtime/node-api)\n  - [Glob (`Bun.Glob`)](https://bun.com/docs/runtime/glob)\n  - [Semver (`Bun.semver`)](https://bun.com/docs/runtime/semver)\n  - [DNS](https://bun.com/docs/runtime/networking/dns)\n  - [fetch API extensions](https://bun.com/docs/runtime/networking/fetch)\n\n## Guides\n\n- Deployment\n  - [Deploy to Vercel](https://bun.com/guides/deployment/vercel)\n  - [Deploy to Railway](https://bun.com/guides/deployment/railway)\n  - [Deploy to Render](https://bun.com/guides/deployment/render)\n  - [Deploy to AWS Lambda](https://bun.com/guides/deployment/aws-lambda)\n  - [Deploy to DigitalOcean](https://bun.com/guides/deployment/digital-ocean)\n  - [Deploy to Google Cloud Run](https://bun.com/guides/deployment/google-cloud-run)\n\n- Binary\n  - [Convert a Blob to a string](https://bun.com/guides/binary/blob-to-string)\n  - [Convert a Buffer to a blob](https://bun.com/guides/binary/buffer-to-blob)\n  - [Convert a Blob to a DataView](https://bun.com/guides/binary/blob-to-dataview)\n  - [Convert a Buffer to a string](https://bun.com/guides/binary/buffer-to-string)\n  - [Convert a Blob to a ReadableStream](https://bun.com/guides/binary/blob-to-stream)\n  - [Convert a Blob to a Uint8Array](https://bun.com/guides/binary/blob-to-typedarray)\n  - [Convert a DataView to a string](https://bun.com/guides/binary/dataview-to-string)\n  - [Convert a Uint8Array to a Blob](https://bun.com/guides/binary/typedarray-to-blob)\n  - [Convert a Blob to an ArrayBuffer](https://bun.com/guides/binary/blob-to-arraybuffer)\n  - [Convert an ArrayBuffer to a Blob](https://bun.com/guides/binary/arraybuffer-to-blob)\n  - [Convert a Buffer to a Uint8Array](https://bun.com/guides/binary/buffer-to-typedarray)\n  - [Convert a Uint8Array to a Buffer](https://bun.com/guides/binary/typedarray-to-buffer)\n  - [Convert a Uint8Array to a string](https://bun.com/guides/binary/typedarray-to-string)\n  - [Convert a Buffer to an ArrayBuffer](https://bun.com/guides/binary/buffer-to-arraybuffer)\n  - [Convert an ArrayBuffer to a Buffer](https://bun.com/guides/binary/arraybuffer-to-buffer)\n  - [Convert an ArrayBuffer to a string](https://bun.com/guides/binary/arraybuffer-to-string)\n  - [Convert a Uint8Array to a DataView](https://bun.com/guides/binary/typedarray-to-dataview)\n  - [Convert a Buffer to a ReadableStream](https://bun.com/guides/binary/buffer-to-readablestream)\n  - [Convert a Uint8Array to an ArrayBuffer](https://bun.com/g",
    "manifest_file": "Cargo.toml",
    "manifest_content": "[workspace]\nresolver = \"2\"\nmembers = [\n  \"src/opaque\",\n  \"src/analytics\",\n  \"src/api\",\n  \"src/base64\",\n  \"src/bundler\",\n  \"src/collections\",\n  \"src/css\",\n  \"src/errno\",\n  \"src/glob\",\n  \"src/http\",\n  \"src/install\",\n  \"src/install/windows-shim\",\n  \"src/parsers\",\n  \"src/io\",\n  \"src/js\",\n  \"src/libarchive\",\n  \"src/md\",\n  \"src/paths\",\n  \"src/resolver\",\n  \"src/safety\",\n  \"src/semver\",\n  \"src/sourcemap\",\n  \"src/sql\",\n  \"src/sys\",\n  \"src/threading\",\n  \"src/valkey\",\n  \"src/watcher\",\n  \"src/cares_sys\",\n  \"src/clap\",\n  \"src/clap_macros\",\n  \"src/crash_handler\",\n  \"src/csrf\",\n  \"src/css_jsc\",\n  \"src/dns\",\n  \"src/dotenv\",\n  \"src/event_loop\",\n  \"src/exe_format\",\n  \"src/highway\",\n  \"src/http_jsc\",\n  \"src/http_types\",\n  \"src/ini\",\n  \"src/install_jsc\",\n  \"src/install_types\",\n  \"src/js_parser\",\n  \"src/js_parser_jsc\",\n  \"src/js_printer\",\n  \"src/libdeflate_sys\",\n  \"src/libuv_sys\",\n  \"src/ast\",\n  \"src/ast_jsc\",\n  \"src/lolhtml_sys\",\n  \"src/picohttp\",\n  \"src/s3_signing\",\n  \"src/sql_jsc\",\n  \"src/zlib\",\n  \"src/patch\",\n  \"src/platform\",\n  \"src/sha_hmac\",\n  \"src/sys_jsc\",\n  \"src/zlib_sys\",\n  \"src/dispatch\",\n  \"src/brotli\",\n  \"src/bundler_jsc\",\n  \"src/perf\",\n  \"src/resolve_builtins\",\n  \"src/sourcemap_jsc\",\n  \"src/url\",\n  \"src/windows_sys\",\n  \"src/jsc\",\n  \"src/jsc_macros\",\n  \"src/ptr\",\n  \"src/boringssl\",\n  \"src/brotli_sys\",\n  \"src/bun_alloc\",\n  \"src/mimalloc_sys\",\n  \"src/semver_jsc\",\n  \"src/standalone_graph\",\n  \"src/uws\",\n  \"src/wyhash\",\n  \"src/hash\",\n  \"src/boringssl_sys\",\n  \"src/bun_core\",\n  \"src/bun_core_macros\",\n  \"src/bun_output_tags\",\n  \"src/patch_jsc\",\n  \"src/router\",\n  \"src/shell_parser\",\n  \"src/tcc_sys\",\n  \"src/uws_sys\",\n  \"src/zstd\",\n  \"src/options_types\",\n  \"src/output\",\n  \"src/runtime\",\n  \"src/simdutf_sys\",\n  \"src/which\",\n  \"src/transpiler\",\n  \"src/react_compiler\",\n  \"src/spawn\",\n  \"src/spawn_sys\",\n  \"src/bunfig\",\n  \"src/bun_bin\",\n]\n# `vendor/lolhtml/c-api` is consumed as a path dependency of\n# `bun_lolhtml_sys` so its `#[no_mangle]` C API ends up inside\n# `libbun_rust.a` (one Rust staticlib → one copy of std on the link line).\n# It is deliberately NOT a workspace member: keeping it excluded means its\n# `[profile]` section is ignored and its heavy dev-dependencies (criterion,\n# html5ever) never enter `Cargo.lock`. The source is fetched into `vendor/`\n# by the build system (`scripts/build/deps/lolhtml.ts`) before cargo runs.\nexclude = [\"vendor\"]\n\n[workspace.package]\nversion = \"0.0.0\"\nedition = \"2024\"\n\n# ─── Release optimization ───────────────────────────────────────────────────\n# Zig's release build is one compilation unit with whole-program optimization.\n# Cargo's defaults (lto=false, codegen-units=16) leave us at ~105 crates × 16\n# CGUs ≈ 1680 separately-optimized units with NO cross-crate inlining beyond\n# `#[inline]`-annotated leaf fns. `lto = \"fat\"` + `codegen-units = 1` collapses\n# the whole Rust crate graph into one LLVM module, matching Zig's shape.\n#\n# `panic = \"abort\"` — the `std::panic` hook in `bun_crash_handler` aborts,\n# so `catch_unwind` is unreachable for Rust panics regardless, and no landing\n# pads means smaller `.pdata`/`.xdata`.\n#\n# Cross-language LTO (`-C linker-plugin-lto`, so Rust bitcode joins the C++\n# `-flto=full` link) is wired in `scripts/build/rust.ts` behind `cfg.lto`; it\n# requires the *linker's* LLVM to be ≥ rustc's bundled LLVM, so the build\n# points `-fuse-ld` at rustc's `rust-lld` rather than clang's when enabled.\n[profile.release]\nlto = \"fat\"\ncodegen-units = 1\ndebug = \"line-tables-only\"\nstrip = \"none\"\npanic = \"abort\"\n\n[profile.dev]\npanic = \"abort\"\n\n# Fast-iteration release build for local benching when fat LTO's link time\n# (minutes) is in the way. `bun run build:release --cargo-profile=release-dev`.\n[profile.release-dev]\ninherits = \"release\"\nlto = \"thin\"\ncodegen-units = 16\n\n# Release with debuginfo retained for `perf record` / flamegraphs. Same opt\n# level as release; binary is large but profilable.\n[profile.release-profiling]\ninherits = \"release\"\ndebug = \"line-tables-only\"\nstrip = \"none\"\n\n# `bun_shim_impl.exe` — the Windows .bin/ launcher PE that gets\n# `include_bytes!`'d into bun.exe and copied next to every package binary by\n# `bun install`. Zig built it freestanding ReleaseFast (no libc,\n# single-threaded, ~13 KiB). The Rust port matches that with\n# `#![no_std]`/`#![no_main]` + a custom `/ENTRY:` (no CRT), and the build\n# script supplies `-Zbuild-std=core,compiler_builtins` with\n# `panic_immediate_abort` so panic-with-args compiles to a bare trap (no\n# `core::fmt::Arguments` materialised). `panic = \"abort\"` + `lto` +\n# `codegen-units = 1` let LLVM see the whole program; `opt-level = \"z\"`\n# favours size; `strip = \"symbols\"` discards the .pdb-equivalent. Always\n# release regardless of bun's own profile: a debug bun should still write\n# release shims.\n[profile.shim]\ninherits = \"release\"\npanic = \"abort\"\nopt-level = \"z\"\nlto = true\ncodegen-units = 1\nstrip = \"symbols\"\n# Pin these so the shim PE is byte-identical across bun's own profiles.\n# rust.ts sets CARGO_PROFILE_RELEASE_{LTO,DEBUG_ASSER",
    "strategic_keywords": [
      "memory",
      "runtime",
      "workspace"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "Cargo.toml"
    ],
    "score_breakdown": {
      "heat": 12,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 9,
      "risk_signal": 8,
      "total": 88
    },
    "strategic_score": 88
  },
  {
    "owner": "didilili",
    "name": "ai-agents-from-zero",
    "full_name": "didilili/ai-agents-from-zero",
    "url": "https://github.com/didilili/ai-agents-from-zero",
    "description": "🚀 2026 最系统的 AI Agent 速成指南｜智能体实战教程 · 完整学习路径 + 实战项目 + 面试题库 · 对标大模型应用开发工程师岗位 · 覆盖LangChain / LangGraph / Coze / Dify / MCP / skills / LLM / RAG / 提示词 · 企业级部署与微调 · 从0到企业级落地 + 从学习到上线项目 + 面试准备一体化",
    "language": "Python",
    "total_stars": 2243,
    "forks": 294,
    "stars_this_period": 29,
    "source_slice": "python",
    "source_slices": [
      "python"
    ],
    "metadata": {
      "topics": [
        "agent",
        "agent-framework",
        "agentic-ai",
        "ai-agent",
        "aigc",
        "coze",
        "cursor",
        "deepagents",
        "dify",
        "gpt",
        "langchain",
        "langgraph",
        "llm",
        "mcp",
        "rag",
        "skills",
        "tutorial"
      ],
      "license": "MIT",
      "open_issues": 10,
      "created_at": "2026-01-29T02:49:11Z",
      "pushed_at": "2026-06-23T16:29:23Z",
      "homepage": "https://didilili.github.io/ai-agents-from-zero/",
      "default_branch": "main",
      "forks": 294,
      "watchers": 27,
      "archived": false,
      "size_kb": 686685
    },
    "readme_content": "<div align='center'>\n  <img src=\"./images/banner-v8.png\" alt=\"AI 智能体教程\" width=\"950px\">\n  <h1 style=\"margin-top: 15px;\">🚀 全网最系统的 AI 智能体实战速成指南（从零到企业级落地）</h1>\n  <h4><b>ai-agents-from-zero</b></h4>\n  <p><em>2026 持续更新中 · 目标打造<b>「地表最强」</b>AI Agent 教程 —— <b>系统教程 + 可跑源码 + 面试题库 + 企业级实战项目 + 长期技术栈更新</b>，全面对齐「AI 智能体 / 大模型应用开发工程师」<b>培训课表</b>与<b>招聘 JD</b>的一条龙学习路线</em></p>\n</div>\n\n<div align=\"center\">\n\n![AI](https://img.shields.io/badge/AI-Agent-00c853?style=flat)\n![Language](https://img.shields.io/badge/language-Chinese-2ea44f?style=flat)\n![Stars](https://img.shields.io/github/stars/didilili/ai-agents-from-zero?logo=github&style=flat)\n[![GitHub](https://img.shields.io/badge/GitHub-Project-181717?logo=github&logoColor=white)](https://github.com/didilili/ai-agents-from-zero/)\n[![Read Online](https://img.shields.io/badge/在线阅读-点击访问-blue?logo=bookstack)](https://didilili.github.io/ai-agents-from-zero/#/)\n\n[快速开始](#quick-start) • [教程大纲](教程目录大纲.md) • [案例汇总](教程案例链接汇总.md#教程案例链接汇总源码与在线演示) • [更新日志](教程更新日志.md) • [面试题库](AI智能体与大模型应用开发面试题库.md) • [新手入门与常见问题](新手入门与常见问题.md)\n\n  <p>\n    <a href=\"https://didilili.github.io/ai-agents-from-zero/#/\">📚 在线阅读</a>\n  </p>\n\n</div>\n\n**📢 更新说明**：**AI 不停，更新不止**。本仓库将伴随 **AI 大模型技术栈持续进化**，坚持 **开源、系统化、长期更新**。模型、框架、Agent、实战项目，都会随着生态变化持续完善和升级。它不只是帮你入门，而是陪你一路成长，从零基础到能真正落地。\n\n目前 **概念篇** 已全部更新完毕，两个完整实战项目也已更新完毕：`NL2SQL + LangGraph` 实战项目 [电商问数](实战项目-电商问数/0-前言.md)（[源码仓库](https://github.com/didilili/shopkeeper-agent)）已于 5 月 3 日完成。`DeepAgents` 多智能体实战项目 [深度研搜](实战项目-深度研搜/0-前言.md)（[源码仓库](https://github.com/didilili/deepsearch-agents)）已于 5 月 17 日完成。你可以点击[更新日志](教程更新日志.md)，了解最新仓库动态。\n\n市面上 AI 大模型应用内容很多，但绝大多数是碎片化帖子、收费训练营等；本仓库就是让你不用先花大几千甚至上万，也能系统进入大模型应用开发。若对你有帮助，欢迎 **Star** ⭐~\n\n---\n\n## 🤝 项目赞助\n\n<table>\n<tr>\n<td width=\"220\" align=\"center\" valign=\"middle\">\n  <a href=\"https://passport.compshare.cn/register?referral_code=KyLCDhVe3j5E9o1XBWmIku&ytag=GPU_YY_YX_git_ai-agents-from-zero\">\n    <img src=\"./images/sponsor-compshare-agent-plan.jpg\" alt=\"优云智算\" width=\"160\">\n  </a>\n  <br>\n  <sub>高性价比 Agent Plan 优选</sub>\n</td>\n<td valign=\"middle\">\n\n感谢 <a href=\"https://www.compshare.cn/coding-plan\"><strong>优云智算</strong></a> 赞助本项目！优云智算是 UCloud 旗下 AI 云平台。主打包月、按次的高性价比国模 Agent Plan 套餐，低至 49 元/月起；同时提供官转稳定海外模型，支持接入 Claude Code、Codex 及 API 调用，面向企业提供高并发、7\\*24 技术支持与自助开票。\n\n🎁 通过 <a href=\"https://passport.compshare.cn/register?referral_code=KyLCDhVe3j5E9o1XBWmIku&ytag=GPU_YY_YX_git_ai-agents-from-zero\"><strong>此链接</strong></a> 注册的用户，可得免费 5 元平台体验金。\n\n</td>\n</tr>\n</table>\n\n---\n\n## ✨ 教程亮点\n\n- **🌱 全网首个系统开源的 AI 智能体教程**：这是一套长期维护的 AI 大模型应用开发路线图。市面上不缺零散帖子，也不缺收费训练营，但真正系统、持续更新，并且覆盖 **教程 + 源码 + 实战项目 + 面试题库** 的 AI 大模型应用教程极少。本仓库要做的就是把这条路线公开、做深、做完整，陪你从入门、进阶、项目实战一路成长。\n- **🧭 一条线拉通大模型应用全栈**：从大模型与提示词，到低代码（Coze/Dify）与代码框架（LangChain/LangGraph），再到企业级 RAG/Agent、微调与工程规范——按知识体系统一编排，**完整链路**闭环，适合系统吃透而不是碎片化收藏。\n- **🐍 聚焦 Python 生态，直击 Agent 工程**：很多课程会围绕 **Spring AI**、**langchain4j** 展开，更偏 Java 技术栈。本教程主线聚焦 **Python + LangChain + LangGraph**，直接对齐当下 AI Agent / 大模型应用开发最常用的工程路线。\n- **📘 零基础能进，工程师也能深挖**：整套教程按**由浅入深**的方式编排，先把大模型、Agent、RAG、MCP、Tool Calling 这些核心概念讲透，再进入源码、框架、部署和项目设计。少讲玄学黑话，多讲“为什么这么设计、代码怎么跑、项目怎么落地”。\n- **💼 企业级实战，对标「能干活」**：以电商问数、深度研搜、掌柜智库、电商小二等为主线，串起意图解析、多源知识、转人工、复盘与监控；把 **多路召回、评测、观测、成本、护栏** 放进真实语境里练。写简历、讲项目有抓手、不空泛。\n- **✅ 每个案例都以“能跑起来”为标准**：不只是讲概念或贴伪代码，而是尽量提供**可运行案例、源码、环境说明和常见问题排查**。案例内容均按人工实际跑通的思路整理，帮助你少踩坑、尽快上手。\n- **📚 教程源码面试，三位一体能跑通**：不止「看完」，还能「跑通」更能「答出来」——**可运行案例与源码**、**提示词模板**与部署思路，拒绝「只讲概念」。面试题库按**培训班与 JD** 常见能力域拆题，其中有相当一部分题目整理自**大厂真实面试题**、公开面经与高频追问场景，适合转岗/应届集中复盘。\n- **🚀 面向 2026，持续进化且硬核**：技术栈与高频问法会随生态迭代，对齐「AI 应用开发工程师」万元级培训课表维度；不只告诉你“学什么”，还告诉你“怎么做项目、怎么讲项目、怎么答面试”。若有用，**Star 即打赏 ⭐**。\n\n---\n\n## 🛠 技术栈概览\n\n| 类别             | 技术/平台                                   | 说明                                                                             |\n| ---------------- | ------------------------------------------- | -------------------------------------------------------------------------------- |\n| **大模型与基础** | LLM、Transformer、MoE、自注意力             | LLaMA/Qwen/GPT、多模态、预训练/微调/推理                                         |\n| **提示与编排**   | 提示词工程、Tool Calling、Skills            | 多轮对话、消息模板、结构化输出、工具调用、技能化能力沉淀                         |\n| **低代码平台**   | Coze（扣子）、Dify                          | 工作流、Agent、知识库、插件、Python 调用与本地化部署                             |\n| **开发框架**     | LangChain、LangGraph、DeepAgents            | Model I/O、Runnable / LCEL、Memory、Tools、Agents、图式工作流、多智能体          |\n| **协议与通信**   | MCP（Model Context Protocol）、A2A          | Function Calling、服务解耦、外部工具接入、跨 Agent 协作                          |\n| **RAG 与检索**   | 向量数据库、稀疏检索、混合检索、BGE-Rerank  | 多路召回、重排序、知识图谱、RAGAS 评估、高级 RAG 优化                            |\n| **文档与多模态** | MinerU、OCR                                 | 图文混排 PDF 解析、设备手册与售后指南                                            |\n| **部署与运维**   | Docker、Ollama、Xinference、vLLM            | 腾讯云/阿里云、AutoDL、Coze 本地部署                                             |\n| **微调与训练**   | PEFT、LoRA、QLoRA、DeepSpeed、Llama-Factory | Alpaca/ShareGPT 数据格式、Safetensors/ONNX                                       |\n| **编程与工具**   | Python；Codex、Cursor                       | 主语言为 Python；覆盖 AI 编程工具、Agent Skills、多模型 API、MCP 接入与调试      |\n| **求职与面试**   | 面试题库                                    | 按岗位能力域组织 **问法 + 答法**；对齐同类**线上培训结业能力**与 **JD** 高频考点 |\n\n---\n\n## 🎯 你学完能收获什么？\n\n- **可上线的项目能力**，能独立交付 AI Agent 应用（从环境到部署），从「只会调 API」进阶到能落地的工程实践。\n- **体系化的架构表达**，能讲清楚 RAG、Agent、MCP 等设计与取舍，面试与简历里经得起追问。\n- **面试与 JD 对齐**，独立 [面试题库](AI智能体与大模型应用开发面试题库.md)，与正文题号互链，按岗位能力域组织问法与答法，适合应届与转岗梳理口径。\n- **工程化与简历素材**，企业向案例与多路召回、观测、成本等表述，项目可演示、可写进简历。\n- **可检索的知识地图**，成体系目录 + 案例源码，与常见「智能体 / 应用开发」课表维度对齐，便于对照补缺，少踩「只看过文章没跑过」的坑。\n- **明确的岗位对标**，可胜任 AI 应用开发工程师、AI Agent 工程师、AI 自动化流程开发及 AI 产品技术负责人等方向；尤其适合前端 / 后端 / 产品等背景转型 AI 与智能体开发。\n\n---\n\n## 📚 教程大纲（节选）\n\n完整导航见 **[教程目录大纲](教程目录大纲.md)** 与 [在线文档](https://didilili.github.io/ai-agents-from-zero/#/)。\n\n> 这份大纲不是固定目录。后续将伴随 AI 技术栈继续演进，新的核心知识点、新框架和新项目实践会继续并入这条路线中。\n\n### 01 大模型基础能力构建\n\n| 章节名称                    | 内容概要                                                                         |\n| --------------------------- | -------------------------------------------------------------------------------- |\n| 大模型（LLM）认识与环境准备 | 起源与发展、AGI 关系、主流模型特点与适用场景、预训练/微调/推理                   |\n| 大模型架构原理              | Transformer、MoE、自注意力、LLaMA/Qwen/GPT、多模态                               |\n| 大模型调度平台              | Ollama、私有大模型调用、云端/本地部署（AWS、阿里云等）                           |\n| 提示词工程                  | 核心原则与结构、链式思维与 Few-shot、多轮对话与记忆、在 Agent 与工具调用中的应用 |\n\n### 02 企业低代码平台开发与项目实战\n\n| 章节名称                  | 内容概要                                                                           |\n| ------------------------- | ---------------------------------------------------------------------------------- |\n| Coze（扣子）平台          | 界面与功能、插件/知识库/工作流/智能体、Python 调用工作流                           |\n| 项目 1：商户运营管家      | 行业调研 PPT、爆款视频复刻、营销海报、卖点提炼、评论分析                           |\n| Dify AI 平台              | 工作流/Agent/知识库、多案例（投诉分类、调研报告、客服分析、评论分析）、Python 调用 |\n| 容器化技术                | Docker 核心概念、安装与常用命令                                                    |\n| 企业级大模型部署          | 腾讯云/阿里云、Docker、Dify、AutoDL、Ollama、Xinference、Coze 本地部署             |\n| AI 代码编程工具 - Trae AI | 安装使用、多模型 API、MCP 接入                                                     |\n| AI 代码编程工具 - Qoder   | 使用与调试、项目开发                                                               |\n\n### 03 大模型核心开发框架\n\n| 章节名称                 | 内容概要                                                                    |\n| ------------------------ | --------------------------------------------------------------------------- |\n| LangChain 框架原理与应用 | Model I/O、Prompt、Parser、Runnable / LCEL、Memory、Tools、Retrieval、Agent |\n| LangGraph 框架原理与应用 | 图式思维、State/Node/Edge、持久化记忆、流式输出、多智能体与 A2A             |\n| MCP 从原理到实战         | 与 Function Calling 对比、通信机制、工作流程、Server 部署与自定义开发       |\n| 跨 Agent 通信：A2A 协议  | 与 MCP 关系、消息与认证、典型场景                                           |\n\n### 04 企业级 RAG / Agent 项目实战\n\n| 章节名称                                | 内容概要                                                                                                                                                                               |\n| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| 掌柜智库                                | LangGraph RAG 工作流、MinerU/OCR、向量+稀疏+Neo4j 多路召回、HyDE/BGE-Rerank、RAGAS 评估                                                                                                |\n| 电商小二                                | 意图解析、多源知识库、流式回复、转人工机制、对话复盘、多渠道与监控                                                                                                                     |\n| [电商问数](实战项目-电商问数/0-前言.md) | 围绕自然语言问数，完整串起 MySQL 数仓、元数据知识库、Qdrant 向量检索、Elasticsearch 字段值检索、LangGraph 工作流、SQL 生成校验执行、FastAPI SSE 和前后端联调                           |\n| [深度研搜](实战项目-深度研搜/0-前言.md) | 基于 [DeepAgents](实战项目-深度研搜/1-DeepAgents基础与核心概念.md) 搭建多智能体研究系统，串起网络搜索、MySQL 查询、RAGFlow 知识库、文件读取生成、FastAPI 接口和 WebSocket 实时进度回传 |\n| 市场罗盘                                | 场景化任务拆解、从 0 到 1 设计与开发、阶段目标与进度管控、代码评审与成果展示                                                                                                           |\n\n> **已完成实战项目推荐：**\n>\n> - [电商问数](实战项目-电商问数/0-前言.md)（[源码仓库](https://github.com/didilili/shopkeeper-agent)）：不是简单的 SQL 生成 Demo，而是把 `MySQL`、`LangGraph`、`Qdrant`、`Elasticsearch`、`FastAPI` 等知识点放进同一条可运行的智能问数链路里。\n> - [深度研搜](实战项目-深度研搜/0-前言.md)（[源码仓库](https://github.com/didilili/deepsearch-agents)）：不是普通聊天框，而是围绕开放研究任务，把主智能体调度、子智能体分工、多来源资料检索、文件生成交付和前后端实时联动做成一条完整闭环。\n\n### 05 大模型微调实践\n\n| 章节名称                      | 内容概要                                                                                 |\n| ----------------------------- | ---------------------------------------------------------------------------------------- |\n| 大模型微调核心                | 数据与格式（Alpaca、ShareGPT）、PEFT/LoRA/QLoRA、全参数微调与 DeepSpeed、vLLM 部署、评估 |\n| 企业级微调数据集构建          | 公开/私有数据、标注与质量、数据增强                                                      |\n| 基于 Llama-Factory 的高效微调 | 环境与参数、单卡/多卡、Safetensors/ONNX                                                  |\n| 调优案例                      | 学习率与 LoRA 秩、loss/评测对比、业务场景下的迭代策略；多组对照的完整微调—评测—部署案例  |\n\n### 06 大厂开发规范\n\n| 章节名称           | 内容概要                                                              |\n| ------------------ | --------------------------------------------------------------------- |\n| 企业大模型研发流程 | 技术调研、方案与框架设计、RAG 与 pipeline、评估与角色、立项与需求文档 |\n| 大模型当下热点     | Agent/RAG 主流技术、前沿与热点跟踪                                    |\n\n---\n\n## 🏗️ Agent 项目架构与技术架构\n\n![智能体生态架构图](images/智能体生态架构图.png)\n\n---\n\n<a id=\"quick-start\"></a>\n\n## 🚀 快速开始\n\n结合 [在线文档](https://didilili.github.io/ai-agents-from-zero/#/) 一起学习。想马上跑通一个案例？按下面几步即可。更详细的环境说明、API 申请、常见报错处理见 [新手入门与常见问题](新手入门与常见问题.md)。\n\n1. **克隆仓库并进入项目目录**\n\n   ```bash\n   git clone https://github.com/didilili/ai-agents-from-zero.git\n   cd ai-agents-from-zero\n   ```\n\n2. **准备环境**（推荐 Python 3.10，支持 3.10–3.13）\n\n   ```bash\n   python3.10 -m venv .venv\n   source .venv/bin/activate          # macOS/Linux\n   # .venv\\Scripts\\activate           # Windows CMD\n   pip install -r requirements.txt\n   ```\n\n3. **配置 API Key**\n   - 将根目录下的 `.env-example` 复制为 `.env`\n   - 在 `.env` 中填入你的 API Key（如通义千问/阿里百炼、DeepSeek 等），变量名需与代码一致（如 `aliQwen-api`、`QWEN_API_KEY`、`deepseek-api`）\n   - 各平台 Key 的申请方式见 [新手入门与常见问题 - 各 API 平台如何申请 Key](新手入门与常见问题.md#_5、各-api-平台如何申请-key？)\n\n4. **在项目根目录运行第一个案例**\n\n   ```bash\n   python 案例与源码-2-LangChain框架/01-helloworld/StandardDesc.py\n   ```\n\n   **注意**：必须在**项目根目录**执行 `python`，否则会读不到 `.env`。若不想用云 API，可使用 [Ollama 本地模型](新手入门与常见问题.md#_54-不想用云-api：用本地-ollama（无需-key）)（无需 Key）。\n\n遇到 `ModuleNotFoundError`、API Key 报错、找不到 `.env` 等，请查看 [新手入门与常见问题 - 常见问题与解决](新手入门与常见问题.md#_6、常见问题与解决)。\n\n---\n\n## 💬 交流社群\n\n想和更多读者共同交流 **AI 编程、Agent / RAG 实战、面试经验**？欢迎到 [GitHub 入群申请帖](https://github.com/didilili/ai-agents-from-zero/issues/46) 留言申请加入微信交流群。\n\n---\n\n## 📖 关于本仓库\n\n- **目标**：做一套**真正适合入门、系统、且长期更新的 AI 智能体实战速成教程**，不仅把概念讲清楚，也把案例跑起来，让你从 0 到能独立",
    "manifest_file": "pyproject.toml",
    "manifest_content": "[project]\nname = \"ai-agents-from-zero\"\ndescription = \"AI 智能体实战速成指南：从零到企业级落地 - 案例与源码\"\nreadme = \"README.md\"\n# 推荐 3.10；支持 3.10–3.13；3.14 下 langchain-redis 等尚未兼容，故上限为 3.13\nrequires-python = \">=3.10,<3.14\"\n\n[tool.black]\nline-length = 88\ntarget-version = [\"py310\", \"py311\", \"py312\", \"py313\"]\ninclude = '\\.pyi?$'\nexclude = '''\n/(\n    \\.venv\n  | venv\n  | _build\n  | __pycache__\n)/\n'''\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "mcp",
      "rag",
      "skill",
      "llm"
    ],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "pyproject.toml"
    ],
    "score_breakdown": {
      "heat": 10,
      "relevance": 20,
      "novelty": 15,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 6,
      "total": 85
    },
    "strategic_score": 85
  },
  {
    "owner": "nocodb",
    "name": "nocodb",
    "full_name": "nocodb/nocodb",
    "url": "https://github.com/nocodb/nocodb",
    "description": "🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative",
    "language": "TypeScript",
    "total_stars": 63622,
    "forks": 4872,
    "stars_this_period": 27,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "airtable",
        "airtable-alternative",
        "automatic-api",
        "hacktoberfest",
        "low-code",
        "no-code",
        "no-code-database",
        "no-code-platform",
        "postgresql",
        "rest-api",
        "restful-api",
        "spreadsheet",
        "sqlite",
        "swagger"
      ],
      "license": "NOASSERTION",
      "open_issues": 671,
      "created_at": "2017-10-29T18:51:48Z",
      "pushed_at": "2026-06-26T16:20:35Z",
      "homepage": "https://nocodb.com",
      "default_branch": "develop",
      "forks": 4872,
      "watchers": 394,
      "archived": false,
      "size_kb": 1439877
    },
    "readme_content": "<h1 align=\"center\" style=\"border-bottom: none\">\n    <div>\n        <a style=\"color:#36f\" href=\"https://www.nocodb.com\">\n            <img src=\"/packages/nc-gui/assets/img/brand/nocodb-full.png\" height=\"80\" />\n            <br>\n        </a>\n        <br>\n    </div>\n</h1>\n\n<p align=\"center\">\nNocoDB is the fastest and easiest way to build databases online.\n</p>\n\n\n<p align=\"center\">\n    <a href=\"http://www.nocodb.com\"><b>Website</b></a> •\n    <a href=\"https://discord.gg/c7GEYrvFtT\"><b>Discord</b></a> •\n    <a href=\"https://community.nocodb.com/\"><b>Community</b></a> •\n    <a href=\"https://twitter.com/nocodb\"><b>Twitter</b></a> •\n    <a href=\"https://www.reddit.com/r/NocoDB/\"><b>Reddit</b></a> •\n    <a href=\"https://docs.nocodb.com/\"><b>Documentation</b></a>\n</p>\n\n![video avi](https://github.com/nocodb/nocodb/assets/86527202/e2fad786-f211-4dcb-9bd3-aaece83a6783)\n\n<div align=\"center\">\n\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263434-75fe793d-42af-49e4-b964-d70920e41655.png\">](markdown/readme/languages/chinese.md)\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263474-787d71e7-3a87-42a8-92a8-be1d1f55413d.png\">](markdown/readme/languages/french.md)\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263531-fae58600-6616-4b43-95a0-5891019dd35d.png\">](markdown/readme/languages/german.md)\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263589-3dbeda9a-0d2e-4bbd-b1fc-691404bb74fb.png\">](markdown/readme/languages/spanish.md)\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263669-f567196a-d4e8-4143-a80a-93d3be32ba90.png\">](markdown/readme/languages/portuguese.md)\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263707-ba4e04a4-268a-4626-91b8-048e572fd9f6.png\">](markdown/readme/languages/italian.md)\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263770-38e3e79d-11d4-472e-ac27-ae0f17cf65c4.png\">](markdown/readme/languages/japanese.md)\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263822-28fce9de-915a-44dc-962d-7a61d340e91d.png\">](markdown/readme/languages/korean.md)\n[<img height=\"38\" src=\"https://user-images.githubusercontent.com/61551451/135263888-151d4ad1-7084-4943-97c9-56f28cd40b80.png\">](markdown/readme/languages/russian.md)\n[<img height=\"38\" alt=\"Bengali translation\" src=\"\">](markdown/readme/languages/bengali.md)\n\n</div>\n\n<p align=\"center\"><a href=\"markdown/readme/languages/README.md\"><b>See other languages »</b></a></p>\n\n<img src=\"https://static.scarf.sh/a.png?x-pxid=c12a77cc-855e-4602-8a0f-614b2d0da56a\" />\n\n# Join Our Community\n\n<a href=\"https://discord.gg/c7GEYrvFtT\" target=\"_blank\">\n<img src=\"https://discordapp.com/api/guilds/661905455894888490/widget.png?style=banner3\" alt=\"\">\n</a>\n\n[![Stargazers repo roster for @nocodb/nocodb](http://reporoster.com/stars/nocodb/nocodb)](https://github.com/nocodb/nocodb/stargazers)\n\n# Installation\n\n## Docker with SQLite\n\n```bash \ndocker run -d \\\n  --name noco \\\n  -v \"$(pwd)\"/nocodb:/usr/app/data/ \\\n  -p 8080:8080 \\\n  nocodb/nocodb:latest\n  ```\n\n## Docker with PG\n```bash\ndocker run -d \\\n  --name noco \\\n  -v \"$(pwd)\"/nocodb:/usr/app/data/ \\\n  -p 8080:8080 \\\n  -e NC_DB=\"pg://host.docker.internal:5432?u=root&p=password&d=d1\" \\\n  -e NC_AUTH_JWT_SECRET=\"569a1821-0a93-45e8-87ab-eb857f20a010\" \\\n  nocodb/nocodb:latest\n```\n\n## Auto-upstall\nAuto-upstall is a single command that sets up NocoDB on a server for production usage.\nBehind the scenes it auto-generates docker-compose for you.\n\n```bash\nbash <(curl -sSL http://install.nocodb.com/noco.sh) <(mktemp)\n```\n\nAuto-upstall does the following: 🕊\n- 🐳 Automatically installs all pre-requisites like docker, docker-compose\n- 🚀 Automatically installs NocoDB with PostgreSQL, Redis, Traefik gateway using Docker Compose. 🐘 🗄️ 🌐\n- 🔄 Automatically upgrades NocoDB to the latest version when you run the command again.\n- 🔒 Automatically setups SSL and also renews it. Needs a domain or subdomain as input while installation.\n> install.nocodb.com/noco.sh script can be found [here in our github](https://raw.githubusercontent.com/nocodb/nocodb/develop/docker-compose/1_Auto_Upstall/noco.sh)\n\n\n## Other Methods\n\n> Binaries are only for quick testing locally.\n\n| Install Method                | Command to install                                                                                                                                                                                                                                                                                                                                                         |\n|-------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 🍏 MacOS arm64 <br>(Binary)   | `curl http://get.nocodb.com/macos-arm64 -o nocodb -L && chmod +x nocodb && ./nocodb`                                                                                                                                                                                                                                                                                       |\n| 🍏 MacOS x64 <br>(Binary)     | `curl http://get.nocodb.com/macos-x64 -o nocodb -L && chmod +x nocodb && ./nocodb`                                                                                                                                                                                                                                                                                         |\n| 🐧 Linux arm64 <br>(Binary)   | `curl http://get.nocodb.com/linux-arm64 -o nocodb -L && chmod +x nocodb && ./nocodb`                                                                                                                                                                                                                                                                                       |\n| 🐧 Linux x64 <br>(Binary)     | `curl http://get.nocodb.com/linux-x64 -o nocodb -L && chmod +x nocodb && ./nocodb`                                                                                                                                                                                                                                                                                         |\n| 🪟 Windows arm64 <br>(Binary) | `iwr http://get.nocodb.com/win-arm64.exe -OutFile Noco-win-arm64.exe && .\\Noco-win-arm64.exe`                                                                                                                                                                                                                                                                              |\n| 🪟 Windows x64 <br>(Binary)   | `iwr http://get.nocodb.com/win-x64.exe -OutFile Noco-win-x64.exe && .\\Noco-win-x64.exe`                                                                                                                                                                                                                                                                                    |\n\n\n> When running locally access nocodb by visiting: [http://localhost:8080/dashboard](http://localhost:8080/dashboard)\n\nFor more installation methods, please refer to [our docs](https://nocodb.com/docs/self-hosting)\n\n# Screenshots\n![2](https://github.com/nocodb/nocodb/assets/86527202/a127c05e-2121-4af2-a342-128e0e2d0291)\n![3](https://github.com/nocodb/nocodb/assets/86527202/674da952-8a06-4848-a0e8-a7b02d5f5c88)\n![4](https://github.com/nocodb/nocodb/assets/86527202/cbc5152a-9caf-4f77-a8f7-92a9d06d025b)\n![5](https://github.com/nocodb/nocodb/assets/86527202/dc75dfdc-c486-4f5a-a853-2a8f9e6b569a)\n\n![5](https://user-images.githubusercontent.com/35857179/194844886-a17006e0-979d-493f-83c4-0e72f5a9b716.png)\n![7](https://github.com/nocodb/nocodb/assets/86527202/be64e619-7295-43e2-aa95-cace4462b17f)\n![8](https://github.com/nocodb/nocodb/assets/86527202/4538bf5a-371f-4ec1-a867-8197e5824286)\n\n![8](https://user-images.githubusercontent.com/35857179/194844893-82d5e21b-ae61-41bd-9990-31ad659bf490.png)\n![9](https://user-images.githubusercontent.com/35857179/194844897-cfd79946-e413-4c97-b16d-eb4d7678bb79.png)\n![10](https://user-images.githubusercontent.com/35857179/194844902-c0122570-0dd5-41cf-a26f-6f8d71fefc99.png)\n![11](https://user-images.githubusercontent.com/35857179/194844903-c1e47f40-e782-4f5d-8dce-6449cc70b181.png)\n![12](https://user-images.githubusercontent.com/35857179/194844907-09277d3e-cbbf-465c-9165-6afc4161e279.png)\n\n# Features\n\n### Rich Spreadsheet Interface\n\n- ⚡ &nbsp;Basic Operations: Create, Read, Update and Delete Tables, Columns, and Rows\n- ⚡ &nbsp;Fields Operations: Sort, Filter, Group, Hide / Unhide Columns\n- ⚡ &nbsp;Multiple Views Types: Grid (By default), Gallery, Form, Kanban and Calendar View\n- ⚡ &nbsp;View Permissions Types: Collaborative Views, & Locked Views\n- ⚡ &nbsp;Share Bases / Views: either Public or Private (with Password Protected)\n- ⚡ &nbsp;Variant Cell Types: ID, Links, Lookup, Rollup, SingleLineText, Attachment, Currency, Formula, User, etc\n- ⚡ &nbsp;Access Control with Roles: Fine-grained Access Control at different levels\n- ⚡ &nbsp;and more ...\n\n### App Store for Workflow Automations\n\nWe provide different integrations in three main categories. See <a href=\"https://docs.nocodb.com/account-settings/oss-specific-details/#app-store\" target=\"_blank\">App Store</a> for details.\n\n- ⚡ &nbsp;Chat: Slack, Discord, Mattermost, and etc\n- ⚡ &nbsp;Email: AWS SES, SMTP, MailerSend, and etc\n- ⚡ &nbsp;Storage: AWS S3, Google Cloud Storage, Minio, and etc\n\n### Programmatic Access\n\nWe provide the following ways to let users programmatically invoke actions. You can use a token (either JWT or Social Auth) to sign your requests for authorization to NocoDB.\n\n- ⚡ &nbsp;REST APIs\n- ⚡ &nbsp;NocoDB SDK\n\n# Contributing\n\nPlease refer to [Contribution Guide](https://github.com/nocodb/nocodb/blob/master/.github/CONTRIBUTING.md).\n\n# Why are we building this?\n\nMost internet businesses equip themselves with either spreadsheet or a database to solve their business needs. Spreadsheets are used by Billion+ humans collaboratively every single day. However, we are way off working at similar speeds on databases which are way more powerful tools when it comes to computing. Attempts to solve this with SaaS offerings have meant horrible access controls, vendor lock-in, data lock-in, abrupt price changes & most importantly a glass ceiling on what's possible in the future.\n\n# Our Mission\n\nOur mission is to provide the most powerful no-code interface for databases, accessible to every internet business across the world. By making this capability broadly available under a fair and sustainable model, we aim to democratise access to powerful computing tools and enable a billion-plus people to develop radical tinkering and building abilities on the internet.\n\n# License\n\n<p>\nThis project is licensed under <a href=\"./LICENSE.md\">Sustainable Use License</a>.\n</p>\n\n# Contributors\n\nThank you for your contributions! We appreciate all the contributions from the community.\n\n<a href=\"https://github.com/nocodb/nocodb/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=nocodb/nocodb\" />\n</a>\n",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"nocodb-root\",\n  \"description\": \"NocoDB Root\",\n  \"private\": true,\n  \"author\": {\n    \"name\": \"NocoDB Inc\",\n    \"url\": \"https://nocodb.com/\"\n  },\n  \"homepage\": \"https://github.com/nocodb/nocodb\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/nocodb/nocodb.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/nocodb/nocodb/issues\"\n  },\n  \"license\": \"Sustainable Use License\",\n  \"devDependencies\": {\n    \"husky\": \"^8.0.3\",\n    \"lerna\": \"^8.2.2\",\n    \"xlsx\": \"https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz\"\n  },\n  \"husky\": {\n    \"hooks\": {\n      \"pre-commit\": \"pnpm dlx lint-staged\"\n    }\n  },\n  \"lint-staged\": {\n    \"*.{ts,tsx,js,json}\": []\n  },\n  \"scripts\": {\n    \"bootstrap\": \"pnpm --filter=nocodb-sdk install && pnpm --filter=nocodb-sdk run build && pnpm --filter=nocodb --filter=nc-mail-templates --filter=nc-gui install && pnpm run integrations:build && pnpm run registerIntegrations\",\n    \"integrations:build\": \"cd ./packages/noco-integrations/ && pnpm i && pnpm run build\",\n    \"start:frontend\": \"pnpm --filter=nc-gui run dev\",\n    \"start:backend\": \"pnpm --filter=nocodb run start\",\n    \"prepare\": \"husky install\",\n    \"preinstall\": \"npx only-allow pnpm\",\n    \"registerIntegrations\": \"pnpm --filter=nocodb run registerIntegrations\",\n    \"install:local-sdk\": \"node scripts/installLocalSdk.js\"\n  },\n  \"pnpm\": {\n    \"overrides\": {\n      \"**>ip\": \"npm:@eggjs/ip@latest\",\n      \"vue@*\": \"3.5.14\",\n      \"@vue/runtime-core@*\": \"3.5.14\",\n      \"@vue/runtime-dom@*\": \"3.5.14\",\n      \"@azure/msal-node\": \"^2.16.2\",\n      \"@babel/traverse@<7.23.2\": \">=7.23.2\",\n      \"ajv@<6.12.3\": \">=6.12.3\",\n      \"axios@>=0.8.1 <0.28.0\": \">=0.28.0\",\n      \"axios@>=1.0.0 <1.16.0\": \">=1.16.0\",\n      \"node.extend@<1.1.7\": \">=1.1.7\",\n      \"tough-cookie\": \"^5.1.0\",\n      \"typescript\": \"5.8.3\",\n      \"ufo\": \">=1.5.4\",\n      \"whatwg-url\": \"13.0.0\",\n      \"ws@>=8.0.0 <8.20.1\": \">=8.20.1\",\n      \"xml2js@<0.5.0\": \">=0.5.0\",\n      \"**>ent\": \"npm:ent-replace@latest\",\n      \"image-size@<1.2.1\": \">=1.2.1\",\n      \"tar-fs@<2.1.2\": \">=3.0.7\",\n      \"highlight.js@<9.18.5\": \">=11.11.1\",\n      \"multer@<2.1.1\": \">=2.1.1\",\n      \"vue-i18n@<9.14.5\": \">=9.14.5\",\n      \"knex@<3.1.0\": \">=3.1.0\",\n      \"cookie\": \">=0.7.2\",\n      \"@azure/identity@<4.2.1\": \">=4.2.1\",\n      \"cross-spawn@<7.0.5 >=7.0.0\": \">=7.0.5\",\n      \"dset@<3.1.4\": \">=3.1.4\",\n      \"http-proxy-middleware@<2.0.9\": \"2.0.9\",\n      \"@babel/runtime@<7.22.11\": \">=7.26.10\",\n      \"tar@<=7.5.10\": \">=7.5.11\",\n      \"braces@<3.0.3\": \">=3.0.3\",\n      \"micromatch@<4.0.8\": \">=4.0.8\",\n      \"nanoid@<3.3.8\": \">=3.3.8\",\n      \"esbuild@<=0.24.2\": \">=0.25.0\",\n      \"@babel/helpers@<7.26.10\": \">=7.26.10\",\n      \"@75lb/deep-merge@<=1.1.1\": \">=1.1.2\",\n      \"@babel/runtime@<7.26.10\": \">=7.26.10\",\n      \"lodash@<4.18.0\": \">=4.18.0\",\n      \"linkifyjs@<4.3.2\": \">=4.3.2\",\n      \"qs@<6.15.2\": \">=6.15.2\",\n      \"h3@<1.15.9\": \">=1.15.9\",\n      \"oxc-resolver@<11.0.0\": \">=11.19.1\",\n      \"simple-git@<3.36.0\": \">=3.36.0\",\n      \"uuid@>=11.0.0 <11.1.1\": \"^11.1.1\",\n      \"next@<15.5.18\": \">=15.5.18\",\n      \"next@>=16.0.0 <16.2.5\": \">=16.2.5\",\n      \"hono@<4.12.18\": \">=4.12.18\",\n      \"basic-ftp@<5.3.1\": \">=5.3.1\",\n      \"fast-uri@<=3.1.1\": \">=3.1.2\",\n      \"fast-xml-parser@<5.7.0\": \">=5.7.0\",\n      \"fast-xml-builder@<=1.1.6\": \">=1.1.7\",\n      \"thrift@<0.23.0\": \">=0.23.0\",\n      \"ip-address@<=10.1.0\": \">=10.1.1\",\n      \"devalue@<5.6.4\": \">=5.6.4\",\n      \"nitropack@<2.13.4\": \">=2.13.4\",\n      \"postcss@<8.5.10\": \">=8.5.10\",\n      \"webpack-dev-server@<=5.2.3\": \">=5.2.4\",\n      \"vite@>=6.0.0 <6.4.2\": \">=6.4.2 <7\",\n      \"@nuxt/devtools\": \">=2.6.4 <3\",\n      \"minimatch@>=9.0.0 <9.0.7\": \">=9.0.7\",\n      \"minimatch@>=10.0.0 <10.2.3\": \">=10.2.3\",\n      \"path-to-regexp@>=8.0.0 <8.4.0\": \">=8.4.0\",\n      \"path-to-regexp@<0.1.13\": \"0.1.13\",\n      \"yaml@>=2.0.0 <2.8.3\": \">=2.8.3\",\n      \"jws@>=4.0.0 <4.0.1\": \">=4.0.1\",\n      \"ajv@<8.18.0\": \"^8.18.0\",\n      \"webpack@<5.104.1\": \"^5.104.1\",\n      \"unhead@<2.1.13\": \"^2.1.13\",\n      \"serialize-javascript@<7.0.5\": \"^7.0.5\",\n      \"glob@>=11.0.0 <11.1.0\": \"^11.1.0\",\n      \"diff@>=6.0.0 <8.0.3\": \"^8.0.3\",\n      \"picomatch@>=4.0.0 <4.0.4\": \"^4.0.4\",\n      \"js-yaml@>=4.0.0 <4.1.1\": \"^4.1.1\",\n      \"js-cookie@>=3.0.0 <=3.0.5\": \"~3.0.7\",\n      \"follow-redirects@<=1.15.11\": \"^1.16.0\",\n      \"flatted@<3.4.2\": \"^3.4.2\",\n      \"@tootallnate/once@>=3.0.0 <3.0.1\": \"^3.0.1\",\n      \"tar-fs@>=3.0.0 <3.1.1\": \"^3.1.1\",\n      \"uuid@>=12.0.0 <12.0.1\": \"^12.0.1\"\n    },\n    \"onlyBuiltDependencies\": [\n      \"@biomejs/biome\",\n      \"@nestjs/core\",\n      \"@parcel/watcher\",\n      \"@swc/core\",\n      \"core-js\",\n      \"esbuild\",\n      \"msgpackr-extract\",\n      \"nx\",\n      \"sharp\",\n      \"sqlite3\",\n      \"vue-demi\"\n    ]\n  }\n}\n",
    "strategic_keywords": [],
    "relationship_label": "Skill 来源",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 11,
      "relevance": 0,
      "novelty": 4,
      "productize": 14,
      "adoption": 10,
      "relation": 6,
      "risk_signal": 8,
      "total": 53
    },
    "strategic_score": 53
  },
  {
    "owner": "open-metadata",
    "name": "OpenMetadata",
    "full_name": "open-metadata/OpenMetadata",
    "url": "https://github.com/open-metadata/OpenMetadata",
    "description": "The Open Context Layer for Data and AI , OpenMetadata is the open platform for building trusted data context and business semantics for humans, AI assistants, and agents.",
    "language": "TypeScript",
    "total_stars": 14324,
    "forks": 2186,
    "stars_this_period": 27,
    "source_slice": "typescript",
    "source_slices": [
      "typescript"
    ],
    "metadata": {
      "topics": [
        "context",
        "context-layer",
        "data-catalog",
        "data-collaboration",
        "data-contracts",
        "data-discovery",
        "data-governance",
        "data-lineage",
        "data-observability",
        "data-profiling",
        "data-quality",
        "data-quality-checks",
        "datadiscovery",
        "dataengineering",
        "dataquality",
        "mcp",
        "mcp-server",
        "metadata",
        "metadata-management",
        "semantics"
      ],
      "license": "Apache-2.0",
      "open_issues": 968,
      "created_at": "2021-08-01T21:17:17Z",
      "pushed_at": "2026-06-26T21:01:02Z",
      "homepage": "https://open-metadata.org",
      "default_branch": "main",
      "forks": 2186,
      "watchers": 55,
      "archived": false,
      "size_kb": 2892337
    },
    "readme_content": "# OpenMetadata\n\n![Commit Activity](https://img.shields.io/github/commit-activity/m/open-metadata/OpenMetadata?style=for-the-badge) [![Release](https://img.shields.io/github/release/open-metadata/OpenMetadata/all.svg?style=for-the-badge)](https://github.com/open-metadata/OpenMetadata/releases)\n\n## The Open Context Layer for AI\n\n**The largest and fastest-growing open-source project for AI context, data cataloging, and metadata management.**\n\nOpenMetadata is the open platform for trusted data context, organizational memory, and business semantics for every data user, AI assistant, and agent.\n\nOpenMetadata connects technical metadata, data quality signals, lineage, column-level lineage, ownership, usage, policies, conversations, memories, glossaries, classifications, metrics, domains, data contracts, and data products into a unified metadata knowledge graph. With **130+ connectors**, open metadata standards, semantic search, APIs, SDKs, and an MCP server, OpenMetadata gives every user and AI system the governed context it needs to discover, understand, trust, remember, and use data.\n\n**AI does not need another raw database connector. AI needs context + memory.**\n\n![OpenMetadata: The Open Context Layer for AI](docs/assets/open-context-layer-hero.png)\n\nOpenMetadata provides the context AI needs to know:\n\n- what data exists\n- what it means\n- who owns it\n- how it is used\n- where it came from\n- where it flows\n- whether it is fresh, tested, certified, and trusted\n- which business concepts, classifications, glossary terms, policies, contracts, and data products apply\n- what downstream dashboards, pipelines, metrics, ML models, and applications depend on it\n- what conversations, decisions, assumptions, and memory nuggets have already been captured about it\n\n---\n\n## Why OpenMetadata for AI?\n\nAI systems need more than data access. They need governed context, business meaning, trust signals, lineage, usage, ownership, standards, and organizational memory.\n\nA direct connection to a warehouse, lake, dashboard, or pipeline exposes raw structures. It does not tell an AI assistant what the data means, whether it is certified, who owns it, which policies apply, what contract governs it, what breaks if it changes, or what the organization has already learned about it.\n\nOpenMetadata is the open context layer that gives every data user and AI agent the full picture of enterprise data.\n\nOpenMetadata brings together five capabilities:\n\n1. **Context** — technical, operational, trust, usage, and lineage metadata from across the data ecosystem.\n2. **Semantics** — business meaning through glossaries, metrics, classifications, domains, policies, ontologies, and data products.\n3. **Knowledge Graph** — relationships connecting assets, columns, people, teams, quality, lineage, policies, memories, contracts, and business concepts.\n4. **Memory** — conversations, AI threads, decisions, assumptions, runbooks, remediation notes, and reusable memory nuggets that preserve tribal knowledge.\n5. **Activation** — MCP, Semantic Search, APIs, SDKs, events, and workflows that make context usable by AI assistants, agents, applications, and humans.\n\nWith OpenMetadata, users and AI agents can answer:\n\n- What does this metric mean and how is it calculated?\n- Which datasets power this dashboard?\n- Who owns this data product?\n- Which data contract applies?\n- Is this dataset fresh, tested, certified, and trusted?\n- Which downstream dashboards, pipelines, or ML models are affected by this column change?\n- Which columns contain sensitive customer information?\n- Which glossary terms, policies, standards, and business concepts apply?\n- What decisions, assumptions, incidents, or conversations have already been captured about this asset?\n\n---\n\n## The Context OpenMetadata Connects\n\nOpenMetadata collects and connects the context AI needs to reason safely over enterprise data.\n\n| Context type | What OpenMetadata captures | Why it matters for AI |\n| --- | --- | --- |\n| **Technical metadata** | Databases, schemas, tables, columns, topics, dashboards, charts, pipelines, APIs, search indexes, ML models, storage assets, data types, constraints, descriptions, joins, sample queries, service metadata, owners, teams, usage, domains, and data products | Helps AI discover what exists and understand how assets are structured |\n| **Quality and trust** | Test cases, test suites, freshness checks, volume checks, null, uniqueness, distribution, custom tests, profiling results, observability signals, incidents, alerts, and quality history | Helps AI avoid treating every dataset as equally trustworthy |\n| **Lineage and impact** | Upstream and downstream lineage, table lineage, column-level lineage, dashboard lineage, pipeline lineage, metric lineage, ML model lineage, API and topic dependencies, and OpenLineage events | Helps AI explain where data came from, where it flows, and what changes may break |\n| **Semantics** | Glossaries, business terms, synonyms, related terms, metrics, KPIs, classifications, tags, domains, data products, policies, personas, lifecycle states, and ontologies | Helps AI map technical names to business meaning |\n| **Governance** | Owners, stewards, teams, policies, roles, classifications, access context, certification, review workflows, lifecycle states, and data contracts | Helps AI act with policy-aware context |\n| **Memory and tribal knowledge** | Conversations, AI threads, decisions, assumptions, runbooks, remediation notes, incident learnings, and reusable memory nuggets attached to assets, users, teams, data products, and agent workflows | Helps humans and agents inherit what the organization already learned instead of rediscovering it in every conversation |\n| **Standards and interoperability** | DCAT, DPROD, PROV-O, OpenLineage, ODCS, RDF/OWL, JSON-LD, SHACL, JSON Schema, APIs, events, and metadata schemas | Helps context move across tools, agents, catalogs, contracts, and knowledge graphs |\n\n---\n\n## Architecture: Context + Memory Graph\n\n![How OpenMetadata Works](docs/assets/open-context-layer-architecture.png)\n\nOpenMetadata is built around an open, schema-first metadata graph.\n\n1. **Collect** metadata from warehouses, lakes, BI tools, pipelines, ML platforms, messaging systems, storage systems, APIs, search systems, SaaS applications, metadata systems, documents, conversations, and agent workflows through **130+ connectors**, ingestion APIs, events, and SDKs.\n2. **Normalize** metadata with open schemas and standards so every asset, relationship, policy, contract, lineage event, and memory can be represented consistently.\n3. **Connect** technical metadata, quality signals, lineage, ownership, usage, policies, conversations, memories, semantics, domains, contracts, and data products into one graph.\n4. **Preserve Memory** by turning conversations, AI threads, decisions, assumptions, runbooks, and remediation notes into reusable governed memory nuggets tied to data assets and business context.\n5. **Govern** context with open standards, classifications, policies, roles, data quality, review workflows, data contracts, and stewardship.\n6. **Activate** that context through Semantic Search, MCP, APIs, SDKs, events, webhooks, metadata applications, and AI workflows.\n\nMemory is part of the architecture, not a side channel. It lets engineers use APIs, SDKs, MCP, or AI workflows to preserve conversational context and convert tribal knowledge into reusable organizational knowledge.\n\n---\n\n## Context Graph, Semantics, and Memory\n\n![OpenMetadata Context Graph](docs/assets/open-context-layer-graph.png)\n\nThe OpenMetadata graph does not only store data assets. It stores the relationships between assets, columns, owners, teams, policies, quality tests, lineage, classifications, glossary terms, metrics, domains, data contracts, data products, conversations, and memory nuggets.\n\nExample relationships:\n\n```text\nTable               ──hasColumn────────────> Column\nColumn              ──classifiedAs─────────> PII\nColumn              ──represents───────────> Customer Identifier\nTable               ──ownedBy─────────────> Data Engineering Team\nTable               ──partOf──────────────> Customer 360 Data Product\nDashboard           ──dependsOn───────────> Table\nMetric              ──definedBy───────────> Glossary Term\nPipeline            ──produces────────────> Table\nColumn              ──flowsTo─────────────> Column\nTest Case           ──validates───────────> Table\nPolicy              ──governs─────────────> Classification\nData Contract       ──appliesTo───────────> Table\nOpenLineage Event   ──updatesLineageFor───> Pipeline\nAgent Conversation  ──capturedAs──────────> Memory \nMemory              ──informs─────────────> Data Product\nMemory              ──documentsDecisionFor> Metric\nMemory              ──attachedTo──────────> Table / Column / Topic / Dashboard / Pipeline / API\n```\n\nThis graph gives AI systems the relationships, meaning, memory, and governance they need to reason across the data estate.\n\n---\n\n## Memories: Organizational Context for Humans and Agents\n\n![Memory Primitives](docs/assets/memory-primitives.png)\n\nMemories preserve the important context that usually disappears inside chats, tickets, meetings, notebooks, and AI agent threads.\n\nA memory is an open, governed OpenMetadata entity that can be tied to data assets, users, teams, threads, domains, data products, metrics, policies, incidents, and workflows. Engineers can capture and retrieve memories through APIs, SDKs, MCP, chat, or AI applications.\n\nUse memories to preserve:\n\n- why a metric changed\n- why a column was renamed\n- what assumption was used in an analysis\n- which remediation fixed a data quality issue\n- which dashboard or data product a decision applies to\n- what an AI agent learned while investigating an incident\n- what a domain expert explained in a conversation\n\nMemories unlock tribal knowledge by making it reusable, governed, searchable, and available to every human, assistant, and agent that touches your data.\n\n---\n\n## MCP, Semantic Search, APIs, AI SDK, and Memory\n\nOpenMetadata makes context actionable through AI- and developer-friendly interfaces.\n\n### MCP Server\n\nOpenMetadata includes an MCP server that lets MCP-compatible assistants and agents interact with the metadata graph through natural language.\n\nAI assistants can use OpenMetadata MCP to:\n\n- search metadata\n- run semantic search\n- retrieve entity details\n- inspect lineage\n- understand data contracts and policy context\n- retrieve or preserve memory nuggets\n- update descriptions, tags, owners, and other metadata\n- create glossary terms and lineage\n- list and create data quality tests\n- analyze root causes of data quality failures\n\nGet started: [OpenMetadata MCP Server Documentation](https://docs.open-metadata.org/latest/how-to-guides/mcp)\n\n### Semantic Search\n\nSemantic Search lets users and AI assistants find data assets by meaning, not only exact keywords.\n\n```text\nFind trusted customer purchase datasets with known data quality issues and recent remediation notes.\n```\n\nOpenMetadata can surface conceptually related assets, metrics, glossary terms, data products, memory nuggets, and governance context even when names differ across domains, tools, and teams.\n\n### APIs, SDKs, Events, and Webhooks\n\nOpenMetadata exposes APIs, SDKs, events, and webhooks so teams can ingest, update, search, subscribe to, and automate metadata across their ecosystem.\n\nDevelopers can use the AI SDK to build custom AI applications that use OpenMetadata context and memory programmatically.\n\n---\n\n## What You Can Build\n\n### AI Data Discovery\nAsk natural-language questions over the metadata graph and find relevant assets even when names and keywords do not match exactly.\n\n### Trusted AI Assistants\nGround AI responses in governed metadata: owners, descriptions, glossary terms, classifications, quality, freshness, usage, lineage, policies, contracts, and memory.\n\n### Agent Memory and Tribal Knowledge\nCapture conversations, decisions, assu",
    "manifest_file": "package.json",
    "manifest_content": "{\n  \"name\": \"open-metadata\",\n  \"version\": \"0.1.0\",\n  \"private\": true,\n  \"engines\": {\n    \"node\": \">=10.0.0\",\n    \"yarn\": \"^1.22.0\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/open-metadata/OpenMetadata.git\"\n  },\n  \"devDependencies\": {\n    \"quicktype\": \"20.0.27\"\n  },\n  \"resolutions\": {\n    \"lodash\": \"4.18.1\"\n  },\n  \"scripts\": {\n    \"preinstall\": \"yarn global add node-gyp@10.0.1\",\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  }\n}\n",
    "strategic_keywords": [
      "agent",
      "agents",
      "memory",
      "mcp",
      "workflow"
    ],
    "relationship_label": "Memory 组件",
    "data_confidence": "high",
    "evidence_sources": [
      "github_trending",
      "github_repo_api",
      "readme",
      "package.json"
    ],
    "score_breakdown": {
      "heat": 11,
      "relevance": 20,
      "novelty": 11,
      "productize": 14,
      "adoption": 10,
      "relation": 10,
      "risk_signal": 8,
      "total": 84
    },
    "strategic_score": 84
  }
]