Skip to content

Latest commit

 

History

History
45 lines (38 loc) · 11.3 KB

GLOSSARY.md

File metadata and controls

45 lines (38 loc) · 11.3 KB

GLOSSARY · pi-web-client

本项目自己的词。写 issue、提案、测试名、变量名时用这里的说法,不要临时发明同义词。

格式:术语 — 一句话定义。如果某个词有两种意思,就把两种都写下来并说明区别在哪;如果一个词明确不用(比如「任务」不指 run),就在定义后面写「不用 X 指代」。

术语在真正定下来的时候才加进来,不要预先编。

术语 定义
pi 本体 桥启动的那支 pi CLI(resolvePi() 找到的 cli.js),区别于浏览器里的前端与桥本身。设置 →「扩展与 MCP」顶部那一行显示它的版本,更新 pi 跑的就是 pi update(D112)。
终端 / 网页终端 顶栏 >_ 终端 弹出的 dialog 里那几台真的 shell(D92):进程在桥里(bridge/src/terminal.ts 的 Terminals,最多 4 台),页面只是视图。最小化 = 收起 dialog,进程照旧在跑;只有标签的 × / 关闭 才结束它。不用「终端」指代终端里跑着的 pi CLI(那个说「终端里的 pi」)。
内网通 面向用户的称呼:顶栏 🌐 内网通 打开的那块(发现同一内网里的人、好友、对话、传文件,以及让 pi 代发消息)。进程名和代码标识仍叫 peer(peer/、/api/peer/*、peer_find 等),界面与文档里对用户说「内网通」,不说「局域网」。
对话 1:1 聊天线程,key 是对方的 nodeId(#45)。不用「会话」指代对话:「会话」在本仓库专指 pi 的 session(D6 会话 = 进程)。
工作区 会话列表的一级分组,含义 = 一个工程(#72/#94):由会话的 cwd 推导 —— 最近的 git 仓库根,worktree 用 --git-common-dir 并回主仓(五份 worktree 与主仓是同一个工作区);非 git 目录就用 cwd 本身。用户拖过的会话用 override 钉死在某个组里,直到「放回工程」。不用它指代 pi 的会话(那个仍叫「会话」),也不是「一个文件夹」的同义词:组 id 是归一化路径的小写形式,手动组是 manual:<随机>。归档不属于任何工作区,是末尾的全局分区。
标签行 A 壳顶栏那一行工作区标签(.ws-tabs-row,在折叠左栏的 ◧ 后面),点一颗就切到那个工作区(#118 / #121)。它只画名额允许的几颗(默认 3,1–5),装不下的组收进槽外的 +N 下拉。不用它指代左栏的树:树里是全部组,标签行是同一份组序的「前几颗」。
固定(组) 用户用组头 ⋯ 菜单把它钉在标签行最前面(WorkspaceState.pinned,桥端落库),位置不随活动时间漂(#118 R4)。固定组按固定顺序排在补位组之前;左栏组头带一颗「已固定」标记(R11)。固定组之间的先后能改:在标签行里按住它用鼠标拖(#124,只重排、不增删;补位组拖不动,D149)。桥端会去重、剔掉已经不存在的组、按名额截断 —— 页面发的是一整份列表,不是一个开关。不用「置顶」指代固定:置顶是会话卡片上的 ★。
补位(组) 名额还有空、又没有固定组占位时,按左栏组序依次填进标签行的那几个组(#118 R6)。当前组如果不在标签行上,挤掉的是最后一个补位组,固定组一个都不动;连补位都没有(固定组占满名额)才多画一颗(N+1,R9)。
nodeId 一台机器一个稳定 uuid,存在 peer 的 state 目录;换机器 = 新身份、新历史。不用它指代「人」。
好友 双向确认过的关系(kind=friend-request → friend-accept,请求本身走 /peer/inbox);单方的收藏只是备注 + 无文件权限,不等于好友。
群 群主签发名册、成员按名册互信的一组对话(v1.1);v1 里没有群。
记录 用户自己的随手记(bug / 变更 / 想法 / 杂事),顶栏 🐞 bug 打开,落在状态目录 notes/(D108);每条有处理状态(待处理 / 已处理 / 已忽略)和去向(列表 / 归档 / 垃圾箱)两件独立的事。不用「记录」指代 /bug 报告:那个是发给 pi 开发者的 bug report(D80),跟会话绑定、会上传或打包。
技能面板 输入框下方「技能」按钮打开的那块补全式弹层(代码里的 skill palette,.skill-pop):默认按 /skill: 的使用次数列前六个,选中后往输入框插入 /skill:name (D115)。它不是模态 dialog:点外面就关,那一下点击照常生效。
/ 菜单 输入框里敲 / 弹出的命令补全(.complete-pop,过滤逻辑在 web/src/commands.ts 的 filterCommands()):名字优先、描述兜底 —— 名字有命中就不拿描述凑数;skill:handoff 这类命名空间只认整段 skill: 前缀(可敲可不敲),匹配看冒号后面那段、再按 - _ . 切词(D152)。不用它指代「技能面板」:那个是输入框下面的按钮,按使用次数排序。
技能商店 技能面板底部「商店」打开的 dialog(.skill-sheet,D126):搜 skills.sh、按地址装、列出已安装并卸载。和「扩展商店」分开叫:那边装的是 pi 包 / MCP 服务器,这边只装技能目录。
折回 会话文件里 pi 写下的是 <skill name="…" location="…">整篇 SKILL.md</skill> 加用户跟着写的话;折回就是把它显示成 /skill:<name> args(bridge/src/sessionfile.ts 的 displayUserText)。这是只改显示的动作:文件与模型上下文里仍是展开块。气泡、复制、分叉、刻度带、队列条读的都是折回后的文本(D165)。
药丸 / 技能药丸 折回后的命令在正文里画成的那颗 code.msg-skill 小胶囊;SKILL.md 的路径只进它的 tooltip,不上屏幕。聊天区与随手问共用 web/src/skill.ts 的 fillUserBody(D165)。
收件箱 收到的文件落地的目录,默认 ~/.pi-peer/inbox、可选别的盘(#45)。与「历史」(JSONL)不是一回事:历史永久保留、手动清,收件箱按配额拒收。
完成(done) 会话的最后一轮已经结束、之后没有新动作(D162)。它是会话的状态,不是某个页面的未读:打开卡片、刷新、换设备、桥重启、被 GC 回收后又唤醒,都仍然显示;只有下一轮开始(agent_start)、网页发消息(prompt)或终端继续写会话文件才清。卡片右下角那颗绿徽标与胶囊文字的 done 就是这个。不用「已读 / 未读」指代它:那两个词已经不再描述完成。
休眠 会话(= 那个 pi 进程)在一轮完成之后 30 分钟没有任何事件,就自己退出:消息、文件、上下文一样不少,下一条消息自动唤醒(1–3 秒冷启,续同一个 session 文件,D120)。看页面、切换会话、订阅都不算活动,所以忘关的标签页照样会被休眠。不用「关闭 / 停止」指代休眠:界面上的「停止运行」是人点的、就停在那,「休眠」是自动的、下一条消息会自己回来。
present 客户端自报「页面可见且窗口有焦点」({type:"presence", active},D91)—— 是人还在电脑前的事实,不是「有人订阅这个会话」。它决定两件事:有人在 present 就不推微信/Web Push;以及审批、问卷还值不值得等人 —— 没有任何客户端 present 满阈值就过期(D120、#82)。代码与测试里就用这个词,不说「在线 / active / 活跃」。
卡死(watchdog) 一轮还没结束、30 分钟没有任何事件、而且没有任何东西在途(没有 running 的 tool、没有正在跑的 ! 命令、没有等人点的审批 / 问卷)—— 这时先 abort,宽限期(默认 60 秒)内还不结束才结束进程(D120,#81)。静默不等于卡死:有工具在途时 40 分钟不发事件是正常的(npm install、无输出的构建),那种只推一条「好像卡住了」的 notice,绝不 abort,停不停由人定。
随手问 顶栏 💭 随手问 打开的那个 dialog 背后的会话(#86):不进会话列表、只给读类工具(读本机文件 + 联网查,不能改本机)、有自己的休眠时间(默认 1 小时)、不被内存水位收、也不会被自动压缩;清空 是在同一个 pi 进程里换一条新会话(pi 的 new_session),所以不用等冷启。文件写在自己的临时目录(桥启动/退出即清)。不用「全局 chat」「临时会话」「草稿」指代它。
水位(内存水位) 所有运行中的 pi 加起来超过这个总额(默认 2.5 GB)时,按「最久没活动」的顺序休眠会话,直到降回水位以下(D120,#79)。不碰三种:正在跑的一轮、刚启动 / 刚唤醒 60 秒内的、挂着审批或问卷的;并且永远留一个。与「休眠」是同一件事(同一条 notice、同一个唤醒),只是理由是内存而不是时间。读不到数(采样不可用)就一个都不收:水位是省内存的优化,不是正确性保证。
文件管理器 / 跳到路径 顶栏 📁 文件 打开的 viewer 的浏览态(mountBrowser → mountDirPicker({ pathBox: true }))。顶部那行输入框叫跳到路径:指向文件夹就进去,指向文件就进它的父目录、把那一行标成 .hit 并把焦点放上去(定位不是打开,不换成预览/编辑),找不到就地报错、列表不动(D153)。同一份 dirpicker 在附件弹层里也有这一行,只有新会话弹层没有(那里焦点该先落在「工作目录」上)。
出错记录(账本) 会话里 AI 犯过的硬错误(工具命令失败、模型报错、被中断)按工作区攒成的一本账:同一类只加次数,明细留最近 20 条。顶栏 🐞 bug 面板第五个 tab「⚡ AI 出错记录」,只读、能标已修复 / 忽略 / 删除,能把整类交回给 agent(D164)。不用「日志 / 错误日志」指代它:日志是原始的、按时间排,账本是去重、按次数排的。
入账 把「这一轮还没记过的失败」写进账本:点 composer 上方的「⚡ 总结本轮错误 N」,toast 上 10 秒内可撤销(桥端快照留 60 秒)。N 是次数;只送还没入账的那一段,没有新失败就不写文件(D164)。

| 网格 / 页面视图 | xlsx 预览里的两种看法(D166):网格 = 按行列画的表格(能滚、有行列头与条件格式,也是默认看法);页面视图 = LibreOffice 把工作簿转成 PDF 后的纸面(打印版式,能看见图表)。宽窗并排、窄窗二选一。不叫「表格视图 / 预览模式」。 | | 表格浮窗 | 预览 xlsx 的那扇可拖拽浮窗(默认 1180×780,标题栏拖走 / 右下角改大小 / 双击复原,几何记 localStorage,D166),区别于右侧固定宽度的 viewer 面板(min(760px,55vw),D121)。说「浮窗」时指它,不说「弹窗 / 模态框」——它没有遮罩。 |

相关文档

  • 决策与理由:docs/DECISIONS.md(D1…Dn,「决定 + 为什么」)
  • Agent 技能约定:AGENTS.md