CodeGraph:把代码变成可查询图谱

开源工具 · 代码分析 · 图数据库 📌 **开源地址:**github.com/colbymchenry/codegraph(⭐ 971 Stars) 📜 **语言:**Python 🏷️ **标签:**code-analysis · dependency-graph · tree-sitter · Neo4j ⚠️ **状态:**Pre-alpha(开发中,欢迎尝鲜) 你有没有过这种经历? 入职第一天,前辈丢给你一个 10 万行 的项目源码,说:“先熟悉一下代码。” 你打开文件夹,几百个文件、几千个函数,谁调谁、谁依赖谁、改一处会不会崩十处——完全看不懂。 又或者你在做 Code Review,看到一个函数 processData() 被改了,你想知道:“还有哪些地方在调用它?改了会不会影响其他模块?” 传统的解决方案是全局搜索 + 人工梳理,费时费力还容易漏。要是能把整个代码库变成一张「关系网」,点点鼠标就能查到所有调用链,那该多好? 💡 **这就是 CodeGraph 想做的事:**把你的代码解析成一张可查询的图谱,函数、文件、类型是「节点」,调用、导入、包含关系是「边」。用图数据库的强大查询能力,秒级回答各种代码关系问题。 CodeGraph 是一个基于图数据库的代码分析工具。它能把你的代码仓库(Python、C、C++、Go、JavaScript)解析成结构化的图谱数据,存入 Neo4j 图数据库,然后通过 REST API 进行高效查询。 它能回答这些问题: 哪些函数调用了 foo? foo 又调用了哪些函数? 函数的完整「调用树」是什么?(递归展开) 谁使用了 foo 的返回值? foo 的定义在哪里?在哪些地方被调用? 哪些文件导入了 foo? foo 的类型是什么?还有哪些函数是同一类型? 三、核心能力详解 🌐 多语言支持 基于 tree-sitter 解析引擎(和 Neovim、Helix 等编辑器用的是同一个),统一支持 5 种主流语言: 语言解析器状态Pythontree-sitter-python✅Ctree-sitter-c✅C++tree-sitter-cpp✅Gotree-sitter-go✅JavaScripttree-sitter-javascript✅ ...

2026年5月28日 · 3 分钟 · 天边的星星

Horizon:让AI帮你读完HN、Reddit、RSS

开源 AI 新闻雷达 · 自动聚合 · 智能打分 · 双语日报 📌 **开源地址:**github.com/Thysrael/Horizon 🌐 **在线演示:**thysrael.github.io/Horizon 📜 **许可证:**MIT(完全免费)| ⭐ 4,800+ Stars 信息焦虑时代 你有没有这种感觉—— 每天刷 Hacker News、Reddit、RSS、公众号……刷了半天,真正有价值的内容没几条,反而被标题党和重复信息淹没。 好新闻分散在各处,坏信息却源源不断。 💡 你需要的不是更多的信息源,而是一个帮你"先筛一遍"的工具。 Horizon 是什么 Horizon 是一个开源的 AI 新闻雷达工具,核心理念: 🌅 你只需享受新闻,剩下交给 Horizon。 它能从 Hacker News、Reddit、RSS、Telegram、Twitter/X、GitHub 等 7 大平台自动抓取内容,用 AI 给每条新闻打分(0-10),去掉重复的,补上背景知识,最后生成一份排版精美的中英双语日报。 项目在 GitHub 上已获得 4,800+ Star,被 HelloGitHub 推荐,非常活跃。 核心功能详解 📡 7 大信息源一网打尽 Horizon 支持从以下平台抓取信息,覆盖了开发者日常关注的大部分渠道: 📰 Hacker News 抓取内容:热门技术故事 ✅ 支持 Top N 评论摘要 💬 Reddit ...

2026年5月28日 · 2 分钟 · 天边的星星

Open Design:开源免费的全能 AI 设计工具,16种Agent+129套设计系统+31种技能

本地优先 · 完全开源 · Claude Design 的最佳替代方案 📌 **开源地址:**github.com/nexu-io/open-design(⭐ 40k+ Stars) 🌐 **官网:**open-design.ai 📥 **下载:**Releases 页面 📜 **许可证:**Apache 2.0 一、Open Design 是什么? 2026年4月,Anthropic 发布了 Claude Design(基于 Opus 4.7),展示了 LLM 从「写文字」到「出设计稿」的飞跃。它一度爆火——但始终闭源、付费、纯云端、绑定 Anthropic 模型,无法自部署、无法切换 Agent、无法定制。 **Open Design(OD)**就是开源界的回答:同样的设计循环,同样的 Artifacts-first 理念,零锁定。 它的核心思路是:不造 Agent,只做连接。你电脑上已经装好的编程 Agent(Claude Code、Codex、Gemini CLI 等),Open Design 会自动检测并将它们转化为设计引擎,配合 31 种可组合技能和 129 套品牌级设计系统,驱动整个设计流程。 💡 **一句话概括:**告诉 AI「帮我做一个 SaaS 落地页」,它会先弹出问卷锁定需求,再选出视觉方向,然后自动生成带交互效果的完整页面——整个过程 1-3 分钟。 二、核心能力详解 🤖 16 种 Agent 自动检测 Open Design 不绑定任何单一模型。它会自动扫描你 PATH 中已安装的 Agent CLI,一键切换: ...

2026年5月28日 · 3 分钟 · 天边的星星

TinyFish:给AI Agent装上「上网能力」的企业级基础设施

在AI Agent飞速发展的今天,大模型越来越聪明,但它们有一个共同的短板——上不了网。无法实时搜索信息、无法浏览网页、无法自动操作网站,这让AI Agent的能力被大大限制。 TinyFish 就是为了解决这个问题而生的。它提供了一套企业级的 Web API,让任何 AI Agent 都能获得搜索、浏览、提取网页内容甚至自动操作网站的能力。 一个API Key,四大核心能力 TinyFish 的核心设计理念是「简单集成」。一个 API Key,统一的 credit 池,四个独立的 API 覆盖从搜索到自动化操作的全链路场景。 1. Search API — 网页搜索 输入查询关键词,返回结构化的搜索结果(标题、摘要、URL),直接可供 LLM 消费或程序化处理。 核心特性: 支持地区和语言偏好设置,获取本地化搜索结果 完全免费,不消耗 credits 速率限制:60次/分钟 使用示例(Python): `from tinyfish import TinyFish client = TinyFish() response = client.search.query( query=“2024年最佳AI编程工具”, location=“CN”, language=“zh” ) for r in response.results: print(r.title, “→”, r.url)` **cURL 调用:** `curl "https://api.search.tinyfish.ai?query=2024年最佳AI编程工具&location=CN&language=zh" \ -H "X-API-Key: $TINYFISH_API_KEY"` 2. Fetch API — 网页内容提取 用真实浏览器渲染网页(包括 JS 动态渲染的 SPA 页面),提取干净的页面内容。单次请求最多支持 10 个 URL,每个 URL 独立处理。 ...

2026年5月28日 · 3 分钟 · 天边的星星

别再被 AI 编程工具绑架了——Pi 让 Agent 自己改造自己

当所有 AI 编程工具都在"帮你决定一切"的时候,Pi 走了完全相反的路:给你一个最小核心,剩下的你自己组装。3000+ 社区包、50+ 扩展示例、30+ LLM 供应商——这不是一个产品,这是一个生态。 🔗 **项目主页:**pi.dev 📂 **GitHub:**earendil-works/pi 📜 **开源协议:**MIT 一、Pi 是什么? Pi 是一个极简主义的开源 AI 编程 Agent 框架,核心理念只有八个字:“提供原语,而非功能”(Primitives, not features)。 什么意思?Cursor 帮你内建了 Tab 补全、Windsurf 帮你内建了 Cascade 流程、Copilot 帮你内建了 Chat 面板——Pi 什么都不内建。它只给你四个工具(读、写、编辑、运行命令),然后说: “你需要什么功能,自己搭。搭不了?让我帮你搭。” 这就是 Pi 最特别的地方——它可以自己改造自己。你让 Pi 构建一个子代理系统,它写完代码后 /reload 立刻生效,Pi 就有了子代理能力。 二、三个独特优势 🎯 优势一:30+ LLM 供应商,想用谁用谁 Pi 支持 Anthropic、OpenAI、Google Gemini、Azure、Bedrock、Mistral、Groq、Cerebras、xAI、DeepSeek、Hugging Face、Kimi、MiniMax、小米 MiMo、OpenRouter、Ollama 等 30+ 供应商。 认证方式灵活: API Key:export ANTHROPIC_API_KEY=*** OAuth 订阅:/login 直接登录 Claude Pro/Max、ChatGPT Plus/Pro、GitHub Copilot ...

2026年5月28日 · 3 分钟 · 天边的星星

别再跪着啃源码了!Understand Anything 让你10分钟看透20万行代码

你有没有过这种经历? 刚入职一家新公司,领导丢过来一个20万行的代码库说:“这是咱们的核心系统,你先熟悉一下。” 然后你打开IDE,面对几百个文件夹、几千个文件,完全不知道从哪看起。看哪个文件?谁调谁?这个模块干嘛的?那个接口跟谁对接? 一整天下来,除了眼睛疼,啥也没看明白。 更惨的是接手"祖传代码"——前人已离职,文档不存在,注释是乱码,你只能一个函数一个函数地跟踪跳转,像在黑暗的迷宫里摸墙走。 今天介绍的这款开源工具,就是来终结这种痛苦的。 一、Understand Anything 是什么? Understand Anything 是一个 Claude Code 插件,它能用多 Agent 协作的方式,把你的整个代码库变成一个可交互的知识图谱。 不是简单的文件依赖树,而是一个你能点、能搜、能问的智能知识网络。每个文件、函数、类都是图上的节点,点击就能看到依赖关系、自然语言解释、架构分层。 GitHub 地址:https://github.com/Lum1104/Understand-Anything 截至目前:29k+ Star,2400+ Fork,上线不到两个月就冲上 GitHub Trending 榜首,热度可见一斑。 一句话总结:它不只是展示代码结构,它教你理解代码库。 二、核心功能拆解 1️⃣ 一键生成代码知识图谱 运行 /understand,工具会启动5个专业 Agent 协作: project-scanner:扫描项目,识别语言和框架 file-analyzer:提取函数、类、依赖关系,构建图谱节点和边 architecture-analyzer:识别架构分层(API / Service / Data / UI) tour-builder:生成架构导览路线 graph-reviewer:校验图谱完整性和一致性 最终输出一个 JSON 格式的知识图谱,并可通过 Dashboard 可视化展示。 支持 26+ 文件类型,不只是代码——Dockerfile、Terraform、SQL、Markdown 都能纳入图谱。 2️⃣ 交互式 Dashboard 运行 /understand-dashboard,浏览器自动打开一个交互式可视化面板: 🎨 按架构分层颜色编码(API 层蓝色、Service 层绿色、数据层橙色……) ...

2026年5月28日 · 2 分钟 · 天边的星星

谷歌 Antigravity 2.0 深度解读:从 AI 编程工具到通用智能体工作平台

2026年5月,谷歌I/O大会重磅发布 📌 官网地址: antigravity.google 📥 下载地址: antigravity.google/download 📚 官方教程: Getting Started 教程 一、Antigravity 是什么? 2025年11月,谷歌随 Gemini 3 一同发布了 Antigravity——一个「Agent 优先」的敏捷开发平台。它基于 VS Code 内核重构,整合了谷歌以 24亿美元 收购的 Windsurf 团队技术,将 IDE 从「AI 辅助编码」推进到 「Agent 自主执行 + 开发者审核」 的新范式。 简单来说:传统 AI 工具是帮你写代码,Antigravity 是 AI 帮你 规划、编码、测试、运行,你只负责审核和决策。 2026年5月的谷歌 I/O 大会上,谷歌发布了 Antigravity 2.0,定位从「开发者的 AI IDE」全面升级为 「通用智能体优先工作平台」,可以作为统一中枢管理多个数字智能体。 💡 核心理念: 「Agent 做事,开发者审核」——Agent 不仅能写代码,还能启动应用、在浏览器中测试、验证功能是否正常。通过 Tasks 和 Artifacts 进行更高层次的沟通。 二、Antigravity 2.0 核心更新 1️⃣ 多智能体协同 Antigravity 2.0 最大的亮点之一是 多智能体并行。你可以同时部署多个子智能体,分别处理不同的编程任务,互不干扰,多任务并行效率大幅提升。 以前开发需求要等一个任务完成才能开始下一个,中间只能盯着屏幕发呆。现在,你可以在 Agent Manager 中同时跑多个 Agent,在不同工作区处理多个不同任务,真正解放双手。 ...

2026年5月24日 · 3 分钟 · 天边的星星

简单详细的Typora 流程图使用

1、横向流程图源码格式(mermaid) graph LR A[方形] -->B(圆角) B --> C{条件a} C -->|a=1| D[结果1] C -->|a=2| E[结果2] A-->F[横向流程图] G[横向流程图] 例如 graph LR A[方形] --> B(圆角) B --> C{条件a} C --> |a=1| D[结果1] C --> |a==2| E[结果2] A --> F[横向流程图] G[横向流程图] ### 2、竖向流程图源码格式(mermaid) > ``` `graph TD A[方形] --> B(圆角) B --> C{条件a} C --> |a=1| D[结果1] C --> |a=2| E[结果2] A --> F[竖向流程图]` 例如: `graph TD A[方形] --> B(圆角) B --> C{条件a} C --> |a=1| D[结果1] C --> |a=2| E[结果2] A --> F[竖向流程图] ` 3、标准流程图源码格式(flow) st=>start: 开始框:>https://www.baidu.com op=>operation: 处理框 cond=>condition: 判断框(是或否?) sub1=subroutine: 子流程 io=>inputoutput: 输入输出框 e=>end: 结束框 st->op->cond cond(yes)->io->e cond(no)->sub1(right)->op 例如: ...

2021年1月29日 · 3 分钟 · 天边的星星

ElasticSearch安装与配置

ElasticSearch安装与配置 centos 7 安装 ElasticSearch 安装elasticsearch之前 先要安装java jdk 8 这里提供下载地址:链接: https://pan.baidu.com/s/1ZIJc0JWKMyLl4Iivh-YlBw 密码: gr08 `# 进入opt目录 cd /opt/ # 创建 soft文件夹 用来存储所有的软件 如果你有自己的目录,可以不创建这个目录 mkdir soft cd soft # 执行下载 ElasticSearch 这里使用目前最新的 7.10.1 如果没有wget命令 执行 yum install wget 进行安装 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.1-linux-x86_64.tar.gz # 解压文件 tar -zxvf elasticsearch-7.10.1-linux-x86_64.tar.gz # 修改文件夹名称和移动目录 mv elasticsearch-7.10.1 /opt/elasticsearch # 进入elasticsearch目录 cd /opt/elasticsearch # 默认为了安全,不要使用root进行启动,这里创建一个 elasticsearch 用户和组 # 添加 elasticsearch 组 groupadd elasticsearch # 添加 elasticsearch 用户 并添加到elasticsearch组中 -g 后表示组 useradd elasticsearch -g elasticsearch # 修改文件夹拥有者 表示把elasticsearch文件夹 给elasticsearch用户和elasticsearch组 # 修改这个组之前 先退到elasticsearch的目标文件夹上一级 chown -R elasticsearch:elasticsearch elasticsearch # 修改elasticsearch配置文件 # 进入elasticsearch 的config目录 cd elasticsearch/config/ # 编辑配置文件 参考下面配置文件 vi elasticsearch.yml ## 启动 # 进入 elasticsearch/bin目录 cd bin/ # 使用elasticsearch用户进行启动 sudo -u elasticsearch ./elasticsearch -d # 查询是否启动成功 ps -ef|grep elasticsearch # 查看启动日志 tail -f /opt/elasticsearch/logs/yqzl-service.log # 验证是否成功 curl http://localhost:9200 #出现这个表示成功 :` { "name" : "yqzl-node-1", "cluster_name" : "yqzl-service", "cluster_uuid" : "3wrpP4wwTFCBHdCboBqQfQ", "version" : { "number" : "7.10.1", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "1c34507e66d7db1211f66f3513706fdf548736aa", "build_date" : "2020-12-05T01:00:33.671820Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } ` ` elasticsearch.yml `# ======================== Elasticsearch Configuration ========================= # # NOTE: Elasticsearch comes with reasonable defaults for most settings. # Before you set out to tweak and tune the configuration, make sure you # understand what are you trying to accomplish and the consequences. # # The primary way of configuring a node is via this file. This template lists # the most important settings you may want to configure for a production cluster. # # Please consult the documentation for further information on configuration options: # https://www.elastic.co/guide/en/elasticsearch/reference/index.html # # ---------------------------------- Cluster ----------------------------------- # # Use a descriptive name for your cluster: 集群名称 # cluster.name: yqzl-service # # ------------------------------------ Node ------------------------------------ # # Use a descriptive name for the node: 节点名称 # node.name: yqzl-node-1 # # Add custom attributes to the node: # #node.attr.rack: r1 # # ----------------------------------- Paths ------------------------------------ # # Path to directory where to store the data (separate multiple locations by comma): # #path.data: /path/to/data # # Path to log files: # #path.logs: /path/to/logs # # ----------------------------------- Memory ----------------------------------- # # Lock the memory on startup: # #bootstrap.memory_lock: true # # Make sure that the heap size is set to about half the memory available # on the system and that the owner of the process is allowed to use this # limit. # # Elasticsearch performs poorly when the system is swapping the memory. # # ---------------------------------- Network ----------------------------------- # # Set the bind address to a specific IP (IPv4 or IPv6): 运行访问的ip 0.0.0.0 表示都可以访问 # network.host: 0.0.0.0 # # Set a custom port for HTTP: # #http.port: 9200 # # For more information, consult the network module documentation. # # --------------------------------- Discovery ---------------------------------- # # Pass an initial list of hosts to perform discovery when this node is started: # The default list of hosts is ["127.0.0.1", "[::1]"] # #discovery.seed_hosts: ["host1", "host2"] # # Bootstrap the cluster using an initial set of master-eligible nodes: 初始化主节点 # cluster.initial_master_nodes: ["yqzl-node-1"] # # For more information, consult the discovery and cluster formation module documentation. # # ---------------------------------- Gateway ----------------------------------- # # Block initial recovery after a full cluster restart until N nodes are started: # #gateway.recover_after_nodes: 3 # # For more information, consult the gateway module documentation. # # ---------------------------------- Various ----------------------------------- # # Require explicit names when deleting indices: # #action.destructive_requires_name: true ` 安装遇到问题 `elasticsearch启动时遇到的错误 elasticsearch用户拥有的内存权限太小,至少需要262144; ...

2020年12月18日 · 3 分钟 · 天边的星星

阿里云OSS之Nginx反向代理配置

nginx配置 设置代理 upstream ossproxy{ server zcpcimgs.oss-cn-beijing.aliyuncs.com; } 配置代理 server { listen 80; server_name zc2019.com; location /data { proxy_pass http://ossproxy; proxy_redirect off; proxy_set_header Host zcpcimgs.oss-cn-beijing.aliyuncs.com; proxy_set_header X-Real-IP remote_addr; proxy_set_header X-Forwarded-Forproxy_add_x_forwarded_for; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_max_temp_file_size 0; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } location / { # root html; # index index.html index.htm; proxy_pass http://zcjfweb; # 真实信息 proxy_set_header Host host; proxy_set_header X-Real-IPremote_addr; proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for; client_max_body_size 100M; proxy_read_timeout 30000; proxy_send_timeout 75s; #proxy_redirect off; #proxy_pass_header Set-Cookie; #proxy_hide_header X-Powered-By; #proxy_hide_header X-Mod-Pagespeed; #proxy_ignore_client_abort off; #proxy_cache_valid any 10m; #proxy_connect_timeout 75s; #proxy_read_timeout 75s; #proxy_send_timeout 75s; } ...

2019年3月19日 · 2 分钟 · 天边的星星