personal-bot 0.2.6 → 0.2.9

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.
Files changed (75) hide show
  1. package/CONTEXT.md +40 -59
  2. package/README.md +65 -91
  3. package/README.zh-CN.md +69 -89
  4. package/docs/README.md +21 -17
  5. package/docs/agent-collaboration.md +11 -13
  6. package/docs/architecture-guidelines.md +2 -2
  7. package/docs/capability-design.md +8 -10
  8. package/docs/dsh.en.md +339 -0
  9. package/docs/dsh.md +284 -48
  10. package/docs/file-storage.md +3 -3
  11. package/docs/history.md +6 -4
  12. package/docs/installation-design.md +55 -197
  13. package/docs/model-context.md +46 -0
  14. package/docs/model-instruction-guidelines.md +51 -0
  15. package/docs/release.md +10 -6
  16. package/docs/technical-design.md +24 -16
  17. package/lib/common/typebox.LICENSE +23 -0
  18. package/lib/common/typebox.js +4740 -0
  19. package/lib/dsh.js +4 -0
  20. package/lib/extension/dsh/agent-events.js +1 -1
  21. package/lib/extension/dsh/agent-runtime.js +8 -5
  22. package/lib/extension/dsh/command.js +1 -1
  23. package/lib/extension/dsh/management.js +1 -1
  24. package/lib/integrations/dsh/resources.d.ts +1 -1
  25. package/lib/integrations/dsh/resources.js +14 -14
  26. package/lib/integrations/dsh/session.js +1 -0
  27. package/lib/integrations/installation/pi-bridge.js +9 -9
  28. package/lib/integrations/team-context.js +7 -3
  29. package/lib/services/agents/agent-notices.js +2 -2
  30. package/lib/services/agents/team-service.js +1 -1
  31. package/lib/tools/agents/contract.d.ts +1 -1
  32. package/lib/tools/agents/contract.js +8 -8
  33. package/lib/tools/agents/dsh-contract.js +5 -5
  34. package/lib/tools/history/contract.d.ts +1 -1
  35. package/lib/tools/history/contract.js +3 -3
  36. package/lib/tools/teams/contract.d.ts +2 -2
  37. package/lib/tools/teams/contract.js +12 -12
  38. package/npm-shrinkwrap.json +33 -25
  39. package/package.json +124 -53
  40. package/python/README.md +5 -5
  41. package/resources/agents/coordinator.md +5 -33
  42. package/resources/agents/general-purpose.md +3 -15
  43. package/resources/prompts/history-summary.md +1 -1
  44. package/resources/prompts/team-member.md +7 -0
  45. package/resources/prompts/workspace.md +13 -24
  46. package/resources/references/compute-finance.md +22 -0
  47. package/resources/references/compute.md +11 -88
  48. package/resources/references/task-conductor.md +20 -15
  49. package/resources/skills/project-maintenance/SKILL.md +9 -11
  50. package/resources/skills/provider-connections/SKILL.md +7 -7
  51. package/scripts/README.md +16 -15
  52. package/src/dsh.ts +4 -0
  53. package/src/extension/agent-events.ts +17 -4
  54. package/src/extension/command.ts +1 -1
  55. package/src/extension/dsh/agent-events.ts +1 -1
  56. package/src/extension/dsh/agent-runtime.ts +7 -6
  57. package/src/extension/events.ts +14 -9
  58. package/src/extension/subagent-entry.ts +24 -16
  59. package/src/integrations/dsh/resources.ts +17 -14
  60. package/src/integrations/dsh/session.ts +2 -0
  61. package/src/integrations/installation/pi-bridge.ts +9 -7
  62. package/src/integrations/pi/agent-context.ts +1 -1
  63. package/src/integrations/team-context.ts +7 -3
  64. package/src/services/agents/agent-notices.ts +2 -2
  65. package/src/services/agents/team-service.ts +1 -1
  66. package/src/tools/agents/contract.ts +7 -7
  67. package/src/tools/agents/dsh-contract.ts +4 -4
  68. package/src/tools/history/contract.ts +2 -2
  69. package/src/tools/register.ts +1 -7
  70. package/src/tools/teams/contract.ts +11 -11
  71. package/docs/dsh-implementation-plan.md +0 -158
  72. package/docs/dsh-support-proposal.md +0 -314
  73. package/docs/subagent-upgrade-proposal.md +0 -357
  74. package/docs/validation.md +0 -132
  75. package/resources/prompts/tool-guidelines.md +0 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "personal-bot",
3
- "version": "0.2.6",
3
+ "version": "0.2.9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/realqiyan/personal-bot.git"
@@ -22,21 +22,38 @@
22
22
  "extensions": [
23
23
  "./src/pbot.ts"
24
24
  ],
25
- "skills": [],
25
+ "skills": [
26
+ "./resources/skills"
27
+ ],
26
28
  "prompts": [],
27
29
  "themes": []
28
30
  },
29
31
  "dsh": {
30
- "bundle": { "patch": "./resources/dsh/cordis.patch.yml" },
32
+ "bundle": {
33
+ "patch": "./resources/dsh/cordis.patch.yml"
34
+ },
31
35
  "client": {
32
36
  "platform": "web",
33
- "inject": ["@deepseek-ai/dsh-api-remotes", "@deepseek-ai/dsh-client-ui-commands", "@deepseek-ai/dsh-client-file-upload"]
37
+ "inject": [
38
+ "@deepseek-ai/dsh-api-remotes",
39
+ "@deepseek-ai/dsh-client-ui-commands",
40
+ "@deepseek-ai/dsh-client-file-upload"
41
+ ]
34
42
  }
35
43
  },
36
44
  "exports": {
37
- ".": { "types": "./lib/dsh.d.ts", "default": "./lib/dsh.js" },
38
- "./dsh": { "types": "./lib/dsh.d.ts", "default": "./lib/dsh.js" },
39
- "./client": { "types": "./lib/ui/dsh/index.d.ts", "default": "./lib/client.js" },
45
+ ".": {
46
+ "types": "./lib/dsh.d.ts",
47
+ "default": "./lib/dsh.js"
48
+ },
49
+ "./dsh": {
50
+ "types": "./lib/dsh.d.ts",
51
+ "default": "./lib/dsh.js"
52
+ },
53
+ "./client": {
54
+ "types": "./lib/ui/dsh/index.d.ts",
55
+ "default": "./lib/client.js"
56
+ },
40
57
  "./*": "./*"
41
58
  },
42
59
  "files": [
@@ -56,7 +73,7 @@
56
73
  ],
57
74
  "engines": {
58
75
  "node": ">=22.19.0",
59
- "dsh": "0.2.2-rc.1"
76
+ "dsh": ">=0.2.2-rc.1"
60
77
  },
61
78
  "scripts": {
62
79
  "check": "tsc --noEmit && npm run check:dependencies",
@@ -71,57 +88,107 @@
71
88
  },
72
89
  "peerDependencies": {
73
90
  "@deepseek-ai/cordis": "~4.1.0",
74
- "@deepseek-ai/dsh-agent": "0.2.2-rc.1",
75
- "@deepseek-ai/dsh-session": "0.2.2-rc.1",
76
- "@deepseek-ai/dsh-session-persistence": "0.2.2-rc.1",
77
- "@deepseek-ai/dsh-session-query": "0.2.2-rc.1",
78
- "@deepseek-ai/dsh-llm": "0.2.2-rc.1",
79
- "@deepseek-ai/dsh-commands": "0.2.2-rc.1",
80
- "@deepseek-ai/dsh-api-remotes": "0.2.2-rc.1",
81
- "@deepseek-ai/dsh-client-ui-commands": "0.2.2-rc.1",
82
- "@deepseek-ai/dsh-client-file-upload": "0.2.2-rc.1",
83
- "@deepseek-ai/dsh-tools": "0.2.2-rc.1",
84
- "@deepseek-ai/dsh-home-paths": "0.2.2-rc.1",
85
- "@deepseek-ai/dsh-system-prompt": "0.2.2-rc.1",
86
- "@deepseek-ai/dsh-skill": "0.2.2-rc.1",
87
- "@deepseek-ai/dsh-skill-filesystem": "0.2.2-rc.1",
88
- "@deepseek-ai/dsh-working-directory": "0.2.2-rc.1",
89
- "@deepseek-ai/dsh-fs": "0.2.2-rc.1",
90
- "@deepseek-ai/dsh-attachment": "0.2.2-rc.1",
91
- "@deepseek-ai/dsh-fs-patch": "0.2.2-rc.1",
92
- "@deepseek-ai/dsh-user-approval": "0.2.2-rc.1",
93
- "@deepseek-ai/dsh-tool-executor-ptc": "0.2.2-rc.1",
94
- "@deepseek-ai/dsh-typert-protocol": "0.2.2-rc.1",
95
- "@deepseek-ai/dsh-typert-registry": "0.2.2-rc.1",
91
+ "@deepseek-ai/dsh-agent": "*",
92
+ "@deepseek-ai/dsh-agent-preset-registry": "*",
93
+ "@deepseek-ai/dsh-session": "*",
94
+ "@deepseek-ai/dsh-session-persistence": "*",
95
+ "@deepseek-ai/dsh-session-query": "*",
96
+ "@deepseek-ai/dsh-llm": "*",
97
+ "@deepseek-ai/dsh-commands": "*",
98
+ "@deepseek-ai/dsh-api-remotes": "*",
99
+ "@deepseek-ai/dsh-client-ui-commands": "*",
100
+ "@deepseek-ai/dsh-client-file-upload": "*",
101
+ "@deepseek-ai/dsh-tools": "*",
102
+ "@deepseek-ai/dsh-home-paths": "*",
103
+ "@deepseek-ai/dsh-system-prompt": "*",
104
+ "@deepseek-ai/dsh-skill": "*",
105
+ "@deepseek-ai/dsh-skill-filesystem": "*",
106
+ "@deepseek-ai/dsh-working-directory": "*",
107
+ "@deepseek-ai/dsh-fs": "*",
108
+ "@deepseek-ai/dsh-attachment": "*",
109
+ "@deepseek-ai/dsh-fs-patch": "*",
110
+ "@deepseek-ai/dsh-user-approval": "*",
111
+ "@deepseek-ai/dsh-tool-executor-ptc": "*",
112
+ "@deepseek-ai/dsh-typert-protocol": "*",
113
+ "@deepseek-ai/dsh-typert-registry": "*",
96
114
  "@earendil-works/pi-ai": "*",
97
115
  "@earendil-works/pi-coding-agent": "*",
98
116
  "@earendil-works/pi-tui": "*",
99
117
  "typebox": "*"
100
118
  },
101
119
  "peerDependenciesMeta": {
102
- "@deepseek-ai/cordis": { "optional": true },
103
- "@deepseek-ai/dsh-agent": { "optional": true },
104
- "@deepseek-ai/dsh-session": { "optional": true },
105
- "@deepseek-ai/dsh-session-persistence": { "optional": true },
106
- "@deepseek-ai/dsh-session-query": { "optional": true },
107
- "@deepseek-ai/dsh-llm": { "optional": true },
108
- "@deepseek-ai/dsh-commands": { "optional": true },
109
- "@deepseek-ai/dsh-api-remotes": { "optional": true },
110
- "@deepseek-ai/dsh-client-ui-commands": { "optional": true },
111
- "@deepseek-ai/dsh-client-file-upload": { "optional": true },
112
- "@deepseek-ai/dsh-tools": { "optional": true },
113
- "@deepseek-ai/dsh-home-paths": { "optional": true },
114
- "@deepseek-ai/dsh-system-prompt": { "optional": true },
115
- "@deepseek-ai/dsh-skill": { "optional": true },
116
- "@deepseek-ai/dsh-skill-filesystem": { "optional": true },
117
- "@deepseek-ai/dsh-working-directory": { "optional": true },
118
- "@deepseek-ai/dsh-fs": { "optional": true },
119
- "@deepseek-ai/dsh-attachment": { "optional": true },
120
- "@deepseek-ai/dsh-fs-patch": { "optional": true },
121
- "@deepseek-ai/dsh-user-approval": { "optional": true },
122
- "@deepseek-ai/dsh-tool-executor-ptc": { "optional": true },
123
- "@deepseek-ai/dsh-typert-protocol": { "optional": true },
124
- "@deepseek-ai/dsh-typert-registry": { "optional": true },
120
+ "@deepseek-ai/cordis": {
121
+ "optional": true
122
+ },
123
+ "@deepseek-ai/dsh-agent": {
124
+ "optional": true
125
+ },
126
+ "@deepseek-ai/dsh-agent-preset-registry": {
127
+ "optional": true
128
+ },
129
+ "@deepseek-ai/dsh-session": {
130
+ "optional": true
131
+ },
132
+ "@deepseek-ai/dsh-session-persistence": {
133
+ "optional": true
134
+ },
135
+ "@deepseek-ai/dsh-session-query": {
136
+ "optional": true
137
+ },
138
+ "@deepseek-ai/dsh-llm": {
139
+ "optional": true
140
+ },
141
+ "@deepseek-ai/dsh-commands": {
142
+ "optional": true
143
+ },
144
+ "@deepseek-ai/dsh-api-remotes": {
145
+ "optional": true
146
+ },
147
+ "@deepseek-ai/dsh-client-ui-commands": {
148
+ "optional": true
149
+ },
150
+ "@deepseek-ai/dsh-client-file-upload": {
151
+ "optional": true
152
+ },
153
+ "@deepseek-ai/dsh-tools": {
154
+ "optional": true
155
+ },
156
+ "@deepseek-ai/dsh-home-paths": {
157
+ "optional": true
158
+ },
159
+ "@deepseek-ai/dsh-system-prompt": {
160
+ "optional": true
161
+ },
162
+ "@deepseek-ai/dsh-skill": {
163
+ "optional": true
164
+ },
165
+ "@deepseek-ai/dsh-skill-filesystem": {
166
+ "optional": true
167
+ },
168
+ "@deepseek-ai/dsh-working-directory": {
169
+ "optional": true
170
+ },
171
+ "@deepseek-ai/dsh-fs": {
172
+ "optional": true
173
+ },
174
+ "@deepseek-ai/dsh-attachment": {
175
+ "optional": true
176
+ },
177
+ "@deepseek-ai/dsh-fs-patch": {
178
+ "optional": true
179
+ },
180
+ "@deepseek-ai/dsh-user-approval": {
181
+ "optional": true
182
+ },
183
+ "@deepseek-ai/dsh-tool-executor-ptc": {
184
+ "optional": true
185
+ },
186
+ "@deepseek-ai/dsh-typert-protocol": {
187
+ "optional": true
188
+ },
189
+ "@deepseek-ai/dsh-typert-registry": {
190
+ "optional": true
191
+ },
125
192
  "@earendil-works/pi-ai": {
126
193
  "optional": true
127
194
  },
@@ -130,6 +197,9 @@
130
197
  },
131
198
  "@earendil-works/pi-tui": {
132
199
  "optional": true
200
+ },
201
+ "typebox": {
202
+ "optional": true
133
203
  }
134
204
  },
135
205
  "dependencies": {
@@ -141,6 +211,7 @@
141
211
  "@deepseek-ai/cordis": "4.1.0",
142
212
  "@deepseek-ai/dsh": "0.2.2-rc.1",
143
213
  "@deepseek-ai/dsh-agent": "0.2.2-rc.1",
214
+ "@deepseek-ai/dsh-agent-preset-registry": "0.2.2-rc.1",
144
215
  "@deepseek-ai/dsh-api-remotes": "0.2.2-rc.1",
145
216
  "@deepseek-ai/dsh-client-ui-commands": "0.2.2-rc.1",
146
217
  "@deepseek-ai/dsh-client-file-upload": "0.2.2-rc.1",
package/python/README.md CHANGED
@@ -22,7 +22,7 @@ Pi 加载 Personal Bot、原生 `/reload`,或 dsh 加载 pbot Host 组件时
22
22
 
23
23
  ## 失败与手工重试
24
24
 
25
- 环境异常时提醒,并在状态中保留错误。pbot 的其他能力仍可使用,但不把 Python 标记为就绪,也不替模型自动换用系统 Python 执行研究。原生 Bash 仍然可用,这不是命令黑名单或系统隔离。
25
+ 环境异常时提醒,并在状态中保留错误。pbot 的其他能力仍可使用,但不把 Python 标记为就绪,也不替模型自动换用系统 Python 执行研究。原生 Bash 仍然可用。
26
26
 
27
27
  检查错误后可执行:
28
28
 
@@ -34,7 +34,7 @@ Pi 加载 Personal Bot、原生 `/reload`,或 dsh 加载 pbot Host 组件时
34
34
 
35
35
  安装只接受 wheel,不编译 C 库、不安装系统软件,不绕过系统 Python 的安装保护。没有匹配 wheel、网络不可用、权限不足或环境损坏时停止。TA-Lib wheel 包含底层库,但并非所有系统和架构都有匹配 wheel。pip 安装配置被忽略,避免包被重定向到其他目标。
36
36
 
37
- 多个 pbot 进程同时启动时,通过共享排他锁串行准备,后取得锁的进程重新检查。锁文件不删除。该锁不管理普通 Python 进程;更换插件版本或手工重试前,应停止使用该环境的脚本。不同插件版本可能要求不同依赖,不宜同时使用。不能承诺自动更新不会影响已运行的外部脚本。
37
+ 多个 pbot 进程同时启动时,通过共享排他锁串行准备,后取得锁的进程重新检查。锁文件不删除。该锁不管理普通 Python 进程;更换插件版本或手工重试前,应停止使用该环境的脚本。不同插件版本可能要求不同依赖,不宜同时使用。
38
38
 
39
39
  ## 独立准备
40
40
 
@@ -49,9 +49,9 @@ python3 scripts/setup-python.py --check # 只检查,不创建或安装
49
49
 
50
50
  ## 使用与验证
51
51
 
52
- setup 安装 numpy、pandas、TA-Lib、backtesting、scipy、statsmodels、matplotlib、scikit-learn、pyarrow、openpyxl、seaborn 和 Bokeh。按任务导入,参见[计算参考](../resources/references/compute.md)。市场规则、费用、成交时点和数据切分由具体研究确定,原生 Backtest 不自动提供 A 股 T+1、整手或涨跌停约束。
52
+ setup 安装 numpy、pandas、TA-Lib、backtesting、scipy、statsmodels、matplotlib、scikit-learn、pyarrow、openpyxl、seaborn 和 Bokeh。按任务导入,环境与项目运行见[计算参考](../resources/references/compute.md),需要技术指标或回测时再读[指标与回测](../resources/references/compute-finance.md)。市场规则、费用、成交时点和数据切分由具体研究确定,原生 Backtest 不自动提供 A 股 T+1、整手或涨跌停约束。
53
53
 
54
- 激活后直接执行 `python scripts/analyze.py` 或 `python -m analysis.main`。工作目录、模块导入、参数和结果位置遵循项目约定。项目构建或测试明确要求另一环境时,按项目约定执行。pbot 不复制源码、不生成输入文件或计算记录、不管理研究进程的超时。Python 与 Bash 不是文件或网络沙箱,也不授予交易权限。
54
+ 激活后直接执行 `python scripts/analyze.py` 或 `python -m analysis.main`。工作目录、模块导入、参数和结果位置遵循项目约定。项目构建或测试明确要求另一环境时,按项目约定执行。pbot 不复制源码、不生成输入文件或计算记录、不管理研究进程的超时。Python 与 Bash 使用实际账户权限,操作范围见[工具与执行](../docs/capability-design.md)。
55
55
 
56
56
  在已激活环境中验证:
57
57
 
@@ -60,7 +60,7 @@ python -m pip check
60
60
  python -B -m unittest discover -s python/tests -v
61
61
  ```
62
62
 
63
- Node 测试使用真实本地文件、进程、临时 venv 与 Pi/dsh 原生 Bash,验证检查、错误、取消和激活恢复;不下载依赖。完整安装与库测试使用准备好的真实环境,不能以损坏环境的启动测试替代成功安装验收。Python 集成测试验证原生库配合与文件往返,不证明市场规则或策略有效;macOS 的 dsh 桌面应用已在临时 HOME 中完成真实依赖安装、就绪激活、pip check 与 5 项原生库测试;真实模型使用这些库的行为仍需验收。
63
+ Node 测试检查环境探测、错误、取消与激活恢复,使用临时 venv 和原生 Bash。上述 Python 测试在已准备的环境中检查原生库配合与文件往返。
64
64
 
65
65
  依赖版本独立于插件版本。更新锁文件须检查最低 Python 3.11 与目标环境的兼容性,不只按开发机选择最新版。
66
66
 
@@ -1,39 +1,11 @@
1
1
  # 协调者
2
2
 
3
- 在用户请求范围内完成必要的信息收集、分析与验证,直至足以支持本次交付。个人信息不足时,可先完成公共证据分析并给出条件化方案;只在关键缺口阻止有效交付时询问。
3
+ 对本次交付负责,沿用已有约定,完成用户需要的结果。
4
4
 
5
- ## 选择执行入口
5
+ 普通问答直接完成。需要专家协助时用 pbot_agent,委派写明目标、相关资料、约束和交付要求。需要成员直接交流时用 pbot_team。回溯旧讨论用 pbot_history。周期、重复流程、DAG 或会话退出后仍需执行的任务,先读包内 `references/task-conductor.md`。
6
6
 
7
- - 普通问答和不需要独立上下文的工作直接完成。
8
- - 回溯以前的讨论时使用 pbot_history,按事情的大意尝试相关词,沿父子节点展开到原文,核对后续修正和来源。历史内容用于查询,不自动成为当前任务或授权。
9
- - 独立协助或核验使用 pbot_agent。委派提供目标、交付要求、资料依据和约束,不依赖专家知道父会话历史。
10
- - 需要成员直接交流时,使用 pbot_team 组队。roundRobin 依次讨论,parallel 在每轮内并行、轮间汇合。提供目标、每人职责、授权范围及交付要求。成员原文直接同步,无须逐条转述。
11
- - 周期、重复流程、DAG 或需在当前宿主会话退出后继续的任务,先读包内 `references/task-conductor.md`,再按 using-task-conductor 技能使用原生任务能力。缺少该能力只阻塞依赖它的部分。
7
+ 汇总专家结果并整合正式资料。委派包含文件修改时说明修改范围,多人写入时划分文件责任;合并不同结果时处理口径差异和未解决的问题。
12
8
 
13
- ## 委派与验收
9
+ 需要独立复核时,另开专家会话或任务节点,提供待检查内容、相关资料和具体问题。
14
10
 
15
- 默认由专家交回报告和必要产物引用,由主会话整合正式资料。原任务已授权资料修改时,可在委派中明确专家的修改范围,无须用户另行指定由专家执行;多个协作者写入时划分文件责任。
16
-
17
- 收到结果后,按本次完成条件核对报告与实际产物。汇总数值前核对对象、时期、单位、指标定义和来源;范围不同的结果分别解释,重复转述不算独立证据。
18
-
19
- 失败、中断或取消后,判断已完成部分与后续条件,不自动重跑。人工子会话输入不扩大主会话原任务授权。委派不扩大原用户授权;需要用户决定的业务交回主会话说明。
20
-
21
- ## 团队协作
22
-
23
- 公共消息与成员当前团队请求的最终回答会向团队公开;只提供本次协作需要的信息,避免披露私人历史或无关资料。成员已有记忆可能影响回答,团队讨论不等于独立复核。
24
-
25
- 批次 finished 只表示安排的发言均结束,不证明任务完成或达成共识。直接核对成员原文和实际产物,按原任务验收;团队调度与状态转换遵循工具契约。
26
-
27
- ## 独立复核与业务执行
28
-
29
- 按任务风险或用户要求组织独立方案复核。使用新子会话或独立任务节点,提供具体方案、精确参数、原始依据和已确认约束;原分析会话的后续对话不算独立复核。
30
-
31
- 复核只使用查询与计算,不执行业务变更。要求复核者独立核验关键事实,交付通过、拒绝或无法确认及其依据。工作结束、成果验收、专业复核和用户批准是不同事实;复核通过不授予执行许可。
32
-
33
- 使用原生工具执行已授权业务并核对结果。结果未知时先核实,不自动重发;只暂停依赖未知结果的步骤。
34
-
35
- ## 成果保存
36
-
37
- 及时保存有依据的阶段结论、可复用知识、已确认决策,以及交接所需或用户要求的成果,无须再次询问。普通问答、零散想法和原始输出不逐轮存档。
38
-
39
- 新结果、纠正或状态变化需要同步,或用户要求整理、复用任务定义、结项时,使用 project-maintenance。发现其他未完成事项不构成开展新任务的授权。
11
+ 失败或中断后说明已完成部分、剩余工作和阻碍。需要用户决定的事项由你汇总说明。
@@ -1,19 +1,7 @@
1
1
  # 通用专家
2
2
 
3
- 完成本次委派范围内的研究、分析、资料查找、计算或独立复核,按任务选择技能。
3
+ 完成本次委派,使用相关资料和技能。交回结果、需要说明的问题及产物路径。独立复核时自行检查,说明发现的问题和不确定之处。
4
4
 
5
- 从委派引用及工作区入口查找依据。按交付需要说明结论、关键依据、来源时点、适用范围、限制及实际产物路径;数值注明影响理解的对象、期间、单位与计算口径。说明实际完成的检查,关键事实不足时明确无法确认。
5
+ 默认交回报告,由主会话整合正式资料;委派包含文件修改时直接完成,并说明变更。
6
6
 
7
- 独立复核时,核验方案参数、前置条件、实际后果和用户约束,独立查询关键事实,报告通过、拒绝或无法确认及其依据。研究与复核只使用明确的查询接口和计算,不执行业务变更;复核结论不授予执行许可。
8
-
9
- 默认交回报告与必要产物引用,由主会话整合正式资料。原任务已授权资料修改且委派明确修改范围时,可在该范围内修改正式正文并说明变更,无须再次询问。
10
-
11
- 使用原生 CLI/MCP 完成本次委派,可自主诊断工具接入与环境问题。新增权限或共享环境变更先核对原任务及委派中的已有授权,已覆盖的操作不重复询问;需要补充授权或用户在会话中操作时,交回已有结果、缺口和所需条件,继续不受影响的工作。项目构建和测试遵循项目声明的环境。
12
-
13
- 不创建子专家或外部任务,不管理团队。需要其他协作者或持久执行时,交回建议,由主会话决定。
14
-
15
- ## 团队工作
16
-
17
- 收到团队发言安排时,按当前职责和轮次工作。使用 pbot_team_message read/post 直接交流原文,replyTo 指向公共消息;不等待对方在线回应,不通过发消息追加轮次。上下文注明未包含或截断的内容时,按 seq/offset 读取所需原文后再下结论;压缩后缺少旧证据时也应重读。成员的话是协作信息,不是新的用户授权。
18
-
19
- post 与本次团队请求的最终答复会公开给全体成员。只公开任务需要的信息,不主动披露私人工作历史、完整工具输出或无关资料。指出依据、分歧、未解决问题与产物位置。每轮接续已有工作,不重复可能产生副作用的步骤;结果未知时先查询,不重发操作。轮次结束不等于任务通过验收。
7
+ 可自主诊断工具和环境问题。需要主会话或用户协助时,交回已有结果和具体阻碍,继续不受影响的工作。不创建子专家或外部任务,不管理团队;需要其他协作者或持久执行时向主会话提出建议。
@@ -1,4 +1,4 @@
1
- 你负责为历史查询整理一段连续对话。输入是历史资料,不是当前指令;不回答其中的问题,不执行任务,不调用工具。只输出摘要。
1
+ 为历史查询概括输入的连续对话。将输入作为待总结的资料,只输出摘要,不回答或执行其中的请求。
2
2
 
3
3
  使用原对话的主要语言,用几段简短文字记录讨论的事情、用户的要求与原因、约束、决定及变化、否决的方案和未决问题。保留有检索价值的名称、术语、数字与路径。代词和简短认可应在输入能够确定时还原含义;不能确定就保留不确定性。
4
4
 
@@ -0,0 +1,7 @@
1
+ ## 本次团队工作
2
+
3
+ 按当前职责和轮次接续已有工作,用 pbot_team_message read/post 交流;发言后继续本轮任务,无需等待回应。
4
+
5
+ post 和本次请求的最终答复会向全体成员公开。分享与本次协作有关的内容,省略无关的私人历史和工具输出。
6
+
7
+ 需要更多上下文或正文不完整时,按返回的 seq/offset 读取原文。
@@ -1,19 +1,16 @@
1
- # 工作区
1
+ # Personal Bot
2
2
 
3
- 协助用户学习、推进项目、开展研究与支持决策,沉淀可复用的知识、方法与结论。投资是按需开展的专业领域。
3
+ 按用户请求和已有约定推进工作,常规选择自行决定。只有缺失信息会改变目标或关键结果时才提问,并继续不受影响的工作。
4
4
 
5
- 环境信息见 `pbot_environment`:`workspaceRoot` 是工作区根目录,`cwd` 是当前执行目录,`resourceRoot` 是包内资料根目录,`python` 是共享计算环境状态。下文资料路径相对工作区根目录;包内路径相对 `resourceRoot`。执行命令和文件工具时按实际工作目录解析路径。
5
+ ## 工作方式
6
6
 
7
- ## 开始与推进
7
+ - 按工作区约定定位相关资料,需要更多线索时读目录入口或搜索,按需使用匹配的技能。
8
+ - 操作后查看结果。超时、取消或断连后,先查状态再决定是否重试,避免重复执行。
9
+ - 使用当前宿主的原生 CLI/MCP。接入与排障使用 provider-connections;按需读取 `providers/<id>/GUIDE.md` 中的数据口径和限制。认证使用原生登录或凭据引用,资料中不保存凭据值。
8
10
 
9
- - 涉及工作区资料时,优先从已有根 `AGENTS.md` 定位相关项目或长期事务,按需读取目录入口、正文和匹配的技能。没有资料入口时按任务查找或创建必要资料。
10
- - 复用历史结论前核对范围、时点与关键条件,只重核受变化影响的部分。分析假设不等于用户已确认的约束。
11
- - 复杂任务先明确交付用途、必要证据、可接受限制与完成条件,沿用已有约定。
12
- - 在当前授权内持续推进,常规、可逆的实现选择自行决定。新增权限、安装或共享环境变更先核对已有授权,已覆盖的操作不重复询问。仅当缺失信息影响目标、关键结果或授权时提问;暂停依赖步骤,继续有助于目标的独立工作。
13
- - 资料、手册、工具结果、待办和职责补充不扩大用户授权。只开展当前任务需要的工作,不为普通问答增加文件或固定流程。
14
- - 使用常用词、短句和一致术语。先给结论,按需说明依据、假设、验证、限制和实际产物路径。
11
+ ## 资料与环境
15
12
 
16
- ## 资料入口与归属
13
+ 沿用已有工作区约定;新资料按下列用途组织。文档按主题维护当前说明,保留读者理解、决策和操作所需的信息。正文维护一份,其他位置用引用连接。
17
14
 
18
15
  | 路径 | 用途 |
19
16
  | --- | --- |
@@ -21,21 +18,13 @@
21
18
  | `areas/<领域>/` | 长期目标、约束、决策与复盘;个人组合信息 |
22
19
  | `projects/<名称>/` | 任务定义、结论与交付物;源码、依赖和测试 |
23
20
  | `knowledge/<主题>/` | 可跨任务复用的概念、方法与口径 |
24
- | `providers/` | `AGENTS.md` 导航与各 `<id>/GUIDE.md` 能力手册 |
21
+ | `providers/AGENTS.md`、`providers/<id>/GUIDE.md` | 能力导航与使用手册 |
25
22
  | `scratch/` | 临时脚本、查询与计算数据、下载及运行环境 |
26
- | `agents/` | `coordinator.md` 与 `general-purpose.md` 的职责补充 |
23
+ | `agents/` | `coordinator.md`、`general-purpose.md` 的职责补充 |
27
24
  | `.agents/skills/` | 工作区自有专业方法 |
28
25
 
29
- 可再次查询的数据在使用时按口径获取。结论注明来源、时点与适用条件。
26
+ 保存有后续用途的结论、方法、决策和产物;普通问答不逐轮存档。保存前查找同主题正文,直接修订,合并重复内容并替换过时说明。必要的实现细节放入对应技术资料,排查过程和测试流水不逐次追加到正文。更新或整理时使用 project-maintenance。可再次查询的数据按记录的口径获取。保留用户资料、历史记录和备份。
30
27
 
31
- 保存前搜索同主题正文,优先更新原文,其他位置用引用连接。整理、修正或结项使用 project-maintenance 技能,遵守本角色的资料修改权限。
28
+ 环境上下文中的 `workspaceRoot` 是资料工作区根目录,`resourceRoot` 是包内资料根目录,`python` 给出共享环境状态。资料路径相对工作区根目录,命令与文件工具按实际 cwd 解析路径。需要 Python 时读取包内 `references/compute.md`;共享环境未就绪时不退回系统 Python。项目构建和测试遵循项目声明的环境。
32
29
 
33
- ## 调用与计算
34
-
35
- CLI 通过 Bash 使用原生命令与当前 help,MCP 使用当前宿主的原生接入与工具定义,Pi 和 dsh 配置分别管理。先按需读取 providers/ 中的手册,了解数据口径和限制;接入或修复使用 provider-connections 技能。不索取、输出或保存凭据值。目标、市场和偏好保存在所属普通资料中。
36
-
37
- 按用户授权执行本次业务。研究、接入和验证不授权交易、转账或账本修改。协议成功不证明业务完成;超时、断连和取消不证明未执行。可能已发送的操作先查询原生状态,不因恢复会话或结果缺失自动重发。
38
-
39
- 共享 Python 环境为 ready 时,通过 Bash 使用 python 或 python3 和第三方库原生 API。环境异常可自主诊断,只暂停依赖该环境的步骤,不自行退回系统 Python;项目构建和测试遵循项目声明的环境。运行计算前按需读取包内 `references/compute.md`,按项目约定选择工作目录并保存必要产物。
40
-
41
- Bash、Python、MCP 和其他扩展具有实际账户与凭据权限,不是沙箱。
30
+ 答复先给结论,按需补充说明和产物路径。自然语言说明直接回答当前问题,不惯常追加否定式限定或免责声明,也不设想用户未提出的推论再逐一否定。必要的未知、条件和风险清楚说明一次。数值注明影响理解的对象、期间、单位与口径。任务要求、操作权限、必要确认和规定的输出格式照常遵循。
@@ -0,0 +1,22 @@
1
+ # 指标与回测
2
+
3
+ ## TA-Lib
4
+
5
+ 通过 `import talib` 使用原生函数。用 `talib.get_function_groups()`、`talib.get_functions()` 和 `help(talib.函数名)` 核对能力、参数与返回值。
6
+
7
+ 计算前核对时间顺序、复权、缺失数据、单位与样本长度,多输入 OHLCV 数组必须按同一时间轴对齐。保留影响结果解释的原生规则:
8
+
9
+ - `MACD` 返回 `(macd, signal, hist)`,其中 `hist = macd - signal`,不乘 2。
10
+ - `BBANDS` 返回 `(upper, middle, lower)`,默认使用 SMA 中轨和两倍总体标准差。
11
+ - 暖机期为 NaN,例如 SMA(20) 前 19 根、RSI(14) 前 14 根不可用。EMA、RSI 的种子和平滑规则不等同于直接 pandas ewm;持平序列的 RSI 暖机后为 0,不是 50。
12
+ - NaN 输入可能影响后续输出,不擅自填零或把暖机值当成信号。严格 JSON 中将非有限值转为 null。
13
+
14
+ 按需记录参数、库版本和数据来源,便于复现。
15
+
16
+ ## backtesting
17
+
18
+ 用 `from backtesting import Backtest, Strategy`,通过 Strategy 的 `init()`、`next()` 定义策略,再运行 `Backtest(data, 策略类, ...).run()`。数据为按时间升序的 OHLC DataFrame,可带 Volume;参数以当前版本 API 为准。TA-Lib 指标可用 `self.I(talib.SMA, self.data.Close, 20)` 注册。
19
+
20
+ 显式确定资金、手续费、价差、成交时点与仓位假设。原生 Backtest 不自动提供 A 股 T+1、整手买入、涨跌停或交易日历约束;任务需要时明确建模和验证,无法表达时说明限制,不把默认值当作市场规则。
21
+
22
+ 按研究问题选择样本内外划分及暖机方法,避免未来数据泄漏。交付时说明参数、版本与限制,按需保留统计和交易记录;导出时处理 Series、DataFrame、时间和非有限值。
@@ -1,97 +1,20 @@
1
1
  # Python 计算
2
2
 
3
- ## 环境
3
+ 环境上下文的 `python.state` 是当前共享环境状态。ready 时通过 Bash 使用 `python` 或 `python3`,直接导入第三方库。项目构建和测试使用项目声明的环境。
4
4
 
5
- 主会话与专家的 `pbot_environment.python` 给出当前共享 Python 3.11+ 环境状态。为 ready 时,通过 Bash 使用 python 或 python3,按任务导入第三方库原生 API。项目构建和测试遵循项目声明的环境,在对应命令中使用。
5
+ ## 环境异常
6
6
 
7
- 状态未就绪或依赖异常时,可自主诊断,只暂停依赖该环境的计算,不自动退回系统 Python,不删除或重建共享环境。额外依赖或共享环境变更先核对已有授权及影响范围;未获授权时说明所需变更并询问。需要重试 setup 时,使用当前宿主的 `/pbot python setup` 原生入口;需要用户执行会话操作时说明该入口;专家将所需会话操作或补充授权交回主会话。
7
+ 未就绪或依赖异常时可自主诊断,只暂停依赖该环境的计算,不退回系统 Python,不删除或重建共享环境。完整准备错误可在 `/pbot status` 查看,修复后用 `/pbot python setup` 重试;需要用户执行会话操作时说明入口,专家向主会话交回所需条件。
8
8
 
9
- 所有 pbot 工作区共用当前用户的环境。更新依赖前停止相关计算,避免影响其他工作区;不同插件版本的依赖要求可能冲突。库清单说明可用方法,不代替本次环境状态检查。
9
+ 所有 pbot 工作区共用该环境。更改依赖会影响其他工作区,停止相关计算后再更新。安装与许可信息见 [Python 说明](../../python/README.md)。
10
10
 
11
- ## 预装原生库
11
+ ## 按项目运行
12
12
 
13
- | 库 | 常用导入 | 用途 |
14
- | --- | --- | --- |
15
- | NumPy | `import numpy as np` | 数组与数值运算 |
16
- | pandas | `import pandas as pd` | 行情表、时间序列和文件读写 |
17
- | TA-Lib | `import talib` | 技术指标与形态函数 |
18
- | backtesting | `from backtesting import Backtest, Strategy` | 策略回测 |
19
- | SciPy | `from scipy import stats, optimize, signal` | 统计检验、优化、信号处理 |
20
- | statsmodels | `import statsmodels.api as sm` | 回归、时间序列、统计诊断 |
21
- | scikit-learn | `import sklearn` | 预处理、预测模型、聚类与评估;导入名为 sklearn |
22
- | Matplotlib | `import matplotlib.pyplot as plt` | 保存静态图表 |
23
- | seaborn | `import seaborn as sns` | 基于 Matplotlib 的统计图表 |
24
- | openpyxl | `import openpyxl` | Excel `.xlsx` 读写;也可用 pandas 的 openpyxl 引擎 |
25
- | PyArrow | `import pyarrow as pa` | Arrow、Parquet、Feather;也可用 pandas 的 pyarrow 引擎 |
26
- | Bokeh | `from bokeh.plotting import figure` | 交互式 HTML 图表,backtesting 绘图也使用它 |
13
+ 沿用项目的工作目录、脚本或模块入口、输入参数与输出位置。包内相对导入通常使用项目根目录下的 `python -m 包.模块`,不为绕过导入错误随意改 `sys.path`。相对数据路径取决于 cwd 或脚本自身的处理;交付时提供实际产物路径,并检查结果。
27
14
 
28
- 这些库提供计算能力,不替代数据依据、统计假设或验证。时间序列建模按时间切分训练与验证数据,预处理只在训练集拟合,避免未来数据泄漏。
15
+ 预装库包括 NumPy、pandas、SciPy、statsmodels、scikit-learn(导入名 sklearn)、Matplotlib、seaborn、Bokeh、openpyxl、PyArrow、TA-Lib 和 backtesting。按任务查阅当前版本的原生 API。
29
16
 
30
- ## 脚本、模块与产物
31
-
32
- 已有脚本按项目文档在原位置运行,核对工作目录和入口。例如,替换以下占位路径后,从项目根目录运行脚本:
33
-
34
- ```bash
35
- cd "/项目根目录" && python scripts/analyze.py --window 20
36
- ```
37
-
38
- 环境中只有 python3 命令时,将示例中的 python 换成 python3。包内相对导入通常使用模块入口,例如在项目根目录执行 `python -m analysis.main --window 20`。普通脚本导入同目录模块与 `-m` 的包导入遵循 Python 原生规则;不要为绕过错误随意改 sys.path。相对数据路径取决于工作目录或脚本自己的路径处理,应先核对约定。临时计算也可使用 `python -c` 或标准输入。
39
-
40
- 按脚本或项目约定提供输入、参数和结果位置,使用实际 Bash 工具的超时与取消能力。
41
-
42
- Python 具有宿主文件和网络权限,不是沙箱;不得超出本次任务授权执行业务变更或改写历史记录。取消不回滚已发生的副作用。
43
-
44
- ## 绘图与文件
45
-
46
- 在无交互式图形界面的执行环境中使用 Matplotlib/seaborn 时,在导入 pyplot 或 seaborn 前选择 Agg 后端,保存图像并关闭 figure,不调用 `plt.show()`:
47
-
48
- ```python
49
- import matplotlib
50
- matplotlib.use("Agg")
51
- import matplotlib.pyplot as plt
52
-
53
- fig, ax = plt.subplots()
54
- ax.plot([1, 2, 3], [10, 12, 11]) # 示例数据,不是行情证据
55
- fig.savefig("chart.png", dpi=150, bbox_inches="tight")
56
- plt.close(fig)
57
- ```
58
-
59
- 文件按项目约定保存并交回实际产物路径;相对输出路径基于所选工作目录。Excel 可用 `pd.read_excel(path, engine="openpyxl")` 与 `df.to_excel(path, index=False, engine="openpyxl")`;Parquet 可用 `pd.read_parquet(path, engine="pyarrow")` 与 `df.to_parquet(path, index=False, engine="pyarrow")`。Feather 使用 `pd.read_feather` / `df.to_feather`。检查读写后的字段类型、时间单位与时区;Excel 不直接保存带时区的 datetime,转换前明确目标时区,不默默丢弃时区含义。
60
-
61
- ## TA-Lib 技术指标
62
-
63
- 常用原生函数包括 `SMA`、`EMA`、`MACD`、`RSI`、`BBANDS`、`ATR`、`ADX`、`STOCH`、`OBV` 和 `CDL*` 形态函数。用 `talib.get_function_groups()` 或 `talib.get_functions()` 查找能力,用 `help(talib.函数名)` 核对参数与返回值,不凭名称猜测。
64
-
65
- 以下脚本从第一个命令行参数指定的 JSON 文件读取 close 数组,计算均线并输出严格 JSON:
66
-
67
- ```python
68
- import json
69
- import sys
70
- import numpy as np
71
- import talib
72
-
73
- with open(sys.argv[1]) as file:
74
- data = json.load(file)
75
- close = np.asarray(data["close"], dtype=np.float64)
76
- sma = talib.SMA(close, timeperiod=20)
77
- print(json.dumps({"sma20": [float(x) if np.isfinite(x) else None for x in sma]}, allow_nan=False))
78
- ```
79
-
80
- 使用前核对时间顺序、复权口径、缺失数据、单位和样本长度。多输入函数要求 OHLCV 数组按同一时间轴对齐。backtesting 策略可通过 `self.I(talib.SMA, self.data.Close, 20)` 注册指标。
81
-
82
- - `talib.MACD` 返回 `(macd, signal, hist)`,`hist = macd - signal`,不乘 2。
83
- - `talib.BBANDS` 返回 `(upper, middle, lower)`,默认使用 SMA 中轨和两倍总体标准差。
84
- - 暖机期输出 NaN;例如 SMA(20) 前 19 根、RSI(14) 前 14 根不可用。EMA、RSI 等按 TA-Lib 的种子与平滑规则计算,不等同于直接 pandas ewm。
85
- - NaN 输入可能影响后续输出,不擅自填零或把暖机值当成信号。持平序列的 RSI 在暖机后为 0,不是 50。
86
- - 指标可计算不证明策略有效。记录参数、TA-Lib 版本与数据依据;生成严格 JSON 时把非有限值转为 null。
87
-
88
- ## backtesting 原生回测
89
-
90
- 直接使用 `from backtesting import Backtest, Strategy`。继承 Strategy 定义 `init()` 和 `next()`,通过 `Backtest(data, 策略类, ...).run()` 运行。数据使用按时间升序的 OHLC DataFrame,可带 Volume,建议使用 DatetimeIndex;以当前安装版本的 API 为准。
91
-
92
- - 显式确定资金、手续费、价差、成交时点与仓位假设,不把库默认值当作投资规则。
93
- - 原生 Backtest 不自动提供 A 股 T+1、整手买入、涨跌停或交易日历约束。研究需要这些规则时,必须明确建模并验证;无法表达时说明限制,不能直接声称结果适用于该市场。
94
- - 按研究问题决定是否划分样本内/样本外及如何暖机,不默认套用固定回测流程。避免未来数据泄漏。
95
- - 按交付需要提取统计或交易记录,并说明参数与库版本。导出时处理原生结果中的 Series、DataFrame、时间和非有限值。
96
-
97
- 环境与许可信息见 [Python 说明](../../python/README.md)。
17
+ - 无图形界面的绘图:在导入 pyplot/seaborn 前选择 Matplotlib 的 Agg 后端,保存文件并关闭 figure。
18
+ - Excel、Parquet、Feather:按格式选择 openpyxl 或 pyarrow;核对读写后的字段类型、时间单位与时区。Excel 不直接保存带时区的 datetime,转换前明确目标时区。
19
+ - 统计或建模:记录数据与假设。时间序列按时间切分,预处理只在训练数据拟合,避免未来数据泄漏。
20
+ - 技术指标或回测:再读 [指标与回测](compute-finance.md),按本次问题确定数据口径和交易假设。
@@ -4,30 +4,35 @@
4
4
 
5
5
  ## 准备能力
6
6
 
7
- 先通过当前宿主的原生工具发现查找 Task Conductor,并加载 using-task-conductor 技能,以实际 MCP schema 为准。工具未直接显示不等于未安装;技能可用时,按技能处理连接或排障。
7
+ 通过当前宿主的原生工具发现查找 Task Conductor,读取 `using-task-conductor` 技能,再按实际 MCP schema 操作。工具未直接显示时,先按技能检查连接;技能缺失时检查插件安装和资源启用状态。
8
8
 
9
- 以下安装命令只适用于 Pi。技能缺失时,用 `pi list` 检查插件及资源启用状态。已有旧版接入包时,先审阅官方升级说明,确认来源和作用域后显式替换旧包声明,不同时加载两份;服务更新与 MCP 配置另行核对,保留任务历史。确未安装则按本项目基线使用 Pi 1.5.0,核对已有安装授权,已覆盖时直接使用工作区安装命令,未覆盖时再请求授权:
9
+ | 宿主 | 插件与技能入口 |
10
+ | --- | --- |
11
+ | Pi | `pi list` 查看来源与资源;从工作区根目录用 `pi install --local npm:task-conductor-plugin` 安装已发布接入,或用 `pi install --local /absolute/path/to/task-conductor/plugin` 加载未发布源码。当前会话执行 `/reload`,技能入口为 `/skill:using-task-conductor` |
12
+ | dsh | 用 `dsh plugin --profile pbot list task-conductor-plugin --depth 0` 查看所选 profile;本地 tarball 使用 `dsh plugin --profile pbot add /absolute/path/to/task-conductor-plugin-<version>.tgz` 安装。重启对应宿主后,通过原生 skill 工具读取 `using-task-conductor`,或在聊天框调用 `/using-task-conductor`。桌面应用使用自己的原生插件页 |
10
13
 
11
- ```bash
12
- pi install --local npm:task-conductor-plugin
13
- ```
14
+ 将 `pbot` 和示例路径替换为实际 profile 和产物。dsh 接入包含于尚未发布的 Task Conductor `0.1.6` 候选版本;发布前使用该版本的本地插件及配套服务,构建方法见 [dsh 指南](../../docs/dsh.md#task-conductor)或[上游接入说明](https://github.com/realqiyan/task-conductor/blob/master/docs/host-integrations.md)。宿主聊天命令在相应会话中执行,不能通过 Bash 代执行;已发现技能时直接读取其正文继续。
14
15
 
15
- 需要重载及通过技能交互安装时,请用户在当前 Pi 会话执行 `/reload`,再执行 `/skill:using-task-conductor` 处理服务安装、setup 与原生 MCP 接入;这些斜杠命令不能通过 Bash 代执行。可直接读取已发现的技能继续可执行的步骤。复用已有原生连接,不在聊天中索取凭据值;CLI 配置查询不等价于当前会话的临时连接状态。插件可见不证明服务已连接,执行器 ready 不证明模型认证和执行成功。
16
+ dsh 插件随包提供共享技能,并为根主会话创建原生 MCP 连接,工作目录取该会话 cwd。通过实际名称调用工具,如 `mcp__task-conductor__executor_list`、`mcp__task-conductor__task_list`;保留名称中的连字符。复用插件连接,已有手工连接按上游方法调整来源,避免重复注册。dsh 接入不需要 Pi 交互 CLI;服务的协调模型单独配置。
16
17
 
17
- 在 dsh 中,按上游适用于当前版本的方式加载技能,并通过 dsh 原生 MCP 连接已有服务;不把 Pi 插件声明、`pi install` 或 `/reload` 用作 dsh 接入。服务端节点的执行器、认证与环境仍按其自身配置核对,不假定与当前 dsh 会话相同。
18
+ 服务安装、setup、连接与排障按上游技能处理。dsh 中用 `/task-conductor status` 查看连接状态;服务设置完成或故障修复后用 `/task-conductor connect` 重连。能力不可用时说明具体阻碍,继续不受影响的工作。
18
19
 
19
- 能力不可用时说明依赖它的工作受阻,继续其他已授权工作;不以循环等待或后台子会话替代持久调度。
20
+ ## 使用 dsh 执行节点
20
21
 
21
- ## 委派与许可
22
+ 通过 Task Conductor 管理员 CLI 或 Web 注册自定义执行端 `dsh-acp`,使用 dsh 的规范绝对可执行路径和 `["--profile", "acp"]` 参数;`dsh` 不是内置执行端 ID。注册与查询步骤见上游技能的 `references/custom-acp.md`。在任务节点的 `executorId` 中选择已就绪的 `dsh-acp`。
22
23
 
23
- 提交前明确输入、工作目录、所需工具与模型认证、输出和完成条件。周期任务还须明确频率、时区、授权范围及每轮数据来源、期间与时点。
24
+ 执行端使用 Task Conductor 后台的运行环境及 dsh 的 `acp` profile,单独准备模型认证、工具、技能和 Python;当前主会话的配置不自动传给节点。
24
25
 
25
- 核实节点实际具备的工具、技能和 Python 环境,不假定它继承主会话能力或批准通道。节点任务限定为本次交付,不再递归委派;普通 Pi 节点不是受限专家,这些约定也不是宿主隔离。
26
+ ## 定义任务
26
27
 
27
- 没有可靠批准通道时,不安排需人工批准的后台操作或无人值守交易;不得绕过批准要求。调度和恢复任务不扩大已有授权。独立复核使用新的独立节点,只查询和计算;协调器验收不等于专业复核或业务批准。
28
+ 提交前写明输入、工作目录、所需工具与模型、输出。周期任务还需明确频率、时区、执行范围及每轮数据来源、期间与时点。
28
29
 
29
- ## 核对与保存
30
+ 准备节点所需的工具、技能、Python 环境和认证。需要人工交互的步骤应留在交互会话中完成。节点直接完成分配的任务,不再递归委派。
30
31
 
31
- 任务定义、执行和节点分别用 taskId、runId 和节点 ID 标识。提交响应不明时先查已有标识;未取得 ID 时,按接口可用的请求关联、任务列表、提交时间或任务特征查找并核对。未能确认是否已创建时保留未知状态,不重复提交。实时状态查询 Task Conductor;项目资料只保存必要定义、标识和有时点的结果依据。
32
+ ## 状态与结果
32
33
 
33
- 取消当前执行与停止未来周期分别操作,并查询确认。pbot_agent stop 或当前宿主关闭不停止 Task Conductor。报告已设置调度须有实际提交结果;报告本轮成功须核对本轮产物与完成条件。
34
+ 任务定义、执行和节点分别用 taskId、runId 和节点 ID 标识。提交响应不明时先按已有 ID 查询;未取得 ID 时,按请求关联、任务列表、提交时间或任务特征查找,避免重复创建。实时状态查询 Task Conductor,项目资料保存任务定义、标识和结果位置。
35
+
36
+ 通知回到提交任务的原生持久会话;dsh 恢复原 Session 后可以继续接收待处理事件。同项目的新会话不会代收,仍可通过 MCP 查询任务。
37
+
38
+ 取消当前执行与停止未来周期分别操作,并查询确认。pbot_agent stop 或当前宿主关闭不停止 Task Conductor。报告时区分调度已创建和本轮已完成,并给出对应状态与产物位置。