从 GitHub 活动自动生成可直接使用的一对一简报,几秒完成。识别高产出但低审查参与等模式。
概览:Pullstar为一名工程师获取GitHub活动(PRs编写,给定评论),运行一个确定性本地评分引擎,跨越五个维度,并准备LLM输入有效载荷.是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
PullStar 为一名工程师拉取 GitHub 活动数据(包括其创建的 PR 和给出的评审),在五个维度上运行确定性的本地评分引擎,并准备一份供 LLM 使用的输入载荷。随后,agent 执行 LLM 推理,并完成最终简报(brief)。
快速开始:
run_brief.py --login steipete --pr-insights --days 7 读取 llm_input_steipete.json,执行 LLM 推理,输出简报
数据流概要:
| 步骤 | 执行内容 | 外部调用 |
|---|---|---|
| 采集(Ingest) | run_brief.py → ingest.py |
GitHub API |
| 评分(Score) | run_brief.py → score.py |
无 |
| 准备(Prepare) | run_brief.py → agent_prepare_1on1.py |
无 |
| Agent 推理 | Agent 调用 LLM | LLM 提供商 |
| 定稿(Finalize) | Agent 运行 agent_finalize_1on1.py |
无 |
⚠️ 重要提示: 步骤 1–3 全部在本地运行。仅第 4 步(LLM 推理)会将数据发送至您的 AI 提供商。
pip install PyGithub python-dotenv requests| 选项 | 创建位置 | 适用场景 |
|---|---|---|
经典 PAT(repo 权限) |
https://github.com/settings/tokens | 跨用户搜索、组织级批量采集 |
| 细粒度 PAT | https://github.com/settings/personal-access-tokens | 仅限访问您自己的仓库 |
细粒度 PAT 不支持跨任意用户的搜索。如需生成组织级简报,请使用经典 PAT。
设置 GITHUB_ORG 环境变量可将搜索范围限定于单个组织。
密钥按层级查找,**首个匹配项生效**:
--github-token CLI 参数(仅用于覆盖或调试 — 绝不记录日志)GITHUB_TOKEN 环境变量~/.pullstar/credentials(key=value 格式).env 文件默认模式(未启用 --pr-insights):
PR 洞察模式(启用 --pr-insights):
llm_input_{login}.json.env| 变量 | 是否必需 | 说明 |
|---|---|---|
GITHUB_TOKEN |
推荐 | 具备 repo 权限的经典 PAT。若省略,则以未认证方式访问(限 60 次请求/小时)。 |
GITHUB_ORG |
否 | 将采集范围限定于单个组织。 |
python run_brief.py --login jsmith
python run_brief.py --login jsmith --pr-insights
python run_brief.py --login jsmith --days 14 # 更长回溯窗口(默认:5 天) python run_brief.py --login jsmith --max-results 10 # 高活跃用户下提速(默认:20) python run_brief.py --login jsmith --api-mode rest # 强制使用 REST API(默认:graphql)
| 参数 | 默认值 | 说明 |
|---|---|---|
--login |
必需 | 工程师的 GitHub 登录名 |
--days |
5 |
回溯时间窗口(单位:天) |
--pr-insights |
关闭 | 在 LLM 提示词中包含 PR 评审/评论上下文 |
--max-results |
20 |
最大搜索结果数(数值越小,执行越快) |
--api-mode |
graphql |
graphql 或 rest |
--output-dir |
.pullstar |
所有产物的存放目录 |
--github-token |
— | 仅用于覆盖或调试。推荐优先使用 .env。 |
run_brief.py 运行确定性流水线(采集 → 评分 → 准备),然后打印一段明确的操作指令块。Agent 必须手动完成最后两个步骤:
============================================================ PIPELINE COMPLETE — AGENT ACTION REQUIRED ============================================================ 1. 读取: .pullstar/llm_input_jsmith.json 2. 提取其中的 "system" 和 "user" 字段 3. 使用这两个字段分别作为 system prompt 和 user message 调用您的 LLM 4. 将响应结果写入 .pullstar/llm_output_jsmith.json 5. 运行: python scripts/agent_finalize_1on1.py --login jsmith
run_brief.py)文件路径:.pullstar/llm_input_{login}.json
| 字段 | 类型 | 说明 |
|---|---|---|
system |
字符串 | 含指令的 system prompt |
user |
字符串 | 含工程师数据与评分的 user message |
metadata |
对象 | 版本号、时间戳、总分、置信度 |
文件路径:.pullstar/llm_output_{login}.json
{
"version": "1.0",
"engineer_login": "jsmith",
"brief": "## Quick Summaryn..."
}
格式要求:
brief 字段必须是非空的 Markdown 字符串最终简报文件(output_{login}.json)是一份 Markdown 文档,包含以下六个部分:
| 章节 | 内容要求 |
|---|---|
| Quick Summary(快速摘要) | 2–3 句话,开头需突出具体数字 |
| Highlights(亮点) | 2–4 个要点,每个要点仅含一个数据点 |
| Areas to Explore(待探讨方向) | 2–3 个开放式问题,供一对一沟通时使用 |
| Patterns Worth Noting(值得关注的行为模式) | 1–3 条基于事实的行为观察 |
| Score Summary(评分汇总) | Markdown 表格 — 列为:维度 / 分数 / 置信度 / 依据。置信度列鼓励使用 Emoji。 |
| Suggested Focus(建议聚焦主题) | 一段文字,阐述本次一对一沟通最有价值的主题 |
评分汇总表示例:
| 维度 | 分数 | 置信度 | 依据 |
|---|---|---|---|
| Velocity | 16/20 | ✅ High | 10 个 PR 已合并,连续活跃 3 周 |
| PR Quality | 14/20 | ✅ High | 平均 320 行,其中 2 个大型 PR 被标记 |
| Review Participation | 8/20 | ⚠️ Medium | 窗口期内共给出 3 次评审 |
| Collaboration | 12/20 | ✅ High | 涉及 4 个仓库,平均每 PR 有 3 名评审人 |
| Consistency | 10/20 | 🔴 Low | 3 周中有 1 周处于非活跃状态 |
所有产物均写入 .pullstar/ 目录(该目录已加入 .gitignore,永不提交)。
| 文件 | 生成者 | 是否发送至 AI? |
|---|---|---|
ingest_{login}.json |
ingest.py |
❌ 否 |
score_{login}.json |
score.py |
❌ 否 |
llm_input_{login}.json |
agent_prepare_1on1.py |
✅ 是 |
llm_output_{login}.json |
Agent | ❌ 否 |
output_{login}.json |
agent_finalize_1on1.py |
❌ 否 |
“GitHub 拒绝了 PR 搜索请求(422)”
请使用经典 PAT — 细粒度 PAT 不支持跨任意用户的搜索。
“触发 GitHub 速率限制”
认证后:5000 次请求/小时;未认证:60 次请求/小时。请设置 GITHUB_TOKEN。
高活跃用户下采集缓慢
使用 --max-results 10 限制迭代数量。默认值为 20。
GraphQL 报错
使用 --api-mode rest 回退至传统 REST API。
当在 LLM 推理步骤中使用 sessions_spawn 时:
✅ 应当:
sessions_spawn,任务为:读取 llm_input_{login}.json 并写入 llm_output_{login}.json❌ 不应:
subagents list 等待完成原因: 子 Agent 轻量高效(无完整 OpenClaw 上下文,环境隔离),但轮询违背了基于事件推送完成的设计初衷。系统会在任务完成后主动通知您。
恢复方案: 若子 Agent 执行失败,您始终可在主会话中直接生成简报 — 上述 JSON 接口规范简洁明确,且已完整文档化。
MIT 协议 — 完整许可文本请参阅源代码仓库。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章