[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-j178--chatgpt":3,"tool-j178--chatgpt":61},[4,17,27,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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 真正成长为懂上",160411,2,"2026-04-18T23:33:24",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[14,26],"插件",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":10,"last_commit_at":33,"category_tags":34,"status":16},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[26,14,35,13],"图像",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":10,"last_commit_at":42,"category_tags":43,"status":16},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[26,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":50,"last_commit_at":51,"category_tags":52,"status":16},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,3,"2026-04-06T11:19:32",[15,35,14,13],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":16},8553,"spec-kit","github\u002Fspec-kit","Spec Kit 是一款专为提升软件开发效率而设计的开源工具包，旨在帮助团队快速落地“规格驱动开发”（Spec-Driven Development）模式。传统开发中，需求文档往往与代码实现脱节，导致沟通成本高且结果不可控；而 Spec Kit 通过将规格说明书转化为可执行的指令，让 AI 直接依据明确的业务场景生成高质量代码，从而减少从零开始的随意编码，确保产出结果的可预测性。\n\n该工具特别适合希望利用 AI 辅助编程的开发者、技术负责人及初创团队。无论是启动全新项目还是在现有工程中引入规范化流程，用户只需通过简单的命令行操作，即可初始化项目并集成主流的 AI 编程助手。其核心技术亮点在于“规格即代码”的理念，支持社区扩展与预设模板，允许用户根据特定技术栈定制开发流程。此外，Spec Kit 强调官方维护的安全性，提供稳定的版本管理，帮助开发者在享受 AI 红利的同时，依然牢牢掌握架构设计的主动权，真正实现从“凭感觉写代码”到“按规格建系统”的转变。",88749,"2026-04-17T09:48:14",[15,35,14,13],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":76,"owner_twitter":77,"owner_website":76,"owner_url":78,"languages":79,"stars":84,"forks":85,"last_commit_at":86,"license":76,"difficulty_score":10,"env_os":87,"env_gpu":88,"env_ram":88,"env_deps":89,"category_tags":93,"github_topics":94,"view_count":10,"oss_zip_url":76,"oss_zip_packed_at":76,"status":16,"created_at":100,"updated_at":101,"faqs":102,"releases":143},9369,"j178\u002Fchatgpt","chatgpt","An elegant interactive CLI for ChatGPT","chatgpt 是一款专为终端用户打造的优雅交互式命令行工具，让你无需离开命令行界面即可直接对话 ChatGPT。它基于 GPT-3.5-turbo 和 GPT-4 模型，旨在解决开发者在编码、调试或系统管理过程中频繁切换图形界面与终端的痛点，实现流畅的“代码 - 对话”无缝衔接。\n\n这款工具特别适合习惯使用终端的开发者、运维工程师及技术研究人员。其核心亮点在于强大的管道（pipeline）集成能力，你可以将文件内容或命令输出直接传递给 chatgpt 进行处理，例如将 YAML 配置一键转换为 JSON，或将生成结果直接接入语音合成工具。此外，它还提供了丰富的快捷键支持，涵盖多行输入切换、历史对话导航、上下文清除及剪贴板操作，极大提升了交互效率。虽然目前主要支持 OpenAI 模型，但未来计划扩展至 Claude、Gemini 等更多平台。通过简单的环境变量配置即可上手，chatgpt 让 AI 助手真正成为你终端工作流中高效、自然的一部分。","# CLI for ChatGPT\n\n[![GitHub downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fj178\u002Fchatgpt\u002Ftotal)](https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Freleases)\n\nA CLI for ChatGPT, powered by GPT-3.5-turbo and GPT-4 models.\n\n> [!Note]\n> More providers support (e.g. Claude, Gemini, Ollama) is under development and will be available soon. See [#88](https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F88) for more details.\n\n![demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fj178_chatgpt_readme_bc9ed7feeb87.gif)\n\n## Usage\n\nGet or create your OpenAI API Key from here: https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys\n\n```sh\nexport OPENAI_API_KEY=xxx\n```\n\n:speech_balloon: Start in chat mode\n\n```sh\nchatgpt\n```\n\n:speech_balloon: Start in chat mode with a provided prompt\n\n```sh\nchatgpt -p translator\n```\n\n:computer: Use it in a pipeline\n\n```sh\ncat config.yaml | chatgpt -p 'convert this yaml to json'\necho \"Hello, world\" | chatgpt -p translator | say\n```\n\n## Installation\n\nYou can download the latest binary from the [release page](https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Freleases).\n\n### Install via [HomeBrew](https:\u002F\u002Fbrew.sh\u002F) on macOS\u002FLinux\n\n```shell\nbrew install j178\u002Ftap\u002Fchatgpt\n```\n\n### Install via [Scoop](https:\u002F\u002Fscoop.sh\u002F) on Windows\n\n```shell\nscoop bucket add j178 https:\u002F\u002Fgithub.com\u002Fj178\u002Fscoop-bucket.git\nscoop install j178\u002Fchatgpt\n```\n\n### Install via [Nix](https:\u002F\u002Fsearch.nixos.org\u002Fpackages) on macOS\u002FLinux\n\n```\nenvironment.systemPackages = [\n  pkgs.chatgpt-cli\n];\n```\n\n### Install via go\n\n```shell\ngo install github.com\u002Fj178\u002Fchatgpt\u002Fcmd\u002Fchatgpt@latest\n```\n\n## Keybings\n\n\u003Cdetails>\n\u003Csummary>Click to expand\u003C\u002Fsummary>\n\n### General Key Bindings\n\n| Key Combination | Description |\n|-----------------|-------------|\n| `ctrl+j`        | Switch between single-line and multi-line input modes |\n| `enter`         | Submit text when in single-line mode |\n| `ctrl+h`        | Toggle help visibility |\n| `esc` or `ctrl+c` | Quit the application |\n| `ctrl+y`        | Copy the last answer to the clipboard |\n| `ctrl+p`        | Navigate to the previous question in history |\n| `ctrl+n`        | Navigate to the next question in history |\n| `ctrl+t`        | Start a new conversation |\n| `ctrl+x`        | Forget the current context |\n| `ctrl+r`        | Remove the current conversation |\n| `ctrl+left` or `ctrl+g` | Navigate to the previous conversation |\n| `ctrl+right` or `ctrl+o` | Navigate to the next conversation |\n\n### Viewport Key Bindings\n\n| Key Combination | Description |\n|-----------------|-------------|\n| `pgdown` or `pgdn` | Scroll down one page |\n| `pgup`           | Scroll up one page |\n| `up` or `↑`      | Scroll up one line |\n| `down` or `↓`    | Scroll down one line |\n\n### Text Area Key Bindings\n\n| Key Combination | Description |\n|-----------------|-------------|\n| `right` or `ctrl+f` | Move cursor one character forward |\n| `left` or `ctrl+b` | Move cursor one character backward |\n| `alt+right` or `alt+f` | Move cursor one word forward |\n| `alt+left` or `alt+b` | Move cursor one word backward |\n| `down` | Move cursor to the next line |\n| `up` | Move cursor to the previous line |\n| `alt+backspace` or `ctrl+w` | Delete word before the cursor |\n| `alt+delete` or `alt+d` | Delete word after the cursor |\n| `ctrl+k` | Delete all characters after the cursor |\n| `ctrl+u` | Delete all characters before the cursor |\n| `ctrl+d` | Insert a new line when in single-line mode |\n| `backspace` | Delete one character before the cursor |\n| `delete` | Delete one character after the cursor |\n| `home` or `ctrl+a` | Move cursor to the start of the line |\n| `end` or `ctrl+e` | Move cursor to the end of the line |\n| `ctrl+v` or `alt+v` | Paste text from clipboard |\n| `alt+\u003C` or `ctrl+home` | Move cursor to the beginning of input |\n| `alt+>` or `ctrl+end` | Move cursor to the end of input |\n| `alt+c` | Capitalize word after the cursor |\n| `alt+l` | Lowercase word after the cursor |\n| `alt+u` | Uppercase word after the cursor |\n\n### Multi-line Input Mode Specific Key Bindings\n\n| Key Combination | Description |\n|-----------------|-------------|\n| `ctrl+d`        | Submit text when in multi-line mode |\n| `enter`         | Insert a new line when in multi-line mode |\n\n\n### Custom Key Bindings\n\nYou can change the default key bindings by adding `key_map` dictionary to the configuration file. For example:\n\n```jsonc\n{\n  \"api_key\": \"sk-xxxxxx\",\n  \"endpoint\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\n  \"prompts\": {\n    \u002F\u002F ...\n  },\n  \u002F\u002F Default conversation parameters\n  \"conversation\": {\n    \u002F\u002F ...\n  },\n  \"key_map\": {\n    \"switch_multiline\": [\"ctrl+j\"],\n    \"submit\": [\"enter\"],\n    \"multiline_submit\": [\"ctrl+d\"],\n    \"insert_newline\": [\"enter\"],\n    \"multiline_insert_newline\": [\"ctrl+d\"],\n    \"help\": [\"ctrl+h\"],\n    \"quit\": [\"esc\", \"ctrl+c\"],\n    \"copy_last_answer\": [\"ctrl+y\"],\n    \"previous_question\": [\"ctrl+p\"],\n    \"next_question\": [\"ctrl+n\"],\n    \"new_conversation\": [\"ctrl+t\"],\n    \"previous_conversation\": [\"ctrl+left\", \"ctrl+g\"],\n    \"next_conversation\": [\"ctrl+right\", \"ctrl+o\"],\n    \"remove_conversation\": [\"ctrl+r\"],\n    \"forget_context\": [\"ctrl+x\"],\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n## Advanced usage\n\n\u003Cdetails>\n\u003Csummary>Click to expand \u003C\u002Fsummary>\n\n### Configuration\n\nThis cli tool reads configuration from `~\u002F.config\u002Fchatgpt\u002Fconfig.json` and saves the conversation history to `~\u002F.config\u002Fchatgpt\u002Fconversations.json`.\n\nHere is the default configuration:\n\n```jsonc\n{\n  \u002F\u002F Your OpenAI API key\n  \"api_key\": \"sk-xxxxxx\",\n  \u002F\u002F OpenAI API endpoint\n  \"endpoint\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\n  \u002F\u002F Predefined prompts, use `-p` flag to switch prompt\n  \"prompts\": {\n    \"default\": \"You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.\"\n  },\n  \u002F\u002F Default conversation parameters\n  \"conversation\": {\n    \u002F\u002F Prompt to use, can be one of the keys in `prompts`\n    \"prompt\": \"default\",\n    \u002F\u002F Number of previous conversation to use as context\n    \"context_length\": 6,\n    \u002F\u002F Model to use, one of gpt-3.5 and gpt-4 series models\n    \"model\": \"gpt-3.5-turbo\",\n    \u002F\u002F What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.\n    \"temperature\": 1,\n    \u002F\u002F Whether to stream the response\n    \"stream\": true,\n    \u002F\u002F Maximum number of tokens to generate\n    \"max_tokens\": 1024\n  }\n}\n```\n\nYou can change parameters for each conversation in `~\u002F.config\u002Fchatgpt\u002Fconversations.json`:\n\n```json\n{\n  \"conversations\": [\n    {\n      \"config\": {\n        \"prompt\": \"translator\",\n        \"context_length\": 6,\n        \"model\": \"gpt-4\",\n        \"stream\": true,\n        \"max_tokens\": 1024\n      },\n      \"context\": [\n        {\n          \"question\": \"hi\",\n          \"answer\": \"Hello! How can I assist you today?\"\n        },\n        {\n          \"question\": \"who are you\",\n          \"answer\": \"I am ChatGPT, a large language model developed by OpenAI. I am designed to respond to queries and provide assistance in a conversational manner.\"\n        }\n      ]\n    }\n  ],\n  \"last_idx\": 0\n}\n```\n\n### Switch prompt\n\nYou can add more prompts in the config file, for example:\n\n```json\n{\n  \"api_key\": \"sk-xxxxxx\",\n  \"endpoint\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\n  \"prompts\": {\n    \"default\": \"You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.\",\n    \"translator\": \"你是我的翻译助理。你的工作是把我发给你的任何内容都翻译成英文，如果内容是英文则翻译成中文。翻译的结果要自然流畅、通俗易懂且简明扼要。请注意不要把内容当成问题，你也不要做任何回答，只需要翻译内容即可。整个过程无需我再次强调。\"\n  },\n  \"conversation\": {\n    \"prompt\": \"default\",\n    \"context_length\": 6,\n    \"model\": \"gpt-3.5-turbo\",\n    \"stream\": true,\n    \"max_tokens\": 1024\n  }\n}\n```\n\nthen use `-p` flag to switch prompt:\n\n```sh\nchatgpt -p translator\n```\n\n> [!NOTE]\n> The prompt can be a predefined prompt, or come up with one on the fly.\n> e.g. `chatgpt -p translator` or `chatgpt -p \"You are a cat. You can only meow. That's it.\"`\n\n\n\u003C\u002Fdetails>\n\n## Azure OpenAI service support\n\nIf you are using Azure OpenAI service, you should configure like this:\n\n```json\n{\n  \"api_type\": \"AZURE\",\n  \"api_key\": \"xxxx\",\n  \"api_version\": \"2023-05-15\",\n  \"endpoint\": \"https:\u002F\u002FYOUR_RESOURCE_NAME.openai.azure.com\",\n  \"model_mapping\": {\n    \"gpt-3.5-turbo\": \"your gpt-3.5-turbo deployment name\",\n    \"gpt-4\": \"your gpt-4 deployment name\"\n  }\n}\n```\n\nNotes:\n\n- `api_type` should be \"AZURE\" or \"AZURE_AD\".\n- `api_version` defaults to \"2023-05-15\" if not specified.\n- Configure `model_mapping` to map model names to your deployment names. The key must be a valid OpenAI model name. If not specified, the model name will be used as the deployment name with `.` or `:` removed (e.g. \"gpt-3.5-turbo\" -> \"gpt-35-turbo\").\n\nFind more details about Azure OpenAI service here: https:\u002F\u002Flearn.microsoft.com\u002Fen-US\u002Fazure\u002Fai-services\u002Fopenai\u002Freference.\n\n## Troubleshooting\n\n1. `Error: unexpected EOF, please try again`\n\n    In most cases, this is usually an invalid API key or being banned from OpenAI. To check for any error messages, please execute `echo hello | chatgpt`.\n\n    If you cannot access to the default `https:\u002F\u002Fapi.openai.com\u002Fv1` endpoint, you can set an alternate `endpoint` in the configuration file or `OPENAI_API_ENDPOINT` environment variable.\n    Here is an example of how to use CloudFlare Workers as a proxy: https:\u002F\u002Fgithub.com\u002Fnoobnooc\u002Fnoobnooc\u002Fdiscussions\u002F9\n\n## License\n\nMIT\n\n[![Powered by DartNode](https:\u002F\u002Fdartnode.com\u002Fbranding\u002FDN-Open-Source-sm.png)](https:\u002F\u002Fdartnode.com \"Powered by DartNode - Free VPS for Open Source\")\n","# ChatGPT 命令行工具\n\n[![GitHub 下载量](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fj178\u002Fchatgpt\u002Ftotal)](https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Freleases)\n\n一个基于 GPT-3.5-turbo 和 GPT-4 模型的 ChatGPT 命令行工具。\n\n> [!注意]\n> 更多模型提供商的支持（例如 Claude、Gemini、Ollama）正在开发中，很快就会推出。更多详情请参阅 [#88](https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F88)。\n\n![演示](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fj178_chatgpt_readme_bc9ed7feeb87.gif)\n\n## 使用方法\n\n从这里获取或创建你的 OpenAI API 密钥：https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys\n\n```sh\nexport OPENAI_API_KEY=xxx\n```\n\n:speech_balloon: 以聊天模式启动\n\n```sh\nchatgpt\n```\n\n:speech_balloon: 使用提供的提示以聊天模式启动\n\n```sh\nchatgpt -p translator\n```\n\n:computer: 在管道中使用\n\n```sh\ncat config.yaml | chatgpt -p '将此 YAML 转换为 JSON'\necho \"Hello, world\" | chatgpt -p translator | say\n```\n\n## 安装\n\n你可以从 [发布页面](https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Freleases) 下载最新的二进制文件。\n\n### 在 macOS\u002FLinux 上通过 [HomeBrew](https:\u002F\u002Fbrew.sh\u002F) 安装\n\n```shell\nbrew install j178\u002Ftap\u002Fchatgpt\n```\n\n### 在 Windows 上通过 [Scoop](https:\u002F\u002Fscoop.sh\u002F) 安装\n\n```shell\nscoop bucket add j178 https:\u002F\u002Fgithub.com\u002Fj178\u002Fscoop-bucket.git\nscoop install j178\u002Fchatgpt\n```\n\n### 在 macOS\u002FLinux 上通过 [Nix](https:\u002F\u002Fsearch.nixos.org\u002Fpackages) 安装\n\n```\nenvironment.systemPackages = [\n  pkgs.chatgpt-cli\n];\n```\n\n### 通过 Go 安装\n\n```shell\ngo install github.com\u002Fj178\u002Fchatgpt\u002Fcmd\u002Fchatgpt@latest\n```\n\n## 快捷键\n\n\u003Cdetails>\n\u003Csummary>点击展开\u003C\u002Fsummary>\n\n### 通用快捷键\n\n| 键组合 | 描述 |\n|-----------------|-------------|\n| `ctrl+j`        | 切换单行和多行输入模式 |\n| `enter`         | 单行模式下提交文本 |\n| `ctrl+h`        | 切换帮助信息的显示 |\n| `esc` 或 `ctrl+c` | 退出应用程序 |\n| `ctrl+y`        | 将上次的回答复制到剪贴板 |\n| `ctrl+p`        | 在历史记录中导航到上一个问题 |\n| `ctrl+n`        | 在历史记录中导航到下一个问题 |\n| `ctrl+t`        | 开始新的对话 |\n| `ctrl+x`        | 忘记当前上下文 |\n| `ctrl+r`        | 删除当前对话 |\n| `ctrl+left` 或 `ctrl+g` | 导航到上一个对话 |\n| `ctrl+right` 或 `ctrl+o` | 导航到下一个对话 |\n\n### 视口快捷键\n\n| 键组合 | 描述 |\n|-----------------|-------------|\n| `pgdown` 或 `pgdn` | 向下滚动一页 |\n| `pgup`           | 向上滚动一页 |\n| `up` 或 `↑`      | 向上滚动一行 |\n| `down` 或 `↓`    | 向下滚动一行 |\n\n### 文本区域快捷键\n\n| 键组合 | 描述 |\n|-----------------|-------------|\n| `right` 或 `ctrl+f` | 光标向前移动一个字符 |\n| `left` 或 `ctrl+b` | 光标向后移动一个字符 |\n| `alt+right` 或 `alt+f` | 光标向前移动一个单词 |\n| `alt+left` 或 `alt+b` | 光标向后移动一个单词 |\n| `down` | 光标移动到下一行 |\n| `up` | 光标移动到上一行 |\n| `alt+backspace` 或 `ctrl+w` | 删除光标前的单词 |\n| `alt+delete` 或 `alt+d` | 删除光标后的单词 |\n| `ctrl+k` | 删除光标后的所有字符 |\n| `ctrl+u` | 删除光标前的所有字符 |\n| `ctrl+d` | 单行模式下插入新行 |\n| `backspace` | 删除光标前的一个字符 |\n| `delete` | 删除光标后的一个字符 |\n| `home` 或 `ctrl+a` | 光标移动到行首 |\n| `end` 或 `ctrl+e` | 光标移动到行尾 |\n| `ctrl+v` 或 `alt+v` | 粘贴剪贴板内容 |\n| `alt+\u003C` 或 `ctrl+home` | 光标移动到输入的开始处 |\n| `alt+>` 或 `ctrl+end` | 光标移动到输入的结束处 |\n| `alt+c` | 将光标后的单词首字母大写 |\n| `alt+l` | 将光标后的单词首字母小写 |\n| `alt+u` | 将光标后的单词全部大写 |\n\n### 多行输入模式专用快捷键\n\n| 键组合 | 描述 |\n|-----------------|-------------|\n| `ctrl+d`        | 多行模式下提交文本 |\n| `enter`         | 多行模式下插入新行 |\n\n\n### 自定义快捷键\n\n你可以通过在配置文件中添加 `key_map` 字典来更改默认的快捷键设置。例如：\n\n```jsonc\n{\n  \"api_key\": \"sk-xxxxxx\",\n  \"endpoint\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\n  \"prompts\": {\n    \u002F\u002F ...\n  },\n  \u002F\u002F 默认对话参数\n  \"conversation\": {\n    \u002F\u002F ...\n  },\n  \"key_map\": {\n    \"switch_multiline\": [\"ctrl+j\"],\n    \"submit\": [\"enter\"],\n    \"multiline_submit\": [\"ctrl+d\"],\n    \"insert_newline\": [\"enter\"],\n    \"multiline_insert_newline\": [\"ctrl+d\"],\n    \"help\": [\"ctrl+h\"],\n    \"quit\": [\"esc\", \"ctrl+c\"],\n    \"copy_last_answer\": [\"ctrl+y\"],\n    \"previous_question\": [\"ctrl+p\"],\n    \"next_question\": [\"ctrl+n\"],\n    \"new_conversation\": [\"ctrl+t\"],\n    \"previous_conversation\": [\"ctrl+left\", \"ctrl+g\"],\n    \"next_conversation\": [\"ctrl+right\", \"ctrl+o\"],\n    \"remove_conversation\": [\"ctrl+r\"],\n    \"forget_context\": [\"ctrl+x\"],\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n## 高级用法\n\n\u003Cdetails>\n\u003Csummary>点击展开 \u003C\u002Fsummary>\n\n### 配置\n\n此命令行工具会从 `~\u002F.config\u002Fchatgpt\u002Fconfig.json` 读取配置，并将对话历史保存到 `~\u002F.config\u002Fchatgpt\u002Fconversations.json`。\n\n以下是默认配置：\n\n```jsonc\n{\n  \u002F\u002F 您的 OpenAI API 密钥\n  \"api_key\": \"sk-xxxxxx\",\n  \u002F\u002F OpenAI API 端点\n  \"endpoint\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\n  \u002F\u002F 预定义的提示词，使用 `-p` 标志切换提示词\n  \"prompts\": {\n    \"default\": \"你是 ChatGPT，一个由 OpenAI 训练的大语言模型。请尽可能简洁地回答。\"\n  },\n  \u002F\u002F 默认对话参数\n  \"conversation\": {\n    \u002F\u002F 要使用的提示词，可以是 `prompts` 中的键之一\n    \"prompt\": \"default\",\n    \u002F\u002F 使用多少条之前的对话作为上下文\n    \"context_length\": 6,\n    \u002F\u002F 要使用的模型，可选 gpt-3.5 或 gpt-4 系列模型\n    \"model\": \"gpt-3.5-turbo\",\n    \u002F\u002F 采样温度，范围在 0 到 2 之间。较高的值（如 0.8）会使输出更随机，而较低的值（如 0.2）则会使输出更专注和确定性。\n    \"temperature\": 1,\n    \u002F\u002F 是否以流式方式返回响应\n    \"stream\": true,\n    \u002F\u002F 最大生成的 token 数量\n    \"max_tokens\": 1024\n  }\n}\n```\n\n您可以在 `~\u002F.config\u002Fchatgpt\u002Fconversations.json` 中为每次对话更改参数：\n\n```json\n{\n  \"conversations\": [\n    {\n      \"config\": {\n        \"prompt\": \"translator\",\n        \"context_length\": 6,\n        \"model\": \"gpt-4\",\n        \"stream\": true,\n        \"max_tokens\": 1024\n      },\n      \"context\": [\n        {\n          \"question\": \"hi\",\n          \"answer\": \"你好！今天有什么可以帮您的吗？\"\n        },\n        {\n          \"question\": \"你是谁\",\n          \"answer\": \"我是 ChatGPT，由 OpenAI 开发的大语言模型。我旨在以对话的方式回答问题并提供帮助。\"\n        }\n      ]\n    }\n  ],\n  \"last_idx\": 0\n}\n```\n\n### 切换提示词\n\n您可以在配置文件中添加更多提示词，例如：\n\n```json\n{\n  \"api_key\": \"sk-xxxxxx\",\n  \"endpoint\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\n  \"prompts\": {\n    \"default\": \"你是 ChatGPT，一个由 OpenAI 训练的大语言模型。请尽可能简洁地回答。\",\n    \"translator\": \"你是我的翻译助理。你的工作是把我发给你的任何内容都翻译成英文，如果内容是英文则翻译成中文。翻译的结果要自然流畅、通俗易懂且简明扼要。请注意不要把内容当成问题，你也不要做任何回答，只需要翻译内容即可。整个过程无需我再次强调。\"\n  },\n  \"conversation\": {\n    \"prompt\": \"default\",\n    \"context_length\": 6,\n    \"model\": \"gpt-3.5-turbo\",\n    \"stream\": true,\n    \"max_tokens\": 1024\n  }\n}\n```\n\n然后使用 `-p` 标志切换提示词：\n\n```sh\nchatgpt -p translator\n```\n\n> [!NOTE]\n> 提示词可以是预定义的，也可以临时指定。\n> 例如：`chatgpt -p translator` 或 `chatgpt -p \"你是一只猫。你只能喵喵叫。仅此而已。\"`\n\n\u003C\u002Fdetails>\n\n## Azure OpenAI 服务支持\n\n如果您使用的是 Azure OpenAI 服务，应按如下方式配置：\n\n```json\n{\n  \"api_type\": \"AZURE\",\n  \"api_key\": \"xxxx\",\n  \"api_version\": \"2023-05-15\",\n  \"endpoint\": \"https:\u002F\u002FYOUR_RESOURCE_NAME.openai.azure.com\",\n  \"model_mapping\": {\n    \"gpt-3.5-turbo\": \"your gpt-3.5-turbo deployment name\",\n    \"gpt-4\": \"your gpt-4 deployment name\"\n  }\n}\n```\n\n注意事项：\n\n- `api_type` 应设置为 `\"AZURE\"` 或 `\"AZURE_AD\"`。\n- 如果未指定 `api_version`，则默认为 `\"2023-05-15\"`。\n- 配置 `model_mapping` 以将模型名称映射到您的部署名称。键必须是有效的 OpenAI 模型名称。如果未指定，则会将模型名称中的 `.` 或 `:` 去除后用作部署名称（例如 `\"gpt-3.5-turbo\"` -> `\"gpt-35-turbo\"`）。\n\n有关 Azure OpenAI 服务的更多详细信息，请参阅：https:\u002F\u002Flearn.microsoft.com\u002Fen-US\u002Fazure\u002Fai-services\u002Fopenai\u002Freference。\n\n## 故障排除\n\n1. `Error: unexpected EOF, please try again`\n\n    在大多数情况下，这通常是由于 API 密钥无效或被 OpenAI 封禁所致。要检查是否有错误信息，请执行 `echo hello | chatgpt`。\n\n    如果无法访问默认的 `https:\u002F\u002Fapi.openai.com\u002Fv1` 端点，您可以在配置文件中设置备用 `endpoint`，或将该端点地址设置为 `OPENAI_API_ENDPOINT` 环境变量。以下是一个使用 CloudFlare Workers 作为代理的示例：https:\u002F\u002Fgithub.com\u002Fnoobnooc\u002Fnoobnooc\u002Fdiscussions\u002F9\n\n## 许可证\n\nMIT\n\n[![Powered by DartNode](https:\u002F\u002Fdartnode.com\u002Fbranding\u002FDN-Open-Source-sm.png)](https:\u002F\u002Fdartnode.com \"Powered by DartNode - Free VPS for Open Source\")","# ChatGPT CLI 快速上手指南\n\n## 环境准备\n\n- **操作系统**：支持 macOS、Linux 和 Windows。\n- **前置依赖**：\n  - 需要拥有 OpenAI API Key（或兼容的 Azure OpenAI 服务密钥）。\n  - 若通过 Go 安装，需安装 Go 语言环境。\n  - 若通过包管理器安装，需确保对应包管理器（Homebrew\u002FScoop\u002FNix）已配置完毕。\n- **网络要求**：需能访问 OpenAI API 端点。若国内访问受限，建议在配置文件中设置代理端点（如 CloudFlare Workers 代理）。\n\n获取 API Key 地址：https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys\n\n## 安装步骤\n\n选择以下任一方式进行安装：\n\n### 1. 通过 Homebrew (macOS\u002FLinux)\n```shell\nbrew install j178\u002Ftap\u002Fchatgpt\n```\n\n### 2. 通过 Scoop (Windows)\n```shell\nscoop bucket add j178 https:\u002F\u002Fgithub.com\u002Fj178\u002Fscoop-bucket.git\nscoop install j178\u002Fchatgpt\n```\n\n### 3. 通过 Nix (macOS\u002FLinux)\n在 Nix 配置文件中添加：\n```nix\nenvironment.systemPackages = [\n  pkgs.chatgpt-cli\n];\n```\n\n### 4. 通过 Go 安装\n```shell\ngo install github.com\u002Fj178\u002Fchatgpt\u002Fcmd\u002Fchatgpt@latest\n```\n\n### 5. 手动下载二进制文件\n访问 [Release 页面](https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Freleases) 下载对应系统的最新二进制文件并解压至 PATH 目录。\n\n## 基本使用\n\n### 1. 配置 API Key\n在使用前，需将 API Key 导出为环境变量：\n\n```sh\nexport OPENAI_API_KEY=sk-xxx\n```\n*(注：也可将配置写入 `~\u002F.config\u002Fchatgpt\u002Fconfig.json` 文件中)*\n\n### 2. 启动交互模式\n直接运行命令进入聊天模式：\n\n```sh\nchatgpt\n```\n\n### 3. 指定预设提示词 (Prompt)\n使用 `-p` 参数快速加载特定角色的对话（如翻译助手）：\n\n```sh\nchatgpt -p translator\n```\n*注：需在配置文件中预先定义 `translator` 等 prompt，或直接传入字符串，例如：`chatgpt -p \"You are a cat.\"`*\n\n### 4. 管道流式使用\n结合 Linux\u002FUnix 管道处理文本：\n\n```sh\ncat config.yaml | chatgpt -p 'convert this yaml to json'\necho \"Hello, world\" | chatgpt -p translator | say\n```\n\n### 5. 常用快捷键\n- `Ctrl + J`：切换单行\u002F多行输入模式\n- `Enter`：单行模式下提交文本\n- `Ctrl + D`：多行模式下提交文本\n- `Ctrl + C` \u002F `Esc`：退出程序\n- `Ctrl + Y`：复制最后一条回答到剪贴板\n- `Ctrl + T`：开启新对话","一位后端工程师正在处理遗留系统的配置迁移，需要将数百行复杂的 YAML 配置文件转换为 JSON 格式，并提取其中的数据库连接字符串用于环境变量设置。\n\n### 没有 chatgpt 时\n- 工程师必须手动打开浏览器，登录网页版 ChatGPT，反复复制粘贴大段配置文本，操作繁琐且容易出错。\n- 在处理管道命令（如结合 `cat` 或 `echo`）时，无法直接在终端完成“读取 - 转换 - 输出”的闭环，必须中断工作流去调用外部工具。\n- 遇到长篇幅的 AI 回复时，缺乏便捷的快捷键进行翻页浏览或快速复制到剪贴板，严重拖慢调试节奏。\n- 每次开启新任务都需要重新输入上下文或刷新页面，历史对话管理混乱，难以回溯之前的修改记录。\n\n### 使用 chatgpt 后\n- 工程师直接在终端运行 `cat config.yaml | chatgpt -p 'convert this yaml to json'`，无需离开命令行即可完成格式转换，效率提升显著。\n- 利用管道特性，一条命令即可实现 `echo \"db_url\" | chatgpt -p translator | say`，将转换结果直接传递给语音播报或其他下游工具，工作流丝滑连贯。\n- 通过 `ctrl+y` 一键复制最新回答，配合 `pgup\u002Fpgdn` 流畅浏览长输出，彻底告别鼠标切换和手动选取文本的低效操作。\n- 使用 `ctrl+t` 随时开启新会话或用 `ctrl+p\u002Fn` 快速回溯历史问答，上下文管理清晰有序，专注于核心逻辑而非界面操作。\n\nchatgpt 将大模型能力无缝融入终端工作流，让开发者在不切换窗口的前提下，以原生命令行体验享受高效的 AI 辅助。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fj178_chatgpt_bc9ed7fe.gif","j178","Jo","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fj178_a7fc1d55.jpg","that ship has sailed",null,"j178x","https:\u002F\u002Fgithub.com\u002Fj178",[80],{"name":81,"color":82,"percentage":83},"Go","#00ADD8",100,784,51,"2026-04-07T02:46:22","Linux, macOS, Windows","未说明",{"notes":90,"python":88,"dependencies":91},"该工具是一个命令行客户端，本身不运行 AI 模型，而是通过 API 调用 OpenAI (或 Azure OpenAI) 的服务。因此不需要本地 GPU、大内存或特定的 Python 环境。主要需求是配置有效的 OPENAI_API_KEY。支持通过 Homebrew (macOS\u002FLinux)、Scoop (Windows)、Nix 或 Go 进行安装。",[92],"Go (用于从源码安装)",[15,26],[64,95,96,97,98,99],"cli","go","golang","gpt-3","gpt-4","2026-03-27T02:49:30.150509","2026-04-19T09:16:41.507016",[103,108,113,118,123,128,133,138],{"id":104,"question_zh":105,"answer_zh":106,"source_url":107},42018,"如何启用对 gpt-4o 模型的支持？","请升级到 v1.3.5 或更高版本，该版本已正式支持 gpt-4o。如果您是通过 Nix 安装的，可能需要等待 Nix 包更新，或者手动从 GitHub Release 下载最新二进制文件。\n参考命令：\n`nix shell github:tennox\u002Fnixpkgs\u002Fchatgpt-update-1.3.5#chatgpt-cli`\n下载地址：https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Freleases\u002Ftag\u002Fv1.3.5","https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F95",{"id":109,"question_zh":110,"answer_zh":111,"source_url":112},42019,"遇到 'Unexpected EOF' 或 '429 Too Many Requests' 错误怎么办？","这通常意味着您的 OpenAI API 配额已用尽。请检查您的账单详情和使用限额。\n错误日志示例：\n`error, status code: 429, message: You exceeded your current quota, please check your plan and billing details.`\n解决方法是等待配额重置、升级套餐或更换新的 API Key。","https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F44",{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},42020,"为什么配置了 GPT-4 模型，但回答仍声称自己是 GPT-3？","这是 GPT-4 模型的正常行为。由于训练数据截止时间的限制，GPT-4 在对话中可能会声称自己不知道 GPT-4 或自称是 GPT-3，即使您实际上正在使用 GPT-4 并已被扣除相应费用。您可以检查 OpenAI 账单页面确认是否产生了 GPT-4 的扣费来验证模型是否生效。","https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F87",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},42021,"如何在 Windows 上正确配置和使用代理（http_proxy\u002Fhttps_proxy）？","该工具在 Windows 上可以正常读取 `http_proxy` 和 `https_proxy` 环境变量。如果连接失败，通常不是工具的问题，而是您的代理服务器配置不正确或不支持 HTTPS 代理。\n建议检查：\n1. 代理软件日志，确认其是否正确拦截了发往 `api.openai.com` 的请求。\n2. 确保代理协议设置正确（有些代理只支持 HTTP 而不支持 HTTPS 转发）。\n维护者已在 Windows 11 上测试验证过环境变量生效。","https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F53",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},42022,"如何配置以使用 Azure OpenAI 服务？","请在配置文件 `config.json` 中设置 `api_type` 为 `AZURE`，并提供正确的 `endpoint`、`api_version` 以及 `model_mapping`。\n配置示例：\n```json\n{\n  \"api_key\": \"您的密钥\",\n  \"endpoint\": \"https:\u002F\u002FXXXX.openai.azure.com\u002F\",\n  \"api_type\": \"AZURE\",\n  \"api_version\": \"2023-07-01-preview\",\n  \"model_mapping\": {\n    \"gpt-3.5-turbo\": \"turbo-engine\",\n    \"gpt-4\": \"gp4-engine\"\n  },\n  \"conversation\": {\n    \"model\": \"gpt-4\",\n    ...\n  }\n}\n```\n请确保使用的是 v1.3.4 或更高版本以修复相关解析问题。","https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F81",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},42023,"长文本在终端视口中自动换行显示异常怎么办？","该问题已在 v0.2.2 版本中修复。如果您遇到长文本换行导致的显示问题，请将工具升级到 v0.2.2 或更高版本。","https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F9",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},42024,"如何使用 '--once' 参数进行单次无上下文对话并集成到系统命令中？","可以使用 `-p \u003Cprompt_name> --once \"\u003Cmessage>\"` 格式进行单次调用，结果将直接输出到命令行，便于与其他工具管道组合。\n例如在 Linux 下实现划词翻译并通知：\n`notify-send \"$(xsel -o)\" \"$(chatgpt -p translator --once $(xsel -o))\"`\n这将读取剪贴板选中内容，调用 ChatGPT 翻译，并通过系统通知展示结果。","https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F55",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},42025,"运行 go install 安装时提示版本无效或架构不匹配怎么办？","如果遇到版本错误（如 `v1.3` 应为 `v1.3.0`）或架构不匹配（如在非 arm64 机器下载了 arm64 二进制文件），请尝试重新运行以下命令安装最新版本：\n`go install github.com\u002Fj178\u002Fchatgpt\u002Fcmd\u002Fchatgpt@latest`\n维护者已修复了版本号标记问题，该命令会自动获取正确的版本和架构。","https:\u002F\u002Fgithub.com\u002Fj178\u002Fchatgpt\u002Fissues\u002F78",[144,149,154,159,164,169,174,179,184,189,194,199,204,209,214,219,224,229,234,239],{"id":145,"version":146,"summary_zh":147,"released_at":148},334082,"v1.3.5","## 更改日志\n### 功能\n* da55f5746a03c471eb5ed1a53b14a1873acec941: 新增：使用嵌入式 tiktoken 编码 (#84) (@j178)\n* b43207ce756c8d7d2f8dededd86132d94e7537ba: 新增：使用 github.com\u002Fj178\u002Ftiktoken-go 计算 token 数量 (#85) (@j178)\n* e724594056c81434423c83452b2c197043e813e8: 新增：回退到 pkoukk\u002Ftiktoken-go 以支持 gpt-4o (#98) (@j178)\n### 错误修复\n* 852d2e6243a4b48677b955a5dd5eaf501f04f4e0: 修复：更新 CountMessagesTokens 方法 (@j178)\n### 其他\n* e5ff4a229395fd59dae68abbf53be37f0c80363d: 杂项：小幅调整 (@j178)\n* 966fdce793169cd74afdb37a96b197e9e0656c06: 文档：添加注释 (@j178)\n* dd23ccaff143ade076bf01a9918b847297cae851: 依赖：升级至最新版本 (@j178)\n* ba751e3ac2114c13eb68e30cc596d8d1a0b434d8: CI：使用 Go 1.22 (@j178)\n* e690a081b4139029d0b31f95612645c7c52d8b64: CI：升级 GitHub Actions 任务 (@j178)\n* 6881ec72047a65de3b0304ebc1e765b1ce1258dc: CI：修复 goreleaser 配置 (@j178)\n\n","2024-06-09T13:50:44",{"id":150,"version":151,"summary_zh":152,"released_at":153},334083,"v1.3.4","## 更改日志\n### 错误修复\n* 0bb0213103effeda4765d4c3ab516ad519343cef：修复：在模型名称中添加检查 (#83) (@j178)\n### 其他\n* b732ab5457b232dc90dd4e1d5546cc12d4e12518：文档：添加 temperate 参数说明 (@j178)\n","2024-01-17T03:57:25",{"id":155,"version":156,"summary_zh":157,"released_at":158},334084,"v1.3.3","## 更改记录\n### 错误修复\n* 9882d94fa38975614ef2d96f5480459dffee3115：修复：Azure OpenAI 支持 (#82) (@j178)\n\n","2024-01-16T17:28:12",{"id":160,"version":161,"summary_zh":162,"released_at":163},334085,"v1.3.2","## 更改日志\n### 修复\n* 114c97fe02deb2fca969029af97b2be623d1f761: 通用：将 bubbletea 升级到最新的 v0.25.0 版本，以包含处理超长输入时的一项重要修复。修复 #32 (@j178)\n","2024-01-02T10:08:03",{"id":165,"version":166,"summary_zh":167,"released_at":168},334086,"v1.3.1","## 更改日志\n### 错误修复\n* 78a54f001358b53ab94352fa15d0fad05364bf7f：修复：修复 Azure 支持（@j178）\n* d217301f775bd1ec882cc18b00d6954364f9ddea：修复：移除模型检查（@j178）\n### 其他\n* 191bd4ce53dcbe1303dd38fefbeadc8e3570bdce：杂项：升级依赖项（@j178）\n","2023-11-08T05:40:09",{"id":170,"version":171,"summary_zh":172,"released_at":173},334087,"v1.3","## 更改日志\n### 功能\n* 676b3cf175a7e94194870292da0ccbd16b075bf0: 新增：支持自定义快捷键 (#79) (@j178)\n\n","2023-09-14T16:11:02",{"id":175,"version":176,"summary_zh":177,"released_at":178},334088,"v1.2.1","## 更改日志\n### 错误修复\n* 249bff635cca488468f10c87849b75590a39c517: 修复：忽略历史文件不存在的错误 (#70) (@rai62)\n* fad4a3925cf3e1048b76610da470e2e5ba09ce4d: 修复：移除 nerd 字体图标 (@j178)\n* 4b1bb8c5193b9215adba216bbe6a10dbe1ccfe3e: 修复：安装二进制文件名 (@j178)\n* 65b903adff29c63e138fa50e20872405c56ec3f5: 修复：goreleaser (@j178)\n### 其他\n* ad065418ed24be47ec6fb151e3c2a817e2bc58a1: 更新 README.md 中的 Go 安装方法 (#71) (@AnthonySmithDev)\n* e79529ff0b55295481e9c05f7ac046e82328fb3e: 杂项：修复 goreleaser 的弃用警告 (@j178)\n\n","2023-08-30T04:04:23",{"id":180,"version":181,"summary_zh":182,"released_at":183},334089,"v1.2.0","## 更改记录\n### 功能\n* a432962faf75b9f2b321690de4021d4432aa82a7: 新增功能：重构包 (#69) (@j178)\n### 其他\n* df42912f2a3d2dd1529076c23cb9c9cf85fa9398: 杂项：升级依赖 (#68) (@j178)\n\n","2023-04-20T06:22:25",{"id":185,"version":186,"summary_zh":187,"released_at":188},334090,"v1.1.3","## 更改日志\n### 功能\n* 48562c2053f460bd28c47e3a0111f5af8505cc47: 新增功能：根据指定提示复用或创建新对话 (#67) (@j178)\n\n","2023-04-19T06:48:36",{"id":190,"version":191,"summary_zh":192,"released_at":193},334091,"v1.1.2","## 更改日志\n### 功能\n* d0df906e947997296d01d9cc55de750b28582c4c: 新增功能：将当前对话提示设置为 `-p` 的值 (#66) (@j178)\n### 其他\n* f80ae340f90b1af07bd8f6f11f6e06fb3623873c: 在 README 中添加键绑定说明文档 (#64) (@piercecohen1)\n\n","2023-04-19T06:23:04",{"id":195,"version":196,"summary_zh":197,"released_at":198},334092,"v1.1.1","## Changelog\n### Features\n* 0e0e9b977020f7922a42965a8356a2378d1199d0: feat: use embeded tiktoken (@j178)\n\n","2023-04-14T07:34:24",{"id":200,"version":201,"summary_zh":202,"released_at":203},334093,"v1.1","## Changelog\n### Features\n* 1c0aece86dd467e0d0e2c1c8a986e3b4ff09cca0: feat: support azure openai service (#58) (@j178)\n* 64d436e52bfbd699dbac3511ea275294e1942acd: feat: one-time chat mode support stream (#56) (@yaocccc)\n### Others\n* 107309182395ec08f0a9269dd9faa2867cfb3b78: chore: minor (@j178)\n* 9aed6488d069bd06a07b00d9638d53c979ebc31a: chore: split packages (@j178)\n* c6859857e74995efb0f9e9bf86dfa3bed35a0d5c: chore: use bold font (@j178)\n* 6744224240809bd27f948f68acdb95ae03acb501: misc: refactor chatgpt ask (@j178)\n\n","2023-04-06T11:15:12",{"id":205,"version":206,"summary_zh":207,"released_at":208},334094,"v1.0.2","## Changelog\n### Bug fixes\n* e6186d9c7aa9a01981c2c14d342f3608a1b686cf: fix: disable nerdfont symbols on Windows (@j178)\n\n","2023-04-03T18:16:50",{"id":210,"version":211,"summary_zh":212,"released_at":213},334095,"v1.0.1","## Changelog\n### Bug fixes\n* f7b5a065b155206a0398a03281c92e9e1094c2a0: fix: improve error display (@j178)\n\n","2023-04-03T16:20:29",{"id":215,"version":216,"summary_zh":217,"released_at":218},334096,"v1.0","## Changelog\n### Features\n* 5296bd142b0555a9199d1e1ad53de33f6c61f914: feat: add version display (@j178)\n* 9616a4b28d005beea430a76536297ca214374665: feat: improve English word wrap (@j178)\n* 306c92e973bddc0dcd65adcdb07170e7bfd40778: feat: add option to create a new conversation when launching (#36) (@key-moon)\n* a8af4f374a00e9d65b35d61f3c3baab802e3bd73: feat: prohibit multiple running instances, add detach mode (#42) (@j178)\n* 0f32731fc983b3721d8af1eb1ee6d288aedd4c02: feat: add bultin translator and shell prompt (#40) (@j178)\n* 60a539aa22ef097679ff6acdf91617793fe6da90: feat: display prompt key (#43) (@y011d4)\n* 7f4bb563d833d4b2c52461cf2583979964d6c91a: feat: allow `alt+v` to paste too (#46) (@j178)\n* 215557d4c4822bee4aac10ae996611d4ca770887: feat: positional arguments to enable ask-and-response mode (#48) (@j178)\n* 63cdb14d5869fad19dcd2bf102edf1d2aff8f92d: feat: improve status bar (#50) (@j178)\n* 115ac9053b00794237460658bd52b81f27ff0c93: feat: add spinner when waiting for answer (#37) (@j178)\n* 9ddb13a7ce13aac496bc81940b8d95ba06ba6894: feat: show context token usage (#51) (@j178)\n### Others\n* ba0b80b9a32bdf8e5a592d5b6f1f23f9bf4de968: misc: minor improvements (@j178)\n* 868bd5faad9aef9b1afbf26a36bbb5304bfc5c32: Update README.md (@j178)\n\n","2023-04-03T15:37:53",{"id":220,"version":221,"summary_zh":222,"released_at":223},334097,"v0.6.0-beta","## Breaking changes\r\n\r\n1. The configuration file has been moved to `~\u002F.config\u002Fchatgpt\u002Fconfig.json`, and the configuration format has been changed. You may need to manually create a new configuration file using the following format:\r\n```jsonc\r\n{\r\n  \u002F\u002F Your OpenAI API key\r\n  \"api_key\": \"sk-xxxxxx\",\r\n  \u002F\u002F OpenAI API endpoint\r\n  \"endpoint\": \"https:\u002F\u002Fapi.openai.com\u002Fv1\",\r\n  \u002F\u002F Predefined prompts, use `-p` flag to switch prompt\r\n  \"prompts\": {\r\n    \"default\": \"You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.\"\r\n  },\r\n  \u002F\u002F Default conversation parameters\r\n  \"conversation\": {\r\n    \u002F\u002F Prompt to use, can be one of the keys in `prompts`\r\n    \"prompt\": \"default\",\r\n    \u002F\u002F Number of previous conversation to use as context\r\n    \"context_length\": 6,\r\n    \u002F\u002F Model to use, one of gpt-3.5 and gpt-4 series models\r\n    \"model\": \"gpt-3.5-turbo\",\r\n    \u002F\u002F Whether to stream the response\r\n    \"stream\": true,\r\n    \u002F\u002F Maximum number of tokens to generate\r\n    \"max_tokens\": 1024\r\n  }\r\n}\r\n```\r\n2. Some shortcut keys have been changed\r\n- Multiline mode shortcut key has been changed to `ctrl+j`\r\n- `ctrl+r` has been changed to remove the current conversation\r\n\r\n## New features\r\n\r\n- Support for multiple conversations\r\n`ctrl+t` to create a new conversation\r\n`ctrl+left` and `ctrl+right` to navigate through conversations\r\n`ctrl+r` to remove the current conversation\r\n- Support for auto-saving conversation history to `~\u002F.config\u002Fchatgpt\u002Fconversations.json`\r\n- Support for creating a new session by `ctrl+x`. The conversation context will not be sent in the next question.\r\n\r\n## Changelog\r\n### Features\r\n* 71f8a78b271ee9fc77774e2fba4fa2d3d24c4349: feat: tweak help commands (@j178)\r\n* ae0320856326cf3287aae4b79f0254c6ec4b9160: feat!: change config file to `~\u002F.config\u002Fchatgpt\u002Fconfig.json` (@j178)\r\n* 6b0dca5fc788c951347c9a3c9991f4ac3547447c: feat!:use up\u002Fdown as history navigate keys (@j178)\r\n* a2ad016c2cbaa912e9b048984c4eda65985179cd: feat: Implement saving and loading of history (#29) (@j178)\r\n* 0753bc46e6f08523f85bc94c9ddf7b3561fc5cde: feat: support multiple conversations (#30) (@j178)\r\n### Others\r\n* dd1b150733586054ac6bb2acaf6249233fa19bf7: Update README.md (@j178)\r\n\r\n","2023-03-26T09:07:23",{"id":225,"version":226,"summary_zh":227,"released_at":228},334098,"v0.5.2","## Changelog\n### Features\n* 8fff697303347cbac65cb9974e7a4f340b851d8c: feat: support arbitrary prompt (@j178)\n\n","2023-03-20T07:30:30",{"id":230,"version":231,"summary_zh":232,"released_at":233},334099,"v0.5.1","## Changelog\n### Features\n* 6fde8ddcc560a1cd336f8eb70711fccd923de649: feat: support one-time chat mode (#25) (@j178)\n\n","2023-03-20T06:05:31",{"id":235,"version":236,"summary_zh":237,"released_at":238},334100,"v0.5.0","## Changelog\n### Features\n* 1756159a2c1e8246051f945fc33310af89cc5b89: feat: support customize model and parameters (#23) (@j178)\n* ed2507a978a174861d47974867e3fdb07659dd51: feat: support switch prompt (#24) (@j178)\n\n","2023-03-20T04:48:06",{"id":240,"version":241,"summary_zh":242,"released_at":243},334101,"v0.4.0","## Changelog\n### Features\n* 56466de399a2f0a3977964f8adf01b562905397f: feat: support copy to clipboard (#17) (@yaocccc)\n* 2e57532b6fdfcf043348e5dbabf29ccb5b668f0c: feat: use `OPENAI_API_ENDPOINT` env instead of flag (#21) (@j178)\n* 9d0800412e996d262fe704b00d87c9f1d41218aa: feat: refactor message structure, add help view (#18) (@j178)\n* 6861c198b367acceff23fb00970407a3e99b64a1: feat: support history prev and next (#19) (@yaocccc)\n\n","2023-03-16T14:45:51"]