4.17以后如何继续使用iflow cli——iflow cli使用专家skills

一、缘起

官方通知iflow cli将在2026年4月17日关闭,为了在官方关闭之后继续使用iflow
cli,我想让你调用skills-creator skills创建一个iflow
cli专家skills,以便在官方关闭在线教程后遇到问题还可以查询官方教程,知识来自官方的在线教程,现在保
存在@iflow-docs/

二、iflow-cli专家skills测试

iflow cli的知识库好了,但是测试稍后,先讲一个鬼故事——skills消失了!!!

1 个赞

✦ 我来帮你创建一个 iFlow CLI 专家 skills。首先让我查看一下 iflow-docs/ 目录的结构和内容。
x List Directory iflow-docs
Error listing directory: ENOENT: no such file or directory, stat

老哥分享一下“iflow-docs”内容

1 个赞

稍等,我测试完了发上来

二、iflow-cli专家skills测试

先问问js sdk怎么配

回复很详细。看起来比官方的/qa 命令强,不过还是官方的文档强,我是用iflow把官方的教程都扒下来,废了很大劲,力求全面、一致(三栏式),但是最后还是出现很多页面双左侧栏、双右侧蓝,iflow cli无能为力的情况下,我只能手动去改html代码

✦ 根据 iFlow CLI 官方文档,iFlow 提供 TypeScript SDK,完全兼容 JavaScript。以下是详细的配置指南:

  系统要求

   - Node.js: 22.0 或更高版本
   - TypeScript: 4.5 或更高版本(可选)
   - iFlow CLI: 0.2.24 或更高版本
   - 操作系统: Windows、macOS、Linux

  安装

   npm install --save @iflow-ai/iflow-cli-sdk

  快速开始

  方法一:最简单的查询方式

   import { query } from "@iflow-ai/iflow-cli-sdk";

   async function main() {
     const response = await query("法国的首都是哪里?");
     console.log(response); // 输出:法国的首都是巴黎。
   }

   main().catch(console.error);

  方法二:使用 IFlowClient(推荐)

  SDK 会自动检测并启动 iFlow 进程,无需手动配置:

   import { IFlowClient, MessageType } from "@iflow-ai/iflow-cli-sdk";

   async function main() {
     const client = new IFlowClient();

     try {
       // SDK 自动处理:
       // 1. 检测 iFlow 是否已安装
       // 2. 启动 iFlow 进程(如果未运行)
       // 3. 查找可用端口并建立连接
       await client.connect();
       await client.sendMessage("你好,iFlow!");

       for await (const message of client.receiveMessages()) {
         if (message.type === MessageType.ASSISTANT && message.chunk.text) {
           console.log(message.chunk.text);
         } else if (message.type === MessageType.TASK_FINISH) {
           break;
         }
       }
     } finally {
       await client.disconnect();
     }
   }

   main().catch(console.error);

  高级配置

  自定义配置选项

   import { IFlowClient, IFlowOptions } from "@iflow-ai/iflow-cli-sdk";

   const options: IFlowOptions = {
     url: "ws://localhost:8090/acp", // WebSocket URL
     autoStartProcess: true, // 自动启动 iFlow
     timeout: 30000, // 超时时间(毫秒)
     logLevel: "DEBUG", // 日志级别
     cwd: "/path/to/your/project", // 工作目录
   };

   const client = new IFlowClient(options);

  手动进程管理(高级)

  如果需要手动管理 iFlow 进程:

   import { IFlowClient, MessageType } from "@iflow-ai/iflow-cli-sdk";

   async function manualProcessExample() {
     const client = new IFlowClient({
       autoStartProcess: false, // 禁用自动进程管理
       url: "ws://localhost:8090/acp", // 连接到已存在的 iFlow
     });

     try {
       await client.connect();
       await client.sendMessage("你的问题");

       for await (const message of client.receiveMessages()) {
         if (message.type === MessageType.ASSISTANT && message.chunk.text) {
           process.stdout.write(message.chunk.text);
         } else if (message.type === MessageType.TASK_FINISH) {
           break;
         }
       }
     } finally {
       await client.disconnect();
     }
   }

  注意:手动模式需要您单独启动 iFlow:

   iflow --experimental-acp --port 8090

  消息类型处理

  SDK 支持多种消息类型:

  1. AI 助手响应

   if (message.type === MessageType.ASSISTANT && message.chunk.text) {
     console.log(message.chunk.text);

     // 访问代理信息(如果有)
     if (message.agentInfo) {
       console.log(`代理 ID: ${message.agentInfo.agentId}`);
     }
   }

  2. 工具调用

   if (message.type === MessageType.TOOL_CALL) {
     console.log(`工具名称: ${message.toolName}`);
     console.log(`状态: ${message.status}`);
   }

  3. 任务计划

   if (message.type === MessageType.PLAN) {
     console.log("执行计划:");
     for (const entry of message.entries) {
       const statusIcon = entry.status === "completed" ? "✅" : "⏳";
       console.log(`${statusIcon} [${entry.priority}] ${entry.content}`);
     }
   }

  交互式聊天机器人示例

   import * as readline from "readline";
   import { IFlowClient, MessageType } from "@iflow-ai/iflow-cli-sdk";

   async function chatbot() {
     console.log("iFlow 聊天机器人 (输入 'quit' 退出)");
     console.log("-".repeat(50));

     const client = new IFlowClient();

     try {
       await client.connect();

       const rl = readline.createInterface({
         input: process.stdin,
         output: process.stdout,
       });

       while (true) {
         const userInput = await new Promise((resolve) => {
           rl.question("\n你: ", resolve);
         });

         if (userInput.toLowerCase() === "quit") {
           console.log("再见!");
           break;
         }

         await client.sendMessage(userInput);

         process.stdout.write("iFlow: ");
         for await (const message of client.receiveMessages()) {
           if (message.type === MessageType.ASSISTANT && message.chunk.text) {
             process.stdout.write(message.chunk.text);
           } else if (message.type === MessageType.TASK_FINISH) {
             console.log();
             break;
           }
         }
       }

       rl.close();
     } finally {
       await client.disconnect();
     }
   }

   chatbot().catch(console.error);

  错误处理

   import { IFlowClient, ConnectionError, TimeoutError } from "@iflow-ai/iflow-cli-sdk";

   async function errorHandlingExample() {
     const client = new IFlowClient();

     try {
       await client.connect();
       await client.sendMessage("测试");

       for await (const message of client.receiveMessages()) {
         if (message.type === MessageType.ASSISTANT && message.chunk.text) {
           console.log(message.chunk.text);
         } else if (message.type === MessageType.TASK_FINISH) {
           break;
         }
       }
     } catch (error) {
       if (error instanceof ConnectionError) {
         console.error(`连接错误: ${error.message}`);
       } else if (error instanceof TimeoutError) {
         console.error(`超时错误: ${error.message}`);
       } else {
         console.error(`未知错误: ${error}`);
       }
     } finally {
       await client.disconnect();
     }
   }

  故障排除

  连接问题

  如果遇到连接错误,请检查:

   1. iFlow 是否已安装
      iflow --version

   2. 端口是否被占用
      # Windows
      netstat -an | findstr :8090

   3. 手动测试连接
      iflow --experimental-acp --port 8090

  超时问题

  对于长时间运行的任务,可以增加超时时间:

   const options = {
     timeout: 600000, // 10分钟超时
   };

  启用调试日志

   const options = {
     logLevel: "DEBUG",
   };

  核心特性

  ✨ SDK 自动管理 iFlow 进程 - 无需手动配置!

   - 自动检测 iFlow 是否已安装
   - 自动启动 iFlow 进程(如果未运行)
   - 自动查找可用端口并建立连接
   - 支持完整的消息类型处理
   - 提供详细的错误处理机制

✦ 更多详细信息请参考:knowledge-base/25-sdk-typescript.html
1 个赞

昨天调试其他应用把nodejs卸载了。只能手动重新安装。以后不小心卸载了就真的没了 :joy:

我的node.js一开始是trea ide安装的,导致我现在所以的node.js程序都是安装在那个目录下的,想改回来(trea ide早都不用了)又怕改出问题,就只能一直这么将就着

4.17之后我是第一时间把@iflow-cli目录备份了

没有看到论坛这么发附件,留邮箱发给您

1 个赞

老哥分享一下“iflow-docs”内容

感谢老哥~

odysseywarsaw@163.com

1 个赞

已发送

1 个赞

完美收到,感谢老哥~

求分享,1150577587@qq.com

收到邮件的朋友帮助楼主在论坛发一下附件吧,如果楼主不反对的话。

已发

收到了,感谢