一、缘起
官方通知iflow cli将在2026年4月17日关闭,为了在官方关闭之后继续使用iflow
cli,我想让你调用skills-creator skills创建一个iflow
cli专家skills,以便在官方关闭在线教程后遇到问题还可以查询官方教程,知识来自官方的在线教程,现在保
存在@iflow-docs/
二、iflow-cli专家skills测试
iflow cli的知识库好了,但是测试稍后,先讲一个鬼故事——skills消失了!!!
一、缘起
官方通知iflow cli将在2026年4月17日关闭,为了在官方关闭之后继续使用iflow
cli,我想让你调用skills-creator skills创建一个iflow
cli专家skills,以便在官方关闭在线教程后遇到问题还可以查询官方教程,知识来自官方的在线教程,现在保
存在@iflow-docs/
二、iflow-cli专家skills测试
iflow cli的知识库好了,但是测试稍后,先讲一个鬼故事——skills消失了!!!
✦ 我来帮你创建一个 iFlow CLI 专家 skills。首先让我查看一下 iflow-docs/ 目录的结构和内容。
x List Directory iflow-docs
Error listing directory: ENOENT: no such file or directory, stat
老哥分享一下“iflow-docs”内容
稍等,我测试完了发上来
好
二、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
昨天调试其他应用把nodejs卸载了。只能手动重新安装。以后不小心卸载了就真的没了 ![]()
我的node.js一开始是trea ide安装的,导致我现在所以的node.js程序都是安装在那个目录下的,想改回来(trea ide早都不用了)又怕改出问题,就只能一直这么将就着
4.17之后我是第一时间把@iflow-cli目录备份了
没有看到论坛这么发附件,留邮箱发给您
老哥分享一下“iflow-docs”内容
求分享,1150577587@qq.com
收到邮件的朋友帮助楼主在论坛发一下附件吧,如果楼主不反对的话。
已发
收到了,感谢