omp packages

@huntye1/pi-auto-session-name0.1.1

Non-blocking, privacy-conscious automatic session names for Pi

huntye1 Published 10 days ago MIT ~318 downloads/mo

Untested on omp

This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.

Did it work for you?

Result

One report per person. A new report replaces your old one.

Reports 0

No reports yet.

Readme

@huntye1/pi-auto-session-name

English

这是一个非阻塞、注重隐私的 Pi 扩展:新会话完成首个成功任务后,它会自动生成简短的会话名称。

安装

需要 Pi 1.1.0 或兼容的后续版本,以及 Node.js >=22.19.0。

pi install npm:@huntye1/pi-auto-session-name

在运行中的 Pi 执行 /reload,再通过 /new 开始新会话。本地开发时可直接加载:

pi --extension ./packages/pi-auto-session-name/extensions/auto-session-name.ts

本包不会改写 Pi 设置、注册模型工具、改变主对话提示词或创建后台进程。请勿同时启用其他自动命名扩展。

默认行为

  • 只对新建且持久化的 TUI/RPC 会话,在首个成功任务结束后自动尝试一次。
  • 默认使用当前会话模型,不隐式选择其他服务,也不跨 provider 回退。
  • 通过 ctx.modelRegistry.streamSimple() 命名,不向主会话记录注入工具或消息。
  • agent_settled 不等待命名 Promise,因此命名进行中也可以开始下一轮。
  • 最多读取原始需求 800 个 Unicode 字符和最近最终回答 400 个字符,忽略中途工具说明。
  • 默认标题上限为 24 个 Unicode code points,并跟随用户语言。
  • 使用独立 session-affinity ID,请求结束后清理 provider 资源。
  • 默认端到端超时 10 秒(包含认证),无自动重试或定时改名。
  • 已有名称、恢复、重载、分叉、临时、print 和 JSON 会话不会自动命名。
  • 改名、清空、替换会话、重载、关闭或切换分支会取消或使待处理结果失效。
  • 同一分支上的正常后续对话不会取消命名;上下文编辑和 compaction 会使旧快照失效。

命令

命令 行为
/auto-name 显式生成或重试;替换已有名称前会确认
/auto-name status 查看配置、实际模型、最近结果、耗时和独立调用 usage
/auto-name model trae/gpt-5.5 校验并保存命名模型,立即生效
/auto-name trae/gpt-5.5 上一条命令的简写
/auto-name model current 恢复使用当前会话模型
/auto-name cancel 取消命名请求,不影响主任务
/auto-name clear 清空名称并锁定自动命名
/name 自定义名称 Pi 内置手工改名;手工名称始终优先

显式命令会等待自己的结果,自动命名则保持非阻塞。没有交互 UI 时不会替换已有名称;缺少有效需求或成功最终回答时会跳过。

/auto-name 使用原始需求(最多 800 字符)、最新且不重复的需求(最多 400 字符)和最新最终回答(最多 400 字符)。自动失败后不会重试,除非显式执行命令。

配置

扩展只读取用户配置:

${PI_CODING_AGENT_DIR:-~/.pi/agent}/auto-session-name.json

它故意忽略项目配置,避免仓库改变命名 provider。无需配置也可使用。

{
  "enabled": true,
  "mode": "llm",
  "model": "",
  "language": "auto",
  "timeoutMs": 10000,
  "maxTitleChars": 24
}
字段 默认值 说明
enabled true 总开关;关闭后显式模型命名也不可用
mode llm llm 调用模型;local 从脱敏后的需求中截取,不调用模型
model "" 空值使用当前模型;也可写 provider/modelId。模型不存在时安全跳过,不回退
language auto auto、zh 或 en;只影响 LLM 提示词
timeoutMs 10000 1,000–30,000 ms 的端到端超时
maxTitleChars 24 8–80 个 Unicode code points,不是终端列宽

手工修改配置后执行 /reload 生效;/auto-name model ... 会校验并原子更新配置,立即生效。未知字段、非法值、非普通文件、超过 8 KiB 或无效 JSON 都会安全禁用命名。配置不支持凭证,认证始终由 Pi 管理。

隐私与限制

  • 忽略工具结果和参数、thinking、图片、system/custom 消息、分支摘要和 compaction 摘要。
  • 只读取活动分支,并遵守 context_edit 的替换和删除。
  • 启发式脱敏私钥、常见 API Key、Bearer/Basic、Cookie/Authorization、JWT、敏感赋值,以及 URL 凭据、查询参数和 fragment。
  • 删除 Markdown 代码块和 Pi <file> 附件块;作为普通文本粘贴的代码仍可能进入摘录。
  • 在截断前对有界输入执行过滤和脱敏:单条最多 8,192 个 UTF-16 code units、128 个内容块,活动分支最多 2,048 个条目。
  • 模型只收到独立 system 规则和 JSON 摘录,不提供工具;输出中的疑似秘密、控制字符和双向文本控制符会被拒绝。
  • 启发式脱敏不是 DLP,无法保证识别所有秘密。 LLM 模式会向选定 provider 发送少量会话文本。请使用获准的 provider;完全不希望额外发送内容时,请使用 local 模式或关闭扩展。
  • 不上传遥测,也不持久化摘录和服务端错误文本。会话名称会写入 Pi Session JSONL,并可能出现在标题、footer 和恢复列表中。
  • pi-auto-session-name/v1 自定义条目只保存尝试所有权、结果、耗时和数值 usage,不保存摘录或凭证。
  • 命名会产生一次额外模型调用;最近费用可通过 /auto-name status 查看,不计入主会话 footer。

开发与发布

npm run check
npm run pack:check
npm publish --access public

check 包含类型检查、单元测试,以及使用假 provider 的真实 Pi SDK 离线集成测试。发布包只包含扩展入口、源码、中英文 README、LICENSE 和 package 元数据。Pi 宿主 API 作为 optional peer dependencies 由宿主提供。

许可证

MIT