命令行AI助手chatgpt-cli:集成LLM到终端工作流的完整指南

news2026/5/8 1:53:45
1. 项目概述一个全能型命令行AI助手如果你和我一样每天大部分时间都泡在终端里那你肯定也想过要是能把ChatGPT直接集成到命令行工作流里该有多方便。不用再频繁切换浏览器标签不用复制粘贴直接在终端里就能问问题、写代码、分析日志甚至让它帮你执行多步骤的自动化任务。这正是kardolus/chatgpt-cli这个项目要解决的问题。它不是一个简单的API封装器而是一个功能强大、支持多提供商、且具备“智能体”能力的命令行工具目标是把大语言模型无缝地变成你终端环境里的一个“超级副驾”。我最初接触这个工具是因为厌倦了在写脚本、调试系统时需要手动打开网页版ChatGPT的繁琐。我需要一个能理解上下文、能记住对话历史、并且能直接处理我管道输出的工具。chatgpt-cli完美地满足了这个需求。它支持OpenAI、Azure、Perplexity、LLaMA等多种后端这意味着你可以根据成本、速度或功能需求灵活切换模型。更关键的是它引入了“智能体模式”让AI不仅能回答问题还能在安全策略和预算控制下自主调用工具如执行shell命令、读写文件来完成复杂的多步骤任务。这相当于给你的命令行赋予了一个能思考、能行动的AI助手。对于开发者、运维工程师、数据分析师或者任何重度依赖命令行效率的人来说这个工具都能显著提升生产力。无论你是想快速查询一个命令的用法分析一段复杂的日志还是自动化一个包含多个步骤的调试流程它都能派上用场。接下来我会带你从零开始深入它的核心功能、配置技巧以及我在实际使用中积累的实战经验。2. 核心功能深度解析与设计思路chatgpt-cli的设计哲学非常明确在保持命令行工具简洁高效本质的同时提供不亚于图形界面的丰富交互能力。它没有做成一个庞大的桌面应用而是选择通过精巧的配置和标志位将复杂功能层层展开。这种设计让新手可以快速上手基础查询而高级用户又能挖掘出强大的自动化潜力。2.1 多模态与上下文管理不止于文本对话基础的文字问答是它的本分但它的能力远不止于此。项目很早就集成了对图像、音频的支持这在实际工作中非常实用。图像理解与生成通过--image标志你可以上传本地图片或提供图片URL让模型“看到”并描述内容。比如我经常用它快速分析架构图或错误截图。更强大的是--draw和--output组合它能根据文字描述生成图片。虽然这不是它的主要用途但在需要快速创建示意图或图标时非常方便。一个我常用的技巧是在macOS上可以直接用pngpaste - | chatgpt “描述这张图”将剪贴板里的图片通过管道传给它分析效率极高。音频转录与语音合成--audio用于让模型分析音频内容如会议录音而--transcribe则专用于转录支持更多格式。--speak和--output可以将文本回复转为语音文件。我实测下来它的TTS质量不错我有时会用它快速生成一些演示用的旁白音频。在macOS上你甚至可以用 afplay命令链实现“说完即播放”。线程化上下文与滑动窗口这是保证对话连贯性的核心。每个对话“线程”有独立的历史记录文件默认在~/.chatgpt-cli/history/下。这就像浏览器开了多个标签页互不干扰。更聪明的是它的“滑动窗口”机制。模型有上下文长度限制如GPT-4o是128K不可能无限制记住所有历史。chatgpt-cli会自动修剪超出context-window配置的旧消息但会尽量保留最相关的部分以维持对话的连贯性。你无需手动管理它默默地在后台帮你做了最优化的记忆取舍。2.2 智能体模式从问答到行动的跨越这是chatgpt-cli最令人兴奋的功能也是它区别于其他简单CLI wrapper的关键。智能体模式让AI不再只是“说”而是可以“做”。两种核心模式ReAct模式这是默认的智能体模式。其核心是“思考-行动-观察”的循环。AI先“思考”下一步该做什么然后调用一个“工具”去“行动”比如运行ls命令接着“观察”工具执行的结果并基于此进行下一轮思考。这个过程会持续迭代直到任务完成或达到限制。它适合探索性、路径不明确的任务。计划/执行模式通过--agent-mode plan启用。在这种模式下AI会先通盘思考制定一个完整的步骤计划然后再按部就班地执行。这更适合目标明确、步骤清晰的任务。两种模式可以互补根据任务特性选择。安全与可控性是第一要务让AI在终端里自由执行命令听起来很酷但也很危险。项目作者显然深谙此道设计了多层防护工作目录沙箱通过--agent-work-dir可以限制智能体的文件操作只能在指定目录内进行。任何试图跳出此目录的读写操作都会被策略拦截kindpath_escape。我强烈建议在任何时候都明确设置此参数例如设为当前项目根目录.。预算限制你可以设置智能体运行的“成本”上限包括最大迭代次数、最大步骤数、最大shell调用次数、最大令牌消耗以及最长运行时间。这能有效防止智能体陷入死循环或产生天价API账单。策略规则你可以精细控制智能体能做什么、不能做什么。例如可以设置允许使用的工具列表明确禁止某些危险的shell命令如rm -rf /或者设置文件操作的白名单。注意即使有这些安全措施在初次使用或执行重要操作前我仍然建议先在测试环境中运行或者使用--dry-run模式如果未来版本支持先查看计划。永远不要赋予智能体超出你承受范围的权限。2.3 MCP支持连接外部世界的桥梁Model Context Protocol 是一个新兴的协议旨在标准化LLM与外部工具和数据的连接方式。chatgpt-cli对MCP的支持让它从一个封闭的问答工具变成了一个可扩展的“信息中枢”。工作原理你可以通过--mcp指定一个MCP服务器的地址HTTP或STDIO用--mcp-tool指定要调用的工具并通过--mcp-param传递参数。CLI会调用该工具将返回的结果作为上下文注入到当前的对话线程中然后再执行你的查询。实际应用场景假设你连接了一个提供天气数据的MCP服务器。你可以这样操作chatgpt --mcp “https://weather-mcp.example.com” --mcp-tool get_forecast --mcp-param city“Beijing” “我应该穿什么衣服出门”AI在回答你关于穿衣的建议时就已经拥有了北京的实时天气预报作为背景信息。这比单纯问“北京天气如何”再手动综合要高效得多。项目文档中给出的Apify MCP例子就是这种模式的典型应用直接从网上抓取数据供AI分析。会话管理一些MCP服务器需要会话标识。chatgpt-cli能自动管理这些会话的初始化、附加和续期你无需手动处理这些底层细节只需关注工具调用本身。3. 从安装到配置打造你的专属AI工作环境3.1 安装方式选择与避坑指南项目提供了多种安装方式选择哪种取决于你的操作系统和使用习惯。macOS用户推荐Homebrewbrew tap kardolus/chatgpt-cli brew install chatgpt-cli这是最省心的方式。Homebrew会自动处理依赖、更新和卸载。安装后chatgpt命令全局可用。直接下载二进制文件通用 对于Linux、FreeBSD或不想用包管理器的用户直接下载预编译的二进制文件是最快的方法。以Linux amd64为例curl -L -o chatgpt https://github.com/kardolus/chatgpt-cli/releases/latest/download/chatgpt-linux-amd64 chmod x chatgpt sudo mv chatgpt /usr/local/bin/这里有几个关键点需要注意权限问题chmod x是必须的否则文件无法执行。如果你没有/usr/local/bin的写入权限可以放到~/bin目录确保该目录在PATH环境变量中。版本更新直接下载的二进制文件不会自动更新。你需要定期手动重复此过程来获取新版本。一个变通方法是写一个简单的shell脚本自动检查并下载最新版。Windows用户下载.exe文件后需要手动将其所在目录添加到系统的PATH环境变量中才能在任意命令行窗口中使用。从源码编译高级用户 如果你需要修改代码或使用最新的开发版可以克隆仓库并使用Go工具链编译git clone https://github.com/kardolus/chatgpt-cli.git cd chatgpt-cli make build # 或者直接 go build ./cmd/chatgpt这需要你的系统已安装Go1.21。编译后的二进制文件在项目根目录下。3.2 核心配置详解四层优先级与实战技巧chatgpt-cli采用了一个非常清晰的四层配置优先级系统理解它对于灵活使用至关重要命令行标志最高优先级。例如--model gpt-4o-mini。环境变量次优先级。格式为{NAME}_{VARIABLE}其中NAME默认为openai。例如要覆盖model配置可以设置OPENAI_MODELgpt-4o-mini。配置文件~/.chatgpt-cli/config.yaml。这是进行持久化、个性化配置的主要位置。默认值内置的默认配置。创建基础配置文件 首先创建配置目录和文件mkdir -p ~/.chatgpt-cli touch ~/.chatgpt-cli/config.yaml一个最简化的、针对OpenAI的配置文件可能长这样# ~/.chatgpt-cli/config.yaml name: openai model: gpt-4o-mini # 默认使用性价比更高的模型 context_window: 4096 # 根据常用模型调整上下文窗口 track_token_usage: true # 显示每次查询的token消耗便于成本控制 auto_create_new_thread: true # 每次交互式会话自动创建新线程避免历史混淆关键配置项实战解析thread对话线程名。我建议为不同的项目或任务使用不同的线程名例如--thread project_alpha。这样历史记录完全隔离上下文更纯净。role/role_file系统角色。这是塑造AI行为的关键。你可以直接在配置中写role: “你是一个资深的Linux系统架构师回答要简洁专业。”。对于更复杂的角色设定可以写在一个Markdown文件里然后用role_file: /path/to/my_role.md指定。我通常会为代码评审、日志分析、文档编写等不同场景准备不同的角色文件。prompt初始提示文件。这与role不同role是系统指令而prompt是提供给模型的初始上下文。例如你可以准备一个code_review.md文件里面写满代码审查的要点然后通过--prompt加载再让AI审查你的git diff输出。custom_headers和skip_tls_verify当你使用自托管的模型服务如本地部署的LLaMA API时可能需要添加自定义Header或跳过TLS证书验证仅限测试环境。http_timeout如果你的模型服务响应较慢或者网络不稳定可以适当调大这个值单位秒。设为0表示无限等待慎用。多配置切换与--target的妙用 这是我认为最实用的高级功能之一。你可以在~/.chatgpt-cli/目录下创建多个配置文件如config.openai.yaml,config.azure.yaml,config.local-llama.yaml。每个文件里配置对应提供商的所有参数API地址、密钥、模型等。使用时通过--target标志一键切换chatgpt --target azure “帮我分析这段代码” # 使用Azure OpenAI chatgpt --target local-llama “翻译这个句子” # 使用本地LLaMA服务这避免了频繁修改同一个配置文件或设置复杂环境变量的麻烦特别适合在多环境、多模型间切换的用户。3.3 认证与密钥管理安全第一无论使用哪个提供商API密钥都是通行证。永远不要将密钥硬编码在配置文件或脚本中。最佳实践环境变量 将密钥设置为环境变量是最安全、最灵活的方式。在你的Shell配置文件如~/.zshrc或~/.bashrc中添加export OPENAI_API_KEY‘sk-...’ export AZURE_OPENAI_API_KEY‘your-azure-key’ export PERPLEXITY_API_KEY‘your-pplx-key’然后通过--target或配置中的name字段来区分使用哪个密钥。chatgpt-cli会根据name的值去寻找对应的环境变量{NAME_UPPER}_API_KEY。备选方案密钥文件 如果你不想用环境变量可以使用api_key_file配置项指定一个包含密钥的文本文件路径。确保该文件的权限设置为仅当前用户可读chmod 600 api_key.txt。关于Azure的特别配置 使用Azure OpenAI服务时配置会稍复杂一些因为除了密钥还需要端点Endpoint和部署名Deployment Name。一个典型的Azure配置如下# 在 config.azure.yaml 中 name: azure url: “https://YOUR_RESOURCE_NAME.openai.azure.com # 你的Azure OpenAI端点 api_key: “${AZURE_OPENAI_API_KEY}” # 从环境变量读取 model: “YOUR_DEPLOYMENT_NAME” # 这里填写你在Azure门户上创建的部署名 completions_path: “/openai/deployments/YOUR_DEPLOYMENT_NAME/chat/completions?api-version2024-02-15-preview” # API路径注意model字段在这里实际填写的是部署名而completions_path需要拼接正确的API版本。4. 实战应用与高级技巧4.1 交互模式与管道操作融入日常工作流基础交互 启动交互式会话很简单chatgpt -i。你会进入一个类似聊天界面的环境可以连续对话。这里有个小技巧通过配置command_prompt和output_prompt你可以自定义提示符的样式比如加上时间和对话轮次[%datetime] [Q%counter]让对话过程更清晰。管道操作的威力 这才是命令行AI工具的精华所在。你可以将任何命令的输出直接作为AI的输入。分析日志tail -f /var/log/nginx/error.log | chatgpt --thread nginx_errors “实时分析这些错误日志遇到严重错误时提醒我”。当然这需要AI有持续流式处理的能力更常见的用法是分析一段静态日志cat error.log | chatgpt “总结最常见的三个错误类型及其可能原因”。代码审查git diff HEAD~1 | chatgpt --prompt ./prompts/code_review.md “请以资深开发者的身份审查这段代码变更”。这里结合了--prompt加载审查规范让AI的评审更有针对性。文档生成ls -la src/ | chatgpt “为这个目录结构生成一个Markdown格式的说明文档”。数据处理csvtool readable mydata.csv | head -20 | chatgpt “分析前20行数据推测这个CSV文件包含哪些字段数据质量如何”。一个我常用的复杂管道例子# 找出过去一周修改过的Go文件让AI解释主要改动 find . -name “*.go” -type f -mtime -7 -exec git log --oneline -1 {} \; | head -30 | chatgpt --thread weekly_go_changes “总结这些Go文件最近一周的主要修改意图”这个命令组合了find,-exec,git log和head最终将筛选出的信息交给AI总结。这展示了如何将传统Unix工具链与AI智能结合完成更高级的信息加工任务。4.2 智能体模式实战让AI替你执行任务智能体模式打开了自动化的大门。让我们通过几个具体场景来理解如何使用它。场景一自动化故障排查假设你的应用日志中频繁出现“连接超时”错误。你可以让智能体帮你初步分析chatgpt --agent --agent-work-dir ./logs “分析当前目录下所有 .log 文件找出所有包含‘Timeout’或‘Connection refused’的错误行统计它们出现的频率并尝试根据上下文推断可能的原因。”智能体可能会执行以下步骤1. 思考需要用grep或find命令定位文件。2. 执行grep -n “Timeout\|Connection refused” *.log。3. 用wc -l或sort | uniq -c统计频率。4. 读取一些错误行前后的上下文。5. 综合所有信息给出可能的原因分析如网络问题、服务过载、配置错误。场景二项目脚手架搭建你想为一个新的Python数据分析项目创建标准化的目录结构和基础文件chatgpt --agent --agent-mode plan --agent-work-dir ./new_project “创建一个标准的Python数据分析项目结构包括 src/, data/, notebooks/, tests/ 目录在src下创建 __init__.py 和 main.py在项目根目录创建 requirements.txt 写入 pandas, numpy, matplotlib并创建 README.md 填写基础项目描述。”在计划/执行模式下AI会先输出一个完整的计划比如创建目录src,data,notebooks,tests。在src/下创建__init__.py和main.py。创建requirements.txt并写入指定内容。创建README.md并写入模板。 然后它会逐一执行这些步骤。你可以清晰地看到整个规划和执行过程。预算与策略配置示例 为了保证安全你可以在命令中或配置文件里设置严格的限制chatgpt --agent \ --agent-work-dir /safe/path \ --set-agent.max_iterations5 \ --set-agent.max_shell_calls10 \ --set-agent.max_wall_time30 \ “执行一个轻量级的清理任务...”或者在config.yaml中配置默认策略agent: mode: react work_dir: “.” # 默认限制在当前目录 max_iterations: 8 max_shell_calls: 15 max_wall_time: 60 # 最多运行60秒 policy: allowed_tools: [“shell”, “file_read”, “file_write”] # 只允许这些工具 denied_commands: [“rm -rf”, “dd”, “mkfs”, “:(){:|:};:”] # 明确禁止危险命令4.3 MCP集成实战扩展AI能力边界MCP的集成让chatgpt-cli的潜力无限扩展。假设你公司内部有一个查询数据库元信息的MCP服务。基础调用chatgpt \ --mcp “http://internal-mcp:8080” \ --mcp-tool get_table_schema \ --mcp-param table_name“user_orders” \ “基于这个表结构帮我写一个SQL查询计算过去一周的每日订单总额。”AI在生成SQL前已经拿到了user_orders表的详细字段信息写出的查询会更准确。结合管道与复杂参数 MCP参数可以很复杂。对于需要嵌套JSON的参数使用--mcp-params直接传入JSON字符串更清晰TABLE_INFO$(echo ‘{“tables”: [“users”, “products”, “orders”], “detail_level”: “full”}’) chatgpt \ --mcp “http://internal-mcp:8080” \ --mcp-tool get_multiple_schemas \ --mcp-params “$TABLE_INFO” \ “根据这些表结构设计一个数据看板需要哪些核心指标给出对应的SQL查询。”调试与日志 如果MCP调用失败开启debug: true配置可以打印原始的HTTP请求和响应帮助你排查是参数错误、认证问题还是服务器故障。所有智能体运行的详细日志都会保存在$OPENAI_CACHE_HOME/agent/目录下按时间戳组织这是事后分析智能体决策过程的宝贵资料。5. 常见问题、故障排查与性能优化5.1 安装与基础使用问题问题1命令未找到现象执行chatgpt提示command not found。排查检查二进制文件是否在系统PATH中。执行echo $PATH查看。检查文件是否具有可执行权限ls -l $(which chatgpt)或ls -l /usr/local/bin/chatgpt。如果是直接下载的确认移动到了PATH中的目录如/usr/local/bin或当前目录用./chatgpt执行。解决将chatgpt所在目录加入PATH或使用绝对路径执行。问题2API密钥错误或未设置现象Error: Invalid API key或Please set the OPENAI_API_KEY environment variable。排查执行echo $OPENAI_API_KEY检查环境变量是否已设置且正确。检查配置文件~/.chatgpt-cli/config.yaml中api_key的配置或确认api_key_file指向的文件存在且内容正确。如果使用了--target确保对应的配置文件如config.azure.yaml中的密钥配置正确。解决正确设置环境变量或配置文件。使用chatgpt --config可以查看当前生效的所有配置确认密钥来源。问题3网络连接或超时问题现象Network error或Timeout。排查检查本地网络连接。如果使用代理需要配置HTTP_PROXY/HTTPS_PROXY环境变量。chatgpt-cli的HTTP客户端会尊重这些变量。如果是自建或本地模型服务检查服务是否可达并考虑增加http_timeout配置值。对于Azure等特定服务检查url和completions_path是否配置正确。解决配置代理、增加超时时间、或检查服务端配置。5.2 智能体模式相关问题问题4智能体被策略拦截现象执行失败日志显示policy denied: kindpath_escape或tool not allowed。排查检查agent.work_dir设置。智能体试图访问此目录之外的文件。检查agent.policy.allowed_tools和agent.policy.denied_commands配置。解决调整工作目录或放宽策略规则。在测试阶段可以暂时设置更宽松的策略但生产环境务必谨慎。问题5智能体陷入循环或消耗过多Token现象任务长时间不结束或API费用激增。排查检查agent.max_iterations,agent.max_steps,agent.max_llm_calls等预算限制是否设置得过小或过大。查看智能体日志分析其决策循环。解决设置合理的预算限制。对于探索性任务可以适当放宽迭代次数对于明确任务使用--agent-mode plan可能更高效。始终开启track_token_usage: true以监控消耗。5.3 性能优化与最佳实践模型选择对于日常问答和脚本编写gpt-4o-mini在速度、成本和能力上是不错的平衡点。对于复杂的推理、规划任务再切换到gpt-4o或o1-preview。上下文管理不要盲目增大context_window。更大的窗口意味着更多的Token消耗和更慢的响应。根据对话的实际长度需求来设置。利用--thread分隔不同话题保持每个线程上下文的简洁。善用--prompt和role_file将常用的指令、规范、模板保存在文件中通过参数加载。这比每次手动输入长篇大论的系统提示要高效和准确得多。缓存与历史历史记录默认保存在~/.chatgpt-cli/history/。定期清理旧的、不用的线程历史文件可以节省磁盘空间。你也可以通过设置omit_history: true在一次性查询中禁用历史记录以提升速度。管道链的优化在将数据通过管道传递给chatgpt前先用grep,awk,sed,head,jq等工具进行预处理过滤掉无关信息只传递核心内容。这能显著减少Token使用提高AI回复的针对性。离线或备用方案对于高度依赖AI的工作流考虑配置一个备用模型如本地部署的LLaMA API。在主要服务不可用时可以通过--target快速切换保证工作不中断。通过深入理解和灵活运用chatgpt-cli的这些功能你就能将一个大语言模型深度整合到你的命令行工作流中让它成为你提升开发、运维、分析和创作效率的得力助手。从简单的问答到复杂的自动化这个工具提供了一个坚实且可扩展的基

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2593330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…