Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Agent Task NotifyNew to Visual Studio Code? Get it now.
Agent Task Notify

Agent Task Notify

Ayanami Ray

|
3 installs
| (0) | Free
Unified task completion notifications for Codex sessions across IDE, CLI, and app workflows.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Codex Task Notify

Codex Task Notify 是一个本地任务通知系统,目标是解决 Codex 长任务、多窗口并发时必须反复手动查看会话状态的问题。它会监听本机 session .jsonl 文件,在任务完成后,把通知发到 VS Code、Windows 桌面和 Bark 手机推送。

当前实现同时支持:

  • VS Code 扩展模式
  • CLI daemon 模式
  • 共用一套底层 runtime / watcher / notification 逻辑

当前能力

  • 识别 task_complete
  • 在任务通知中附带本次任务 token 消耗
  • 支持 VS Code 内置弹窗
  • 支持 Windows 桌面通知
  • 支持 Bark iPhone 推送
  • 支持 Bark AES-256-GCM 加密、分组、角标、铃声、自定义图标、自动保存
  • 支持 thread 持久化重命名
  • 支持手动把任意 .jsonl 文件加入热查询队列
  • 支持查看当前热查询队列
  • 支持查看最近 7 天手动加入热查询的 session
  • 支持查询当前 5h / 7d 限额快照
  • 支持低限额主动提醒
  • 支持用户自定义 5h / 7d 低限额提醒阈值

当前架构

核心代码位于 src/shared,CLI 和 VS Code 扩展共用同一套 runtime。

1. 会话发现

  • 启动时扫描 sessionsRoot,建立未归档 session 索引
  • 同时扫描 archived_sessions,建立已归档索引
  • 使用 fs.watch 监听当天 session 目录
  • 当天有新 .jsonl 出现时,立刻加入热查询队列
  • 使用 fs.watch 监听 archived_sessions
  • 发现 session 被归档后,立刻从冷热队列移除

2. 冷热查询

  • 冷查询:默认每 30000ms 扫描一次所有未归档 session,只检查文件大小和修改时间
  • 冷查询发现变化时,把对应 session 推入热查询队列
  • 热查询:默认每 5000ms 扫描一次热队列,只在文件变化时继续解析 JSONL
  • 当天目录除了依赖 fs.watch,还会做短延迟补扫和周期轻扫,避免单次事件漏接

3. 事件解析

  • 完成通知依赖 task_complete
  • token 与限额快照走独立的 usage 解析链路
  • src/shared/usage.ts 负责把 provider-specific 的使用量事件归一化
  • 当前已接入 Codex 的 token_count
  • 对 Codex 会优先使用 total_token_usage 与 turn 基线做差,避免重复累加 last_token_usage
  • 后续如果扩展到 Claude Code 或 API 用户,只需要新增 usage / trigger adapter,不需要改通知层

4. 限额提醒

  • watcher 在解析 token_count 时会顺手得到 rate_limits
  • runtime 直接复用这条已有链路做阈值判断,不新增任何扫描
  • 限额扫描、阈值配置、提醒通知三层逻辑彼此解耦
  • 当前默认规则:
    • 5h 剩余额度 <= 10% 时提醒
    • 7d 剩余额度 <= 5% 时提醒
  • 跨过阈值时只提醒一次;如果额度恢复到阈值以上,再次跌破时会重新提醒

通知内容

任务完成通知

正文格式:

任务“Thread Name”已完成,用时xxx,消耗token为xxx

说明:

  • VS Code 弹窗和 Bark 正文会直接带 thread 名
  • Windows 桌面通知通常把 thread 名放在标题里,正文显示“任务已完成,用时xxx,消耗token为xxx”

限额主动提醒

标题:

Codex限额警告

正文格式:

您的Codex 5h额度只剩xxx
您的Codex 7d额度只剩xxx

补充:

  • Bark 的限额提醒会使用单独的铃声,默认 horn
  • Bark 的限额提醒图标单独配置,默认留空
  • 任务通知与限额提醒互不影响

余额展示

5h 和 7d 限额不会塞进任务完成通知里,而是单独展示:

  • VS Code 状态栏只有一个 Task Notify On / Off 按钮
  • CLI 与扩展都支持 check balance
  • 终端不会主动持续打印限额,只在你手动调用命令时输出
  • 状态栏 hover 会用进度条展示 5h / 7d 剩余额度,resets 只在底部小字显示

项目结构

.
├─ assets/icons/           # 扩展图标、Bark 图标资源
├─ docs/internal/          # 本地内部文档,默认不提交
├─ releases/vsix/          # 打包后的 VSIX
├─ scripts/                # 打包脚本
├─ src/
│  ├─ daemon.ts            # CLI 入口
│  ├─ extension.ts         # VS Code 扩展入口
│  ├─ latencyProbe.ts      # 延迟探针
│  ├─ shared/
│  │  ├─ bark.ts
│  │  ├─ config.ts
│  │  ├─ format.ts
│  │  ├─ notifications.ts
│  │  ├─ quotaAlerts.ts    # 限额阈值判定层
│  │  ├─ runtime.ts
│  │  ├─ sessionWatcher.ts
│  │  ├─ store.ts
│  │  ├─ types.ts
│  │  └─ usage.ts          # token / balance 归一化层
│  └─ test/smoke.ts
├─ tools/
├─ .env.example
├─ package.json
└─ tsconfig.json

安装与构建

安装依赖:

npm install

构建:

npm run build

运行 smoke test:

npm run smoke

配置

共享配置文件默认位置:

%USERPROFILE%\.codex-task-notify\config.json

同时支持 .env 覆盖敏感配置。仓库只提交 .env.example,真实 .env 已加入 .gitignore。

创建本地 .env:

Copy-Item .env.example .env

常用环境变量:

CODEX_TASK_NOTIFY_SESSIONS_ROOT=C:\Users\YOUR_NAME\.codex\sessions
CODEX_TASK_NOTIFY_STATE_FILE_PATH=C:\Users\YOUR_NAME\.codex-task-notify\state.json
CODEX_TASK_NOTIFY_COLD_POLL_INTERVAL_MS=30000
CODEX_TASK_NOTIFY_HOT_POLL_INTERVAL_MS=5000
CODEX_TASK_NOTIFY_HOT_SESSION_IDLE_MS=7200000

CODEX_TASK_NOTIFY_DESKTOP_ENABLED=true
CODEX_TASK_NOTIFY_DESKTOP_SOUND=false

CODEX_TASK_NOTIFY_BARK_ENABLED=false
CODEX_TASK_NOTIFY_BARK_SERVER_URL=https://api.day.app
CODEX_TASK_NOTIFY_BARK_DEVICE_KEY=your-bark-device-key
CODEX_TASK_NOTIFY_BARK_SOUND=multiwayinvitation
CODEX_TASK_NOTIFY_BARK_ARCHIVE=true
CODEX_TASK_NOTIFY_BARK_ICON_URL=https://example.com/icon.png
CODEX_TASK_NOTIFY_BARK_ENCRYPTION_ENABLED=true
CODEX_TASK_NOTIFY_BARK_ENCRYPTION_KEY=12345678901234567890123456789012
CODEX_TASK_NOTIFY_BARK_ENCRYPTION_IV=123456789012

CODEX_TASK_NOTIFY_QUOTA_ALERTS_ENABLED=true
CODEX_TASK_NOTIFY_TRIGGER_5H_REMAINING_PERCENT=10
CODEX_TASK_NOTIFY_TRIGGER_7D_REMAINING_PERCENT=5
CODEX_TASK_NOTIFY_QUOTA_ALERT_BARK_SOUND=horn
# CODEX_TASK_NOTIFY_QUOTA_ALERT_BARK_ICON_URL=

补充说明:

  • .env 优先级高于 config.json
  • 如果设置了 CODEX_TASK_NOTIFY_ENV,程序会优先读取该路径
  • 当前版本兼容“整份 .env 被误压成一行”的情况,会在启动时自动拆回多行

CLI 使用

启动 daemon:

npm run start:daemon

启动后可输入以下命令:

restart
stop
continue
quit
check balance
set trigger
add
rename
clear_name
show
show_last
help

命令说明:

  • restart:关闭并重新开始监视
  • stop:停止监视
  • continue:继续开始监视
  • quit:退出程序
  • check balance:查询当前最新 5h / 7d 限额快照
  • set trigger:设置 5h / 7d 低限额提醒阈值
  • add:手动添加一个 .jsonl 到热查询队列
  • rename:给 thread 重命名
  • clear_name:清除所有手动重命名
  • show:展示当前热查询队列
  • show_last:展示最近 7 天手动加入热查询的 session
  • help:显示命令列表

VS Code 扩展使用

扩展激活后会创建输出面板:

Codex Task Notify

命令面板命令

Codex Task Notify: Start Monitoring
Codex Task Notify: Stop Monitoring
Codex Task Notify: restart
Codex Task Notify: continue
Codex Task Notify: quit
Codex Task Notify: check balance
Codex Task Notify: choose way
Codex Task Notify: set trigger
Codex Task Notify: add
Codex Task Notify: Monitor Current Session
Codex Task Notify: Choose Session to Monitor
Codex Task Notify: Open Shared Config
Codex Task Notify: Show Recent Events
Codex Task Notify: rename
Codex Task Notify: clear_name
Codex Task Notify: show
Codex Task Notify: show_last
Codex Task Notify: help

状态栏按钮

当前默认只保留一个交互入口:

  • Task Notify On / Off

说明:

  • Task Notify On / Off:点击按钮可直接启动或停止监视
  • 鼠标悬浮在按钮上时,会出现原地 tooltip 菜单,提供 Choose Way、Set Trigger、Rename Thread 三个可点击选项
  • tooltip 中会直接显示 5h / 7d 剩余额度进度条
  • used 与 Trigger 不再显示在 hover 主体里
  • resets 与 updated 会放在底部一行小字里,并转为自然日期
  • check balance 仍可通过命令面板调用

其他功能入口如 add、show、show_last 仍可通过命令面板调用。

Bark 推送

任务通知标题固定为:

codex

限额提醒标题固定为:

Codex限额警告

支持字段:

  • title
  • body
  • sound
  • group
  • badge
  • isArchive
  • icon
  • ciphertext
  • iv

加密方式:

AES-256-GCM

约束:

  • CODEX_TASK_NOTIFY_BARK_ENCRYPTION_KEY 必须是 32 字符
  • CODEX_TASK_NOTIFY_BARK_ENCRYPTION_IV 必须是 12 字符
  • icon 应使用稳定直链图片地址

打包 VSIX

npm run package:vsix

输出目录:

releases/vsix/

文件名格式:

codex-task-notify-{version}.vsix

延迟调试

项目内置两个辅助工具:

src/latencyProbe.ts
tools/trace-watcher-change.js

用于定位:

  • task_complete 写入时间
  • watcher 发现文件变化的时间
  • 最终通知发出的时间

历史排查结论是:task_complete 本身通常写得很快,真正容易出现随机高延迟的是“新会话发现”和“文件变化发现”阶段,所以当前版本保留了 fs.watch + 热查询补扫 + 冷热轮转 的组合方案。

已知限制

  • Windows 文件系统事件不是严格实时、严格不丢失的,所以当天目录除了 fs.watch 外还需要补扫兜底
  • 已归档 session 当前是通过进入 archived_sessions 被识别,而不是依赖原 .jsonl 内部的 archived 字段
  • 当前余额快照来源于 Codex session 日志中的 token_count.rate_limits
  • 如果未来接入 Claude Code 或 API 用户,需要新增对应 usage / trigger adapter;提醒逻辑本身可以复用

开发命令

npm run build
npm run smoke
npm run start:daemon
npm run package:vsix

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft