s1dashu/ousia

GitHub: s1dashu/ousia

Ousia 是一款 macOS 桌面端应用,为 Pi 和 Codex 编程 Agent 提供项目感知的图形化聊天界面,解决终端中使用编程 Agent 时上下文割裂和交互不够直观的问题。

Stars: 20 | Forks: 0

Ousia

Ousia

一款专为 Pi 和 Codex 编程 Agent 打造的极简桌面端。

GitHub Release Platform Status License Electron React Tailwind CSS

从源码运行  ·  开发

Download for macOS

## 什么是 Ousia **Ousia** 是一款专为 [Pi Coding Agent](https://github.com/earendil-works/pi) 和 OpenAI Codex 打造的极简桌面端。它 将每个 Agent 封装在简洁的 macOS 应用中,具备项目感知的会话、流式 Markdown 以及持久化的聊天记录——让你无需离开 代码库即可保持对话。 把它想象成编程 Agent 专注的 GUI 层。没有标签页,没有扩展, 没有隐藏的面板。只有你的项目和选定的 Agent,并排呈现。 ## 为什么选择 Ousia 编程 Agent 在终端中表现出色,但在编辑器、 终端和 Agent 输出之间来回切换会产生持续的摩擦感。Ousia 为 Pi 和 Codex 提供了专属的桌面界面,让对话保持在上下文中,工具 调用内联可见,并且一切设置在重启后依然持久保留。 ### 实际应用 - **项目优先的会话** — 每个聊天会话都绑定到一个项目 目录。Agent 在你的项目内读取、写入和运行工具。切换 项目时,Agent 上下文也会随之同步。 - **一切皆持久化** — 会话、侧边栏布局、窗口位置、配色 主题、字体偏好——全部在重新启动时恢复。 - **流式 Markdown** — 助手的响应通过 [Streamdown](https://streamdown.ai) 实时渲染,包括代码块、表格 和可展开的工具调用摘要。实时观看 Agent 的思考过程。 - **输入框支持附件** — 当你的模型支持多模态输入时,可以直接将文件和图像拖放到消息中 。 - **按会话选择 Agent** — 新会话可以使用 Pi 或 Codex。 provider 在创建后不可变,因此历史记录和运行时身份保持 可追溯。 - **模型灵活性** — 配置兼容 Pi 的 provider(Anthropic、 OpenAI、Gemini 等)或使用 Codex 模型目录。模型和推理 控件遵循所选会话的 provider。 - **共享 Pi 配置** — Ousia 从你的 本地 Pi agent 目录(`~/.pi/agent`)读取凭证和模型配置。在 Pi CLI 或 TUI 中设置的 provider 在 Ousia 中自动生效——反之亦然。 - **Codex 专属认证** — Codex 登录通过内置的 官方 app-server 进行。Ousia 绝不会读取或写入 Codex 凭证文件。 - **本地桌面状态** — Ousia 将其项目/会话索引和调试 日志保存在其隔离的应用数据目录和 `~/.ousia/logs/` 下。 ## 🚀 快速开始 ### 下载 (macOS) [下载最新的 `.dmg`](https://ousia-analytics.vercel.app/api/download?platform=darwin&arch=arm64&kind=manual), 打开它,将 **Ousia** 拖入 **应用程序**,然后启动。以前的版本和 发行说明仍可在 [Releases 页面](https://github.com/s1dashu/ousia/releases/latest) 查看。 ### 从源码运行 ``` # 要求:Node.js ≥ 24,npm ≥ 11 git clone https://github.com/s1dashu/ousia.git cd ousia npm install npm start ``` 首次启动时,Ousia 会要求提供一个默认的工作区文件夹(默认为 `~/Documents/Ousia`)。从 **设置** 中配置 Pi provider 或登录 Codex,为新的会话选择默认的 Agent,然后启动一个会话。 ## 🧱 架构 | 层级 | 技术栈 | | -------- | --------------------------------------------------------------------- | | Shell | Electron 42 + Electron Forge + Vite | | UI | React 19 + Tailwind CSS 4 + shadcn/ui + Framer Motion | | Markdown | Streamdown(流式 + 静态模式) | | Agent | Pi Coding Agent 和 Codex app-server,托管在 Electron 主进程中 | | 图标 | HugeIcons Core Free | | 状态 | 通过 `Electron.app.getPath('userData')` 存储本地 JSON | 渲染层通过精简的 `window.ousia` IPC 桥接与 Agent provider 通信。Electron 主进程在将 请求路由给 Pi 或 Codex 之前,会解析每个会话的规范项目,因此渲染器路径无法扩展 Agent 的工作区。 ``` ┌─────────────────────────────────────┐ │ Renderer Process │ │ ┌──────────┐ ┌──────────────────┐ │ │ │ Sidebar │ │ Chat │ │ │ │ Projects │ │ ┌────────────┐ │ │ │ │ Sessions │ │ │ Streamdown │ │ │ │ │ Settings │ │ │ Tool calls │ │ │ │ └──────────┘ │ │ Composer │ │ │ │ │ └────────────┘ │ │ │ └──────────────────┘ │ └──────────┬──────────────────────────┘ │ window.ousia (IPC) ┌──────────▼──────────────────────────┐ │ Electron Main Process │ │ ┌──────────────────────────────┐ │ │ │ Pi / Codex Agent Sessions │ │ │ │ (canonical session + │ │ │ │ project cwd routing) │ │ │ └──────────────────────────────┘ │ │ ┌──────────────────────────────┐ │ │ │ App State Store (JSON) │ │ │ └──────────────────────────────┘ │ └─────────────────────────────────────┘ ``` ## 🛠 开发 ``` npm run typecheck # Type-check all TypeScript targets npm run lint # ESLint across the project npm run check # Both of the above npm run package # Production app bundle → out/ npm run make # Local unsigned DMG (fast iteration) ``` ### 发布构建(macOS 签名 + 公证) ``` # Apple Developer 凭证 export APPLE_SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" export APPLE_ID="you@example.com" export APPLE_APP_SPECIFIC_PASSWORD="app-specific-password" export APPLE_TEAM_ID="TEAMID" npm run make:dmg:notarized # Signed DMG + notarization ``` ## 📖 文档 | 文件 | 涵盖内容 | | -------------------------------- | ------------------------------------------------------- | | `AGENTS.md` | 为本仓库贡献代码的编程 Agent 的入口点 | | `docs/product-context.md` | 范围、产品边界、术语表 | | `docs/design.md` | 设计系统、token 归属和 UI 规则 | | `docs/technical-architecture.md` | 技术栈、IPC 模型、状态 schema、日志记录 | | `docs/streamdown.md` | Markdown 渲染配置和链接处理 | | `docs/shadcn-reference.md` | 本地 shadcn/ui 参考工作流 | | `docs/development-state.md` | 当前实现状态和命令 | ## 📄 许可证 Ousia 采用 [MIT](./LICENSE) 许可证 © 2026 Ousia Desktop 贡献者。 内置的 CJK 字体遵循 [SIL OFL 1.1](./NOTICE) 许可证。

使用 Electron、React、Pi 和 Codex 构建。由 Tailwind CSS 和 shadcn/ui 提供样式。

标签:AI编程助手, Electron, React, Syscalls, Tailwind CSS, 图形用户界面, 桌面应用, 自动化攻击