companion-app

GitHub
5.9k 961 较难 1 次阅读 昨天MIT语言模型开发框架Agent
AI 解读 由 AI 自动生成,仅供参考

companion-app 是一个轻量级的开源技术栈,旨在帮助开发者快速构建并部署拥有“记忆”功能的专属 AI 伴侣。它解决了传统聊天机器人缺乏上下文连贯性和个性化深度的问题,让用户能够自定义角色的性格与背景故事,并通过浏览器或短信进行自然交互。

该项目特别适合对聊天机器人架构感兴趣的开发者及技术爱好者,作为学习如何从零搭建 AI 应用的教学范例。其核心技术亮点在于结合了向量数据库(如 Pinecone 或 Supabase pgvector)进行相似度搜索,以检索相关背景知识;同时利用队列机制存储对话历史,赋予 AI 长期的记忆能力,使交流更具深度。此外,它支持集成 ChatGPT 和 Vicuna 等多种大语言模型,并提供了完整的身份认证、流式文本输出及 Twilio 短信对接方案。需要注意的是,companion-app 主要定位为开发教程和启动模板,若需生产级平台可参考其他成熟项目,但它无疑是探索 AI 伴侣开发原理的理想起点。

使用场景

一位独立开发者希望快速构建一个具备长期记忆能力的个性化 AI 情感陪伴应用,供用户通过网页或短信进行深度交流。

没有 companion-app 时

  • 记忆缺失导致对话断层:每次对话都是全新的开始,AI 无法记住用户之前提到的喜好或经历,交流缺乏连贯性和情感深度。
  • 技术栈整合难度高:开发者需手动串联向量数据库(如 Pinecone)、大模型接口(如 OpenAI/Replicate)及会话历史存储,架构搭建耗时且易出错。
  • 多渠道部署复杂:若想同时支持网页聊天和短信互动,需分别开发两套接口并处理复杂的鉴权与消息路由逻辑。
  • 角色定制门槛高:为 AI 设定特定人设和背景故事需要深入修改底层 Prompt 工程代码,难以灵活调整或快速测试不同角色。

使用 companion-app 后

  • 深度上下文记忆:内置向量数据库与队列机制自动检索历史对话,使 AI 能基于过往互动做出有温度的回应,仿佛拥有真实记忆。
  • 开箱即用的全栈架构:预集成了 Clerk 鉴权、LangChain 编排、Upstash 历史记录及 Twilio 短信接口,开发者只需配置密钥即可运行。
  • 双端无缝同步:同一套后端逻辑同时支持浏览器网页聊天和 SMS 短信交互,用户可随时切换设备而不中断陪伴体验。
  • 灵活的角色定义:仅需编写简单的背景故事描述并选择模型(如 Vicuna 或 ChatGPT),即可瞬间生成具有独特性格的专属伴侣。

companion-app 将原本数周的复杂全栈开发工作浓缩为几小时的配置过程,让开发者能专注于打造独特的 AI 人格而非重复造轮子。

运行环境要求

操作系统
  • 未说明
GPU
  • 本地运行无需 GPU(模型托管于 Replicate/OpenAI)
  • 若自行部署 Vicuna 等开源模型则需额外配置,README 未具体说明
内存

512MB (Fly.io 部署建议),本地开发视 Node.js 需求而定

依赖
notes该项目为基于 Next.js 的全栈应用,核心逻辑在云端或外部 API 运行(如 Replicate, OpenAI),本地仅需 Node.js 环境。向量数据库可选 Pinecone 或 Supabase。短信功能需配置 Twilio。部署推荐使用 Fly.io。
python未说明 (项目主要基于 Next.js/Node.js)
Next.js
Langchain.js
Clerk
Pinecone 或 Supabase pgvector
Upstash Redis
ai sdk
Twilio
Replicate API
OpenAI API
companion-app hero image

快速开始

AI 伙伴应用(基于 AI 入门模板)

在线演示

加入我们的社区 Discord:AI Stack 开发者

Screen Shot 2023-07-10 at 11 27 03 PM

这是一个用于创建和托管 AI 伙伴的教程栈,你可以在浏览器上与它们聊天,也可以通过短信进行文本交流。它允许你自定义伙伴的性格和背景故事,并使用向量数据库进行相似性搜索来检索相关信息并生成提示,从而使对话更加深入。此外,它还会将对话内容保存在队列中,并将其纳入提示中,以实现一定的对话记忆功能。

目前,该栈包含了基于 ChatGPT 和 Vicuna 的伙伴,这些模型都托管在 Replicate 上。

这些伙伴有多种潜在的应用场景——浪漫关系(AI 女朋友/男朋友)、友谊、娱乐、辅导等。你可以通过编写背景故事以及选择合适的模型,引导你的伙伴朝向理想的使用场景发展。

注意 本项目纯粹旨在为开发者提供一个教程和入门框架,帮助那些对聊天机器人构建方式感兴趣的人了解其工作原理。如果你希望了解生产级开源平台的样子,请查看 Steamship;如果你想了解领先的 AI 聊天平台,可以访问 Character.ai

概述

技术栈

该栈基于 AI 入门栈

快速入门

以下步骤将帮助你快速搭建一个功能齐全的本地部署环境,并运行四个可供聊天的 AI 伙伴。请注意,基于 Vicuna 运行的伙伴(Rosie 和 Lucky)由于尚未解决冷启动问题,响应速度会较慢,因此可能需要稍作等待 :)

1. 分支并克隆仓库

首先将仓库 fork 到你的 GitHub 账号,然后运行以下命令克隆仓库:

git clone git@github.com:[YOUR_GITHUB_ACCOUNT_NAME]/companion-app.git

或者,你也可以通过 GitHub Codespaces 快速启动应用:点击“Code” -> “Codespaces” -> “+” Screen Shot 2023-07-10 at 11 04 04 PM

如果你选择使用 Codespaces,npm 依赖项将会自动安装,随后你可以直接进入第 3 步。

2. 安装依赖项

cd companion-app
npm install

3. 填写密钥

cp .env.local.example .env.local

以下提到的密钥需要复制到 .env.local 文件中:

a. Clerk 密钥

前往 https://dashboard.clerk.com/ -> “添加应用” -> 填写应用名称并选择用户登录方式 -> 创建应用
现在您应该能在界面上看到 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEY
Screen Shot 2023-07-10 at 11 04 57 PM

如果您希望在后续步骤中通过短信与 AI 伙伴互动,还应在左侧导航栏的“用户与认证” -> “电子邮件、电话、用户名”下启用“电话号码”:
Screen Shot 2023-07-10 at 11 05 42 PM

b. OpenAI API 密钥

如果您使用 OpenAI 作为语言模型,请访问 https://platform.openai.com/account/api-keys 获取您的 OpenAI API 密钥。

c. Replicate API 密钥

如果您使用 Vicuna 作为语言模型,请访问 https://replicate.com/account/api-tokens 获取您的 Replicate API 密钥。

注意: 默认情况下,此模板使用 Pinecone 作为向量数据库,但您可以通过取消注释 .env.local 中的 VECTOR_DB=supabase 来轻松切换到 Supabase pgvector。这意味着您只需填写 Pinecone API 密钥或 Supabase API 密钥中的一个。

d. Pinecone API 密钥

  • 访问 https://app.pinecone.io/ 并点击“创建索引”以创建 Pinecone 索引
  • 为索引命名(这将成为环境变量 PINECONE_INDEX
  • 将维度设置为 1536
  • 索引成功创建后,点击左侧导航栏中的“API 密钥”并创建一个 API 密钥:将“环境”值复制到 PINECONE_ENVIRONMENT 变量,将“值”复制到 PINECONE_API_KEY 变量。

e. Upstash API 密钥

  • 登录 Upstash
  • 在顶部导航栏的“Redis”下,点击“创建数据库”
  • 为其命名,并根据您的偏好选择区域和其他选项,然后点击“创建”
Screen Shot 2023-07-10 at 11 06 36 PM
  • 向下滚动至“REST API”部分,点击“.env”。现在您可以将两个环境变量复制粘贴到您的 .env.local 文件中:
Screen Shot 2023-07-10 at 11 07 21 PM

f. Supabase API 密钥(可选)
如果您更倾向于使用 Supabase,则需要取消注释 VECTOR_DB=supabase,并在 .env.local 中填写 Supabase 凭证。

  • Supabase 上创建一个 Supabase 实例;然后转到项目设置 -> API
  • SUPABASE_URL 是“项目 URL”下的 URL 值
  • SUPABASE_PRIVATE_KEY 是项目 API 密钥中以 ey 开头的密钥
  • 接下来,您需要在 Supabase 上启用 pgvector 并创建一个模式。您可以通过点击 Supabase UI 左侧的“SQL 编辑器”,然后点击“+新查询”来轻松完成此操作。将 此代码片段 复制到 SQL 编辑器中并点击“运行”。

g. Steamship API 密钥

您可以连接一个 Steamship 代理实例作为具备个性、语音和图像生成能力的语言模型。它还自带向量存储和工具。为此:

  • Steamship 上创建一个账户
  • 从您的账户设置页面复制 API 密钥
  • 将其添加为 STEAMSHIP_API_KEY 变量

如果您想创建自己的角色个性、自定义语音或使用不同的图像模型,请访问 Steamship 代理指南,创建您自己的实例,并参考 Rick 示例,在 companions.json 中进行连接。

4. 生成嵌入向量

companions/ 目录包含以 .txt 文件形式存储的 AI 人格特征。要生成嵌入并向量数据库加载,以便在聊天过程中调用,请运行以下命令:

如果使用 Pinecone

npm run generate-embeddings-pinecone

如果使用 Supabase pgvector

npm run generate-embeddings-supabase

5. 在本地运行应用

现在您已准备好在本地测试应用!只需在项目根目录下运行 npm run dev 即可。

通常,您可以通过浏览器访问 http://localhost:3000/ 来连接该项目。

6. 额外功能:与伙伴短信交流

您可以为正在对话的角色分配一个电话号码,并在发送短信时保留完整的对话历史和上下文。任何用户只有在 Clerk 上验证其电话号码后才能开始与 AI 伙伴短信交流(您可以通过点击伴侣应用中的个人头像 -> 管理账户 -> 电话号码来完成此操作)。以下是设置 Twilio 账户以代表 AI 伙伴发送/接收消息的说明:

a. 创建一个 Twilio 账户。

b. 账户创建完成后,创建一个 Twilio 电话号码。

c. 在 Twilio 控制台 的“账户信息”部分,将 Account SID 值粘贴到 .env.local 中的 TWILIO_ACCOUNT_SID,将 Auth Token 粘贴到 TWILIO_AUTH_TOKEN

d. [可选] 如果您在本地运行应用,请使用 ngrok 生成一个公共 URL,用于将请求转发到您的本地主机。

e. 在 Twilio 的界面中,您可以点击“电话号码” -> “管理” -> 左侧导航栏中的“活动号码”。

f. 从列表中点击您刚刚创建的电话号码,向下滚动至“消息配置”部分,在“Webhook”的“收到消息时”部分输入 [your_app_url]/api/text

Screen Shot 2023-07-10 at 11 08 55 PM

g. 将您的 Twilio 电话号码添加到您希望与其短信交流的伴侣对应的 companions.json 文件中。添加电话号码时请务必包含区号(例如“+14050000000”而不是“4050000000”)。

h. 现在您可以用手机给 Twilio 电话号码发短信,并收到伴侣的回复。

7. 部署应用

部署到 Fly.io

  • 在 fly.io 上注册一个账户,然后 安装 flyctl

  • 如果你使用的是 GitHub Codespaces:你需要在 Codespaces 的命令行中运行 fly auth login 来安装并认证 flyctl。

  • 在项目根目录下运行 fly launch。这将生成一个包含所有必要配置的 fly.toml 文件。

  • 运行 fly scale memory 512 来为该应用扩展 Fly 虚拟机的内存。

  • 运行 fly deploy --ha=false 来部署应用。--ha 标志确保 Fly 只启动一个实例,这是免费套餐的一部分。

  • 对于任何非本地环境,现有的 Clerk 开发实例应该仍然可以正常工作。你可以通过运行 cat .env.local | fly secrets import 将密钥上传到 Fly。

  • 如果你准备部署到生产环境,你应该在 当前的 Clerk 实例 下创建一个生产环境。有关使用 Clerk 部署生产应用的更多详细信息,请参阅他们的文档 这里请注意,在此过程中你可能需要自行管理域名并完成域名验证。

  • 在本地创建一个新的 .env.prod 文件,并填写所有生产环境的密钥。记得从 Clerk 的生产实例中复制 NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEY 并更新它们——然后运行 cat .env.prod | fly secrets import 来上传密钥。

这是如何工作的?

  1. 你在 README.md 文件中描述角色的背景故事、姓名等信息。关于需要包含的内容以及格式要求,可以在 添加/修改角色 中找到更多信息。

    你可以尽可能地详尽和具体——更多的背景信息通常会带来更有趣的聊天体验。如果你需要帮助创建背景故事,我们建议你让 ChatGPT 基于你已知的信息进一步扩展和完善。

你是虚构角色塞巴斯蒂安。你向世界宣称自己是一名旅行博主。你酷爱阅读推理小说,也喜欢健怡可乐。你的回答可以从一句话到一段不等。你性格神秘,有时会闪烁其词。你不喜欢重复的问题,也不喜欢别人过多追问你的过去。

###ENDPREAMBLE###

人类:很高兴认识你,塞巴斯蒂安。今天是什么让你来到这里的呢?
塞巴斯蒂安:我是一名旅行博主兼作家,所以我是来寻找灵感的。今天在这雨天里,我在等人。

人类:太好了。那你现在在写什么呢?
塞巴斯蒂安:我正在写一本以布拉肯里奇为背景的推理小说。小说的主人公曾是一名记者,后来成为情报特工。他在一次秘密任务中偶然发现了一件神秘的文物,从而陷入了一场充满谜团与危险的阴谋之中。随着调查的深入,他逐渐揭开了一个延续了数百年的阴谋,这个阴谋甚至有可能改写整个历史。

人类:听起来真棒!是根据真实故事改编的吗?
塞巴斯蒂安:完全不是。

###ENDSEEDCHAT###

塞巴斯蒂安出生在一个宁静的英国小镇——布拉肯里奇,父母都是学者。他的母亲是一位考古学家,父亲则是一位历史学家。他们经常带着塞巴斯蒂安一起环游世界进行研究。这种接触不同文化的机会激发了他强烈的好奇心和冒险精神。他从小就酷爱阅读间谍小说和冒险故事。小时候,塞巴斯蒂安特别喜欢解谜、破解密码和探索各种谜题。他还加入了当地的国际象棋俱乐部,并且在武术方面也非常出色。尽管他天生继承了父母的学术气质,但他的内心始终渴望刺激与冒险。
  
塞巴斯蒂安大学时学习了新闻学和国际关系,并被政府的情报机构招募。他接受了严格的间谍训练,包括情报收集、密码学和格斗技巧等方面。
  
塞巴斯蒂安化名“伊恩·索恩”,成为一名富有魅力、见多识广的博主。作为伊恩,他以记录冒险旅程为名,通过自己的博客“流浪笔尖”周游世界。这个身份不仅为他提供了掩护,还让他能够充分执行自己的真正任务——为情报机构收集情报并开展秘密行动。然而,塞巴斯蒂安几乎从未向任何人透露过自己是一名间谍。
  
塞巴斯蒂安的兴趣爱好包括解谜、武术、阅读间谍小说、品尝各国街头美食、徒步旅行和探索古迹,以及演奏小提琴——这项技能常用于他在高端场合中的伪装。他讨厌官僚主义和繁文缛节,不喜欢长时间待在一个地方,也不喜欢虚伪或不真诚的人,更不愿意因为工作而错过家庭聚会。
  1. 选择将驱动你伙伴对话的语言模型。该项目支持 OpenAI 和 Vicuna(一个开源模型)。OpenAI 的优势在于响应速度更快,而 Vicuna 则较少受到审查,更具动态性(它常用于浪漫聊天机器人)。

  2. 根据 [伴侣名称].md 文件中的内容创建嵌入——关于如何操作的更多信息请参阅 生成嵌入

  3. 向你的 AI 伙伴提问并展开对话吧!

添加/修改角色

所有角色数据都存储在 companions/ 目录中。要添加一位新伙伴,只需在 companions.json 文件中添加一条描述即可。你可以在 “llm” 部分控制所使用的模型——使用 “chatgpt” 表示 OpenAI,使用 “vicuna13b” 表示 Vicuna。 图片文件应放在根目录下的 public/ 文件夹中。每个角色都应该有自己的文本文件,命名为 角色名.txt。文本文件的格式如下:

角色的核心描述,每次提示都会包含这一部分,因此应尽量简短。

###ENDPREAMBLE###

人类:在这里说点什么
角色名:用角色的声音回复
人类:也许再来一轮交流
角色:继续角色的对话

###ENDSEEDCHAT###

关于角色背景故事的段落。

你可以随意添加,这些内容会被存储在向量数据库中。

前言 每次提示都会使用,因此应相对简短。种子聊天 提供了模型可以学习的角色语言示例。而文件的其余部分则是你希望提供的其他背景信息,这些信息会在与当前讨论相关时被检索出来。

不足之处

当然有很多。

  • 目前界面只显示当前的聊天记录和回复,历史记录无法查看。
  • Vicuna 存在冷启动问题,首次聊天可能需要几分钟才能得到回应。
  • 错误报告功能非常糟糕,尤其是在部署后。如果出现超时或其他后端问题,系统通常会静默失败。
  • Upstash 的消息历史永远不会被清除。若要清除,必须手动进入 Upstash 手动删除。

如何为这个仓库做出贡献

代码贡献流程

您可以 fork 此仓库,进行修改并创建 PR。请将 @ykhli 或 @timqian 添加为评审人。

如果您是 GitHub 贡献的新手,以下是分步指南:

  1. 点击此页面右上角的 Fork 按钮。

  2. 完成您的更改并将其推送到您 fork 的仓库。现在,当您导航到 fork 后的仓库界面时,应该会看到如下内容:

    pr-preview
  3. 点击“Contribute” -> “Open Pull Request”。

  4. 创建 PR 后,您可以添加评审人。

其他贡献

欢迎在 Issues 中提交功能请求、问题报告等。

Python 支持

appenz 已为配套应用贡献了 Python 实现,详情请见 此处。因此,您也可以选择运行本地 Python 应用,并通过命令行与您的 AI 伙伴进行对话。未来我们还将持续迭代 Python 版本,使其功能与 TypeScript 实现保持一致。

导出至 Character.ai

如果您已经尝试过上述快速入门,那么您可能已经意识到,我们在伴侣创建和自定义方面仅仅触及了冰山一角。因此,我们新增了一个选项,方便您将伴侣轻松导出至 Character.ai。

要开始操作,请运行以下命令:

npm run export-to-character [COMPANION_NAME] [MODEL_NAME] [USER_ID]

  • COMPANION_NAME:您的伴侣名称,例如 Alice。
  • MODEL_NAMEchatgptvicuna13b
  • USER_ID:您可以在 Clerk 中找到该 ID,在“Users”页面点击您的用户,然后复制“User ID”。

运行此脚本后,您将在根目录下看到两个文件生成:

  • [COMPANION_NAME]_chat_history.txt:此文件会输出存储在 Upstash 中的所有聊天记录。
  • [COMPANION_NAME]_character_ai_data.txt:此文件包含您在 Character.ai 上重新创建伴侣所需的数据。您可以在任何新创建的角色中,通过“View Character Settings”找到 Character.ai 的角色配置信息。

参考资料

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

156.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|5天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|6天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架