名称: pi-share 描述: “从 shittycodingagent.ai/buildwithpi.ai/buildwithpi.com (pi-share) URL 加载和解析会话记录。获取gists,解码嵌入的会话数据,并提取对话历史。”
pi-share / buildwithpi 会话加载器
从 pi-share URL(shittycodingagent.ai, buildwithpi.ai, buildwithpi.com)加载和解析会话记录。
何时使用
加载会话: 当用户提供类似以下URL时使用此技能:
https://shittycodingagent.ai/session/?<gist_id>https://buildwithpi.ai/session/?<gist_id>https://buildwithpi.com/session/?<gist_id>- 或者仅提供gist ID,如
46aee35206aefe99257bc5d5e60c6121
人类摘要: 当用户要求您时使用 --human-summary:
- 总结人类在 pi/编码代理会话中所做的事情
- 理解用户如何与代理交互
- 分析用户行为、引导模式或提示风格
- 获取会话的人类中心视图(不是代理做了什么,而是人类做了什么)
人类摘要侧重于:初始目标、重新提示、引导/纠正、干预和整体提示风格。
工作原理
- 会话导出存储在GitHub Gists中
- URL 在
?后包含一个gist ID - gist 包含一个
session.html文件,其中包含base64编码的会话数据 - 辅助脚本获取并解码此文件以提取完整对话
用法
# 获取完整会话数据(默认)
node ~/.pi/agent/skills/pi-share/fetch-session.mjs "<url-or-gist-id>"
# 仅获取头部
node ~/.pi/agent/skills/pi-share/fetch-session.mjs <gist-id> --header
# 获取条目作为JSON行(每行一个条目)
node ~/.pi/agent/skills/pi-share/fetch-session.mjs <gist-id> --entries
# 获取系统提示
node ~/.pi/agent/skills/pi-share/fetch-session.mjs <gist-id> --system
# 获取工具定义
node ~/.pi/agent/skills/pi-share/fetch-session.mjs <gist-id> --tools
# 获取人类中心摘要(人类在此会话中做了什么?)
node ~/.pi/agent/skills/pi-share/fetch-session.mjs <gist-id> --human-summary
人类摘要
--human-summary 标志生成一个约300字的摘要,侧重于人类的体验:
- 他们的初始目标是什么?
- 他们多久重新提示或引导代理一次?
- 他们进行了何种干预?(纠正、澄清、挫折)
- 他们的指示有多具体或模糊?
这使用 claude-haiku-4-5 通过 pi -p 来分析压缩的会话记录。
会话数据结构
解码的会话包含:
interface SessionData {
header: {
type: "session";
version: number;
id: string; // 会话UUID
timestamp: string; // ISO时间戳
cwd: string; // 工作目录
};
entries: SessionEntry[]; // 对话条目(JSON行格式)
leafId: string | null; // 当前分支叶
systemPrompt?: string; // 系统提示文本
tools?: { name: string; description: string }[];
}
条目类型包括:
message- 用户/助理/toolResult消息,带有内容块model_change- 模型切换thinking_level_change- 思维模式更改compaction- 上下文压缩事件
消息内容块类型:
text- 文本内容toolCall- 工具调用,带有toolName和argsthinking- 模型思维内容image- 嵌入图像
示例:分析会话
# 通过jq过滤条目
node ~/.pi/agent/skills/pi-share/fetch-session.mjs "<url>" --entries | jq 'select(.type == "message" and .message.role == "user")'
# 计数工具调用
node ~/.pi/agent/skills/pi-share/fetch-session.mjs "<url>" --entries | jq -s '[.[] | select(.type == "message") | .message.content[]? | select(.type == "toolCall")] | length'