Skip to content
oouxxPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

π — 终端里的 AI 编程助手

π 是一个运行在终端里的 AI 编程助手(coding agent)。它可以直接在你的项目目录里工作:读代码、改文件、跑命令,帮你完成从"解释一段代码"到"实现一个功能"的各种任务。

安装

从 GitHub Releases 自动安装(自动探测操作系统/架构):

curl -fsSL https://raw.githubusercontent.com/oouxx/pi-rs/main/install.sh | bash

或手动安装:

./install.sh install     # 安装
./install.sh update      # 更新到最新版
./install.sh uninstall   # 卸载

快速开始

# 直接问(默认交互模式)
pi-rs "帮我写一个 Rust 的斐波那契函数"

# 一次性提问,结果输出到终端(适合脚本/管道)
pi-rs -p "解释一下这个文件" < file.rs

# 引用文件一起提问
pi-rs -p "总结这个文档" @README.md

# 列出可用的模型
pi-rs --list-models

首次使用前,配置你的模型和 API Key(环境变量,或 ~/.pi-rs/agent/auth.json,或 models.json 里的 provider 配置),然后 pi-rs --list-models 确认模型可用。

--list-models 只列后端已实现的模型(anthropic-messages / openai-completions / openai-responses / pi-messages)。目录里属于 bedrock、vertex、mistral、azure-responses、codex 等尚未移植后端的模型会被隐藏,避免选中后必然请求失败。

使用方式

交互模式(默认)

在终端里启动一个对话会话,支持多轮对话、工具调用(读写文件、执行命令等)、会话历史保存与恢复。

pi-rs                          # 启动交互会话
pi-rs --continue               # 继续最近一次会话
pi-rs --resume                 # 恢复最近一次会话
pi-rs --session <ID>           # 按会话 ID 前缀(或 .jsonl 路径)恢复
pi-rs --fork <ID>              # 从某个会话分叉出新会话

一次性提问(Print 模式)

适合快速提问、脚本调用、管道处理:

pi-rs -p "总结这个仓库的结构"
cat error.log | pi-rs -p "帮我分析这个报错"
pi-rs -p -m claude-sonnet-4-6 "用 Python 写一个快速排序"

编辑器集成(ACP 模式)

在 Zed 等支持 ACP(Agent Client Protocol)的编辑器里,把 π 配置为 ACP 代理,即可在编辑器内直接对话、查看工具执行过程:

pi-rs --acp

编辑器会通过标准输入输出与 π 通信,你可以在编辑器里选择模型、调整思考强度、查看工具执行进度与输出。

其他模式

pi-rs --mode json "..."        # JSON 结构化输出,方便程序解析
pi-rs --mode rpc               # RPC 模式(供外部工具调用)
pi-rs --export <会话文件.jsonl> # 导出会话为 HTML

常用选项

选项 说明
-m, --model 指定模型(如 claude-sonnet-4-6)
-P, --provider 指定提供商
-k, --api-key 直接指定 API Key
--thinking 思考强度:off / minimal / low / medium / high / xhigh
--tools / --exclude-tools 允许 / 排除特定工具(逗号分隔;短标志 -t / -xt)。内置工具:read、bash、edit、write、grep、find、ls(默认只激活前四个);--tools read,grep,find,ls 即只读模式
--no-tools / --no-builtin-tools 关闭全部工具 / 只关闭内置工具(扩展与 MCP 工具保留)
--extension <PATH> 加载扩展(可重复)
--no-session 不保存会话
--session-dir <DIR> 自定义会话目录
--no-extensions / --no-skills 禁用扩展 / skills 加载
--skills <PATH> 追加 skill 目录或 .md 文件(可重复)
--trust / --no-trust 本会话信任 / 不信任项目(覆盖已存决策与默认策略)
--default-trust <ask|always|never> 覆盖本会话的 defaultProjectTrust 策略
--list-models [PATTERN] 列出已配置凭据的可用模型(按 provider + id 模糊匹配;无命中时正常退出)
-h, --help 查看完整帮助

持久化初始工具集:在 ~/.pi-rs/agent/settings.json 或项目 .pi-rs/settings.json 里设置 "defaultTools",普通名字整体替换默认集合(read/bash/edit/write),+name / -name 在继承的集合上增减,例如 ["+grep", "+find", "+ls"];/reload 会激活新加入的工具。

内置扩展默认关闭,用 "extensionsEnabled" 逐项开启(subagent / web_search)。

subagent 基于 agent 定义文件工作(默认只加载用户级 ~/.pi-rs/agent/agents/*.md):

---
name: reviewer
description: Code review
tools: read, grep, find, bash
model: claude-sonnet-4-6   # 省略则继承当前会话的模型与 thinking level
---

You are a meticulous code reviewer...

每个子 agent 跑在独立的 pi 进程里(隔离上下文),支持三种模式:single ({agent, task})、parallel({tasks: [...]},最多 8 个任务、4 路并发)、chain ({chain: [...]},顺序执行,{previous} 代入上一步输出)。项目级 agent 放 .pi-rs/agents/*.md,需显式传 agentScope: "both"(或 "project"),TUI 下还会先弹确认。 TUI 里工具块按 agent/模式渲染(agent 名 + 任务、tool call 列表、终稿 Markdown、 usage 统计),Ctrl+O 展开;运行中会跟着子 agent 的每条消息实时刷新,Ctrl+C 会立刻杀掉子进程。

web_search 的搜索/抓取后端在同一个 settings.json 里配置:

{
  "extensionsEnabled": { "web_search": true },
  "webSearch": {
    "provider": "auto",
    "deepseek": { "baseUrl": "https://api.deepseek.com", "apiKey": "${DEEPSEEK_API_KEY}" },
    "ollama": { "host": "http://localhost:11434" }
  }
}

provider 取 auto(默认:有 DeepSeek 凭据就用 DeepSeek,否则用本地 Ollama)/ deepseek / ollama。每一档都是「settings → 环境变量(PI_WEB_SEARCH_PROVIDER、DEEPSEEK_API_KEY、 DEEPSEEK_BASE_URL、OLLAMA_HOST/OLLAMA_BASE_URL)→ 内置默认」;apiKey 支持 ${ENV} 模板,/login deepseek 存的凭据也会被自动使用。

子命令

pi-rs update                  # 更新到最新 GitHub Release(--check/--force)
pi-rs update --models         # 刷新模型目录(等价于 pi-rs refresh)
pi-rs config list             # 查看当前生效的配置
pi-rs config <key> <value>    # 写入配置(model/provider/theme/thinking_level,加 -l 写项目级)
pi-rs auth check              # 检查认证状态
pi-rs auth print-api-key      # 输出指定提供商的 API Key
pi-rs mcp list                # 列出 MCP 服务器
pi-rs mcp add <name> -- <cmd> # 添加 stdio MCP 服务器(项目 .pi-rs/mcp.json)
pi-rs mcp add <name> --url <url> [--sse] [--header N:V] [--exposure direct|deferred|codemode|hidden]
pi-rs mcp enable|disable|remove <name>
pi-rs mcp login <name>       # OAuth 登录(远程 MCP)
pi-rs mcp logout <name>      # 删除已存 OAuth 凭据
# 会话内使用 /mcp 打开多级管理器(登录、重连、启停、Exposure、工具列表)

会话中的斜杠命令

在交互会话中,输入 / 开头的命令可以管理会话(Tab 可补全):

  • /new — 开启新会话
  • /name <name> — 设置会话名称
  • /model <provider>/<id> — 切换模型
  • /theme [dark|light] — 切换主题
  • /compact [instructions] — 压缩上下文
  • /copy — 复制最后一条回复
  • /reload — 重新加载扩展
  • /help — 查看命令列表
  • /quit — 退出

扩展注册的命令和 skills 也会以斜杠命令的形式出现(如 /skill:xxx)。

Skills 目录

默认按以下顺序发现 skill(同名先到者胜,顺序即系统提示中的顺序):

  1. 项目 .pi-rs/skills/
  2. 项目各级 .agents/skills/(从当前目录向上直到 git 仓库根)
  3. 用户 ~/.pi-rs/agent/skills/
  4. 用户 ~/.agents/skills/

.pi-rs/skills 与用户 skill 目录既可放 <name>/SKILL.md,也可直接放根级 <name>.md; .agents/skills 不把根级 Markdown 当 skill,但会发现任意嵌套层级的 SKILL.md 或 .md。 frontmatter 中的 name / description 会被解析(disable-model-invocation: true 表示只允许 /skill:<name> 显式调用)。--skills <PATH> 使用当前项目目录作为相对路径基准, 并支持 ~ 展开;--no-skills 只关闭默认发现,不影响显式路径。

与 TS 原版的差异:/login 当前支持 API-key 登录,不支持 OAuth;/export 支持基础 HTML 导出,但未复刻主题和自定义工具 renderer;部分 settings、selector 和 TUI 组件仍未完整移植。

数据与配置

  • 会话记录保存在 ~/.pi-rs/agent/sessions/

  • 设置文件:~/.pi-rs/agent/settings.json(默认模型/提供商、默认思考强度等参数)

  • API Key:环境变量(如 ANTHROPIC_API_KEY)或 ~/.pi-rs/agent/auth.json

  • 模型列表:~/.pi-rs/agent/models.json(可手动添加自定义 provider / 本地端点:baseUrl、apiKey、headers 等)

  • MCP 服务器:~/.pi-rs/agent/mcp.json(全局)+ {cwd}/.pi-rs/mcp.json(项目),使用通用 mcpServers 形状:

    {
      "mcpServers": {
        "fs":     { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] },
        "docs":   { "url": "https://example.com/mcp", "headers": { "Authorization": "Bearer ${DOCS_TOKEN}" } },
        "legacy": { "type": "sse", "url": "https://example.com/sse" }
      }
    }

    支持 stdio、streamable-HTTP 和 legacy SSE 三种传输;服务器工具会像内置工具一样注入所有模式。enabled: false 可临时禁用某条目。

项目信任默认策略为 always:未在 settings.json 配置 defaultProjectTrust 时, 项目一律视为受信任。需要收紧时在 settings 中设置 "defaultProjectTrust": "ask" 或 "never",也可用 --default-trust 仅覆盖当前会话。项目资源加载门控本身仍按 已确认偏差不启用(见 DEVIATIONS.md)。

致谢

π 是 earendil-works/pi(TypeScript 版)的 Rust 移植。 原版由 Mario Zechner 开发,采用 MIT 许可证(Copyright (c) 2025 Mario Zechner)。 本项目以原版的设计与公开接口为基准,扩展系统与 TUI 组件层等模块改用了 Rust 生态的实现方式,有意保留的差异记录在 DEVIATIONS.md。感谢原作者的出色工作。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages