Skip to content

Repository files navigation

NineClaw

一个基于 Tauri 2.0 + React + TypeScript 的桌面测试项目,已接入 pi,前端采用 Codex 风格布局(侧边栏 + 聊天区 + 底部输入区)。

功能

  • 前端输入 prompt
  • 通过 Tauri invoke 调用 Rust command:stream_pi_prompt
  • Rust 以 RPC 模式启动 pi
    • pi --mode rpc --session <temp-session-file>
  • 前端通过 Tauri 事件 pi://stream 实时接收 text_delta
  • 支持“停止生成”(优先发送 RPC abort 指令)
  • 支持会话保持(多轮对话上下文)
  • 支持区分“用户手动中止”和“模型中断”
  • 支持“重试上一条”
  • 支持本地历史面板(可点选重放,数据保存在 localStorage)
  • 支持“清空会话”按钮
  • 支持自定义智能体管理
  • 支持为每个智能体生成独立的 markdown 工作区与记忆骨架

前置要求

  1. 安装 Rust 与 Tauri 依赖环境
  2. 安装 Node.js 与 npm
  3. 安装项目依赖(现在默认把 pi-mono 核心包作为项目级 devDependencies 管理)
  4. 准备 pi 运行时资源:
npm install
npm run prepare:pi-runtime

prepare:pi-runtime 会优先从当前项目 node_modules 里取 @mariozechner/pi-coding-agent 及其相关 pi-mono 核心包,并把它们一起打进 src-tauri/resources/pi-runtime/。 如果还想把本地 pi-mono 仓库快照一并打进去,可额外设置:

PI_MONO_REPO_DIR=/path/to/pi-mono npm run prepare:pi-runtime -- macos

开发环境下仍然允许回退到系统 pi,但正式打包不再依赖全局安装。

另外需要你本地可用的模型认证(任选其一):

  • 设置 API Key 环境变量(如 ANTHROPIC_API_KEY / OPENAI_API_KEY
  • 或先在终端执行 pi 并完成 /login

启动

npm install
npm run tauri dev

关键文件

  • src/App.tsx:UI + 监听 pi://stream + 调用 invoke
  • src-tauri/src/lib.rs
    • stream_pi_prompt(解析 RPC JSON 事件)
    • abort_pi_stream(中止当前生成)
    • clear_pi_session(清理会话文件)
  • src-tauri/tauri.conf.json:Tauri 2.0 配置
  • src-tauri/src/pi_runtime.rs:统一的 pi 运行时解析与打包入口
  • src-tauri/src/scheduler/:定时任务 materialization、调度循环、运行记录与 service 安装逻辑

Scheduler

NineClaw 现在包含一套新的 scheduler core:

  • scheduled_jobs / scheduled_job_runs / scheduler_leases 三张表
  • 应用内嵌 scheduler 线程作为 fallback
  • 同一二进制支持后台 daemon 模式:
cargo run --manifest-path src-tauri/Cargo.toml -- --scheduler-daemon

如只想跑一轮扫描用于验证:

NINECLAW_SCHEDULER_RUN_ONCE=1 cargo run --manifest-path src-tauri/Cargo.toml -- --scheduler-daemon

架构说明见:

  • docs/SCHEDULER_ARCHITECTURE.md

Agent Workspace

NineClaw 现在把智能体拆成两层:

  • 数据库负责索引、模型、技能、执行模式
  • ~/.nineclaw/workspace/agents/<agent-id>/ 负责该智能体自己的 IDENTITY.mdROLE.mdMEMORY.mdTOOLS.mdWORKING.md 等文件

相关说明:

  • docs/AGENT_WORKSPACE_ARCHITECTURE.md
  • docs/AGENT_CREATION_FLOW.md

注意

  • 当前实现会优先使用应用包内置的 pi,找不到时再回退到系统 PATH
  • 当前方案是“每次请求启动一个 RPC 子进程”,但共享同一个 session 文件以保留上下文
  • 当前展示流式文本输出(text_delta),后续可扩展工具调用事件与更细粒度状态

更多说明见 docs/PI_RUNTIME_BUNDLING.md

About

基于pi-agent的个人通用智能体

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages