@dsh-cc/subagent-resume-pins 0.6.0 → 0.6.2
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.i18n.yaml +6 -0
- package/README.md +2 -0
- package/README.zh.md +44 -0
- package/package.json +7 -7
package/README.i18n.yaml
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
|
2
|
+
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
|
+
# after editing either side, bring the other along and re-record with:
|
|
4
|
+
# pnpm check:readme --write
|
|
5
|
+
README.md: f65b3fc4d5596fa1d82cce37761d9cf2e46b7ffb
|
|
6
|
+
README.zh.md: 1e50be0732905dd96d7b46ef0df225f1dafa0141
|
package/README.md
CHANGED
package/README.zh.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# @dsh-cc/subagent-resume-pins
|
|
2
|
+
|
|
3
|
+
[English](README.md) | 中文
|
|
4
|
+
|
|
5
|
+
面向可续接的后台子代理的固定恢复描述符("resume pins")。
|
|
6
|
+
设计记录:`docs/plans/2026-09-04-subagent-resume-pins.md`。
|
|
7
|
+
|
|
8
|
+
对后台子代理的冷恢复(父会话已销毁,随后新 Context 在同一持久化根上启动,并以
|
|
9
|
+
`send_message` 寻址该子代理)会恢复 harness 描述符的头部——persona、工具过滤、模型路由——
|
|
10
|
+
但会丢弃其余所有 spawn 时的 `AgentOptions` 字段,尤其是别名盖戳的
|
|
11
|
+
`reasoningEffort` 和 `maxTokens`。本包弥补这一缺口:spawn 路径把子代理生效的运行时
|
|
12
|
+
配置钉存到磁盘,恢复路径再重新应用——显式可见,绝不静默。
|
|
13
|
+
|
|
14
|
+
## 挂载内容
|
|
15
|
+
|
|
16
|
+
一个 cordis 插件(`apply`),包含:
|
|
17
|
+
|
|
18
|
+
- 一个 **`PinStore`**(`pinsRoot` 下每个子代理一个原子化的 `<childId>.json` 文件),
|
|
19
|
+
以 `resumePinStore` 服务发布,使 Task 插件的 spawn 捕获与门和 overlay 共享同一缓存;
|
|
20
|
+
- 一个针对 `send_message` 到无存活 Activation 的钉存子代理的 **`tools/pre-execute`
|
|
21
|
+
恢复门**:会话存在性(`PIN_ORPHANED`)、pin 可读性(`PIN_UNREADABLE`)、
|
|
22
|
+
workspace 存在性/一致性(`WORKSPACE_MISSING`、`WORKSPACE_CHANGED`)、定义重指纹
|
|
23
|
+
(`DEFINITION_CHANGED`)、钉存工具可用性(`PINNED_TOOL_UNAVAILABLE`)、钉存路由
|
|
24
|
+
可用性(`SUBAGENT_MODEL_UNAVAILABLE`)——每次拒绝都会**在**拒绝返回**之前**持久化进
|
|
25
|
+
pin(`resume.state='blocked'`);
|
|
26
|
+
- 一个 **`agent/request` overlay**,把钉存的
|
|
27
|
+
`{provider, model, reasoningEffort, maxTokens}` 元组逐字段(含缺席)应用到
|
|
28
|
+
每个恢复的轮次,无论由谁恢复;
|
|
29
|
+
- **`tools/post-execute`** 在 `send_message` 上加通知前缀,并在 `list_agents` 上
|
|
30
|
+
附注 `resumeState`/`definitionChanged`;
|
|
31
|
+
- **`subagents-resume` 设置 namespace**(kebab-case),提供策略开关
|
|
32
|
+
`onUnavailableModel`、`onDefinitionChanged`、`onWorkspaceChanged`
|
|
33
|
+
(默认 `resume-with-notice`,可选 `block`,模型路由的兜底为 `route-current`;
|
|
34
|
+
always-block 条件没有安全回退)。
|
|
35
|
+
|
|
36
|
+
未挂载时零开销:pin 只是不被读取,行为与旧版一致。只有钉存过的子代理受影响;
|
|
37
|
+
缺 pin 即旧版/外来子代理(直接放行),发往存活 Activation 的同 epoch steer 投递不受影响。
|
|
38
|
+
|
|
39
|
+
## 组合
|
|
40
|
+
|
|
41
|
+
cc 预设挂载该插件(`cc-resume-pins`,位于 `cc-services` isolate 组内),并传
|
|
42
|
+
`pinsRoot: !!js dshHomePath('sessions', 'resume-pins')`——与 harness 基础补丁的
|
|
43
|
+
jsonl 会话持久化根同址——且挂载于 `tool-task` **之前**,后者的 spawn 捕获优先取共享的
|
|
44
|
+
服务级 store。独立使用方可改为向 Task 插件配置传 `resumePins: { pinsRoot }`。
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dsh-cc/subagent-resume-pins",
|
|
3
3
|
"description": "Pinned resume descriptors for continuable background subagents",
|
|
4
|
-
"version": "0.6.
|
|
4
|
+
"version": "0.6.2",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/dsh-cc/dsh-cc.git",
|
|
@@ -53,12 +53,12 @@
|
|
|
53
53
|
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1",
|
|
54
54
|
"@deepseek-ai/dsh-settings": ">=0.1.2-rc.1",
|
|
55
55
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
56
|
-
"@dsh-cc/
|
|
57
|
-
"@dsh-cc/
|
|
56
|
+
"@dsh-cc/model-aliases": "^0.6.2",
|
|
57
|
+
"@dsh-cc/claude-code-agents": "^0.6.2"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@dsh-cc/
|
|
61
|
-
"@dsh-cc/
|
|
60
|
+
"@dsh-cc/claude-code-agents": "^0.6.2",
|
|
61
|
+
"@dsh-cc/model-aliases": "^0.6.2"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@deepseek-ai/cordis": "link:../../../../deepseek-harness/vendor/cordis",
|
|
@@ -69,8 +69,8 @@
|
|
|
69
69
|
"@deepseek-ai/dsh-settings": "link:../../../../deepseek-harness/packages/settings/settings",
|
|
70
70
|
"@deepseek-ai/dsh-tools": "link:../../../../deepseek-harness/packages/core/tools",
|
|
71
71
|
"@deepseek-ai/schemastery": "link:../../../../deepseek-harness/vendor/schemastery",
|
|
72
|
-
"@dsh-cc/claude-code-agents": "^0.6.
|
|
73
|
-
"@dsh-cc/model-aliases": "^0.6.
|
|
72
|
+
"@dsh-cc/claude-code-agents": "^0.6.2",
|
|
73
|
+
"@dsh-cc/model-aliases": "^0.6.2"
|
|
74
74
|
},
|
|
75
75
|
"publishConfig": {
|
|
76
76
|
"access": "public"
|