@teamsillybees/blip-darwin-arm64 0.2.0-dev.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,33 +1,36 @@
1
1
  # Blip
2
2
 
3
- 把 Codex 需要你关注的消息,发送到飞书、企业微信、Gotify 或自定义 webhook。
3
+ 在 agent 本轮结束或需要你响应时,发送提醒到飞书、企业微信、Gotify 或自定义 webhook。
4
4
 
5
- 首版面向 **Windows 上的 Codex CLI 与桌面版**,提供三类提醒:
5
+ Blip 接入 **Codex CLI 与桌面版、Claude Code、Hermes 和 DSH**。用户侧关注两个时机:
6
6
 
7
7
  | 提醒 | 触发依据 |
8
8
  | --- | --- |
9
- | 本轮完成 | 根会话中带会话、轮次标识的正常 `task_complete` 记录 |
10
- | 审批申请 | 官方 `PermissionRequest` hook 实际触发 |
11
- | 需要输入 | `request_user_input` / `request_user_input_async` 的 `PreToolUse` |
9
+ | 本轮结束 | 查看结果,继续当前工作或安排下一个任务 |
10
+ | 需要响应 | 回答问题、确认操作,或查看停止和异常原因 |
12
11
 
13
- “本轮完成”表示一次回复正常结束。审批覆盖取决于 Codex 的实际 hook 路径,完整边界见[兼容性与验证](docs/compatibility.md)。普通正文问句、其他 coding agent、远程审批和通知模板编辑器不在首版范围。
12
+ 本轮结束不表示业务任务已验收成功;已停止但结果未知时使用“请查看”的中性提醒。已知的用户取消、子任务和工具间隙不触发根会话接手提醒。各 harness 的覆盖和验证范围见[兼容性与验证](docs/compatibility.md)。WorkBuddy 等待桌面版验证,暂未接入。
14
13
 
15
14
  Hook 安装按 Codex `0.163.0` 的配置协议实现;更早版本需要另行验证,桌面版与 CLI 的实机证据分别记录在兼容性说明中。
16
15
 
16
+ Codex 结构化提问同时通过 hook 与会话日志采集,按原生调用 ID 去重,以覆盖桌面版未执行请求回调的情况。首次启动不补发历史问题;普通正文问句不单独识别。升级时须同时更新 hook 程序和 Windows 服务副本,具体证据见[兼容性记录](docs/compatibility.md)。
17
+
17
18
  ## 开始使用
18
19
 
19
20
  Blip 支持 npm 安装和直接运行可执行文件。npm 包提供对应平台的预编译 Go 程序,安装和使用不需要 Go 编译器;npm 启动器需要 Node.js 20 或更新版本。配置与通知队列保存在用户目录,升级 npm 包不会将它们写入包安装目录。
20
21
 
21
- npm 包名为 `@teamsillybees/blip`,当前预发行版本使用 `next` 标签。本地安装包的构建、安装与发布说明见 [npm 分发](docs/npm-distribution.md)。安装预发行版:
22
+ npm 包名为 `@teamsillybees/blip`,正式版本使用 `latest` 标签。本地安装包的构建、安装与发布说明见 [npm 分发](docs/npm-distribution.md)。安装正式版:
22
23
 
23
24
  ```powershell
24
- npm install -g @teamsillybees/blip@next
25
+ npm install -g @teamsillybees/blip@latest
25
26
  blip configure
26
27
  blip install codex
27
28
  blip start
28
29
  blip test
29
30
  ```
30
31
 
32
+ 当前正式版本为 `0.2.0`,包含多来源接入、Codex 桌面提问补收、通知配置向导、Windows 服务和完成通知的最后回复。可用 `npm install -g @teamsillybees/blip@0.2.0` 安装指定版本。
33
+
31
34
  直接运行单文件时,使用下面的构建方式;构建需要 Go 1.25.8 或更新版本,运行生成的程序不需要安装 Go 或 Node.js。
32
35
 
33
36
  ```powershell
@@ -37,15 +40,15 @@ go build -o bin/blip.exe ./cmd/blip
37
40
 
38
41
  `configure` 是交互式配置向导(也可写作 `config` 或 `setup`),由 [Cobra](https://github.com/spf13/cobra) 管理命令、[Charm Huh](https://github.com/charmbracelet/huh) 提供终端表单。向导支持新增、编辑、启用、停用和删除渠道目的地;飞书填写 Webhook 和可选签名密钥,企业微信填写 Webhook,Gotify 填写服务地址、应用 token 和优先级,自定义 Webhook 支持 Bearer token 或静态请求头。一个渠道可配置多个目的地。
39
42
 
40
- 密钥及可能含凭据的 URL 使用遮蔽输入,编辑时可保留现值;`${环境变量名}` 引用会原样保存。修改先保存在内存中,确认保存后一次写入配置;取消或 Ctrl+C 不保存。已有配置更新前会备份为 `config.json.bak`,若另一程序同时修改了文件,向导会拒绝覆盖并提示重新打开。保存后按提示安装 Codex hook、启动后台进程;修改运行中的配置需要 `stop`、`start` 才能生效。
43
+ 首次配置会填写“设备名称”,默认使用当前计算机名(hostname),可自行修改;之后可在主菜单修改,保存为 `device_name`。`blip init` 也会写入当前计算机名。旧配置缺少该字段时,运行时默认使用当前计算机名,再次打开向导可确认并保存。
44
+
45
+ URL 明文显示并可直接编辑;Token、签名密钥和请求头值使用遮蔽输入,编辑时可保留现值。修改先保存在内存中,确认保存后一次写入配置;取消或 Ctrl+C 不保存。已有配置更新前会备份为 `config.json.bak`,若另一程序同时修改了文件,向导会拒绝覆盖并提示重新打开。保存后按提示安装 Codex hook、启动后台进程;修改运行中的配置需要 `stop`、`start` 才能生效。
41
46
 
42
47
  配置默认保存在 `%APPDATA%\Blip\config.json`。在真实终端运行向导;需要屏幕阅读器友好的文本提示时使用 `blip configure --accessible`。脚本环境可使用 `blip init` 生成示例后编辑 JSON;[配置示例](internal/config/example.json)中的所有目的地默认关闭。
43
48
 
44
- 例如,启用飞书群机器人时,在运行 `start` 的终端设置:
49
+ 例如,启用飞书群机器人时,在配置向导中选择飞书,填写 Webhook URL 和可选的签名密钥,保存后执行:
45
50
 
46
51
  ```powershell
47
- $env:BLIP_FEISHU_URL = 'https://open.feishu.cn/open-apis/bot/v2/hook/替换为你的地址'
48
- $env:BLIP_FEISHU_SECRET = '替换为机器人签名密钥'
49
52
  .\bin\blip.exe install codex
50
53
  .\bin\blip.exe start
51
54
  .\bin\blip.exe test
@@ -56,7 +59,17 @@ $env:BLIP_FEISHU_SECRET = '替换为机器人签名密钥'
56
59
 
57
60
  请将程序放在固定位置后再执行安装;移动程序或更换配置路径后,重新安装 hook。
58
61
 
59
- `start` 在 Windows 隐藏窗口启动后台进程;首次运行只为已有会话建立读取基线,不发送历史完成消息。之后的读取位置与待发通知保存在配置目录下的 `data` 中,停止期间的新记录会在重启后继续读取。首版不设置开机自启,重新登录系统后需要再次启动。
62
+ `start` 在 Windows 隐藏窗口启动普通后台进程,不设置开机自启,重新登录系统后需要再次启动。首次运行只为已有会话建立读取基线,不发送历史完成消息。之后的读取位置与待发通知保存在配置目录下的 `data` 中,停止期间的新记录会在重启后继续读取。
63
+
64
+ 需要开机自动运行时,可注册 Windows 服务。先配置通知渠道并停止普通后台进程,再在同一账户的管理员 PowerShell 中执行:
65
+
66
+ ```powershell
67
+ .\bin\blip.exe service install
68
+ .\bin\blip.exe service start
69
+ .\bin\blip.exe service status
70
+ ```
71
+
72
+ 服务注册为自动(延迟启动),重启后无需登录即可运行。使用 `service stop` 停止、`service uninstall` 停止并卸载;配置和通知数据保留。服务使用独立低权限身份、安装时记录的配置与 Codex 目录,以及单独保存的程序副本。升级、目录权限和自定义配置用法见 [Windows 服务](docs/windows-service.md)。
60
73
 
61
74
  ## 命令
62
75
 
@@ -68,8 +81,11 @@ init 生成配置示例,适合脚本或手动编辑
68
81
  install codex 安装输入与审批 hook
69
82
  uninstall codex 仅移除本配置安装的 Blip hook
70
83
  start / stop 启动后台进程 / 请求平稳停止
84
+ service 管理 Windows 服务(install / uninstall / start / stop / status)
71
85
  run 在当前终端运行
72
86
  status 显示就绪状态、各目的地投递结果与损坏记录数量
87
+ doctor 显示逐来源安装、能力与最近 hook 回调(可加 --source)
88
+ sources 管理来源(list / migrate / add / enable / disable / remove / event-version)
73
89
  test 向所有启用的目的地排入一条测试通知
74
90
  version 显示版本
75
91
  ```
@@ -80,9 +96,23 @@ version 显示版本
80
96
  .\bin\blip.exe --config 'D:\我的工具\Blip\config.json' start
81
97
  ```
82
98
 
83
- 配置变更后执行 `stop`、`start` 生效。后台进程在启动时解析密钥环境变量;hook、停止、卸载和状态查询无需读取这些密钥。`codex_home` 默认为环境变量 `CODEX_HOME`,未设置时使用 `~/.codex`;也可以在配置中指定。`state_dir` 默认为配置文件同目录下的 `data`。相对路径以配置文件目录为基准。
99
+ 配置变更后执行 `stop`、`start` 生效;使用 Windows 服务时执行 `service stop`、`service start`。`codex_home` 默认按 Codex 的 `CODEX_HOME` 设置定位,未设置时使用 `~/.codex`;也可以在配置中指定。`state_dir` 默认为配置文件同目录下的 `data`。相对路径以配置文件目录为基准。服务安装时保存这些默认目录,后续更换目录需要重新安装服务。
100
+
101
+ `status` 的 `running` 表示后台进程持有运行锁,`ready` 表示公共队列和各来源初始检查已完成;`degraded` 表示某个来源受限,须查看 `sources` 中的错误码。损坏的来源游标会暂停该来源,其他来源与已入队通知继续工作。`collector_error` 兼容映射默认 Codex 的错误。`destinations` 按目的地列出投递数量与最近失败记录的 `last_error`,不输出目的地 URL 或凭据。`stop` 可中断长轮询和等待中的网络请求;未确认送达的通知会保留到下次启动。
102
+
103
+ ## 多来源配置
104
+
105
+ 支持多个独立 Codex home、[Claude Code](docs/claude-code.md)、[Hermes](docs/hermes.md) 和 [DSH](docs/dsh.md),使用内置 harness 适配层。旧配置无需修改;需要新增来源时使用:
84
106
 
85
- `status` 的 `running` 表示后台进程持有运行锁,`ready` 表示它已完成一次采集检查。`collector_error` 非空时,完成事件采集遇到了问题,请结合 `data/worker.log` 检查;已入队通知仍独立投递。`destinations` 按目的地列出投递数量与最近失败记录的 `last_error`,不输出目的地 URL 或凭据。`stop` 可中断长轮询和等待中的网络请求;未确认送达的通知会保留到下次启动。
107
+ ```powershell
108
+ blip sources add --source codex-work --harness codex --home 'D:\Agent Homes\codex-work'
109
+ blip install codex --source codex-work
110
+ blip doctor --source codex-work
111
+ blip stop
112
+ blip start
113
+ ```
114
+
115
+ 这会将配置迁移为 v2 并备份原文件。原来的 `codex-default` 保持事件 v1、旧 ID、游标和安装记录;新来源使用事件 v2,webhook 接收端须支持 `schema_version: 2`。来源 ID 与 home 绑定后不能改作另一个会话空间;停用、移除、卸载都保留历史身份。详见[来源管理与迁移](docs/sources.md)和 [webhook v2](docs/webhook-v2.md)。其他 harness 的可用范围以[兼容性记录](docs/compatibility.md)为准。
86
116
 
87
117
  ## 通知目的地
88
118
 
@@ -97,9 +127,23 @@ version 显示版本
97
127
 
98
128
  Gotify 的 `url` 可以包含反向代理子路径,Blip 会在其后追加 `/message`。使用应用 token。自定义 webhook 的 `token` 对应 `Authorization: Bearer ...`,也可以通过 `headers` 指定鉴权;两者不要重复配置 Authorization。
99
129
 
100
- URL、token、secret、header 值都支持 `${环境变量名}`。启用的目的地引用缺失变量时,后台进程拒绝启动;关闭的示例无需准备凭据。不要把填有真实密钥的配置提交到版本库。
130
+ URL、token、secret 和 header 值直接填写在本地配置中,不再支持环境变量引用。升级旧配置时,请将 `${变量名}` 替换为实际值;含此类引用的目的地需要修正后才能启用。不要把填有真实密钥的配置提交到版本库。
131
+
132
+ 默认通知标题显示 `完成 · 项目名 · 设备名` 或 `需要输入 · 项目名 · 设备名`,正文显示对话名和事件时间。时间按运行 Blip 的计算机本地时区显示,包含时区偏移,重试仍显示原事件时间。需要输入时追加问题及 A、B、C、D 等选项;审批归为“需要输入”,正文追加简短的确认提示。Gotify 使用独立标题,飞书和企业微信将标题放在文本首行。例如:
101
133
 
102
- 通知默认包含项目、会话、轮次、发生时间和简短详情。完成附回复摘要,输入附问题与选项,审批附工具与申请原因。中文与 emoji 按 UTF-8 安全截断,企业微信文本限制为 2048 字节;飞书同时限制编码后的请求体大小。
134
+ ```text
135
+ 需要输入 · Blip · 开发电脑
136
+ 实现通知模板
137
+ 时间:2026-11-06 21:30:00 +08:00
138
+
139
+ 请选择通知渠道
140
+ A. 飞书
141
+ B. Gotify
142
+ ```
143
+
144
+ 完成通知在对话名和时间下方追加来源提供的最后一条回复内容,最多 4000 字节;内容为空时省略。默认模板不显示会话 ID 和轮次,结构化 webhook 保留详细字段。中文与 emoji 按 UTF-8 安全截断,企业微信整条文本限制为 2048 字节,较长回复可能进一步截断;飞书同时限制编码后的请求体大小。
145
+
146
+ 对话名读取自 Codex 本地 `session_index.jsonl` 中该会话最新的名称记录,入队后保留;旧通知缺少名称时在发送前尝试补齐。没有名称或索引不可读时显示“未命名对话”。
103
147
 
104
148
  自定义 webhook 的固定版本格式见 [webhook 协议](docs/webhook.md)。
105
149
 
@@ -128,3 +172,5 @@ npm test
128
172
  测试覆盖四类渠道协议、错误响应、Unicode 字节限制、并发去重、独立收据、重试、读取位置恢复,以及真实进程的中文与空格路径、安装卸载、后台启动停止。集成测试仅使用临时 Codex home 和本地 HTTP 服务。`go test -short ./...` 可跳过进程集成测试;具备 C 编译器的环境可运行 `go test -race ./...`。
129
173
 
130
174
  项目约定见[首版需求](docs/requirements.md)、[术语表](GLOSSARY.md)和[架构决策](docs/adr/)。本项目参考 [hellolib/agent-notify](https://github.com/hellolib/agent-notify/tree/ed2842189eff44009a7bbe946b8a1b29bbc983d4) 的适配器、统一消息与渠道发送器分工,代码独立实现。依赖许可见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。
175
+
176
+ 设计与验收路线见[多 harness 事件接入设计](docs/multi-harness-design.md)。公共来源、持久接手关联、四种 harness 及本地延迟统计已实现;Windows 服务到 Gotify 的真实桌面提问链路已实测。其他渠道与部分 harness 交互路径的验证范围见兼容性记录。
@@ -1105,3 +1105,55 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
1105
1105
  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1106
1106
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
1107
1107
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1108
+
1109
+ ## go.yaml.in/yaml/v3 v3.0.5
1110
+
1111
+ This project is covered by two different licenses: MIT and Apache.
1112
+
1113
+ #### MIT License ####
1114
+
1115
+ The following files were ported to Go from C files of libyaml, and thus
1116
+ are still covered by their original MIT license, with the additional
1117
+ copyright staring in 2011 when the project was ported over:
1118
+
1119
+ apic.go emitterc.go parserc.go readerc.go scannerc.go
1120
+ writerc.go yamlh.go yamlprivateh.go
1121
+
1122
+ Copyright (c) 2006-2010 Kirill Simonov
1123
+ Copyright (c) 2006-2011 Kirill Simonov
1124
+
1125
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
1126
+ this software and associated documentation files (the "Software"), to deal in
1127
+ the Software without restriction, including without limitation the rights to
1128
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
1129
+ of the Software, and to permit persons to whom the Software is furnished to do
1130
+ so, subject to the following conditions:
1131
+
1132
+ The above copyright notice and this permission notice shall be included in all
1133
+ copies or substantial portions of the Software.
1134
+
1135
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1136
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1137
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1138
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1139
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1140
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1141
+ SOFTWARE.
1142
+
1143
+ ### Apache License ###
1144
+
1145
+ All the remaining project files are covered by the Apache license:
1146
+
1147
+ Copyright (c) 2011-2019 Canonical Ltd
1148
+
1149
+ Licensed under the Apache License, Version 2.0 (the "License");
1150
+ you may not use this file except in compliance with the License.
1151
+ You may obtain a copy of the License at
1152
+
1153
+ http://www.apache.org/licenses/LICENSE-2.0
1154
+
1155
+ Unless required by applicable law or agreed to in writing, software
1156
+ distributed under the License is distributed on an "AS IS" BASIS,
1157
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1158
+ See the License for the specific language governing permissions and
1159
+ limitations under the License.
package/bin/blip CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamsillybees/blip-darwin-arm64",
3
- "version": "0.2.0-dev.0",
3
+ "version": "0.2.0",
4
4
  "description": "Blip native binary for darwin arm64",
5
5
  "os": [
6
6
  "darwin"