首页
/ 如何用 Session Logger hook 记录 Copilot coding agent 会话的全部活动?

如何用 Session Logger hook 记录 Copilot coding agent 会话的全部活动?

2026-09-09 22:54:39作者:董灵辛Dennis

awesome-copilot 仓库中的 Session Logger hook 用于把 GitHub Copilot coding agent 的会话活动落盘成 JSON 日志:记录会话开始与结束时间(含工作目录上下文)、用户提交 prompt 的事件,并支持通过环境变量关闭全部记录。本文按 hooks/session-logger/README.mddocs/README.hooks.md 的说明,走一遍安装、日志位置与隐私保护的完整路径。

Session Logger 记录了哪些事件

根据 hooks/session-logger/hooks.json,这个 hook 在 Copilot coding agent 会话中监听三个事件,每个事件触发一个 shell 脚本,超时时间均为 5 秒(timeoutSec: 5):

事件 触发的脚本 写入位置
sessionStart log-session-start.sh logs/copilot/session.log
sessionEnd log-session-end.sh logs/copilot/session.log
userPromptSubmitted log-prompt.sh logs/copilot/prompts.log

三个脚本都会先检查 SKIP_LOGGING 环境变量,若为 true 则直接 exit 0 不写任何日志。docs/README.hooks.md 说明 hook 会在 Copilot coding agent 会话期间自动执行,因此不需要你手动调用这些脚本。

需要留意的一点:log-session-start.sh 的脚本正文直接调用 jq 来生成 JSON 行(jq -Rn --arg timestamp ...),所以运行环境需要有 jq 可用;另外两个脚本用 echo 拼接 JSON,不依赖 jq

安装步骤

hooks/session-logger/README.md 的 Installation 部分,在你的目标仓库中依次执行:

  1. 把 Session Logger 的 hook 目录复制到你仓库的 .github/hooks/ 下:
cp -r hooks/session-logger .github/hooks/

这条命令的语义是把 awesome-copilot 仓库里的 hooks/session-logger/ 文件夹复制到当前仓库的 .github/hooks/ 目录,复制完成后脚本中的相对路径(如 .github/hooks/session-logger/log-session-start.sh)才能与 hooks.json 中的配置对上。

  1. 创建日志目录(脚本本身也会 mkdir -p logs/copilot,这一步是 README 明确要求的前置操作):
mkdir -p logs/copilot
  1. 保证脚本可执行:
chmod +x .github/hooks/session-logger/*.sh

chmod +x 会修改本仓库内脚本文件的执行权限,只影响新复制进来的这三个 .sh 文件,这是 hook 能被执行的必要前提。

  1. 把 hook 配置提交到仓库的默认分支(docs/README.hooks.md 同样要求 hook 提交到默认分支后才会随会话自动执行)。

日志内容与格式验证

安装完成后,hook 的日志文件位于仓库根目录下的 logs/copilot/

  • 会话事件写入 logs/copilot/session.log,包括 sessionStart(带 cwd 字段,即会话的工作目录)和 sessionEnd
  • prompt 事件写入 logs/copilot/prompts.log,每条记录包含时间戳、事件名和日志级别。

hooks/session-logger/README.md 给出的示例日志(文档示例,实际时间戳与你项目的路径会不同):

{"timestamp":"2024-01-15T10:30:00Z","event":"sessionStart","cwd":"/workspace/project"}
{"timestamp":"2024-01-15T10:35:00Z","event":"sessionEnd"}

prompt 日志由 log-prompt.sh 按固定格式追加,级别取 LOG_LEVEL 环境变量、缺省为 INFO

echo "{\"timestamp\":\"$TIMESTAMP\",\"event\":\"userPromptSubmitted\",\"level\":\"${LOG_LEVEL:-INFO}\"}" >> logs/copilot/prompts.log

验证方式:在一次 Copilot coding agent 会话结束后查看 logs/copilot/session.log 是否出现 sessionStartsessionEnd 两行 JSON 记录、logs/copilot/prompts.log 是否随 prompt 提交出现 userPromptSubmitted 记录。另外,log-session-start.shlog-session-end.sh 执行成功时会分别输出 📝 Session logged📝 Session end logged,可作为脚本实际跑起来的直接信号。

日志数据的隐私与保护

Session Logger 生成的日志属于会话数据,README 的 Privacy & Security 一节给出了三项保护措施,按需启用:

  1. 避免误提交:把 logs/ 加入 .gitignore,防止会话数据被提交进仓库。
  2. 降低记录粒度:设置 LOG_LEVEL=ERROR 只记录错误级别。注意 hooks/session-logger/hooks.jsonuserPromptSubmitted 事件的 env 已显式设置 "LOG_LEVEL": "INFO",若要改用其他级别,需要同步修改该配置项。
  3. 完全关闭记录:设置环境变量 SKIP_LOGGING=true,三个脚本都会跳过写入并直接退出。

README 同时说明日志仅存储在本地(Logs are stored locally only),hook 本身不会把日志发送到外部服务。

边界与限制

  • hook 只在 Copilot coding agent 会话中被触发,普通 IDE 使用场景不会产生这类日志;
  • 每个事件的执行超时为 5 秒,写日志操作若超出会中断(见 hooks/session-logger/hooks.jsontimeoutSec);
  • userPromptSubmitted 脚本目前只记录时间戳、事件名和级别,README 注明 prompt 详情需自行从 stdin 输入中解析(脚本注释 you can parse INPUT for more details)。

如果需要审计之外的能力(如会话结束自动提交),docs/README.hooks.md 中的 hook 列表提供了其他可用组件;就记录会话活动本身而言,完成上述安装并确认 logs/copilot/ 下两个日志文件按 JSON 行追加,即表示 Session Logger 已按预期工作。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
docsdocs
暂无描述
Markdown
899
5.83 K
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.76 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
860
1.35 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
925
1.85 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.84 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
533
601
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.37 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
395
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.04 K
525