用前必看!iFlow Python SDK - 文件系统使用指南

概述

iFlow Python SDK 提供了安全的文件系统访问功能,允许 AI 助手在受控环境下读写本地文件。该功能基于白名单机制,确保只能访问明确授权的目录。

核心特性

  • 目录白名单 - 只允许访问指定目录
  • 路径安全 - 自动防止路径遍历攻击
  • 大小限制 - 可配置文件大小上限
  • 只读模式 - 可选的只读访问模式
  • 权限控制 - 细粒度的文件操作权限

快速开始

最小配置(访问当前目录)

from iflow_sdk import IFlowClient, IFlowOptions

options = IFlowOptions(
    file_access=True,  # 必须:启用文件系统
)

async with IFlowClient(options) as client:
    await client.send_message("读取当前目录下的 README.md")
    # ... 处理响应

说明:

  • file_access=True 是必需的,默认为 False
  • 不指定 file_allowed_dirs 时,默认只能访问 Python 进程的当前工作目录

配置参数

必需参数

参数类型默认值说明
file_accessboolFalse必须设置为 True 才能启用文件系统功能

重要参数

参数类型默认值说明
file_allowed_dirsList[str]None允许访问的目录列表。None 表示只允许当前工作目录
cwdstros.getcwd()iFlow CLI 的工作目录。如果与当前目录不同,必须在 file_allowed_dirs 中包含

可选参数

参数类型默认值说明
file_read_onlyboolFalse是否只读模式。True 时禁止写入操作
file_max_sizeint10485760文件大小限制(字节),默认 10MB

使用场景

场景 1:访问指定目录

from pathlib import Path
from iflow_sdk import IFlowClient, IFlowOptions

# 指定允许访问的目录
workspace = Path("/path/to/workspace")

options = IFlowOptions(
    file_access=True,
    file_allowed_dirs=[str(workspace)],  # 明确指定目录
)

async with IFlowClient(options) as client:
    await client.send_message("列出 workspace 目录下的所有 Python 文件")

场景 2:访问多个目录

options = IFlowOptions(
    file_access=True,
    file_allowed_dirs=[
        "/home/user/project",
        "/home/user/data",
        "/tmp/cache"
    ],
)

场景 3:只读模式(安全审查)

options = IFlowOptions(
    file_access=True,
    file_allowed_dirs=["/home/user/codebase"],
    file_read_only=True,  # 禁止写入
)

async with IFlowClient(options) as client:
    await client.send_message("分析这个项目的代码结构")
    # AI 只能读取,无法修改文件

场景 4:自定义工作目录

import os

project_dir = "/home/user/my_project"

options = IFlowOptions(
    cwd=project_dir,  # iFlow 的工作目录
    file_access=True,
    file_allowed_dirs=[project_dir],  # ⚠️ 必须包含 cwd
)

⚠️重要提示:如果cwd与当前 Python 工作目录不同,必须在file_allowed_dirs中明确包含cwd,否则会导致权限错误。

完整示例

作者:iFlow CLI
链接:https://zhuanlan.zhihu.com/p/1999494127029598127
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

import asyncio
from pathlib import Path
from iflow_sdk import IFlowClient, IFlowOptions, ApprovalMode, AssistantMessage, TaskFinishMessage


async def main():
    # 1. 准备工作目录
    workspace = Path.cwd() / "workspace"
    workspace.mkdir(exist_ok=True)
    
    # 2. 配置文件系统访问
    options = IFlowOptions(
        # 必需配置
        file_access=True,
        file_allowed_dirs=[str(workspace)],
        
        # 可选配置
        file_read_only=False,
        file_max_size=5 * 1024 * 1024,  # 5MB
        cwd=str(workspace),
        
        # 其他配置
        approval_mode=ApprovalMode.YOLO,  # 自动执行工具
    )
    
    # 3. 创建客户端并使用
    async with IFlowClient(options) as client:
        # 发送文件操作请求
        await client.send_message(
            f"在 {workspace} 目录下创建一个 hello.py 文件,"
            "内容为一个简单的 Hello World 程序"
        )
        
        # 接收响应
        async for message in client.receive_messages():
            if isinstance(message, AssistantMessage):
                print(message.chunk.text, end="", flush=True)
            elif isinstance(message, TaskFinishMessage):
                print(f"\n完成: {message.stop_reason}")
                break
        
        # 验证文件
        hello_file = workspace / "hello.py"
        if hello_file.exists():
            print(f"\n✓ 文件已创建: {hello_file}")
            print(f"内容:\n{hello_file.read_text()}")


if __name__ == "__main__":
    asyncio.run(main())

安全最佳实践

🙆推荐做法

1、最小权限原则
# 只授权必需的目录 file_allowed_dirs=["/specific/project/dir"]
2、使用绝对路径
from pathlib import Path file_allowed_dirs=[str(Path("/path/to/dir").resolve())]
3、生产环境使用只读模式
file_read_only=True # 审查或分析时
4、设置合理的文件大小限制
file_max_size=1 * 1024 * 1024 # 1MB,避免大文件

🙅避免做法

1、不要授权根目录或系统目录
# ❌ 危险! file_allowed_dirs=["/", "/etc", "/usr"]

2、不要忽略 cwd 和 file_allowed_dirs 的一致性

# ❌ 错误配置 options = IFlowOptions(     cwd="/project/a",     file_allowed_dirs=["/project/b"]  # cwd 不在允许列表中 )

3、不要在未启用 file_access 时期望文件操作

# ❌ 不会生效 options = IFlowOptions(     file_access=False,  # 未启用     file_allowed_dirs=["/some/dir"] )

错误处理

常见错误

1. PermissionError: Access denied

原因:尝试访问不在 file_allowed_dirs 中的文件

解决:

options = IFlowOptions(
    file_access=True,
    file_max_size=50 * 1024 * 1024  # 增加到 50MB
)

2. ValueError: File too large

原因:文件超过 file_max_size 限制

解决:

options = IFlowOptions(
    file_access=True,
    file_max_size=50 * 1024 * 1024  # 增加到 50MB
)

3. PermissionError: File system is in read-only mode

原因:在只读模式下尝试写入

解决:

options = IFlowOptions(
    file_access=True,
    file_read_only=False  # 允许写入
)

配置检查清单

在使用文件系统功能前,请确认:

  • file_access=True 已设置
  • file_allowed_dirs 包含所有需要访问的目录
  • 如果设置了 cwd,确保它在 file_allowed_dirs 中
  • file_max_size 足够大以处理目标文件
  • 根据需求设置 file_read_only 模式
  • 使用绝对路径而非相对路径

欢迎在使用iFlow CLI python sdk 前查询本文档,如有问题欢迎在iFlow 讨论区留言~

点击直达👉心流AI交流社区

相关推荐

知识管理实践:带领 AI 一起进入心流状态

知识管理实践:带领 AI 一起进入心流状态这两年,对话类 AI 工具层出不穷,几乎成了模型厂商的试金石。还在“心流 1.0”的问答研究时期,我就有一个比较笨拙的习惯:每次开启新任务前,要找到类似任务对应的历史记录继续对话,期望能省去重述语境的时间,快速获取到这次任务的答案。不过用不了多久,它的记忆就开始混乱,内容质量也会大不如前。这是上下文规则决定的。在不断堆叠的对话里,LLM 难免产生误解——没有特意强调的关键点被裁剪,无关紧要的细节却被牢记,然后在偏离本意的路上越跑越远。

iFlow_AI的博客 225

双榜认证,iFlow-Researcher 登顶 DeepResearch-Bench-II,拒绝“幻觉式科普”

大模型回答一个问题很容易,但完成一项很难。过去两年,Chatbot 类产品完成了“对话可用性”的验证:写摘要、改文案、做翻译都已成熟。但一旦进入这类场景,短板就会暴露出来:输入混乱:用户请求模糊、源信息格式杂乱;证据分散:单一信源站不住脚,需要多方举证;链条过长:任何一个环节出错就会污染全局;产出严格:最终产物对结构、引用和格式的规范性要求极高生成结果可能读起来通顺,却经不起细究——引用对不上、逻辑接不上、数据与结论无关联。这不是模型不够聪明,而是“单轮对话”这个范式本身无法承载复杂研究。

iFlow_AI的博客 471

构建自动化专属Paper库:用 Happy-Notes + iFlow-search-skill 搭建阅读写作流水线

Happy-Notes 负责知识管理,iFlow-Fearch-Skill 负责信息获取,两者的组合足以覆盖学术研究中最耗时的文献处理环节,替你完成检索、下载、索引和综述,把时间留给真正重要的思考。心流·搜索 API(iFlow-Search-Skill)

iFlow_AI的博客 435

iFlow CLI 停止维护公告:落幕亦是序章

iFlow_AI的博客 2246

将iFlow CLI装进u盘,即插即用

本项目旨在创建一个基于 USB 存储设备的 iFlow CLI 便携运行环境。通过将 Node.js 运行时和 iFlow 依赖包完全封装在 U 盘中,实现“即插即用”。参考上文大佬的开发思路,开发一个Mac版随身iFlow CLI,无需在电脑上安装任何环境,且不污染主机的系统环境。

iFlow_AI的博客 1334

【开发必看】让 AI 写出生产级代码:阿里妈妈效果广告引擎AI Coding实践

随着大模型技术的迅猛发展,AI Coding 已成为提升研发效率的关键手段。然而,在大型、复杂的生产系统中,直接使用通用 AI 编程模型往往陷入 "能用但不好用,可用但不可信" 的困境:通用 AI 编程模型在单点、明确的任务(如函数补全、单元测试生成、简单逻辑实现)上表现尚可,但在复杂系统的开发中难以胜任目前主流实践仍停留在 "vibe coding" 阶段——开发者凭直觉编写提示词,再通过人工整合与验证结果,效率与可靠性均受限。

iFlow_AI的博客 402

iFlow CLI实战:通过hooks增加提醒(Mac版)

作者:@JAX。

iFlow_AI的博客 568

使用iFlow CLI通过hook添加任务完成通知(定制你的个性化通知) Windows版

之前看过大佬分享的添加hook发送通知的教程,奈何要么是Mac环境的,要么执行sh脚本在我这里一直无法执行触发,今天试了下,通过第三方的BurnToastNotification,执行python脚本的方式可以触发了,定制一个属于你的iflow弹出通知。好处是安装简单,一行命令即可安装成功定制化强,可以定制你的通知的标题,内容,属性文字,图标,声音,甚至是添加延迟提醒等交互操作。

iFlow_AI的博客 870

使用iFlow CLI自建 Command/ollama 调用云端模型和本地模型

作者:@Enfj小太阳。

iFlow_AI的博客 1001

使用iFlow CLI创建自定义Command:网页文章下载与翻译工具

通过iFlow CLI,我们成功实现了一个功能完整的网页文章下载和翻译工具。低代码开发:通过自然语言即可创建实用工具AI集成:充分利用平台内置AI能力扩展性:Command机制支持功能持续迭代实用性:解决了实际工作中的痛点问题这个工具不仅提高了个人工作效率,也为类似需求提供了可复制的解决方案。随着iFlow平台的不断发展,相信会有更多创新的应用场景涌现。欢迎大家一同交流,探索AGI。pandoc。

iFlow_AI的博客 1705

大模型最难的AI Infra,用Vibe Coding搞定

本文是 ROCK & ROLL 团队使用 iFlow CLI 在开源框架实践中的探索成果,后续相关功能将持续迭代并陆续发布。ROCK & ROLL 由阿里巴巴未来生活实验室与智能引擎团队联合打造,致力于开拓强化学习(RL)的未来,探索面向未来的创新生活方式。ROLL 是灵活高效的 Agentic RL 训练框架,支持从十亿到千亿参数大模型的优化训练;ROCK 是易用、可扩展的沙箱环境管理器,可在分钟级拉起海量环境。

iFlow_AI的博客 270

iFlow-ROME模型正式发布上线iFlow CLI

此外,考虑到数据本身的特性和一些极端案例,IPA在序列回退的基础上又提出了并行初始化(Parallelized Initialization)方法,使模型可以同时从参考轨迹的多个初始化点开始重采样,并且引入了对参考交互块的模仿学习,大大加速了训练的效率。类似GSPO在序列级别的重要性采样计算方式,在每个交互块内部计算所有token上的训练分布的概率和采样分布的概率的比值,用这些概率比值的几何平均值来衡量交互块级别的采样概率差异,这样可以减弱异常token的影响并避免极端比值的出现。

iFlow_AI的博客 778

iFlow CLI + ACK MCP Server:让 ACK 容器运维进入对话时代

作者:薇溪。

iFlow_AI的博客 1253

让 iFlow CLI 替你干体力活

使用任何 AI 工具都不能百分百无条件信任,实际上 AI Coding 产生的代码不是资产,而是负债,必须在提交代码之前认真审核 AI 的所有改动,所有改动最后的负责人都是使用工具的人。在项目中创建一个 .iflow 的文件夹,并创建 settings 配置,使用如下的配置,这样子就会从 iflow 的默认文件名改成跟 Claude code 一致的文件名。,可以生成一个文档,用于介绍整个项目的技术栈和业务,后续 AI 会将其作为上下文的一部分,以此减少没有对齐编程规范、业务理解不到位的问题。

iFlow_AI的博客 1750

iFlow CLI 0.4 来袭!全新 UI,更加智能,更加安全的 VibeCoding 体验(结尾有彩蛋)

心流团队在探索AGI的路上会继续走下去,如果你也对我们的产品有兴趣,或者在产品使用上遇到任何问题,欢迎加入微信讨论群,与我们一起探索AGI 定义未来~iFlow CLI官网iFlow CLI 开发者论坛别再观望,立即安装,让 iFlow CLI 成为你最靠谱的代码合伙人~t=P9T8t=P9T8iFlow CLI官网http://​ https://cli.iflow.cn ​iFlow CLI 开发者论坛https://vibex.iflow.cn。

iFlow_AI的博客 2089

知识驱动开发:用iFlow工作流构建本地知识库

接触AI编程工具以来,一直思考怎样用知识库解决AI工具不了解业务的问题。传统的RAG知识库只有关键词匹配和被动文档检索功能。而在实际的编程场景中,需要知识库具备深度语义理解与场景感知能力,为开发者提供更精准、高效且可验证的信息服务。与传统RAG知识库的差别可以用“智能大脑”与“数字图书馆”来类比:前者能主动联想、理解语境并推理,后者仅能被动存储与机械检索。这就是最近大火的Agentic RAG。在对 AI Coding 工具进行一定的调研后,我尝试用。

iFlow_AI的博客 1655

一个案例教会小白轻松上手iFlow CLI

在每一步实现后,请告诉我具体如何测试(例如:打开哪个文件 / 运行哪个命令 / 按哪些键来操作),等我说“测试通过”后再进入下一步。如果你对我的需求(尤其是三种食物的具体数值设计、毒物惩罚方式、蛇颜色选择界面样式)有不清楚的地方,请先提出问题,再继续给代码。如果你只告诉cli说我想做一个这样的游戏,那它就会按照自己的想法去做,做出来的产品容易出bug,并且各项细节也都难以做好。场景:假如我想做一个贪吃蛇的游戏,我该如何去对cli发号施令,让它很好地理解我的意思呢?

iFlow_AI的博客 1297

iFlow-CLI独家实测 开源模型中最会写代码的 MiMo-V2-Flash效果如何?

小米今日发布了开源基座大模型 MiMo-V2-Flash。这款模型采用了Mixture-of-Experts (MoE) 架构,总参数规模达到 3090 亿,激活参数 150 亿,通过混合注意力机制的创新设计,在保持高性能的同时实现了推理效率的极致优化。在代码能力方面,MiMo-V2-Flash 已经达到了标杆级闭源模型 Claude Sonnet 4.5 的水平,但推理成本仅为其 2.5%,生成速度更是提升了 2 倍。

iFlow_AI的博客 1077

小米 MiMo-V2-Flash 快速接入 iFlow-CLI 保姆级教程

3、启动iFlow-CLI,输入指令/auth,选择第三种登录方式:“OpenAI 兼容 API”7、完成上述步骤后,即可切换为小米 MiMo-V2-Flash 模型,快开始体验吧~2、点击左侧“API-Keys”栏,再创建API-Key。6、在模型名称中输入:mimo-v2-flash。

iFlow_AI的博客 2737

用iFlow CLI写了一个简单的内容创作平台 ——OpenAIGC-App rocket (集图像、音频、视频、文本创作于一体的智能化创作工具 )

作者:@OdysseyWarsaw话不多说,先上成品——一个- 集图像、音频、视频、文本创作于一体的智能化创作工具。

iFlow_AI的博客 1273

初学者使用iFlow CLI实践

作者:@Enfj小太阳。

iFlow_AI的博客 1051

iFlow CLI 实战案例|生产级 Agent 聊天应用——Chatbot

作者:@iFlow Chatbot项目实践案例。

iFlow_AI的博客 1182

IFLOW Skills 解锁技能应用新玩法

核心:将重复性工作流程打包成可复用的指令,让iFlow能自动、可靠地完成任务,无需每次都重复提醒。就像是给 iFlow 安装的 “专家记忆包”,能将它从一个通用 AI 变为精准执行特定任务的专家。我们通过工作流管理系统,整合agents、commands、IFLOW.md和MCP工具,创建完整的自动化工作流程。

iFlow_AI的博客 2130

iFlow CLI:强大的终端AI助手,开启智能编程新时代

iFlow CLI是一款在终端中运行的智能体式命令行工具,旨在把自然语言交互和多模态能力带入开发者日常工作流。自然语言交互:支持用自然语言下达指令,无需记忆复杂命令本地仓库分析与上下文理解:通过/init命令扫描并理解本地代码仓库多模型支持:支持多种主流国产大模型,如Qwen3 Coder、Kimi K2、DeepSeek V3.2等永久免费:面向个人用户永久免费,不限流量扩展性强:支持通过安装子代理(SubAgents)和MCP工具来扩展功能Yolo模式:模型拥有最高权限,执行操作零限制。

iFlow_AI的博客 2229

AI 驱动的代码审查与测试用例生成:iFlow CLI在提测阶段的应用实践

提效结果。

iFlow_AI的博客 1707

iFlow CLI快速搭建Flutter应用记录

最终成功运行chome浏览器运行截图(执行命令:图片加载失败可能和我电脑的防火墙有关,后续有时间再换个图片API应该能解决。总结经过这一次Flutter环境的安装的体验,感慨iFlow CLI真的很适合开发环境的搭建。因为开发环境的搭建遇到的问题相对固定,流程也比较套路化,AI工具在效率方面的优势体现的可谓是淋漓尽致。

iFlow_AI的博客 1047

iFlow Chatbot 基于 Next.js 15 和 iFlow CLI SDK 构建的全功能 Agent 聊天机器人,提供类似 Web端 iflow 的交互体验

iFlow Chatbot 是一个生产级 Agent 聊天应用,集成了多模型 AI 支持 (MiniMax-M2Qwen3DeepSeek, GLM,Kimi智能对话与上下文记忆工具调用可视化和任务规划响应式设计 (桌面 + 移动端)深色模式与系统主题检测出错啦!深色模式与系统主题检测安全的用户认证系统持久化聊天记录和工作区管理高性能 React 渲染优化。

iFlow_AI的博客 1125

iFlow CLI使用技巧 - 自定义 Skill 转换为 Workflow 教程

接下来在agents下创建一个pptx的文件夹,这个文件夹的名字取决于你想实现的skill的名字,例如在当前的示例中我们想创建一个名为pptx的生成ppt工作流,就把这个文件夹取名pptx。剩下的SKILL.md文件首先改名为我们调用工作流的指令,比如我们想用/pptx调用该工作流,就改名为pptx.md,然后将这个md文件移动到.iflow的commands文件夹下。把pptx skill下除了SKILL.md的内容都移动到agents的pptx文件夹下。点击安装,按照里面的指令安装到目录中。

iFlow_AI的博客 1864

iFlow Skills:设计类Workflow使用分享

iFlow CLI官网的工作流中,新增了几个和Claude Code Agent Skills的同款的设计类功能,这里简单体验了一下,提供一些案例给大家分享。简述:Algorithmic-Art 工作流是一个创建算法艺术的两步流程第一步:创建算法哲学 (.md文件)1. 基于用户输入创建一个算法哲学/生成美学运动2. 强调算法表达、涌现行为和计算美学3. 指导后续的代码实现方向第二步:代码实现 (.html + .js文件)1. 基于创建的算法哲学,使用p5.js实现生成艺术。

iFlow_AI的博客 2036

分享个人在用的IFLOW 编程全局提示词

可以将该任务委托给对应的 agent,由其独立执行并返回结果。每个 subagent 在其独立的上下文中运行,在主会话中输入需求,会将任务传递给对应的Agent,Agent完成指定任务后将结果返回到主会话中向用户汇报情况。Agent根据主会话给出的任务调用所需工具协助完成任务。最后给出下一步计划和当前任务结果。中填入下面的提示词,保存后退出。

iFlow_AI的博客 667
上一篇: 【开发必看】让 AI 写出生产级代码:阿里妈妈效果广告引擎AI Coding实践
下一篇: 将iFlow CLI装进u盘,即插即用
iFlow_AI
iFlow_AI 心流AI官方账号 心流AI官方账号
博客等级 码龄1年 406粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值