Openpisci
AI Agent like OpenClaw but works on windows desktop
Install / Use
/learn @njbinbin-pisci/OpenpisciREADME
🐟 OpenPisci
开源 Windows AI Agent 桌面应用
OpenPisci 是一款运行在 Windows 桌面的本地优先 AI Agent,基于 Tauri 2 + Rust + React 构建。大鱼(Pisci)是主 Agent,锦鲤(Koi)是持久化协作 Agent,小鱼(Fish)是无状态临时子 Agent。
English | 中文

✨ 核心特性
🤖 强大的 Agent 能力
- 多 LLM 支持:Claude(Anthropic)、GPT(OpenAI)、DeepSeek、通义千问(Qwen)、智谱、Kimi、MiniMax,以及任意 OpenAI 兼容接口
- 自动记忆:对话结束后自动调用 LLM 提取关键信息存入长期记忆,下次对话自动注入相关上下文
- 主动记忆:Agent 在对话中可主动调用
memory_store工具保存重要信息 - 任务分解:复杂任务自动分解为子任务并依次执行(HostAgent)
- 崩溃恢复:每次迭代写入 checkpoint,程序崩溃后可从断点恢复
- 心跳机制:可配置定时心跳,Agent 自主检查待处理任务
- 循环检测:四种检测器(GenericRepeat / KnownPollNoProgress / PingPong / GlobalCircuitBreaker)防止 Agent 陷入死循环
🐟 Pisci / Koi / Fish:三层 Agent 架构
| 角色 | 定位 | 生命周期 | 典型职责 | 与其他角色的关系 |
|------|------|----------|----------|------------------|
| Pisci | 主 Agent / 项目经理 / 用户入口 | 常驻 | 与用户对话、调用工具、创建鱼池、协调多 Agent、判断项目是否可收尾 | 负责组织 Koi,也可调用 Fish 处理临时子任务 |
| Koi | 持久化协作 Agent | 持久化存在,可多项目复用 | 在鱼池中承担角色分工,如架构、编码、测试、审查、研究 | 通过 pool_chat 在鱼池中协作,必要时 @mention 彼此或 @pisci |
| Fish | 无状态临时子 Agent | 一次性 / 按需创建 | 处理批量扫描、资料整理、单次分析、上下文隔离的多步骤工作 | 由 Pisci 或 Koi 通过 call_fish 委派,不直接参与鱼池协作 |
理解方式:
Pisci是总控入口,负责对用户负责。Koi是长期团队成员,适合持续项目协作。Fish是临时工,适合“做完即走”的子任务。
关键区别:
Pisci决定是否建池、如何分工、何时继续推进、何时请求用户确认收尾。Koi有独立身份、独立记忆归属、独立待办,能在多个项目中被反复唤醒。Fish不维护长期项目状态,不占用主会话上下文,只返回最终结果。
🏞️ 鱼池(Pond)里有什么

鱼池不是一个单独 Agent,而是一套围绕项目协作构建的可视化工作区:
- 项目池(Pool Session):一个项目对应一个池,包含项目名、状态、组织规范(
org_spec)和可选project_dir - Pool Chat:Pisci、Koi 在这里自然对话、交接、提问、@mention 协作
- 看板(Board / Kanban):展示 Koi todo 的
todo / in_progress / blocked / done / cancelled - Koi 面板:展示每个 Koi 的身份、角色、在线状态、当前工作负载
- Pisci Inbox / Heartbeat:Pisci 的项目级收件箱,用于接收
@pisci、状态信号、心跳巡检结果 - 知识库(
kb/):项目共享知识区,用于沉淀架构、API、缺陷、决策等文档 - 项目目录 / Git worktree:若设置
project_dir,每个 Koi 可在自己的分支和 worktree 中工作,减少文件冲突
🤝 鱼池如何协同

一个标准的鱼池项目通常按下面的机制运行:
-
用户发起项目
- 用户可以在应用内聊天,也可以通过飞书等 IM 直接告诉 Pisci“创建一个鱼池项目”
- Pisci 通过
pool_org(action="create")创建项目池,并写入org_spec
-
Pisci 组织团队
- Pisci 根据项目目标选择合适的 Koi 角色
- Pisci 优先通过
pool_chat发送带@KoiName的消息来发起工作,而不是死板串行分配
-
Koi 自主协作
- Koi 在
pool_chat中汇报进展、交接工作、提出问题、请求复审 @mention是消息,不是硬命令:被提及的 Koi 会自主判断是立即响应、继续当前工作,还是请求 Pisci 协调@all可向整个项目团队广播
- Koi 在
-
待办与状态同步
- 任务通过
koi_todos追踪,状态流转为todo -> in_progress -> done / blocked / cancelled - Pisci 和任务所有者可以更新任务状态;其他 Koi 需要通过
@pisci请求变更 pool_chat中的[ProjectStatus] follow_up_needed / waiting / ready_for_pisci_review信号会辅助 Pisci判断项目是否继续推进
- 任务通过
-
Pisci 心跳与继续推进
- 心跳会扫描池内新消息、待办和状态信号
- 只要仍有 active todo,或有人发出
follow_up_needed / waiting,Pisci 就应继续协调,而不是把项目误判为结束 - 只有当工作真正收敛,并且有人明确用
ready_for_pisci_review @pisci把判断权交回时,Pisci 才进入收尾审查
-
项目收尾
- Koi 只能建议“可由 Pisci 审查是否结束”,不能单方面宣布项目结束
- 最终是否归档,由 Pisci 汇总后向用户确认,再执行
pool_org(action="archive")
🛠️ 丰富的 Windows 工具集
| 工具 | 说明 |
|------|------|
| file_read / file_write | 文件读写(支持分块读取大文件) |
| file_edit | 精确字符串替换,支持 edits 数组批量原子修改 |
| file_diff | 修改前预览 unified diff,或对比两个文件 |
| file_list | 结构化目录列表(JSON,含大小/修改时间) |
| file_search | 按名称 glob 搜索或按内容 grep 搜索(支持 file_extensions 过滤) |
| code_run | 专为编程场景设计的命令执行工具,返回结构化输出并自动诊断常见错误 |
| shell / powershell_query | PowerShell 命令执行 / 结构化系统查询 |
| wmi | WMI/WQL 查询硬件和系统信息 |
| web_search | 多引擎并行搜索(DuckDuckGo、Bing、百度、360),结果合并去重 |
| browser | Chrome 浏览器自动化(CDP 协议) |
| uia | Windows UI Automation — 控制任意桌面应用 |
| screen_capture | 截图(全屏/窗口/区域),支持 Vision AI 分析 |
| com / com_invoke | COM/ActiveX 对象调用(支持 32/64 位) |
| office | 通过 COM 自动化 Word、Excel、PowerPoint、Outlook |
| email | 发送/接收邮件(SMTP/IMAP) |
| ssh | SSH 远程连接与命令执行 |
| pdf | PDF 读写、页面渲染为图像(render_page_image / render_region_image) |
| vision_context | 视觉上下文管理:跨轮次保存/选择图像,供 Agent 主动决策下一步看什么 |
| memory_store | 向长期记忆写入信息 |
| plan_todo | 为复杂任务维护可视化执行计划与待办状态 |
| 用户自定义工具 | TypeScript 插件,支持自定义配置接口 |
| MCP 工具 | 通过 MCP 协议接入外部工具服务器 |
🐠 小鱼(Fish)子 Agent 系统
- 通过
FISH.toml定义专属子 Agent,拥有独立人设、工具权限和配置 - 小鱼是无状态临时工作者:主 Agent 或 Koi 通过
call_fish工具委派子任务,小鱼执行完毕后仅返回最终结果 - 核心价值:小鱼的中间推理和工具调用不会污染主 Agent / Koi 的上下文,有效节省上下文窗口
- 用户可在
%APPDATA%\com.pisci.desktop\fish\目录放置自定义小鱼 - 适用于批量文件处理、数据收集、代码扫描等多步骤任务,而不是长期项目协作
⚡ 技能系统(Skills)
- 使用
SKILL.md格式定义技能:YAML frontmatter(名称、描述、工具列表等)+ Markdown 正文(使用说明) - 技能内容在每次 Agent 调用时自动注入系统提示词,引导 Agent 使用特定工具和流程
- 自动触发:Agent 每次收到任务时优先调用
skill_search查找匹配技能,找到则按技能指令执行 - zip 包安装:支持将
SKILL.md+reference.md+examples.md等打包为.zip一键安装 - 支持从 URL 或本地路径安装技能(单文件或 zip 包)
- 技能持久化:安装的技能写入磁盘并同步到数据库,重启后自动恢复
- 内置技能:Office 自动化、文件管理、Web 自动化、系统管理、桌面控制
注意:SKILL.md 是 OpenPisci 自定义的技能格式,与 Anthropic MCP(Model Context Protocol)是两套不同的规范。
💻 编程能力(v0.3.0 新增)
code_run工具:专为编程任务设计,返回结构化exit_code/stdout/stderr/duration_ms,并对 Rust/Python/Node 常见错误自动诊断file_edit批量替换:edits数组一次调用原子修改多处,先全量验证再统一写入file_diff工具:修改前预览 unified diff,或对比两个文件,帮助 Agent 自我校验file_search增强:结果上限提升至 500,新增file_extensions精确过滤,单文件 grep 上限提升至 200KB- 编程工作流指导:系统提示词内置完整的"理解→修改→验证→调试"闭环指导
🔍 上下文预览(v0.3.0 新增)
- 点击聊天界面的 🔍 按钮,查看下一轮将要发给 LLM 的完整消息序列
- 结构化展示每条消息的 role、blocks(文本/工具调用/工具结果),工具调用和结果可折叠展开
- 显示 token 使用量与上下文预算进度条,帮助了解上下文压缩效果
🔗 文件链接(v0.3.0 新增)
- LLM 输出中的本地路径(如
C:\Users\...\file.md)自动转为可点击链接 - 点击后用系统默认程序打开对应文件或目录
- 支持 Windows 路径、UNC 路径、Unix 路径,以及
file://URI
📱 多平台 IM 网关

| 平台 | 模式 | |------|------| | 微信(WeChat) | 扫码绑定,双向收发(iLink Bot API,无需 CLI) | | 飞书(Feishu/Lark) | WebSocket 长连接收件 + 出站回复 | | 企业微信(WeCom) | 本地中继收件 + 出站回复 | | 钉钉(DingTalk) | Stream 模式 WebSocket 收件 + 出站回复 | | Telegram | 长轮询收件 + 出站回复 | | Slack | 出站 Webhook | | Discord | 出站 Webhook | | Microsoft Teams | 出站 Webhook | | Matrix | 出站发送 | | 通用 Webhook | 出站 Webhook |
IM 消息与 Agent 双向通信:每个 IM 频道/用户拥有独立的持久会话,消息历史完整保留。
⏰ 定时任务
- Cron 表达式调度
- 任务历史记录(运行次数、最后执行时间、状态)
- 支持立即触发
🔒 安全机制
- API 密钥 ChaCha20Poly1305 加密存储
- 三种策略模式:Strict(严格)/ Balanced(均衡)/ Dev(开发)
- 提示注入检测(v2)
- 工具调用频率限制
- 危险操作二次确认
🎨 界面特性
- 极简模式:悬浮 HUD 面板,工具调用以 Toast 气泡展示
- 双主题:紫罗兰 / 黑金
- 窗口边框颜色随主题动态变化(Windows 11+)
- 中英文国际化
🚀 快速开始
系统要求
- Windows 10 / 11(64-bit)
- WebView2 Runtime(Windows 11 已预装;Windows 10 可从 Microsoft 官网 下载)
下载安装
前往 Releases 下载最新安装包(.exe)。
⚠️ 安全警告:OpenPisci 是一款具备文件读写、命令执行、UI 自动化等高权限操作能力的 AI Agent。建议在虚拟机(如 VMware、VirtualBox、Hyper-V)中运行,以防止 AI 误操作导致宿主机数据损失。开发者不对因直接在宿主机运行而造成的任何数据丢失或系统损坏承担责任。
首次配置
- 启动后进入引导向导
- 选择 LLM 提供商并填入 API Key
- 设置工作区目录(Agent 文件操作的默认根目录)
- 开始使用
🔧 开发环境搭建
依赖
- Rust stable(≥ 1.77.2)
- Node.js 20 LTS
- Visual Studio 2022 Build Tools(Desktop C++ 工作负载)
克隆与运行
git clone https://github.com/njbinbin-pisci/openpisci.git
cd openpisci
# 安装前端依赖
npm install
# 开发模式(热重载)
npm run tauri dev
# 构建发行版
npm run tauri build
重新生成图标
npm run icon:emoji
🐠 自定义小鱼(Fish)
在 %APPDATA%\com.pisci.desktop\fish\my-fish\FISH.toml 创建文件:
id = "my-fish"
name = "我的小鱼"
description = "专注于某类任务的助手"
icon = "🐡"
tools = ["file_read", "shell", "memory_store"]
[agent]
system_prompt = "你是一条专注于..."
max_iterations = 20
model = "default"
[[settings]]
key = "workspace"
label = "工作目录"
setting_type = "text"
default = ""
placeholder = "例如:C:\\Users\\你的用户名\\Documents"
重启应用后在"小鱼"页面即可看到新小鱼。主 Agent 会通过 call_fish 工具自动委派匹配的任务给小鱼。
⚡ 自定义技能(Skills)
在 %APPDATA%\com.pisci.desktop\skills\my-skill\SKILL.md 创建文件:
---
name: My Skill
description: 描述这个技能的用途
version: "1.0"
tools:
- file_read
- shell
---
# My Skill
## 使用说明
当用户需要...时,按照以下步骤操作:
1. 首先...
2. 然后...
🔧 自定义工具(User Tools)
在"工具"页面安装 TypeScript 插件,支持自定义配置接口(如 SMTP 账号、API Key 等)。
用户工具存放路径:%APPDATA%\com.pisci.desktop\user-tools\
📁 数据目录
| 路径 | 内容 |
|------|------|
| %APPDATA%\com.pisci.desktop\ | 配置文件、数据库 |
| %APPDATA%\com.pisci.desktop\skills\ | 技能目录 |
| %APPDATA%\com.pisci.desktop\fish\ | 用户自定义小鱼 |
| %APPDATA%\com.pisci.desktop\user-tools\ | 用户自定义工具 |
| %LOCALAPPDATA%\pisci\logs\ | 日志文件、崩溃报告 |
🏗️ 技术架构
OpenPisci
├── src-tauri/ # Rust 后端
│ ├── src/
│ │ ├── agent/ # Agent Loop、HostAgent、消息管理
│ │ ├── commands/ # Tauri IPC 命令层
│ │ ├── fish/ # Fish 子 Agent 系统
│ │ ├── gateway/ # IM 网关(飞书、钉钉、Telegram 等)
│ │ ├── llm/ # LLM 客户端(Claude、OpenAI、DeepSeek、Qwen 等)
│ │ ├── memory/ # 记忆系统(向量搜索、FTS)
│ │ ├── policy/ # 策略门控、注入检测
│ │ ├── scheduler/ # Cron 调度器
│ │ ├── security/ # 加密、密钥管理
│ │ ├── skills/ # 技能加载器(SKILL.md 格式)
│ │ ├── store/ # SQLite 数据库、设置持久化
│ │ └── tools/ # 工具实现(含 code_run、file_diff 等)
│ └── Cargo.toml
└── src/ # React 前端
├── components/ # 页面组件
├── i18n/ # 中英文翻译
├── services/ # Tauri IPC 服务层
└── store/ # Redux 状态管理
📋 更新日志
v0.5.19
- Excel 图表修复:修复 sheet_check 逻辑错误导致指定工作表时条件判断反转的 bug;dd_chart 在 SetSourceData 之后再次强制设置图表类型,防止 Excel 自动重置为默认类型;强化工具描述,要求 AI 必须显式传 chart_type(折线图=line,柱状图=column,饼图=pie 等),避免误生成饼图
v0.5.18
- Koi 超时修复:Koi 超时后自动将其 in_progress 任务改为 blocked 状态,并向鱼池发送 @pisci 通知;心跳扫描新增对 blocked todo 的持久唤醒逻辑,确保项目不会因 Koi 超时而永久卡死
- 文件编码增强:ile_read 自动识别并透明处理 UTF-8 BOM、UTF-16 LE/BE、GBK/GB18030;ile_write/ile_edit 写回时自动保留原文件 BOM;工具描述和系统提示词新增文件编码操作指南
v0.5.17
- 微信接入:直接对接腾讯 iLink Bot HTTP API,无需安装 Node.
