[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"tool-npiv--chatblade":3,"similar-npiv--chatblade":173},{"id":4,"github_repo":5,"name":6,"description_en":7,"description_zh":8,"ai_summary_zh":8,"readme_en":9,"readme_zh":10,"quickstart_zh":11,"use_case_zh":12,"hero_image_url":13,"owner_login":14,"owner_name":15,"owner_avatar_url":16,"owner_bio":17,"owner_company":17,"owner_location":18,"owner_email":17,"owner_twitter":19,"owner_website":17,"owner_url":20,"languages":21,"stars":30,"forks":31,"last_commit_at":32,"license":33,"difficulty_score":34,"env_os":35,"env_gpu":36,"env_ram":37,"env_deps":38,"category_tags":43,"github_topics":46,"view_count":34,"oss_zip_url":17,"oss_zip_packed_at":17,"status":49,"created_at":50,"updated_at":51,"faqs":52,"releases":83},3516,"npiv\u002Fchatblade","chatblade","A CLI Swiss Army Knife for ChatGPT","Chatblade 是一款专为 ChatGPT 设计的命令行“瑞士军刀”，旨在让开发者在终端中高效地与 AI 模型交互。它解决了传统网页版对话难以融入自动化工作流、无法便捷处理管道数据以及重复输入长提示词的痛点。通过 Chatblade，用户可以直接将命令输出管道传输给 AI，或保存常用提示词模板，轻松实现脚本生成、数据提取及上下文连续对话。\n\n该工具特别适合熟悉终端操作的开发者、运维工程师及技术研究人员，能够帮助他们将 AI 能力无缝集成到日常编码和系统管理任务中。其技术亮点包括支持流式文本输出、智能提取响应中的 JSON 或代码块、灵活切换 GPT-3.5\u002F4 等模型版本，以及强大的会话记忆功能，允许用户随时回溯或延续之前的对话上下文。\n\n需要注意的是，Chatblade 项目目前已归档停止维护，作者建议有类似需求的用户转向使用 `llm` 或 `Fabric` 等现代替代方案。尽管如此，理解 Chatblade 的设计思路仍有助于掌握如何在命令行环境中更高效地利用大语言模型。使用前需配置 OpenAI API 密钥，即可通过简单的指令开启智能化的终端协作体验。","# 🗄️ Project Archived (No Longer Maintained)\n\nChatblade is now archived and no longer under active development. It did its job in the early days of LLM tooling, but today you’re generally better off using Claude Code or Codex directly.\n\nIf you’re looking for a modern CLI in the same spirit, I recommend `llm` (https:\u002F\u002Fgithub.com\u002Fsimonw\u002Fllm) or Fabric (https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric).\n\n\n# Chatblade\n\n## A CLI Swiss Army Knife for ChatGPT\n\nChatblade is a versatile command-line interface (CLI) tool designed to interact with OpenAI's ChatGPT. It accepts piped input, arguments, or both, and allows you to save common prompt preambles for quick usage. Additionally, Chatblade provides utility methods to extract JSON or Markdown from ChatGPT responses.\n\n**Note**: You'll need to set up your OpenAI API key to use Chatblade.\n\nYou can do that by either passing `--openai-api-key KEY` or by setting an env variable `OPENAI_API_KEY` (recommended). The examples below all assume an env variable is set.\n\n## Install\n\n### Latest and greatest\n\nTo stay up to date with the current main branch you can:\n\n- check out the project, and run `pip install .`\n- or `pip install 'chatblade @ git+https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade'`\n\n### Via pypi\n\nThe last released version can be installed with `pip install chatblade --upgrade`\n\n### Via Brew\n\n```\nbrew install chatblade\n```\n\n## Documentation\n\n### Making queries\n\n#### A new conversation\n\nYou can begin any query by just typing. f.e.:\n\n```bash\nchatblade how can I extract a still frame from a video at 22:01 with ffmpeg\n```\n\n\u003Cimg width=\"650\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_readme_83fade4bcec6.png\">\n\n#### recall the last conversation\n\nif you would like to recall the last conversation just call it back with `-l`\n\n```bash\nchatblade -l\n```\n\n#### Continue the last conversation\n\nTo continue the conversation and ask for a change within the context, you can again use `-l` but with a query.\n\n```bash\nchatblade -l can we make a gif instead from 00:22:01 to 00:22:04\n```\n\n`-l` is shorthand for `-S last` or the last session. We can keep track of and continue various distinct conversations using the [session options](#session-options)\n\n#### Picking between gpt-3.5 and 4\n\nBy default, gpt-3.5 is used, you can switch at any point to 4 by using `-c 4` or the latest 4o (\"omni\") by using `-c 4o`.\n\nAdditionally, you can pass any arbitrary full model name, f.e. `-c gpt-3.5-turbo-16k`.\n\n#### Chatting interactively\n\nIf you preferred to chat interactively instead just use `chatblade -i`.\n\n#### Show streaming text (experimental)\n\nYou can also stream the responses, just like in the webui. At the end of the stream it will format the result. This can be combined in an interactive session\n\n```chatblade -s -i```\n\n\u003Chttps:\u002F\u002Fuser-images.githubusercontent.com\u002F452020\u002F226891636-54d12df2-528f-4365-a4f3-e51cb025773c.mov>\n\n### Formatting the results\n\nResponses are parsed and if chatblade thinks its markdown it will be presented as such, to get syntax highlighting. But sometimes this may not be what you want, as it removes new lines, or because you are only interested in extracting a part of the result to pipe to another command.\n\nIn that case you have 2 options:\n\n- `-r` for raw, which just prints the text exactly as ChatGPT returned it, and doesn't pass it through Markdown.\n- `-e` for extract, which will try to detect what was returned (either a code block or json) and extract only that part. If neither of those are found it does the same as `-r`\n\nBoth options can be used either with a new query, e.g.\n\n```bash\nchatblade -e write me a python boilerplate script that starts a server and prints hello world > main.py\n```\n\nor with the last result (json in this example)\n\n```bash\nchatblade -l -e | jq\n```\n\n### Piping content into chatblade\n\nIf we have long prompts we don't want to type everytime, or just want to provide context for our query we can pipe into chatblade.\n\ne.g.\n\n```bash\ncurl https:\u002F\u002Fnews.ycombinator.com\u002Frss | chatblade given the above rss can you show me the top 3 articles about AI and their links -c 4\n```\n\nThe piped input is placed above the query and sent to ChatGPT.\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_readme_113c6921f792.png\">\n\nor\n\n```bash\nchatblade what does this script do \u003C script.sh\n```\n\nWhat gets sent to ChatGPT over the wire is:\n\n```\npiped input\n-------\nquery\n```\n\n#### Session Options\n\nSessions are named conversations.\n\nIf you start chatblade with a session name SESS of your choice:\n\n```bash\nchatblade -S SESS can we make a gif instead from 00:22:01 to 00:22:04\n```\n\nchatblade will create a session called SESS if it does not exist, and it will store the current exchange (query-response pair) for SESS.\n\nIf such a session already exists, the saved conversation will be loaded and the new exchange will be appended.\n\nWithout a session argument, the exchange also gets stored in a session named `last`; however, subsequent sessionless invocation will overwrite the content of `last`. (You can continue a conversation that was started as a sessionless exchange by passing `-S last`, but `last` won't be a safe space for keeping a conversation, as the next sessionless invocation will clear it again.) The `-l` option is provided as a shorthand for `-S last`.\n\nIf you specify a session without a query:\n\n```bash\nchatblade -S SESS\n```\n\nchatblade will recall the conversation without modifying the session.\n\nchatblade supports various operations on sessions. It provides the `--session-OP` options, where `OP` can be `list`, `path`, `dump`, `delete`, `rename`.\n\n### Checking token count and estimated costs\n\nIf you want to check the approximate cost and token usage of a previous query, you can use the `-t` flag for \"tokens.\"\n\nWe could do this when passing in a lot of context like in the example above for instance.\n\n```bash\ncurl https:\u002F\u002Fnews.ycombinator.com\u002Frss | chatblade given the above rss can you show me the top 3 articles about AI and their links -t\n```\n\n\u003Cimg width=\"650\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_readme_4818fdf930b0.png\">\n\nThis won't perform any action over the wire, and just calculates the tokens locally.\n\n### Use custom prompts (the system msg)\n\nThe system message is used to instruct the model how to behave, see [OpenAI - Instructing Chat Models](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fchat\u002Finstructing-chat-models).\n\nThese can be loaded with `-p`. For convenience any file we place under ~\u002F.config\u002Fchatblade\u002F will be picked up by this command.\n\nSo for example, given the following file `~\u002F.config\u002Fchatblade\u002Fetymology`, which contains:\n\n```\nI want you to act as a professional Etymologist and Quiz Generator. You have a deep knowledge of etymology and will be provided with a word.\nThe goal is to create cards that quiz on both the etymology and finding the word by its definition.\n\nThe following is what a perfect answer would look like for the word \"disparage\":\n\n[{\n  \"question\": \"A verb used to indicate the act of speaking about someone or something in a negative or belittling way.\u003Cbr\u002F> \u003Ci>E.g He would often _______ his coworkers behind their backs.\u003C\u002Fi>\",\n  \"answer\": \"disparage\"\n},\n{\n  \"question\": \"What is the etymological root of the word disparage?\",\n  \"answer\": \"From the Old French word \u003Ci>'desparagier'\u003C\u002Fi>, meaning 'marry someone of unequal rank', which comes from \u003Ci>'des-'\u003C\u002Fi> (dis-) and \u003Ci>'parage'\u003C\u002Fi> (equal rank)\"\n}]\n\nYou will return answers in JSON only. Answer truthfully and if you don't know then say so. Keep questions as close as possible to the\nprovided examples. Make sure to include an example in the definition question. Use HTML within the strings to nicely format your answers.\n\nIf multiple words are provided, create questions and answers for each of them in one list.\n\nOnly answer in JSON, don't provide any more text. Valid JSON uses \"\" quotes to wrap its items.\n```\n\nWe can now run a command and refer to this prompt with `-p etymology`:\n\n```bash\nchatblade -p etymology gregarious\n```\n\nYou can also point -p to a file path directly to load a system message from any arbitrary location\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_readme_37c8332ab79f.png\">\n\nAnd since we asked for JSON, we can pipe our result to something else, e.g.:\n\n```bash\nchatblade -l -e > toanki\n```\n\n### Configuring for Azure OpenAI\n\nchatblade can be used with an Azure OpenAI endpoint, in which case in addition to the `OPENAI_API_KEY` you'll need to set the following environment variables:\n\n- `OPENAI_API_TYPE` :: Set to `azure`. As required by [openai-python](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-python)\n- `AZURE_OPENAI_ENDPOINT` :: URL to your cognitive services' endpoint, e.g. `https:\u002F\u002Feastus.api.cognitive.microsoft.com\u002F`. Please note this is a *breaking change* introduced by `openai-python` and the previous environment variable name is `OPENAI_API_BASE`\n- `OPENAI_API_AZURE_ENGINE` :: name of your deployment in Azure, f.e. `my-gpt-35-turbo` (maps to a specific model)\n\n*Note*: that this will override any option for `-c 3.5` or `-c 4` which don't make sense in this case.\n\n### Help\n\n```\nusage: Chatblade [-h] [--openai-api-key key] [--openai-base-url key] [--temperature t] [-c CHAT_GPT] [-i] [-s] [-t] [--version] [-p name] [-e] [-r] [-n] [-o] [--theme theme] [-l]\n                 [-S sess] [--session-list] [--session-path] [--session-dump] [--session-delete] [--session-rename newsess]\n                 [query ...]\n\na CLI Swiss Army Knife for ChatGPT\n\npositional arguments:\n  query                            Query to send to chat GPT\n\noptions:\n  -h, --help                       show this help message and exit\n  --openai-api-key key             the OpenAI API key can also be set as env variable OPENAI_API_KEY\n  --openai-base-url key            A custom url to use the openAI against a local or custom model, eg ollama\n  --temperature t                  temperature (openai setting)\n  -c CHAT_GPT, --chat-gpt CHAT_GPT\n                                   chat GPT model use either the fully qualified model name, or 3.5 (gpt-3.5-turbo), 4 (gpt-4), 4t (gpt-4-turbo), 4o (gpt-4o), mini (gpt-4o-mini),\n                                   o1 (o1-preview), o1mini (o1-mini). Can also be set via env variable OPENAI_API_MODEL\n  -i, --interactive                start an interactive chat session. This will implicitly continue the conversation\n  -s, --stream                     Stream the incoming text to the terminal\n  -t, --tokens                     display what *would* be sent, how many tokens, and estimated costs\n  --version                        display the chatblade version\n  -p name, --prompt-file name      prompt name - will load the prompt with that name at ~\u002F.config\u002Fchatblade\u002Fname or a path to a file\n\nresult formatting options:\n  -e, --extract                    extract content from response if possible (either json or code block)\n  -r, --raw                        print session as pure text, don't pretty print or format\n  -n, --no-format                  do not add pretty print formatting to output\n  -o, --only                       Only display the response, omit query\n  --theme theme                    Set the theme for syntax highlighting see https:\u002F\u002Fpygments.org\u002Fstyles\u002F, can also be set with CHATBLADE_THEME\n\nsession options:\n  -l, --last                       alias for '-S last', the default session if none is specified\n  -S sess, --session sess          initiate or continue named session\n  --session-list                   list sessions\n  --session-path                   show path to session file\n  --session-dump                   dump session to stdout\n  --session-delete                 delete session\n  --session-rename newsess         rename session\n```\n\n","# 🗄️ 项目已归档（不再维护）\n\nChatblade 现已归档，不再进行积极开发。它在大语言模型工具的早期阶段发挥了作用，但如今直接使用 Claude Code 或 Codex 通常会更好。\n\n如果你正在寻找类似精神的现代 CLI 工具，我推荐 `llm` (https:\u002F\u002Fgithub.com\u002Fsimonw\u002Fllm) 或 Fabric (https:\u002F\u002Fgithub.com\u002Fdanielmiessler\u002FFabric)。\n\n\n# Chatblade\n\n## 一个用于 ChatGPT 的命令行瑞士军刀\n\nChatblade 是一款多功能的命令行界面（CLI）工具，旨在与 OpenAI 的 ChatGPT 进行交互。它可以接受管道输入、参数或两者结合，并允许你保存常用的提示前言以便快速使用。此外，Chatblade 还提供了从 ChatGPT 响应中提取 JSON 或 Markdown 的实用方法。\n\n**注意**：你需要设置 OpenAI API 密钥才能使用 Chatblade。\n\n你可以通过传递 `--openai-api-key KEY` 或设置环境变量 `OPENAI_API_KEY` 来完成此操作（推荐）。以下示例均假设已设置了环境变量。\n\n## 安装\n\n### 最新版本\n\n要保持与当前主分支同步，你可以：\n\n- 克隆项目并运行 `pip install .`\n- 或者使用 `pip install 'chatblade @ git+https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade'`\n\n### 通过 PyPI\n\n最新发布的版本可以通过 `pip install chatblade --upgrade` 安装。\n\n### 通过 Brew\n\n```\nbrew install chatblade\n```\n\n## 文档\n\n### 发起查询\n\n#### 新的对话\n\n你可以直接输入内容开始任何查询。例如：\n\n```bash\nchatblade 如何用 ffmpeg 从视频的 22 分 01 秒处提取静帧？\n```\n\n\u003Cimg width=\"650\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_readme_83fade4bcec6.png\">\n\n#### 调用上次对话\n\n如果你想调用上次对话，只需使用 `-l` 参数：\n\n```bash\nchatblade -l\n```\n\n#### 继续上次对话\n\n若想继续对话并在上下文中提出修改，可以再次使用 `-l` 并附加查询：\n\n```bash\nchatblade -l 我们能否从 00:22:01 到 00:22:04 制作一个 GIF？\n```\n\n`-l` 是 `-S last` 或“最后会话”的简写。我们还可以使用[会话选项](#session-options)来跟踪和继续多个不同的对话。\n\n#### 在 gpt-3.5 和 4 之间切换\n\n默认使用 gpt-3.5，你可以在任何时候通过 `-c 4` 切换到 4 版本，或者使用 `-c 4o` 切换到最新的 4o（“omni”）。此外，你也可以传递任意完整的模型名称，例如 `-c gpt-3.5-turbo-16k`。\n\n#### 交互式聊天\n\n如果你更喜欢交互式聊天，只需使用 `chatblade -i`。\n\n#### 显示流式文本（实验性）\n\n你还可以像 Web UI 一样流式显示响应。流式结束后，结果会被格式化。这可以在交互式会话中结合使用：\n\n```chatblade -s -i```\n\n\u003Chttps:\u002F\u002Fuser-images.githubusercontent.com\u002F452020\u002F226891636-54d12df2-528f-4365-a4f3-e51cb025773c.mov>\n\n### 格式化结果\n\nChatblade 会解析响应，如果它认为是 Markdown 格式，就会以 Markdown 的方式呈现，从而实现语法高亮。但有时这可能不是你想要的，因为它会移除换行符，或者你只是想提取部分结果并将其传递给另一个命令。\n\n在这种情况下，你有两种选择：\n\n- `-r` 表示“原始”，它会原样打印 ChatGPT 返回的文本，而不经过 Markdown 处理。\n- `-e` 表示“提取”，它会尝试检测返回的内容（代码块或 JSON），并仅提取该部分。如果未找到这两者，则行为与 `-r` 相同。\n\n这两种选项都可以与新的查询一起使用，例如：\n\n```bash\nchatblade -e 写一个启动服务器并打印“Hello World”的 Python 模板脚本 > main.py\n```\n\n或者与上次的结果结合使用（本例中为 JSON）：\n\n```bash\nchatblade -l -e | jq\n```\n\n### 将内容通过管道传入 Chatblade\n\n如果我们有较长的提示，不想每次都手动输入，或者只是想为查询提供上下文，就可以通过管道将内容传入 Chatblade。\n\n例如：\n\n```bash\ncurl https:\u002F\u002Fnews.ycombinator.com\u002Frss | chatblade 根据以上 RSS，请告诉我关于 AI 的前三篇文章及其链接 -c 4\n```\n\n管道输入会放在查询之前，然后发送给 ChatGPT。\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_readme_113c6921f792.png\">\n\n或者：\n\n```bash\nchatblade 这个脚本是做什么的？ \u003C script.sh\n```\n\n实际发送给 ChatGPT 的内容是：\n\n```\n管道输入\n-------\n查询\n```\n\n#### 会话选项\n\n会话是指命名的对话。\n\n如果你使用自定义会话名 SESS 启动 Chatblade：\n\n```bash\nchatblade -S SESS 我们能否从 00:22:01 到 00:22:04 制作一个 GIF？\n```\n\nChatblade 会创建名为 SESS 的会话（如果它不存在），并将当前的查询-响应对存储在该会话中。\n\n如果该会话已经存在，系统会加载已保存的对话，并将新的交互追加到其中。\n\n如果没有指定会话参数，交互也会被存储在名为 `last` 的会话中；然而，后续无会话调用会覆盖 `last` 的内容。你可以通过传递 `-S last` 继续一个以无会话方式开始的对话，但 `last` 并不是一个安全的地方来保存对话，因为下一次无会话调用会再次清空它。`-l` 选项是 `-S last` 的简写。\n\n如果你只指定会话而没有查询：\n\n```bash\nchatblade -S SESS\n```\n\nChatblade 会调用该会话，但不会修改会话内容。\n\nChatblade 支持多种会话操作。它提供了 `--session-OP` 选项，其中 `OP` 可以是 `list`、`path`、`dump`、`delete` 或 `rename`。\n\n### 检查 token 数量和预估费用\n\n如果你想检查上一次查询的大致成本和 token 使用情况，可以使用 `-t` 标志，表示“token”。\n\n例如，在上面的例子中，当我们传递大量上下文时，就可以这样做：\n\n```bash\ncurl https:\u002F\u002Fnews.ycombinator.com\u002Frss | chatblade 根据以上 RSS，请告诉我关于 AI 的前三篇文章及其链接 -t\n```\n\n\u003Cimg width=\"650\" alt=\"image\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_readme_4818fdf930b0.png\">\n\n此操作不会在网络上执行任何操作，而只是在本地计算 token 数量。\n\n### 使用自定义提示（系统消息）\n\n系统消息用于指示模型的行为方式，详情请参阅 [OpenAI - 指导聊天模型](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fchat\u002Finstructing-chat-models)。\n\n这些提示可以通过 `-p` 参数加载。为方便起见，我们将任何放置在 `~\u002F.config\u002Fchatblade\u002F` 目录下的文件都交由该命令自动读取。\n\n例如，假设我们有一个名为 `~\u002F.config\u002Fchatblade\u002Fetymology` 的文件，内容如下：\n\n```\n我希望你扮演一位专业的词源学家兼测验生成器。你对词源学有深入的了解，并会收到一个单词作为输入。\n目标是创建一系列卡片，既测试词源知识，也通过释义来猜测单词。\n\n以下是一个针对单词“disparage”的完美答案示例：\n\n[{\n  \"question\": \"一个动词，用来表示以消极或贬低的方式谈论某人或某事。\u003Cbr\u002F> \u003Ci>例如：他经常在背后 _______ 他的同事。\u003C\u002Fi>\",\n  \"answer\": \"disparage\"\n},\n{\n  \"question\": \"单词 disparage 的词源是什么？\",\n  \"answer\": \"源自古法语单词 \u003Ci>'desparagier'\u003C\u002Fi>, 意为‘与地位不平等的人结婚’，由 \u003Ci>'des-'\u003C\u002Fi>（意为‘否定’）和 \u003Ci>'parage'\u003C\u002Fi>（意为‘平等地位’）组成\"\n}]\n\n你只需以 JSON 格式返回答案。如实作答；若不确定，请明确说明。问题应尽可能贴近提供的示例。务必在释义题中包含一个例句。使用 HTML 格式化字符串，使答案更加美观。\n\n如果提供了多个单词，则需为每个单词分别创建问题和答案，并将它们汇总成一个列表。\n\n仅以 JSON 格式作答，不得添加其他文本。有效的 JSON 必须使用双引号 `\"\"` 包裹其键值。\n```\n\n现在我们可以运行一条命令，并通过 `-p etymology` 引用此提示：\n\n```bash\nchatblade -p etymology gregarious\n```\n\n此外，您也可以直接指定文件路径来加载任意位置的系统消息：\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_readme_37c8332ab79f.png\">\n\n由于我们要求输出为 JSON 格式，因此可以将其管道传递给其他工具，例如：\n\n```bash\nchatblade -l -e > toanki\n```\n\n### 配置 Azure OpenAI\n\nchatblade 可以与 Azure OpenAI 终端点一起使用。在这种情况下，除了设置 `OPENAI_API_KEY` 环境变量外，还需要配置以下环境变量：\n\n- `OPENAI_API_TYPE` :: 设置为 `azure`。这是 [openai-python](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-python) 库的要求。\n- `AZURE_OPENAI_ENDPOINT` :: 您的认知服务终端点 URL，例如 `https:\u002F\u002Feastus.api.cognitive.microsoft.com\u002F`。请注意，这是 `openai-python` 引入的一项*重大变更*，之前的环境变量名称为 `OPENAI_API_BASE`。\n- `OPENAI_API_AZURE_ENGINE` :: 您在 Azure 中的部署名称，例如 `my-gpt-35-turbo`（对应特定模型）。\n\n*注意*：这将覆盖任何 `-c 3.5` 或 `-c 4` 选项，因为在这种情况下这些选项不再适用。\n\n### 帮助信息\n\n```\n用法: Chatblade [-h] [--openai-api-key key] [--openai-base-url key] [--temperature t] [-c CHAT_GPT] [-i] [-s] [-t] [--version] [-p name] [-e] [-r] [-n] [-o] [--theme theme] [-l]\n                 [-S sess] [--session-list] [--session-path] [--session-dump] [--session-delete] [--session-rename newsess]\n                 [query ...]\n\n一款适用于 ChatGPT 的多功能 CLI 工具\n\n位置参数:\n  query                            发送给 ChatGPT 的查询内容\n\n可选参数:\n  -h, --help                       显示帮助信息并退出\n  --openai-api-key key             OpenAI API 密钥也可通过环境变量 OPENAI_API_KEY 设置\n  --openai-base-url key            自定义 URL，用于对接本地或自定义模型，例如 Ollama\n  --temperature t                  温度参数（OpenAI 设置）\n  -c CHAT_GPT, --chat-gpt CHAT_GPT\n                                   指定 ChatGPT 模型，可使用完整模型名称，或简写形式：3.5（gpt-3.5-turbo）、4（gpt-4）、4t（gpt-4-turbo）、4o（gpt-4o）、mini（gpt-4o-mini）、o1（o1-preview）、o1mini（o1-mini）。也可通过环境变量 OPENAI_API_MODEL 设置\n  -i, --interactive                启动交互式聊天会话。此模式会自动延续对话\n  -s, --stream                     将接收到的文本流式输出到终端\n  -t, --tokens                     显示即将发送的内容、令牌数量及预估费用\n  --version                        显示 chatblade 版本\n  -p name, --prompt-file name      提示文件名——将从 ~\u002F.config\u002Fchatblade\u002Fname 或指定路径加载相应提示\n\n结果格式化选项:\n  -e, --extract                    如果可能，从响应中提取内容（JSON 或代码块）\n  -r, --raw                        以纯文本形式打印会话，不进行美化或格式化\n  -n, --no-format                  不对输出添加美化格式\n  -o, --only                       仅显示响应内容，省略查询部分\n  --theme theme                    设置语法高亮主题，详见 https:\u002F\u002Fpygments.org\u002Fstyles\u002F；也可通过 CHATBLADE_THEME 环境变量设置\n\n会话选项:\n  -l, --last                       “-S last”的别名，即未指定会话时的默认会话\n  -S sess, --session sess          启动或继续命名会话\n  --session-list                   列出所有会话\n  --session-path                   显示会话文件的存储路径\n  --session-dump                   将会话内容转储到标准输出\n  --session-delete                 删除会话\n  --session-rename newsess         重命名会话\n```","# Chatblade 快速上手指南\n\n> **⚠️ 重要提示**：本项目已归档（Archived），不再维护。作者建议现代场景下直接使用 Claude Code、Codex，或尝试替代工具 `llm` (Simon Willison) 和 `Fabric` (Daniel Miessler)。以下指南仅供参考或维护旧项目使用。\n\nChatblade 是一个用于与 OpenAI ChatGPT 交互的命令行工具（CLI）。它支持管道输入、参数传递、会话管理以及从响应中提取 JSON\u002F代码块等功能。\n\n## 环境准备\n\n- **操作系统**：Linux, macOS, Windows (需配置 Python 环境)\n- **前置依赖**：\n  - Python 3.7+\n  - `pip` 包管理工具\n- **API 密钥**：\n  - 需要拥有 OpenAI API Key。\n  - 推荐将密钥设置为环境变量，避免每次命令都输入：\n    ```bash\n    export OPENAI_API_KEY=\"你的 sk-xxxxxx 密钥\"\n    ```\n  - *注：国内用户若使用代理或中转服务，可能还需设置 `OPENAI_BASE_URL`。*\n\n## 安装步骤\n\n你可以选择以下任意一种方式进行安装：\n\n### 方式一：通过 PyPI 安装（推荐）\n```bash\npip install chatblade --upgrade\n```\n*国内用户可使用清华源加速：*\n```bash\npip install chatblade --upgrade -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：通过 Homebrew 安装 (macOS\u002FLinux)\n```bash\nbrew install chatblade\n```\n\n### 方式三：安装最新开发版\n```bash\npip install 'chatblade @ git+https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade'\n```\n\n## 基本使用\n\n### 1. 发起单次查询\n直接在命令后跟随问题即可，默认使用 `gpt-3.5-turbo` 模型。\n\n```bash\nchatblade 如何用 ffmpeg 在 22:01 处提取视频帧？\n```\n\n### 2. 切换模型\n使用 `-c` 参数指定模型，支持 `3.5`, `4`, `4o`, `4t`, `mini` 等简写或完整模型名。\n\n```bash\n# 使用 GPT-4\nchatblade -c 4 请解释量子纠缠\n\n# 使用特定版本\nchatblade -c gpt-4-turbo-preview 写一个 Python 脚本\n```\n\n### 3. 多轮对话与会话管理\n- **继续上一次对话**：使用 `-l` 参数。\n  ```bash\n  chatblade -l 把上面的代码改成异步版本\n  ```\n- **命名会话**：使用 `-S` 创建或切换到指定会话。\n  ```bash\n  # 创建名为 \"project_a\" 的会话\n  chatblade -S project_a 初始化一个 React 项目结构\n  \n  # 后续在该会话中继续提问\n  chatblade -S project_a 添加路由配置\n  ```\n\n### 4. 管道输入 (Piping)\n可以将其他命令的输出作为上下文传递给 Chatblade。\n\n```bash\n# 分析日志文件\ncat error.log | chatblade 分析上述日志中的主要错误原因\n\n# 结合网络请求\ncurl https:\u002F\u002Fexample.com\u002Fdata.json | chatblade -c 4 总结这份 JSON 数据的核心字段\n```\n\n### 5. 结果提取与格式化\n- **提取代码或 JSON**：使用 `-e` 自动识别并提取代码块或 JSON 内容，方便重定向到文件。\n  ```bash\n  # 生成脚本并直接保存为 main.py\n  chatblade -e 写一个打印 Hello World 的 Python 脚本 > main.py\n  \n  # 提取上次回答的 JSON 并用 jq 处理\n  chatblade -l -e | jq\n  ```\n- **原始输出**：使用 `-r` 禁止 Markdown 格式化，保留原始换行。\n  ```bash\n  chatblade -r 输出一段纯文本列表\n  ```\n\n### 6. 交互式模式\n启动类似终端的交互聊天界面：\n```bash\nchatblade -i\n```\n若需流式输出（打字机效果）：\n```bash\nchatblade -s -i\n```\n\n### 7. 自定义系统提示词 (Prompts)\n将常用的 System Prompt 保存在 `~\u002F.config\u002Fchatblade\u002F` 目录下，通过 `-p` 调用。\n\n1. 创建文件 `~\u002F.config\u002Fchatblade\u002Ftranslator`：\n   ```text\n   You are a professional translator. Translate the following text into Chinese strictly.\n   ```\n2. 使用：\n   ```bash\n   chatblade -p translator Hello world\n   ```\n\n### 8. 查看 Token 消耗预估\n在实际发送请求前，使用 `-t` 计算 Token 数量和预估成本（本地计算，不消耗额度）：\n```bash\nchatblade -t 这是一段很长的背景资料... 请总结\n```","一位后端开发者需要在终端快速处理服务器日志并生成修复脚本，同时希望将结果直接保存为文件以便立即执行。\n\n### 没有 chatblade 时\n- 必须频繁切换浏览器标签页，手动复制冗长的错误日志到 ChatGPT 网页版，操作繁琐且打断心流。\n- 获取代码回复后，需手动剔除模型输出的寒暄语和 Markdown 格式标记（如 \\`\\`\\`python），才能粘贴到编辑器中。\n- 难以在命令行上下文中延续对话，若想调整脚本逻辑（例如“增加重试机制”），不得不重新组织语言并再次复制粘贴整个上下文。\n- 无法直接将 AI 的输出通过管道（pipe）传递给 `jq` 或其他 CLI 工具进行二次处理，数据流转存在断点。\n\n### 使用 chatblade 后\n- 直接在终端通过管道将日志传给 chatblade（如 `cat error.log | chatblade`），无需离开命令行环境即可发起询问。\n- 利用 `-e` 参数自动提取纯代码块或 JSON 内容，一键过滤掉所有无关文本，确保输出干净可用。\n- 通过 `-l` 标志轻松回溯并延续上一轮会话，直接在原命令后追加新需求（如 `chatblade -l add retry logic`），保持上下文连贯。\n- 支持将提取后的结果直接重定向到文件（如 `> fix_script.py`）或管道给其他工具，实现从分析到修复的自动化闭环。\n\nchatblade 将大模型能力无缝嵌入命令行工作流，让开发者无需切换界面即可高效完成“查询 - 提取 - 落地”的全链路任务。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnpiv_chatblade_eff7f4a0.png","npiv","Nick","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fnpiv_9ea69ce2.jpg",null,"Zurich","_npiv_","https:\u002F\u002Fgithub.com\u002Fnpiv",[22,26],{"name":23,"color":24,"percentage":25},"Python","#3572A5",98.2,{"name":27,"color":28,"percentage":29},"Makefile","#427819",1.8,2603,91,"2026-03-29T23:09:53","GPL-3.0",2,"Linux, macOS, Windows","不需要本地 GPU（基于 OpenAI API 的云端推理）","未说明",{"notes":39,"python":40,"dependencies":41},"该工具已归档不再维护。运行无需本地显卡，但必须配置 OpenAI API Key（通过环境变量 OPENAI_API_KEY 或命令行参数）。支持通过 Homebrew (macOS\u002FLinux) 或 pip 安装。可配置连接 Azure OpenAI 服务。","未说明（需支持 pip 安装）",[42],"openai-python",[44,45],"插件","语言模型",[47,48],"chatgpt","cli","ready","2026-03-27T02:49:30.150509","2026-04-06T09:45:05.406062",[53,58,63,68,73,78],{"id":54,"question_zh":55,"answer_zh":56,"source_url":57},16118,"如何在非交互模式下使用 chatblade，使其仅输出最新问题的答案而不重复打印历史会话内容？","在使用 `--session` 保留上下文的同时，需要添加 `--extract` (或 `-e`) 参数。完整的命令示例如下：\nchatblade \\\n\t--session \"$SESSION_NAME\" \\\n\t--stream \\\n\t--extract \\\n\t--raw \\\n\t--no-format \\\n\t--only \\\n\t\"$query\"\n添加 `--extract` 后，工具会尝试从响应中提取内容（如 JSON 或代码块），这也能解决重复输出历史回答的问题。","https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fissues\u002F48",{"id":59,"question_zh":60,"answer_zh":61,"source_url":62},16119,"遇到 \"The model: gpt-4 does not exist\" 错误怎么办？是否需要订阅 ChatGPT Plus？","该错误通常是因为 API 密钥没有访问 GPT-4 模型的权限，而不是因为模型不存在。\n注意：OpenAI 的 API 访问和 ChatGPT Plus 订阅（用于网页版 UI）是分开计费的。如果你只通过 chatblade 使用 API，不需要购买 ChatGPT Plus 订阅。你只需要确保你的 API 账户已开通 GPT-4 访问权限并按需付费即可。API 调用通常比订阅更灵活且划算。","https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fissues\u002F40",{"id":64,"question_zh":65,"answer_zh":66,"source_url":67},16120,"在公司网络环境下运行 chatblade 时遇到 \"Certificate verify failed: self signed certificate\" 证书验证错误如何解决？","如果公司网络使用了自签名证书（例如通过 Netskope 等代理），你需要将公司的根证书导出并指定给 chatblade。\n解决步骤（以 macOS 为例）：\n1. 打开“钥匙串访问” (Keychain Access) > “系统”，找到公司的 CA 证书和中间证书。\n2. 右键点击并选择“导出 2 项”，保存为 `.pem` 文件。\n3. 设置环境变量 `REQUESTS_CA_BUNDLE` 指向该文件，或在命令前直接指定：\nREQUESTS_CA_BUNDLE=\u002FUsers\u002F你的用户名\u002FDownloads\u002FCertificates.pem chatblade ...\n这样 chatblade 就能信任公司的自签名证书了。","https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fissues\u002F58",{"id":69,"question_zh":70,"answer_zh":71,"source_url":72},16121,"chatblade 是否支持 Homebrew 安装？","是的，chatblade 已经支持通过 Homebrew 安装。请直接查看项目 README 文档中的安装说明部分获取具体命令。","https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fissues\u002F5",{"id":74,"question_zh":75,"answer_zh":76,"source_url":77},16122,"在浅色终端主题下，chatblade 的代码块和文本颜色显示不正常（黑底黑字或难以阅读）怎么办？","这是一个已知的外观问题。当使用浅色终端主题时，代码块可能仍渲染为深色背景，导致可读性差。\n临时解决方法：\n1. 手动调整终端主题配置，将高对比度下的前景色（如颜色 7 的变体）改为更浅的颜色。\n2. 或者尝试使用 `--theme` 标志指定其他 Pygments 主题来适配浅色背景。\n维护者已将其标记为增强功能，未来可能会自动检测终端主题并进行适配。","https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fissues\u002F50",{"id":79,"question_zh":80,"answer_zh":81,"source_url":82},16123,"如何让 chatblade 流式输出结果，而不是等待全部生成完毕后再显示？","chatblade 已支持流式输出功能。你可以使用 `-s` 或 `--stream` 参数来启用它。\n例如：\nchatblade --stream \"你的问题\"\n启用后，你将能够实时看到生成的回复内容，而无需等待整个响应完成。该功能已在 v0.1.0 版本中合并并发布。","https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fissues\u002F12",[84,89,94,99,104,109,114,119,124,129,134,139,144,149,154,159,164,169],{"id":85,"version":86,"summary_zh":87,"released_at":88},90740,"v0.7.0","## 变更内容\n* 杂项：将 tiktoken 升级至 0.8.0，以修复 Python 3.13 的构建问题，由 @chenrui333 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F98 中完成。\n\n## 新贡献者\n* @chenrui333 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F98 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.6.4...v0.7.0","2024-10-12T06:57:22",{"id":90,"version":91,"summary_zh":92,"released_at":93},90741,"v0.6.4","## 变更内容\n* 移除了 LaTeX 注释中的格式化，以防止 `%` 字符导致文本行被注释掉，由 @danielj-n 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F97 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.6.3...v0.6.4","2024-08-30T07:46:13",{"id":95,"version":96,"summary_zh":97,"released_at":98},90742,"v0.6.3","## 变更内容\n* 为兼容 Python 3.12，移除 distutils 的使用，由 @carlsmedstad 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F92 中完成\n* 阻止 LaTeX 格式化应用于代码块和行内代码，由 @danielj-n 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F95 中完成\n* 从 requirements.txt 中移除未使用的依赖项，由 @carlsmedstad 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F93 中完成\n\n## 新贡献者\n* @carlsmedstad 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F92 中完成了首次贡献\n* @danielj-n 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F95 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.6.2...v0.6.3","2024-08-26T08:19:19",{"id":100,"version":101,"summary_zh":102,"released_at":103},90743,"v0.6.2","## 变更内容\n* 功能：由 @ldelossa 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F91 中实现的 LaTeX 转纯文本功能\n\n## 新贡献者\n* @ldelossa 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F91 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.5.0...v0.6.2","2024-08-14T06:30:40",{"id":105,"version":106,"summary_zh":107,"released_at":108},90744,"v0.5.0","## 变更内容\n* 更新模型映射，添加 GPT-4o；@hashworks 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F85 中进行了小型的 README 修复。\n\n## 新贡献者\n* @hashworks 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F85 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.4.0...v0.5.0","2024-07-19T12:44:06",{"id":110,"version":111,"summary_zh":112,"released_at":113},90745,"v0.4.0","## 变更内容\n* 在依赖项中提升了版本号，并由 @mcoliver 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F71 中添加了版本标志。\n* 修复了 Azure OpenAI 的支持问题，并去除了多余的分号，由 @jackyu1996 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F67 中完成。\n\n## 新贡献者\n* @mcoliver 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F71 中完成了首次贡献。\n* @jackyu1996 在 https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F67 中完成了首次贡献。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.3.4...v0.4.0","2024-03-11T08:23:00",{"id":115,"version":116,"summary_zh":117,"released_at":118},90746,"v0.3.4","**完整更新日志**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.3.3...v0.3.4\n\n修复了在非流式传输情况下某些场景中的冗余查找。","2023-11-10T12:14:47",{"id":120,"version":121,"summary_zh":122,"released_at":123},90747,"v0.3.3","支持最新的 OpenAI 库，并为新的 OpenAI 模型 `gpt-4-1106-preview` 添加快捷参数 `-c 4t`。","2023-11-10T10:52:07",{"id":125,"version":126,"summary_zh":127,"released_at":128},90748,"v0.3.1","**完整更新日志**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.3.0...v0.3.1\n\n更新至最新模型，支持设置任意模型，并可通过环境变量设置模型。","2023-06-14T08:10:29",{"id":130,"version":131,"summary_zh":132,"released_at":133},90749,"v0.3.0","**完整更新日志**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.2.3...v0.3.0","2023-05-03T15:12:53",{"id":135,"version":136,"summary_zh":137,"released_at":138},90750,"v0.2.3","fix streaming when out of window bounds\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.2.2...v0.2.3","2023-04-19T05:26:56",{"id":140,"version":141,"summary_zh":142,"released_at":143},90751,"v0.2.2","fix file exists error on windows: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fissues\u002F39","2023-04-11T09:33:26",{"id":145,"version":146,"summary_zh":147,"released_at":148},90752,"v0.2.1","bugfix loading system prompt with interactive session\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.2.0...v0.2.1","2023-04-02T13:43:56",{"id":150,"version":151,"summary_zh":152,"released_at":153},90753,"v0.2.0","# Main new features\r\n* Allow managing multiple conversation threads via sessions, thanks to @csabahenk \r\n* Azure openAI support thx to @phromo \r\n* More options for formatting (`-n`, -`o`) by @Deadolus \r\n\r\n## What's Changed\r\n* Session support by @csabahenk in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F33\r\n* Adds Azure openai support by @phromo in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F25\r\n* Azure support - use same ENV names as python-openai by @phromo in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F26\r\n* Adding option to only print answer by @Deadolus in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F29\r\n* Introduce no format option by @Deadolus in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F30\r\n* Fix readme typo by @erjanmx in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F32\r\n\r\n## New Contributors\r\n* @phromo made their first contribution in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F25\r\n* @erjanmx made their first contribution in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F32\r\n* @csabahenk made their first contribution in https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fpull\u002F33\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.1.1...v0.2.0","2023-04-02T08:33:04",{"id":155,"version":156,"summary_zh":157,"released_at":158},90754,"v0.1.1","## What's Changed\r\n* fix on token count, also display system prompt if present\r\n* simplified prompt loading with -p (yaml no longer needed)\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.1.0...v0.1.1","2023-03-24T06:55:47",{"id":160,"version":161,"summary_zh":162,"released_at":163},90755,"v0.1.0","## What's Changed\r\n- streaming result possible with `-s`\r\n- improvements to text handling (dont try to show as markdown where not ideal)\r\n- display panels switched for top\u002Fdown header\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.0.2...v0.1.0","2023-03-22T17:15:41",{"id":165,"version":166,"summary_zh":167,"released_at":168},90756,"v0.0.2","## What's Changed\r\n* Add interactive mode REPL like mode `-i` (with thanks to @fliepeltje)\r\n* Better calculation of tokens\u002Fprices and formatting (with thanks to @anakaiti)\r\n* better error handling for cache path\r\n* better error handling for users without gpt4\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnpiv\u002Fchatblade\u002Fcompare\u002Fv0.0.1...v0.0.2","2023-03-21T12:45:04",{"id":170,"version":171,"summary_zh":17,"released_at":172},90757,"v0.0.1","2023-03-20T16:28:37",[174,184,192,205,214,222],{"id":175,"name":176,"github_repo":177,"description_zh":178,"stars":179,"difficulty_score":34,"last_commit_at":180,"category_tags":181,"status":49},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,"2026-04-05T23:32:43",[182,183,45],"开发框架","Agent",{"id":185,"name":186,"github_repo":187,"description_zh":188,"stars":189,"difficulty_score":34,"last_commit_at":190,"category_tags":191,"status":49},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[182,45],{"id":193,"name":194,"github_repo":195,"description_zh":196,"stars":197,"difficulty_score":34,"last_commit_at":198,"category_tags":199,"status":49},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[200,201,202,44,183,203,45,182,204],"图像","数据工具","视频","其他","音频",{"id":206,"name":207,"github_repo":208,"description_zh":209,"stars":210,"difficulty_score":211,"last_commit_at":212,"category_tags":213,"status":49},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[183,200,182,45,203],{"id":215,"name":216,"github_repo":217,"description_zh":218,"stars":219,"difficulty_score":211,"last_commit_at":220,"category_tags":221,"status":49},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74939,"2026-04-05T23:16:38",[45,200,182,203],{"id":223,"name":224,"github_repo":225,"description_zh":226,"stars":227,"difficulty_score":211,"last_commit_at":228,"category_tags":229,"status":49},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70626,"2026-04-05T22:51:36",[45,183,182,44]]