Flutter命令行辅助插件cli_buddy的使用
Flutter命令行辅助插件cli_buddy的使用
cli_buddy
调用任何LLM从你的终端
- 轻量级且快速
- 支持超过100+ LLM(包括GPT、Claude、Cohere、LLama 3、Gemini、Mistral、DeekSeek等,还包括所有开源LLM)
- 使用你自己的API密钥(OpenRouter)
- 使用Ollama支持本地LLM
- 完全隐私 - 不收集任何分析数据
- 在Linux、macOS和Windows上运行
- 可以查看类似于许多AI聊天应用的图形用户界面
Demo
功能
-
代码生成:请求代码并直接生成或覆盖文件。
- 还有选项可以复制到剪贴板、请求解释或与上下文聊天。
-
shell命令执行:请求shell命令并直接在终端执行。
- 还有选项可以复制到剪贴板或请求解释。
-
连续聊天:在终端中连续与AI聊天。
-
会话管理:将聊天历史保存为JSON格式,并在启动新会话时加载。默认情况下禁用保存聊天历史。
-
OpenRouter APIs:尽管这是一个CLI工具,但此包也可以用于任何Dart/Flutter项目来使用OpenRouter APIs。此包暴露了OpenRouter APIs和模型。只需声明
final openRouter = OpenRouterService();
并在项目中使用它。例如final result = await openRouter.invoke(session: ChatSession());
-
GUI:想要查看GUI吗?只需运行
buddy open
即可打开GUI。
开始使用 🚀
安装
-
作为包安装
- 直接运行:
dart pub global activate cli_buddy
-
安装Dart SDK
- 按照官方文档安装Dart SDK。
- 通过运行
dart --version
检查是否已安装Dart SDK。 - 运行
dart pub global activate cli_buddy
。
-
使用二进制文件
- 下载你操作系统对应的二进制文件(目前我只在MacOS上测试过,但理论上应该可以在所有操作系统上工作)。
- 如果你的系统是Unix(MacOS、Linux),运行
sudo chmod +x <path/to/binary>
。 - 测试是否运行:
./<path/to/binary> --help
。 - 根据你的系统设置别名(例如
alias buddy='./<path/to/binary>'
)。
从OpenRouter获取API密钥
OpenRouter 提供统一的LLM APIs,成本几乎与原始LLM API提供商相同。
- 注意:OpenRouter提供一些免费的AI模型,带有某些限制。你可以免费试用这些模型而无需支付。
- 注意:我不是OpenRouter的关联人员,我没有从他们那里获得任何形式的好处。
添加API密钥
buddy set --or-api-key <your_openrouter_key>
示例 buddy.config
{
"api_provider": "openrouter",
"localEndpoint": "localhost:43210",
"save_session": true,
"save_online": false,
"local_web": true,
"max_messages": 20,
"openrouter_default_model": "openai/gpt-4o",
"ollama_default_model": null,
"ollamaEndpoint": "localhost:11434",
"openrouter_key": null,
"temperature": 0.3,
"max_tokens": null,
"top_p": null,
"top_k": null,
"frequency_penalty": null,
"presence_penalty": null,
"repetition_penalty": null,
"min_p": null,
"top_a": null,
"seed": null,
"logit_bias": null,
"logprobs": false,
"top_logprobs": null,
"response_format": null,
"stop": null,
"cmd_prompt": "If there is a lack of details, provide most logical solution.\nEnsure the output is a valid shell command.\nIf multiple steps required try to combine them together in one command.\nProvide only plain text without Markdown formatting.\nDo not provide markdown formatting such as ```",
"explain_prompt": "Provide short and concise explanation of your previous response about command or code.\nProvide only plain text without Markdown formatting.\nDo not provide markdown formatting such as ```",
"code_prompt": "Provide only code as output without any description.\nProvide only code in plain text format without Markdown formatting.\nDo not include symbols such as ``` or ```python.\nIf there is a lack of details, provide most logical solution.\nYou are not allowed to ask for more details.\nFor example if the prompt is \"Hello world Python\", you should return \"print('Hello world')\".\n",
"chat_prompt": "You are a Flutter/Dart developer. Don't be verbose in your response but focus on solving problem or coding. As for state management, use hooks_flutter and riverpod_hook packages.",
"validate_prompt": "Your job is to verify if the provided code by the previous AI assistant is valid.\nProvide concise response unless asked for more details."
}
基本用法
# 执行shell命令
$ buddy shell how can I update homebrew
# 如果要使用特殊字符,使用引号
$ buddy shell "how can I update homebrew?"
# 生成代码
$ buddy code "Generate a random number between 1 and 10 in Dart"
# 聊天
$ buddy chat "Tell me about the SSH protocol"
# 显示图形用户界面
$ buddy open
# 显示CLI版本
$ buddy --version
# 显示帮助信息
$ buddy --help
Info命令
info
命令允许你在OpenRouter中搜索AI模型。以下是一些可用的选项和标志:
-q, --query
:按名称、提供者或模型类型(如文本、图像)搜索AI模型。-o, --order
:指定结果应按哪种顺序显示。允许值:name
、context
、prompt
、completion
、image
。-f, --config
:显示当前配置文件。如果不存在,则创建一个新文件。-c, --credits
:显示OpenRouter中的信用额度。-l, --list
:列出OpenRouter中所有可用的AI模型。-p, --parameters
:查询特定AI模型的参数。-s, --sessions
:(-s list)列出默认会话文件夹中的保存聊天历史记录,或者(-s <session_id>)查看特定的聊天历史记录。
示例用法
# 按名称搜索AI模型
$ buddy info -q "claude"
# 按提供者搜索AI模型
$ buddy info -q "openai"
# 列出所有可用的AI模型
$ buddy info -l
# 显示当前配置
$ buddy info -f
# 显示OpenRouter账户中的信用额度
$ buddy info -c
# 查询特定AI模型的参数
$ buddy info -p "model_id"
# 列出保存的聊天历史记录
$ buddy info -s list
# 查看特定聊天历史记录(通过会话ID)
$ buddy info -s "session_id"
更多关于Flutter命令行辅助插件cli_buddy的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter命令行辅助插件cli_buddy的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用cli_buddy
命令行辅助插件的示例代码和步骤。cli_buddy
是一个假想的 Flutter 命令行工具插件,用于简化常见的开发任务。由于这是一个假设的插件,具体的命令和功能可能会有所不同,但我会根据常见的插件使用模式提供一个示例。
安装 cli_buddy
首先,你需要通过 Dart 的包管理工具 pub
来安装 cli_buddy
。在你的 Flutter 项目根目录下运行以下命令:
dart pub add cli_buddy
配置 pubspec.yaml
确保 pubspec.yaml
文件中包含了 cli_buddy
的依赖项:
dependencies:
flutter:
sdk: flutter
cli_buddy: ^1.0.0 # 假设的版本号
使用 cli_buddy
命令行工具
假设 cli_buddy
提供了一些有用的命令行工具,比如生成代码模板、管理 Flutter 环境等。以下是如何在命令行中使用这些工具的示例。
1. 生成代码模板
假设 cli_buddy
提供了一个 generate-template
命令来生成常用的 Flutter 组件模板。
flutter pub run cli_buddy generate-template --type=button
这个命令会在你的项目中生成一个按钮组件的模板文件。
2. 管理 Flutter 环境
假设 cli_buddy
还提供了一些用于管理 Flutter 环境的命令,比如列出所有安装的 Flutter SDK 版本。
flutter pub run cli_buddy list-flutter-versions
这个命令会列出当前系统上安装的所有 Flutter SDK 版本。
示例代码:在 Dart 脚本中调用 cli_buddy
虽然 cli_buddy
是一个命令行工具,但你也可以在 Dart 脚本中通过 Process
类来调用它的命令。以下是一个 Dart 脚本示例,展示了如何在 Dart 代码中调用 cli_buddy
命令。
import 'dart:io';
void main() async {
// 生成按钮组件模板
await runCliBuddyCommand('generate-template', ['--type=button']);
// 列出所有 Flutter SDK 版本
await runCliBuddyCommand('list-flutter-versions', []);
}
Future<void> runCliBuddyCommand(String command, List<String> arguments) async {
ProcessResult result = await Process.run('flutter', ['pub', 'run', 'cli_buddy', command, ...arguments]);
// 打印命令的输出
print(result.stdout);
// 如果有错误,打印错误信息
if (result.exitCode != 0) {
print(result.stderr);
}
}
注意事项
-
插件功能:由于
cli_buddy
是一个假想的插件,上述命令和功能是虚构的。你需要根据你实际使用的插件文档来调整命令和参数。 -
权限问题:在 Dart 脚本中调用命令行工具时,请确保你的脚本有执行这些命令的权限。
-
依赖管理:确保你的 Flutter 项目正确配置了所有依赖项,并且
cli_buddy
插件已经正确安装。 -
文档参考:总是参考
cli_buddy
插件的官方文档来获取最准确和最新的使用指南。
希望这个示例能帮助你理解如何在 Flutter 项目中使用命令行辅助插件 cli_buddy
。如果你有任何其他问题或需要进一步的帮助,请随时提问。