@scotthuang/agent-knock-knock 0.16.5 → 0.16.7
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/CHANGELOG.md +23 -0
- package/README.md +16 -8
- package/connectors/deepseek-harness/README.md +105 -19
- package/connectors/pi/README.md +32 -7
- package/dist/src/claude-agent-discovery-cache.d.ts +6 -0
- package/dist/src/claude-agent-discovery-cache.js +41 -0
- package/dist/src/claude-agent-discovery-cache.js.map +1 -0
- package/dist/src/claude-conversation-routing-cli-adapter.js +8 -2
- package/dist/src/claude-conversation-routing-cli-adapter.js.map +1 -1
- package/dist/src/claude-managed-send-route.js +3 -0
- package/dist/src/claude-managed-send-route.js.map +1 -1
- package/dist/src/claude-native-discovery.d.ts +1 -0
- package/dist/src/claude-native-discovery.js +107 -47
- package/dist/src/claude-native-discovery.js.map +1 -1
- package/dist/src/claude-terminal-admission.d.ts +28 -0
- package/dist/src/claude-terminal-admission.js +53 -0
- package/dist/src/claude-terminal-admission.js.map +1 -0
- package/dist/src/claude-terminal-agent-observation.d.ts +4 -0
- package/dist/src/claude-terminal-agent-observation.js +58 -5
- package/dist/src/claude-terminal-agent-observation.js.map +1 -1
- package/dist/src/claude-terminal-registry-observation.d.ts +18 -0
- package/dist/src/claude-terminal-registry-observation.js +31 -0
- package/dist/src/claude-terminal-registry-observation.js.map +1 -1
- package/dist/src/cli-core.js +7 -4
- package/dist/src/cli-core.js.map +1 -1
- package/dist/src/cli-runtime-context.d.ts +7 -1
- package/dist/src/cli-runtime-context.js +30 -2
- package/dist/src/cli-runtime-context.js.map +1 -1
- package/dist/src/cli-usage.js +1 -1
- package/dist/src/codex-native-cli-adapter.js +30 -1
- package/dist/src/codex-native-cli-adapter.js.map +1 -1
- package/dist/src/codex-native-public-projection.d.ts +155 -1
- package/dist/src/codex-native-public-projection.js +29 -0
- package/dist/src/codex-native-public-projection.js.map +1 -1
- package/dist/src/codex-store-adapter.d.ts +6 -2
- package/dist/src/codex-store-adapter.js +18 -7
- package/dist/src/codex-store-adapter.js.map +1 -1
- package/dist/src/conversation-list.d.ts +1 -1
- package/dist/src/conversation-list.js +24 -3
- package/dist/src/conversation-list.js.map +1 -1
- package/dist/src/conversation-routing-cli-adapter.js +1 -1
- package/dist/src/conversation-routing-cli-adapter.js.map +1 -1
- package/dist/src/conversation-usage-guidance.js +42 -2
- package/dist/src/conversation-usage-guidance.js.map +1 -1
- package/dist/src/herdr-terminal-control-provider.d.ts +1 -0
- package/dist/src/herdr-terminal-control-provider.js +14 -2
- package/dist/src/herdr-terminal-control-provider.js.map +1 -1
- package/dist/src/native-thread-lifecycle-cli-adapter.d.ts +1 -0
- package/dist/src/native-thread-lifecycle-cli-adapter.js +1 -0
- package/dist/src/native-thread-lifecycle-cli-adapter.js.map +1 -1
- package/dist/src/native-thread-lifecycle-cli-contract.d.ts +6 -0
- package/dist/src/native-thread-lifecycle-query-service.js +2 -1
- package/dist/src/native-thread-lifecycle-query-service.js.map +1 -1
- package/dist/src/native-thread-transition-application.d.ts +1 -1
- package/dist/src/native-thread-transition-application.js +23 -1
- package/dist/src/native-thread-transition-application.js.map +1 -1
- package/dist/src/native-thread-transition-verification-adapter.js +5 -10
- package/dist/src/native-thread-transition-verification-adapter.js.map +1 -1
- package/dist/src/semantic-tool-list-projection.js +7 -2
- package/dist/src/semantic-tool-list-projection.js.map +1 -1
- package/dist/src/semantic-tool-private-authority.js +3 -2
- package/dist/src/semantic-tool-private-authority.js.map +1 -1
- package/dist/src/semantic-tool-runtime.js +2 -0
- package/dist/src/semantic-tool-runtime.js.map +1 -1
- package/dist/src/semantic-tool-schemas.js +1 -1
- package/dist/src/semantic-tool-schemas.js.map +1 -1
- package/dist/src/terminal-command-dispatch-preparation.js +8 -6
- package/dist/src/terminal-command-dispatch-preparation.js.map +1 -1
- package/dist/src/terminal-control-provider.d.ts +3 -1
- package/dist/src/terminal-control-provider.js +90 -52
- package/dist/src/terminal-control-provider.js.map +1 -1
- package/dist/src/terminal-identity-authority-cli-adapter.js +6 -3
- package/dist/src/terminal-identity-authority-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-action-policy.js +9 -6
- package/dist/src/terminal-list-action-policy.js.map +1 -1
- package/dist/src/terminal-list-cli-adapter.d.ts +7 -0
- package/dist/src/terminal-list-cli-adapter.js +49 -73
- package/dist/src/terminal-list-cli-adapter.js.map +1 -1
- package/dist/src/terminal-list-facts.d.ts +32 -0
- package/dist/src/terminal-list-facts.js +66 -2
- package/dist/src/terminal-list-facts.js.map +1 -1
- package/dist/src/terminal-list-inventory.d.ts +3 -0
- package/dist/src/terminal-list-inventory.js +15 -16
- package/dist/src/terminal-list-inventory.js.map +1 -1
- package/dist/src/terminal-list-native-identity-recheck.d.ts +8 -2
- package/dist/src/terminal-list-native-identity-recheck.js +17 -2
- package/dist/src/terminal-list-native-identity-recheck.js.map +1 -1
- package/dist/src/terminal-monitor-decision-policy.d.ts +1 -1
- package/dist/src/terminal-permission-control-list-projection.d.ts +1 -1
- package/dist/src/terminal-process-source.d.ts +4 -1
- package/dist/src/terminal-process-source.js +18 -4
- package/dist/src/terminal-process-source.js.map +1 -1
- package/dist/src/terminal-runtime-cli-adapter.d.ts +1 -0
- package/dist/src/terminal-runtime-cli-adapter.js +57 -8
- package/dist/src/terminal-runtime-cli-adapter.js.map +1 -1
- package/docs/command-discovery-performance.md +153 -0
- package/docs/list-output.md +34 -6
- package/docs/operator-guide.md +26 -0
- package/package.json +1 -1
- package/templates/openclaw-skills/agent-knock-knock/SKILL.md +2 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# 单命令发现与定向检查性能记录
|
|
2
|
+
|
|
3
|
+
日期:2026-10-29。基线为 `576f8c5` / core `0.16.6`;改动保留于
|
|
4
|
+
`perf/command-scoped-discovery` 工作区;本记录采集时尚未提交、推送、安装或发布。
|
|
5
|
+
以下数据与测试范围描述的是该开发验证时点,后续发布状态见 CHANGELOG 与对应 Release。
|
|
6
|
+
|
|
7
|
+
## 实测方法
|
|
8
|
+
|
|
9
|
+
修改前先执行 `npm run build`;最终验证使用 `npm run test:fast` 正式重建的 dist。
|
|
10
|
+
所有数据来自本机真实会话、全新 Node v24.19.0 进程,使用同一个 tclaude 可执行文件、
|
|
11
|
+
`~/.tclaude` 配置目录和 CLI 默认 Store。没有计入模型推理或 skill 阅读,也没有向会话发送任务。
|
|
12
|
+
|
|
13
|
+
通过 `NODE_OPTIONS=--require=<probe.cjs>` 预加载:hook
|
|
14
|
+
`ChildProcess.prototype.spawn` 以及同步 child_process 方法,记录启动次数、执行时间和退出状态。
|
|
15
|
+
子进程继承探针但不重复记录包装器内部调用,避免把 tclaude 内部执行二进制再计费。
|
|
16
|
+
表中的耗时是命令墙钟时间;不能用并发子进程累计时间替代它。基线每项一次,最终四个核心项目
|
|
17
|
+
各运行三次取中位数,Status 和显式 no-scan 为一次补测。测量命令均退出 0。
|
|
18
|
+
|
|
19
|
+
| 路径 | 修改前 | 修改后 | 子进程次数 |
|
|
20
|
+
| --- | ---: | ---: | ---: |
|
|
21
|
+
| `list` | 36.145 s | 2.560 s | 208 → 37 |
|
|
22
|
+
| `list --agent claude` | 25.951 s | 1.941 s | 100 → 19 |
|
|
23
|
+
| `list --agent codex` | 14.989 s | 1.214 s | 114 → 24 |
|
|
24
|
+
| `ClaudeNativeClient.inspect (one known identity, fresh peer verification)` | 2.457 s | 0.145 s | 5 → 2 |
|
|
25
|
+
| `status --conversation <same Claude native identity>` | 27.834 s | 3.478 s | 112 → 29 |
|
|
26
|
+
| `list --agent claude --no-approval-scan` | 15.326 s | 2.215 s | 56 → 19 |
|
|
27
|
+
| `list --agent codex --no-approval-scan` | 6.725 s | 1.202 s | 67 → 24 |
|
|
28
|
+
|
|
29
|
+
完整样本与分类计数见 [机器可读记录](command-discovery-performance.json)。
|
|
30
|
+
原始探针、测量驱动、逐次 JSON 输出、NDJSON 和验证日志位于
|
|
31
|
+
`/tmp/akk-command-perf-20261029/`;这些临时文件可能被系统清理。
|
|
32
|
+
核心复现方式:设置 `AKK_NATIVE_CLAUDE_BIN`、`CLAUDE_CONFIG_DIR`,重建后以同一探针执行
|
|
33
|
+
`node dist/src/cli.js list`、两个 `--agent` 变体及同一 `status --conversation`。
|
|
34
|
+
定向 inspect 驱动直接调用实际 `ClaudeNativeClient.inspect`,保留真实 socket peer 检查;
|
|
35
|
+
它的 100 ms 量级数据不等于整个 Status 工具的耗时。
|
|
36
|
+
|
|
37
|
+
## 地板与重复发现
|
|
38
|
+
|
|
39
|
+
- 最终 Claude List 三次 reader 调用分别为 1.548 / 1.514 / 1.620 秒,整个命令为
|
|
40
|
+
1.980 / 1.841 / 1.941 秒,分别约为单次 reader 地板的 1.28 / 1.22 / 1.20 倍。
|
|
41
|
+
整条命令已低于 3 秒,发现部分自然也低于该上限。
|
|
42
|
+
- 全量与 Claude List 的 tclaude 调用从 8 次变成 1 次。Codex List 从 1 次无关 Claude
|
|
43
|
+
调用变成 0 次。定向 inspect 和完整 Claude Status 的 tclaude 调用都为 0。
|
|
44
|
+
- Codex 路径把 tmux 探测从 12 次降至 1 次、lsof 从 17 次降至 5 次、Herdr CLI 从
|
|
45
|
+
48 次降至 3 次。剩余独立 routing-home 文件归属检查继续重新读取。
|
|
46
|
+
- Codex 发现仍需校验 Herdr socket、进程、pane 能力。将同一次发现的 33 个只读 IPC
|
|
47
|
+
原样按顺序重放,耗时 3.398 秒;并发后的整个 Codex List 中位数 1.214 秒。
|
|
48
|
+
这个串行观测地板尚未包含 ps/lsof/tmux/SQLite,已满足 1.5 倍约束。
|
|
49
|
+
- SQLite 的四次查询各有用途(快照完整性、schema、计数、分页),没有删掉验证来压数字;
|
|
50
|
+
与终端和其他 native 发现并发。
|
|
51
|
+
- 显式详细 Claude List:`list --agent claude --approval-scan` 为 4.434 秒、69 次子进程,
|
|
52
|
+
tclaude 仍仅一次。额外耗时属于明确要求的逐窗口详情检查。
|
|
53
|
+
|
|
54
|
+
## 行为变化和安全边界
|
|
55
|
+
|
|
56
|
+
单次 CLI execution 内的发现使用 AsyncLocalStorage 单飞和结果复用;新命令获得新缓存。
|
|
57
|
+
内部路由的输出捕获显式继承同一次执行的发现缓存,独立、并发或嵌套的新命令默认隔离。
|
|
58
|
+
失败 Promise 可重试。端点对象保留 Herdr WeakMap 私有证据,不能深拷贝后误丢 provenance。
|
|
59
|
+
|
|
60
|
+
默认 List 只发现会话、读取基础活动状态和提供可调用性。审批、Composer、原生 turn/items、
|
|
61
|
+
问题与进度详情由 Status、执行前置或显式扫描承担。`--no-approval-scan` 仍禁用扫描;
|
|
62
|
+
`--approval-scan` / MCP `noApprovalScan:false` 请求完整扫描。
|
|
63
|
+
新增 `detail_scan: deferred` / `send_preflight_required` 等说明,不伪造输入授权 token。
|
|
64
|
+
动作契约仍为 35、MCP List 投影仍为 v4;公开参数未增加,原字段未删除。
|
|
65
|
+
MCP 的私有动作解析对精确 terminal 执行详细 List,只检查该目标;其执行命令仍重新校验。
|
|
66
|
+
`--reconcile` 在启用 List 发现缓存标记之前执行,恢复流程不消费只读发现模式。
|
|
67
|
+
|
|
68
|
+
定向 Claude inspect 直接读取目标 registry,保留 UID、进程启动时间、registry、socket
|
|
69
|
+
所有权和 peer 身份验证。终端元数据也按 PID 新鲜读取;无 registry 或经验证的旧格式才保留
|
|
70
|
+
reader 兼容回退,非法记录、进程变化、parked/background 和配置目录冲突不能借回退放行。
|
|
71
|
+
发送意图持久化前后两次检查仍存在;缓存发现后目标变 busy 的测试要求零发送。
|
|
72
|
+
Store authority、消息代次、防重复投递、草稿/审批/问卷输入占用和回调路由均未放宽。
|
|
73
|
+
|
|
74
|
+
Herdr 的 working/idle 取自最后一份已校验 snapshot,只用于展示,不能证明输入可写。
|
|
75
|
+
`blocked` / `done` / 未知或 agent 不匹配不会伪装为审批通过或空闲。Claude `busy` 正确映射为 working。
|
|
76
|
+
|
|
77
|
+
## 验证与剩余限制
|
|
78
|
+
|
|
79
|
+
- `npm run test:fast`:3376 / 3376,fail 0。
|
|
80
|
+
- `npm run typecheck`、`npm run validate:architecture`、`npm run validate:refactor-evidence`:通过。
|
|
81
|
+
- `npm run skill:check`:由正式 build 执行,通过;`git diff --check`:通过。
|
|
82
|
+
- 新增/扩展用例覆盖:跨 runtime 单飞、跨命令隔离、失败重试、定向零枚举、PID 重用/文件权限/
|
|
83
|
+
socket 拒绝、状态变忙后不得发送、端点私有证据保留、fresh resolve、无详情扫描的状态展示、
|
|
84
|
+
明确完整扫描、精确目标隔离、reconcile 不继承发现标记和既有输入围栏。
|
|
85
|
+
- 初轮 fast 有 8 项失败:旧测试默认要求完整扫描,以及新夹具/描述摘要未同步。保留原安全
|
|
86
|
+
断言,明确选择详细扫描、修正真实 catalog 夹具和 schema 文案摘要后全绿;没有删除围栏测试。
|
|
87
|
+
- 按 AGENTS.md 未运行 integration/full/release。此次没有进行真实业务 send/approve;现场验证
|
|
88
|
+
使用只读 List、Status、目标 inspect 和 Herdr 只读探针。
|
|
89
|
+
- 完整 Status 仍约 3.48 秒:它还做终端状态和审批检查。没有声称整个工具已达到 100 ms。
|
|
90
|
+
- 无廉价状态来源的 tmux/未知 Herdr 状态仍显示 unknown,需要 Status;不会为了快猜 idle。
|
|
91
|
+
- 旧 registry 的兼容路径仍可能调用 reader。直接 native inspect 不能证明 interactive-kind 时
|
|
92
|
+
保守拒绝;未通过删掉身份检查兼容未知 metadata。
|
|
93
|
+
- 多配置目录有有界并发,但本机真机只有一个配置目录,未宣称真实多目录场景已验收。
|
|
94
|
+
|
|
95
|
+
## 完整改动文件清单
|
|
96
|
+
|
|
97
|
+
- `config/production-module-ownership.json`
|
|
98
|
+
- `docs/command-discovery-performance.json`
|
|
99
|
+
- `docs/command-discovery-performance.md`
|
|
100
|
+
- `docs/list-output.md`
|
|
101
|
+
- `src/claude-agent-discovery-cache.ts`
|
|
102
|
+
- `src/claude-native-discovery.ts`
|
|
103
|
+
- `src/claude-terminal-agent-observation.ts`
|
|
104
|
+
- `src/claude-terminal-registry-observation.ts`
|
|
105
|
+
- `src/cli-core.ts`
|
|
106
|
+
- `src/cli-runtime-context.ts`
|
|
107
|
+
- `src/cli-usage.ts`
|
|
108
|
+
- `src/codex-native-cli-adapter.ts`
|
|
109
|
+
- `src/codex-native-public-projection.ts`
|
|
110
|
+
- `src/codex-store-adapter.ts`
|
|
111
|
+
- `src/conversation-list.ts`
|
|
112
|
+
- `src/conversation-routing-cli-adapter.ts`
|
|
113
|
+
- `src/conversation-usage-guidance.ts`
|
|
114
|
+
- `src/herdr-terminal-control-provider.ts`
|
|
115
|
+
- `src/semantic-tool-list-projection.ts`
|
|
116
|
+
- `src/semantic-tool-private-authority.ts`
|
|
117
|
+
- `src/semantic-tool-runtime.ts`
|
|
118
|
+
- `src/semantic-tool-schemas.ts`
|
|
119
|
+
- `src/terminal-control-provider.ts`
|
|
120
|
+
- `src/terminal-list-cli-adapter.ts`
|
|
121
|
+
- `src/terminal-list-facts.ts`
|
|
122
|
+
- `src/terminal-list-inventory.ts`
|
|
123
|
+
- `src/terminal-list-native-identity-recheck.ts`
|
|
124
|
+
- `src/terminal-process-source.ts`
|
|
125
|
+
- `src/terminal-runtime-cli-adapter.ts`
|
|
126
|
+
- `test/claude-native-client.test.ts`
|
|
127
|
+
- `test/claude-terminal-registry-observation.test.ts`
|
|
128
|
+
- `test/cli-runtime-context.test.ts`
|
|
129
|
+
- `test/codex-native-cli-adapter.test.ts`
|
|
130
|
+
- `test/codex-sticky-rollout-lifecycle-core.test.ts`
|
|
131
|
+
- `test/codex-store-process-probes.test.ts`
|
|
132
|
+
- `test/conversation-list.test.ts`
|
|
133
|
+
- `test/herdr-terminal-control-provider.test.ts`
|
|
134
|
+
- `test/list-discovery-isolation.test.ts`
|
|
135
|
+
- `test/model-control-cli-closed-loop.test.ts`
|
|
136
|
+
- `test/native-thread-lifecycle-cli-adapter.test.ts`
|
|
137
|
+
- `test/semantic-tool-catalog.test.ts`
|
|
138
|
+
- `test/semantic-tool-private-authority.test.ts`
|
|
139
|
+
- `test/terminal-control-provider.test.ts`
|
|
140
|
+
- `test/terminal-list-cli-adapter.test.ts`
|
|
141
|
+
- `test/terminal-list-inventory.test.ts`
|
|
142
|
+
- `test/terminal-process-source.test.ts`
|
|
143
|
+
- `test/terminal-runtime-cli-adapter.test.ts`
|
|
144
|
+
- `test/test-tiers.json`
|
|
145
|
+
|
|
146
|
+
## 发布复核补充(0.16.7)
|
|
147
|
+
|
|
148
|
+
默认摘要投影曾遗漏空线程分类所需的历史证据,会让同目录的空后台候选重新出现。
|
|
149
|
+
发行复核通过合成默认列表复现并补齐:只对同 Codex home/目录下有未命名 idle 候选的
|
|
150
|
+
多线程组读取现有精确快照,列表仅保留分类所需 ID/status,不输出任务正文。
|
|
151
|
+
未知或读取失败不会推断空历史,也不会隐藏候选;普通组保留摘要快速路径。
|
|
152
|
+
这类歧义组的快照读取可能涉及最新 turn 的 items,因此上文修复前测量不构成该分支的性能保证。
|
|
153
|
+
回归是隔离合成验证,本次未重新执行用户工作会话的派活或回调。
|
package/docs/list-output.md
CHANGED
|
@@ -44,6 +44,25 @@ Watch, with the exact active input revalidated when observation starts. A
|
|
|
44
44
|
terminal-only Watch can observe terminal activity; it does not establish an
|
|
45
45
|
exact native task or prove that task succeeded.
|
|
46
46
|
|
|
47
|
+
For Claude, an idle screen does not by itself authorize managed Send or New
|
|
48
|
+
thread. Each action offer uses that operation's current reader identity
|
|
49
|
+
and idle checks from execution; managed Send additionally checks that a safe
|
|
50
|
+
transcript boundary can be captured. A missing, busy or mismatched reader row,
|
|
51
|
+
or an unsafe transcript boundary, removes the affected managed action and
|
|
52
|
+
provides a recovery explanation. The independent physical Send action retains
|
|
53
|
+
its own input checks. No managed operation silently falls back to physical
|
|
54
|
+
input. `managed_send_readiness` and `thread_lifecycle_readiness` report the
|
|
55
|
+
affected check and next steps without exposing private transcript anchors.
|
|
56
|
+
Execution obtains fresh evidence again, because state can change after the
|
|
57
|
+
list observation.
|
|
58
|
+
|
|
59
|
+
A resumed Claude thread may retain its UUID while running in a new process.
|
|
60
|
+
New thread can safely reattach an existing Session belonging to a conclusively
|
|
61
|
+
inactive process before starting its transition. This preserves history and
|
|
62
|
+
increments the binding generation; it does not ignore native-thread claims or
|
|
63
|
+
relax Store authority. List remains read-only, and unknown process ownership
|
|
64
|
+
or unresolved work still prevents automatic reattachment.
|
|
65
|
+
|
|
47
66
|
For an unresolved Claude terminal identity, List makes one additional fresh
|
|
48
67
|
reader check, shared across the unresolved Claude terminals in that scan. It
|
|
49
68
|
does not send terminal input or trust a registry file alone. If native identity
|
|
@@ -90,15 +109,24 @@ controls or an unrecognized input box stop automatic input and explain what
|
|
|
90
109
|
AKK could not verify. These explanations take precedence over native-identity
|
|
91
110
|
uncertainty. Codex readiness and managed Send rules are unchanged.
|
|
92
111
|
|
|
112
|
+
List defaults to discovery plus current native activity. It defers per-window
|
|
113
|
+
approval, Composer and transcript-boundary checks to Status and execution
|
|
114
|
+
preflight; rows identify this with `detail_scan: "deferred"`. A native Send
|
|
115
|
+
offer with `send_preflight_required: true` is callable but is not a cached grant
|
|
116
|
+
of terminal-input authority. Send still checks the selected live process,
|
|
117
|
+
ownership, transcript boundary and input surface before writing text. Missing
|
|
118
|
+
terminal controls in this mode mean unscanned, not unsupported.
|
|
119
|
+
|
|
93
120
|
Missing screen evidence is separate from an unsafe or unrecognized Composer.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
`
|
|
97
|
-
|
|
121
|
+
Explicit `noApprovalScan: false` (CLI `--approval-scan`) requests the detailed
|
|
122
|
+
scan and current terminal action offers. `noApprovalScan: true` (CLI
|
|
123
|
+
`--no-approval-scan`) continues to disable pane reading, including input-readiness
|
|
124
|
+
checks. Claude physical readiness reports `screen_not_scanned`; use Status or
|
|
125
|
+
the explicit detailed scan to obtain current action offers. If pane capture fails or returns no
|
|
98
126
|
screen excerpt, readiness reports `screen_unavailable`; inspect Status for the
|
|
99
127
|
capture error, restore terminal-provider access, then refresh List. Neither
|
|
100
|
-
case proves that a draft, menu or malformed Composer exists.
|
|
101
|
-
|
|
128
|
+
case proves that a draft, menu or malformed Composer exists. Physical-terminal
|
|
129
|
+
Send offers remain omitted until the existing input checks pass. These reasons and their
|
|
102
130
|
guidance are additive diagnostics, with no action-contract, projection or
|
|
103
131
|
Store-protocol version change.
|
|
104
132
|
|
package/docs/operator-guide.md
CHANGED
|
@@ -97,6 +97,32 @@ terminal Watch can report terminal activity while identity is unresolved; it
|
|
|
97
97
|
cannot promise exact task completion. A count of related managed Sessions is
|
|
98
98
|
history, not proof that this newly discovered conversation is currently bound.
|
|
99
99
|
|
|
100
|
+
Claude can resume the same native thread after its process exits. An unchanged
|
|
101
|
+
thread UUID is expected in that case; the process PID and startup identity must
|
|
102
|
+
still be verified afresh. New thread uses the same safe Session reattachment as
|
|
103
|
+
Send when the prior process is conclusively gone or the same PID has a proven
|
|
104
|
+
new incarnation. AKK preserves the Session history and advances its binding
|
|
105
|
+
generation under the terminal and Store locks, rather than deleting the claim.
|
|
106
|
+
This recovery does not require a manual reconciliation for an otherwise healthy
|
|
107
|
+
Session. Active or unverifiable owners, unfinished Turns or thread transitions,
|
|
108
|
+
and cross-Store authority conflicts still prevent automatic recovery.
|
|
109
|
+
|
|
110
|
+
An idle-looking Claude window alone does not prove managed control is ready.
|
|
111
|
+
List applies each operation's existing reader and idle checks for the current
|
|
112
|
+
process; managed Send also needs a safe transcript boundary
|
|
113
|
+
for acceptance and completion monitoring. When one of these checks fails, List
|
|
114
|
+
explains the missing evidence and does not offer that managed operation. Wait
|
|
115
|
+
for current work to finish and refresh List for reader-state failures; inspect
|
|
116
|
+
Status and the transcript diagnostic for file-access or incomplete-write
|
|
117
|
+
failures. Do not weaken transcript permissions or delete history to force a
|
|
118
|
+
Send. An independently offered physical terminal Send remains a separate,
|
|
119
|
+
explicit choice and cannot promise native task acceptance or completion.
|
|
120
|
+
|
|
121
|
+
List is an observation, not a reservation. Execution repeats the checks before
|
|
122
|
+
input, so a process, thread, file or prompt that changes after listing can still
|
|
123
|
+
cause a refusal. Refresh List after resolving the reported condition; never
|
|
124
|
+
automatically retry a task whose earlier delivery is uncertain.
|
|
125
|
+
|
|
100
126
|
## Command reference
|
|
101
127
|
|
|
102
128
|
Direct slash commands are available in every first-party Host integration:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scotthuang/agent-knock-knock",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.7",
|
|
4
4
|
"description": "Delegate to existing Codex CLI, Codex Desktop, and Claude Code sessions from OpenClaw or compatible controller Hosts, with native direct control and supported terminal fallbacks.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -25,6 +25,8 @@ A Codex `Folder access` / `Trust this folder?` dialog is a persistent local trus
|
|
|
25
25
|
|
|
26
26
|
Present `conversations[]` as **CLI** or **Desktop** using `surface`, and keep Codex/Claude Code as the agent type. Select the displayed `conversation_id` and its advertised operation; AKK chooses the connection internally. Do not make separate user-facing backend and terminal lists, repeat raw discovery arrays, or count Watches as additional conversations or tasks. Preserve unavailable actions, current questions/approvals, and management/recovery records. Scoped controls, when present, are operations on exact targets within a row, not extra conversations.
|
|
27
27
|
|
|
28
|
+
Default List defers detailed approval, composer and native task scans. `detail_scan: deferred` or `approval_state.scanned: false` means the detail was not checked, not that no approval or input blocker exists. Use the advertised Status action for details; an explicit detailed scan is available through `noApprovalScan: false` (CLI `--approval-scan`). Send and other mutations still validate fresh target identity, input ownership and blockers before execution; List observations never authorize cached input.
|
|
29
|
+
|
|
28
30
|
Explain each row's `usage` in the user's language: `summary` says whether it can be used now, `available` says what for, `limitations` explains what is unavailable, and `next_steps` gives concrete actions. Do not merely show missing capability switches or internal error codes. Guidance is recomputed from current actions, activity and blockers; it neither grants authority nor overrides `available_actions`. An idle native Claude conversation without Watch is still usable when Send is offered: send the requested task and retain its automatically created Turn or Watch. A terminal-only Watch observes terminal activity, not exact native task completion.
|
|
29
31
|
|
|
30
32
|
An unresolved Claude terminal receives one additional fresh reader check during List, shared across unresolved panes in that scan, without terminal input. A separate read-only check can explain that the foreground window is in the background-session interface only when its owned registry and live process incarnation verify that role. This role does not mean the window cannot receive input. When its real `terminal_user_explicit` Send is offered, explain: 可以向此窗口发送任务。AKK 会输入文字并提交,但目前无法可靠确认后台任务的接受和完成状态;请在窗口中查看执行结果。 Without that physical action, the user can continue manually or start an ordinary foreground conversation and refresh List. Reopening the same background conversation does not add native acceptance or completion proof. This diagnostic never binds a background worker, grants actions, or authorizes daemon/claim-socket access.
|