如何用 Session Logger hook 记录 Copilot coding agent 会话的全部活动?
发布时间:2026/9/10 9:00:52 作者:尧图编辑部 阅读量:1,286

如何用 Session Logger hook 记录 Copilot coding agent 会话的全部活动【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilotawesome-copilot 仓库中的Session Loggerhook 用于把 GitHub Copilot coding agent 的会话活动落盘成 JSON 日志记录会话开始与结束时间含工作目录上下文、用户提交 prompt 的事件并支持通过环境变量关闭全部记录。本文按 hooks/session-logger/README.md 与 docs/README.hooks.md 的说明走一遍安装、日志位置与隐私保护的完整路径。Session Logger 记录了哪些事件根据 hooks/session-logger/hooks.json这个 hook 在 Copilot coding agent 会话中监听三个事件每个事件触发一个 shell 脚本超时时间均为 5 秒timeoutSec: 5事件触发的脚本写入位置sessionStartlog-session-start.shlogs/copilot/session.logsessionEndlog-session-end.shlogs/copilot/session.loguserPromptSubmittedlog-prompt.shlogs/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 部分在你的目标仓库中依次执行把 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中的配置对上。创建日志目录脚本本身也会mkdir -p logs/copilot这一步是 README 明确要求的前置操作mkdir -p logs/copilot保证脚本可执行chmod x .github/hooks/session-logger/*.shchmod x会修改本仓库内脚本文件的执行权限只影响新复制进来的这三个.sh文件这是 hook 能被执行的必要前提。把 hook 配置提交到仓库的默认分支docs/README.hooks.md 同样要求 hook 提交到默认分支后才会随会话自动执行。日志内容与格式验证安装完成后hook 的日志文件位于仓库根目录下的logs/copilot/会话事件写入logs/copilot/session.log包括sessionStart带cwd字段即会话的工作目录和sessionEndprompt 事件写入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环境变量、缺省为INFOecho {\timestamp\:\$TIMESTAMP\,\event\:\userPromptSubmitted\,\level\:\${LOG_LEVEL:-INFO}\} logs/copilot/prompts.log验证方式在一次 Copilot coding agent 会话结束后查看logs/copilot/session.log是否出现sessionStart与sessionEnd两行 JSON 记录、logs/copilot/prompts.log是否随 prompt 提交出现userPromptSubmitted记录。另外log-session-start.sh与log-session-end.sh执行成功时会分别输出 Session logged和 Session end logged可作为脚本实际跑起来的直接信号。日志数据的隐私与保护Session Logger 生成的日志属于会话数据README 的 Privacy Security 一节给出了三项保护措施按需启用避免误提交把logs/加入.gitignore防止会话数据被提交进仓库。降低记录粒度设置LOG_LEVELERROR只记录错误级别。注意 hooks/session-logger/hooks.json 中userPromptSubmitted事件的env已显式设置LOG_LEVEL: INFO若要改用其他级别需要同步修改该配置项。完全关闭记录设置环境变量SKIP_LOGGINGtrue三个脚本都会跳过写入并直接退出。README 同时说明日志仅存储在本地Logs are stored locally onlyhook 本身不会把日志发送到外部服务。边界与限制hook 只在 Copilot coding agent 会话中被触发普通 IDE 使用场景不会产生这类日志每个事件的执行超时为 5 秒写日志操作若超出会中断见 hooks/session-logger/hooks.json 的timeoutSecuserPromptSubmitted脚本目前只记录时间戳、事件名和级别README 注明 prompt 详情需自行从 stdin 输入中解析脚本注释you can parse INPUT for more details。如果需要审计之外的能力如会话结束自动提交docs/README.hooks.md 中的 hook 列表提供了其他可用组件就记录会话活动本身而言完成上述安装并确认logs/copilot/下两个日志文件按 JSON 行追加即表示 Session Logger 已按预期工作。【免费下载链接】awesome-copilotCommunity-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-copilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考