SuperAPI AI 工具集

karpathytalk-community

通用与其它

查看项目

更新于 10-15 18:16

技能介绍

KarpathyTalk 是一个基于 Go 语言的开源开发者社交网络,被描述为 Twitter 与 GitHub Gists 的结合体。它的帖子是纯 Markdown,社交层支持点赞、转发、引用、回复和关注,所有数据通过 JSON 和 Markdown API 开放访问,设计上同时面向人类用户和 LLM 智能体。

用途 KarpathyTalk 用于搭建一个以 Markdown 为核心的开发者社交平台。用户可以发布带语法高亮代码块和图片的帖子,并进行点赞、转发、引用、回复和关注等社交互动。由于数据开放且提供 JSON/Markdown 两种返回格式,它也适合作为智能体读取和嵌入社区内容的来源。

主要能力

  • GitHub OAuth 登录,无需创建新的账号凭据。
  • 帖子为 GFM Markdown,支持语法高亮代码块和图片上传。
  • 社交功能:点赞、转发、引用帖、回复、关注。
  • REST API 可返回 JSON(供智能体/代码使用)或 Markdown(供人类阅读)。
  • 单个 Go 二进制文件 + SQLite + uploads/ 目录,便于自托管。
  • 技术栈:Go、SQLite、htmx、goldmark。

使用方式 本地安装与运行:

  1. 创建 GitHub OAuth App:在 GitHub → Settings → Developer settings → OAuth Apps → New OAuth App 中填写 Application name 为 KarpathyTalk,Homepage URL 为 http://localhost:8080,Authorization callback URL 为 http://localhost:8080/auth/callback,保存 Client ID 和 Client Secret。
  2. 克隆并构建: git clone https://github.com/karpathy/KarpathyTalk.git cd KarpathyTalk go build -o karpathytalk ./cmd/karpathytalk
  3. 配置环境变量: export GITHUB_CLIENT_ID=$GITHUB_CLIENT_ID export GITHUB_CLIENT_SECRET=$GITHUB_CLIENT_SECRET export BASE_URL=http://localhost:8080 # 可选,默认即此值
  4. 运行: ./karpathytalk

或带选项:

./karpathytalk -addr :9090 -db ./data/karpathytalk.db 然后访问 http://localhost:8080。

CLI 参数:

  • -addr string:HTTP 监听地址(默认 ":8080")
  • -db string:SQLite 数据库路径(默认 "karpathytalk.db")

环境变量:

  • GITHUB_CLIENT_ID:必填,GitHub OAuth 客户端 ID
  • GITHUB_CLIENT_SECRET:必填,GitHub OAuth 客户端密钥
  • BASE_URL:可选,默认 http://localhost:8080,为部署应用的公开 URL

生产部署: 构建并复制: go build -o karpathytalk ./cmd/karpathytalk scp karpathytalk schema.sql user@yourserver:~/karpathytalk/ scp -r templates static user@yourserver:~/karpathytalk/ 在服务器上运行: ssh user@yourserver cd ~/karpathytalk export GITHUB_CLIENT_ID=$GITHUB_CLIENT_ID export GITHUB_CLIENT_SECRET=$GITHUB_CLIENT_SECRET export BASE_URL=https://yourdomain.com ./karpathytalk -addr :8080 Caddy TLS(推荐): yourdomain.com { reverse_proxy localhost:8080 } nginx TLS: server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } systemd 服务: [Unit] Description=KarpathyTalk After=network.target [Service] WorkingDirectory=/home/deploy/karpathytalk ExecStart=/home/deploy/karpathytalk/karpathytalk -addr :8080 Restart=always Environment=GITHUB_CLIENT_ID=$GITHUB_CLIENT_ID Environment=GITHUB_CLIENT_SECRET=$GITHUB_CLIENT_SECRET Environment=BASE_URL=https://yourdomain.com [Install] WantedBy=multi-user.target

API 使用: 所有数据开放,读取无需认证。API 对程序化访问返回 JSON,对人类/智能体阅读返回 Markdown。 以 JSON 获取帖子: curl https://karpathytalk.com/api/posts curl https://karpathytalk.com/api/posts/{postID} curl https://karpathytalk.com/api/users/{username}/posts 以 Markdown 获取帖子: curl https://karpathytalk.com/api/posts/{postID}.md

内容限制:

  • 帖子:最大 10,000 字符,每小时 30 条
  • 回复:最大 5,000 字符,每小时 60 条
  • 图片:最大 5 MB,仅支持 PNG/JPEG/GIF/WebP

数据库直接访问: SQLite 数据库为单文件,可直接查询用于分析、备份或迁移: sqlite3 karpathytalk.db .tables SELECT username, substr(content, 1, 80), created_at FROM posts ORDER BY created_at DESC LIMIT 20; SELECT username, likes, substr(content, 1, 60) FROM posts ORDER BY likes DESC LIMIT 10; SELECT username, COUNT(*) as followers FROM follows GROUP BY username ORDER BY followers DESC; 备份: cp karpathytalk.db karpathytalk.db.backup sqlite3 karpathytalk.db ".backup karpathytalk_backup.db"

项目结构: KarpathyTalk/ ├── cmd/ │ └── karpathytalk/ # 主入口 ├── templates/ # HTML 模板(htmx 驱动) ├── static/ # CSS、JS 资源 ├── uploads/ # 用户图片上传 ├── schema.sql # SQLite 模式 └── karpathytalk.db # 数据库(运行时创建)

适用场景

  • 自托管一个以 Markdown 为核心的开发者社交网络。
  • 让智能体读取时间线、用户帖子,或将社区内容嵌入 LLM 提示词上下文。
  • 通过直接查询 SQLite 进行数据分析、备份或迁移。

限制与注意事项

  • 需要自行创建 GitHub OAuth App 并配置回调地址,回调地址必须与 BASE_URL/auth/callback 完全一致。
  • 运行二进制文件时需保证 templates/ 和 static/ 目录位于其旁边,否则会报 templates: no such file。
  • SQLite 默认启用 WAL 模式,应避免多个二进制实例同时操作同一个 .db 文件,否则可能出现数据库锁定。
  • 图片上传依赖 uploads/ 目录,首次上传时自动创建,需检查写权限。
  • 端口 8080 被占用时可用 -addr :9090 更换端口。
  • 关于收费、价格、平台支持范围等更多信息,资料中暂未提供。