dominds 1.2.5 → 1.2.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/dist/agent-priming.js +2051 -0
- package/dist/apps/app-lock-file.js +228 -0
- package/dist/apps/assigned-port.js +124 -0
- package/dist/apps/enabled-apps.js +472 -7
- package/dist/apps/manifest.js +37 -0
- package/dist/apps/override-paths.js +19 -6
- package/dist/apps/problems.js +43 -0
- package/dist/apps/resolution-file.js +370 -0
- package/dist/apps/runtime.js +5 -17
- package/dist/apps/teammates.js +102 -1
- package/dist/cli/disable.js +10 -6
- package/dist/cli/enable.js +21 -19
- package/dist/cli/install.js +40 -18
- package/dist/cli/uninstall.js +6 -6
- package/dist/cli/update.js +38 -13
- package/dist/dialog.js +5 -0
- package/dist/docs/app-constitution.md +85 -18
- package/dist/docs/app-constitution.zh.md +86 -21
- package/dist/docs/dialog-system.md +1 -1
- package/dist/docs/dialog-system.zh.md +1 -1
- package/dist/docs/dominds-agent-priming.md +218 -0
- package/dist/docs/dominds-agent-priming.zh.md +196 -0
- package/dist/docs/drive-logic-context-refactor-plan.zh.md +338 -0
- package/dist/docs/keep-going.md +176 -0
- package/dist/docs/keep-going.zh.md +162 -0
- package/dist/docs/showing-by-doing.md +208 -0
- package/dist/docs/showing-by-doing.zh.md +177 -0
- package/dist/docs/team-mgmt-toolset.md +482 -0
- package/dist/docs/team-mgmt-toolset.zh.md +426 -0
- package/dist/llm/defaults.yaml +1 -1
- package/dist/llm/driver.js +4093 -0
- package/dist/llm/kernel-driver/drive.js +5 -2
- package/dist/llm/kernel-driver/flow.js +3 -0
- package/dist/minds/promptdocs.js +263 -0
- package/dist/problems.js +67 -16
- package/dist/server/api-routes.js +333 -0
- package/dist/server/prompts-routes.js +545 -0
- package/dist/server/server-core.js +4 -0
- package/dist/server/websocket-handler.js +17 -0
- package/dist/shared/team-mgmt-manual.js +120 -0
- package/dist/shared/types/prompts.js +2 -0
- package/dist/shared/types/tellask.js +8 -0
- package/dist/showing-by-doing.js +1091 -0
- package/dist/snippets/README.en.md +3 -0
- package/dist/snippets/README.md +4 -0
- package/dist/static/assets/{_basePickBy-CF9r08iy.js → _basePickBy-BMCtwrV7.js} +3 -3
- package/dist/static/assets/{_basePickBy-CF9r08iy.js.map → _basePickBy-BMCtwrV7.js.map} +1 -1
- package/dist/static/assets/{_baseUniq-CxKv0cd4.js → _baseUniq-BuyCgJiA.js} +2 -2
- package/dist/static/assets/{_baseUniq-CxKv0cd4.js.map → _baseUniq-BuyCgJiA.js.map} +1 -1
- package/dist/static/assets/{arc-C9JyvnlB.js → arc-BDuN8lwA.js} +2 -2
- package/dist/static/assets/{arc-C9JyvnlB.js.map → arc-BDuN8lwA.js.map} +1 -1
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-CpcUgjHf.js → architectureDiagram-VXUJARFQ-C-ekqGAD.js} +7 -7
- package/dist/static/assets/{architectureDiagram-VXUJARFQ-CpcUgjHf.js.map → architectureDiagram-VXUJARFQ-C-ekqGAD.js.map} +1 -1
- package/dist/static/assets/{blockDiagram-VD42YOAC-BA9vtmm7.js → blockDiagram-VD42YOAC-CgQiNuuQ.js} +7 -7
- package/dist/static/assets/{blockDiagram-VD42YOAC-BA9vtmm7.js.map → blockDiagram-VD42YOAC-CgQiNuuQ.js.map} +1 -1
- package/dist/static/assets/{c4Diagram-YG6GDRKO-D49MGNdF.js → c4Diagram-YG6GDRKO-DONC39q-.js} +3 -3
- package/dist/static/assets/{c4Diagram-YG6GDRKO-D49MGNdF.js.map → c4Diagram-YG6GDRKO-DONC39q-.js.map} +1 -1
- package/dist/static/assets/{channel-B4KzL0Kg.js → channel-CJTFwXIG.js} +2 -2
- package/dist/static/assets/{channel-B4KzL0Kg.js.map → channel-CJTFwXIG.js.map} +1 -1
- package/dist/static/assets/{chunk-4BX2VUAB-0F-1ayl0.js → chunk-4BX2VUAB-NaIy4uLJ.js} +2 -2
- package/dist/static/assets/{chunk-4BX2VUAB-0F-1ayl0.js.map → chunk-4BX2VUAB-NaIy4uLJ.js.map} +1 -1
- package/dist/static/assets/{chunk-55IACEB6-Dnl2HDTZ.js → chunk-55IACEB6-JUKI_Ayx.js} +2 -2
- package/dist/static/assets/{chunk-55IACEB6-Dnl2HDTZ.js.map → chunk-55IACEB6-JUKI_Ayx.js.map} +1 -1
- package/dist/static/assets/{chunk-B4BG7PRW-Bhx5RbkQ.js → chunk-B4BG7PRW-dIswFJDn.js} +5 -5
- package/dist/static/assets/{chunk-B4BG7PRW-Bhx5RbkQ.js.map → chunk-B4BG7PRW-dIswFJDn.js.map} +1 -1
- package/dist/static/assets/{chunk-DI55MBZ5-EYd1wL3E.js → chunk-DI55MBZ5-DU2b_N30.js} +4 -4
- package/dist/static/assets/{chunk-DI55MBZ5-EYd1wL3E.js.map → chunk-DI55MBZ5-DU2b_N30.js.map} +1 -1
- package/dist/static/assets/{chunk-FMBD7UC4-DAjkhhUU.js → chunk-FMBD7UC4-BgExcScw.js} +2 -2
- package/dist/static/assets/{chunk-FMBD7UC4-DAjkhhUU.js.map → chunk-FMBD7UC4-BgExcScw.js.map} +1 -1
- package/dist/static/assets/{chunk-QN33PNHL-CK6TY7IE.js → chunk-QN33PNHL-bitxyqh7.js} +2 -2
- package/dist/static/assets/{chunk-QN33PNHL-CK6TY7IE.js.map → chunk-QN33PNHL-bitxyqh7.js.map} +1 -1
- package/dist/static/assets/{chunk-QZHKN3VN-CketngiE.js → chunk-QZHKN3VN-Cor8u7DT.js} +2 -2
- package/dist/static/assets/{chunk-QZHKN3VN-CketngiE.js.map → chunk-QZHKN3VN-Cor8u7DT.js.map} +1 -1
- package/dist/static/assets/{chunk-TZMSLE5B-Bcuvqo45.js → chunk-TZMSLE5B-Aceoxav_.js} +2 -2
- package/dist/static/assets/{chunk-TZMSLE5B-Bcuvqo45.js.map → chunk-TZMSLE5B-Aceoxav_.js.map} +1 -1
- package/dist/static/assets/{classDiagram-2ON5EDUG-CaP4T3r4.js → classDiagram-2ON5EDUG-D1Q6a8Hg.js} +6 -6
- package/dist/static/assets/{classDiagram-2ON5EDUG-CaP4T3r4.js.map → classDiagram-2ON5EDUG-D1Q6a8Hg.js.map} +1 -1
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-CaP4T3r4.js → classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js} +6 -6
- package/dist/static/assets/{classDiagram-v2-WZHVMYZB-CaP4T3r4.js.map → classDiagram-v2-WZHVMYZB-D1Q6a8Hg.js.map} +1 -1
- package/dist/static/assets/{clone-C-JULvnG.js → clone-MlWbv1V0.js} +2 -2
- package/dist/static/assets/{clone-C-JULvnG.js.map → clone-MlWbv1V0.js.map} +1 -1
- package/dist/static/assets/{cose-bilkent-S5V4N54A-vXCmi_eC.js → cose-bilkent-S5V4N54A-DWPCXSrn.js} +2 -2
- package/dist/static/assets/{cose-bilkent-S5V4N54A-vXCmi_eC.js.map → cose-bilkent-S5V4N54A-DWPCXSrn.js.map} +1 -1
- package/dist/static/assets/{dagre-6UL2VRFP-bhGzX6kO.js → dagre-6UL2VRFP-C8ptQ9V3.js} +7 -7
- package/dist/static/assets/{dagre-6UL2VRFP-bhGzX6kO.js.map → dagre-6UL2VRFP-C8ptQ9V3.js.map} +1 -1
- package/dist/static/assets/{diagram-PSM6KHXK-BUKfmfGk.js → diagram-PSM6KHXK-Bgf1FqkE.js} +8 -8
- package/dist/static/assets/{diagram-PSM6KHXK-BUKfmfGk.js.map → diagram-PSM6KHXK-Bgf1FqkE.js.map} +1 -1
- package/dist/static/assets/{diagram-QEK2KX5R-DYlq3uFq.js → diagram-QEK2KX5R-BZ5xzofU.js} +7 -7
- package/dist/static/assets/{diagram-QEK2KX5R-DYlq3uFq.js.map → diagram-QEK2KX5R-BZ5xzofU.js.map} +1 -1
- package/dist/static/assets/{diagram-S2PKOQOG-CjxkLHWG.js → diagram-S2PKOQOG-Dwp47T9I.js} +7 -7
- package/dist/static/assets/{diagram-S2PKOQOG-CjxkLHWG.js.map → diagram-S2PKOQOG-Dwp47T9I.js.map} +1 -1
- package/dist/static/assets/{erDiagram-Q2GNP2WA-S3hR85On.js → erDiagram-Q2GNP2WA-Cx4weIHl.js} +5 -5
- package/dist/static/assets/{erDiagram-Q2GNP2WA-S3hR85On.js.map → erDiagram-Q2GNP2WA-Cx4weIHl.js.map} +1 -1
- package/dist/static/assets/{flowDiagram-NV44I4VS-aBmNMuQ0.js → flowDiagram-NV44I4VS-vNUuIeRk.js} +6 -6
- package/dist/static/assets/{flowDiagram-NV44I4VS-aBmNMuQ0.js.map → flowDiagram-NV44I4VS-vNUuIeRk.js.map} +1 -1
- package/dist/static/assets/{ganttDiagram-JELNMOA3-DJxXaiW1.js → ganttDiagram-JELNMOA3-BEfozJAr.js} +3 -3
- package/dist/static/assets/{ganttDiagram-JELNMOA3-DJxXaiW1.js.map → ganttDiagram-JELNMOA3-BEfozJAr.js.map} +1 -1
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-DEOBCM0G.js → gitGraphDiagram-V2S2FVAM-eHxwc3d9.js} +8 -8
- package/dist/static/assets/{gitGraphDiagram-V2S2FVAM-DEOBCM0G.js.map → gitGraphDiagram-V2S2FVAM-eHxwc3d9.js.map} +1 -1
- package/dist/static/assets/{graph-DwrKSIE7.js → graph-C6a6uAok.js} +3 -3
- package/dist/static/assets/{graph-DwrKSIE7.js.map → graph-C6a6uAok.js.map} +1 -1
- package/dist/static/assets/{index-HWTRvE2k.js → index-D3TQbAKh.js} +383 -59
- package/dist/static/assets/index-D3TQbAKh.js.map +1 -0
- package/dist/static/assets/{infoDiagram-HS3SLOUP-BH9kVuYd.js → infoDiagram-HS3SLOUP-CX0NiId3.js} +6 -6
- package/dist/static/assets/{infoDiagram-HS3SLOUP-BH9kVuYd.js.map → infoDiagram-HS3SLOUP-CX0NiId3.js.map} +1 -1
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-Dap7AcjR.js → journeyDiagram-XKPGCS4Q-C1IepPZ-.js} +5 -5
- package/dist/static/assets/{journeyDiagram-XKPGCS4Q-Dap7AcjR.js.map → journeyDiagram-XKPGCS4Q-C1IepPZ-.js.map} +1 -1
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-4NOl8MEj.js → kanban-definition-3W4ZIXB7-uMNX4Z1W.js} +3 -3
- package/dist/static/assets/{kanban-definition-3W4ZIXB7-4NOl8MEj.js.map → kanban-definition-3W4ZIXB7-uMNX4Z1W.js.map} +1 -1
- package/dist/static/assets/{layout-D6uIxu1E.js → layout-CpE3kk5z.js} +5 -5
- package/dist/static/assets/{layout-D6uIxu1E.js.map → layout-CpE3kk5z.js.map} +1 -1
- package/dist/static/assets/{linear-CvBOGQA2.js → linear-DV8laXr9.js} +2 -2
- package/dist/static/assets/{linear-CvBOGQA2.js.map → linear-DV8laXr9.js.map} +1 -1
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-ugsrLNY5.js → mindmap-definition-VGOIOE7T-CKjgVM9S.js} +4 -4
- package/dist/static/assets/{mindmap-definition-VGOIOE7T-ugsrLNY5.js.map → mindmap-definition-VGOIOE7T-CKjgVM9S.js.map} +1 -1
- package/dist/static/assets/{pieDiagram-ADFJNKIX-CdVZjM8g.js → pieDiagram-ADFJNKIX-BBonlNyT.js} +8 -8
- package/dist/static/assets/{pieDiagram-ADFJNKIX-CdVZjM8g.js.map → pieDiagram-ADFJNKIX-BBonlNyT.js.map} +1 -1
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-A6m5lZKd.js → quadrantDiagram-AYHSOK5B-BTI8HbBu.js} +3 -3
- package/dist/static/assets/{quadrantDiagram-AYHSOK5B-A6m5lZKd.js.map → quadrantDiagram-AYHSOK5B-BTI8HbBu.js.map} +1 -1
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-Cac3zSJH.js → requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js} +4 -4
- package/dist/static/assets/{requirementDiagram-UZGBJVZJ-Cac3zSJH.js.map → requirementDiagram-UZGBJVZJ-ZtSr9Q5R.js.map} +1 -1
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DXDdUUl1.js → sankeyDiagram-TZEHDZUN-DibLVGzg.js} +2 -2
- package/dist/static/assets/{sankeyDiagram-TZEHDZUN-DXDdUUl1.js.map → sankeyDiagram-TZEHDZUN-DibLVGzg.js.map} +1 -1
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-Domsjl5Y.js → sequenceDiagram-WL72ISMW-qXatfzVt.js} +4 -4
- package/dist/static/assets/{sequenceDiagram-WL72ISMW-Domsjl5Y.js.map → sequenceDiagram-WL72ISMW-qXatfzVt.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bu0lRQK1.js → stateDiagram-FKZM4ZOC-7fgxCQHo.js} +9 -9
- package/dist/static/assets/{stateDiagram-FKZM4ZOC-Bu0lRQK1.js.map → stateDiagram-FKZM4ZOC-7fgxCQHo.js.map} +1 -1
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-D0K-n3ic.js → stateDiagram-v2-4FDKWEC3-DcWlOAnF.js} +5 -5
- package/dist/static/assets/{stateDiagram-v2-4FDKWEC3-D0K-n3ic.js.map → stateDiagram-v2-4FDKWEC3-DcWlOAnF.js.map} +1 -1
- package/dist/static/assets/{timeline-definition-IT6M3QCI-BGvpddwR.js → timeline-definition-IT6M3QCI-iX2MRdpY.js} +3 -3
- package/dist/static/assets/{timeline-definition-IT6M3QCI-BGvpddwR.js.map → timeline-definition-IT6M3QCI-iX2MRdpY.js.map} +1 -1
- package/dist/static/assets/{treemap-GDKQZRPO-BoOzOm2j.js → treemap-GDKQZRPO-AVRnyXu1.js} +5 -5
- package/dist/static/assets/{treemap-GDKQZRPO-BoOzOm2j.js.map → treemap-GDKQZRPO-AVRnyXu1.js.map} +1 -1
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-C_h3_ICR.js → xychartDiagram-PRI3JC2R-DVYEo5aJ.js} +3 -3
- package/dist/static/assets/{xychartDiagram-PRI3JC2R-C_h3_ICR.js.map → xychartDiagram-PRI3JC2R-DVYEo5aJ.js.map} +1 -1
- package/dist/static/index.html +1 -1
- package/dist/team.js +52 -48
- package/dist/tellask.js +439 -0
- package/dist/tools/context-health.js +177 -0
- package/dist/tools/diag.js +583 -0
- package/dist/tools/fs.js +194 -68
- package/dist/tools/prompts/memory/en/principles.md +13 -5
- package/dist/tools/prompts/memory/en/tools.md +11 -36
- package/dist/tools/prompts/memory/zh/principles.md +18 -8
- package/dist/tools/prompts/memory/zh/tools.md +11 -36
- package/dist/tools/team-mgmt.js +3487 -0
- package/dist/utils/task-doc.js +236 -0
- package/package.json +1 -1
- package/dist/static/assets/index-HWTRvE2k.js.map +0 -1
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
# 团队管理工具集(`team-mgmt`)
|
|
2
|
+
|
|
3
|
+
英文版:[English](./team-mgmt-toolset.md)
|
|
4
|
+
|
|
5
|
+
本文档指定了一个专用的**团队管理工具集**,其唯一职责是管理 rtws(运行时工作区)`.minds/` 下的"心智"配置文件(团队名单、LLM 提供商和智能体心智文件),而不授予广泛的运行时工作区访问权限。
|
|
6
|
+
|
|
7
|
+
外部仓库根目录是 **rtws**(运行时工作区)。以下所有路径均相对于 rtws 根目录。
|
|
8
|
+
|
|
9
|
+
## 动机
|
|
10
|
+
|
|
11
|
+
我们希望有一种安全的方式让"团队管理者"智能体(通常是影子成员 `fuxi`)能够:
|
|
12
|
+
|
|
13
|
+
- 创建/更新 `.minds/team.yaml`(团队名单 + 权限 + 工具集)
|
|
14
|
+
- 创建/更新 `.minds/llm.yaml`(覆盖默认值的 LLM 提供商定义)
|
|
15
|
+
- 创建/更新 `.minds/mcp.yaml`(注册动态工具集的 MCP 服务器定义)
|
|
16
|
+
- 创建/更新 `.minds/team/<member>/{persona,knowledge,lessons}.md`(智能体心智)
|
|
17
|
+
|
|
18
|
+
同时,我们**不希望**赋予该智能体完整的 rtws 读写权限(例如 `ws_mod` 工具集 + 无限制的 `read_dirs`/`write_dirs`),因为:
|
|
19
|
+
|
|
20
|
+
- 编辑 `.minds/team.yaml` 本质上是一个**权限提升面**(它控制工具可用性和目录权限)
|
|
21
|
+
- 编辑 `.minds/llm.yaml` 可以更改网络目标和模型/提供商行为
|
|
22
|
+
- "引导"团队管理者应该能够在无法更改产品代码、`.dialogs/` 等的情况下配置团队
|
|
23
|
+
|
|
24
|
+
## 迁移计划(替换传统的内置团队管理者知识)
|
|
25
|
+
|
|
26
|
+
本文档是新的 `team-mgmt` 工具集的**设计规范**。这不是我们应该在运行时让智能体"查阅"的内容。
|
|
27
|
+
|
|
28
|
+
相反,运行时团队管理的"单一事实来源"应该是函数工具 `team_mgmt_manual` 的输出。
|
|
29
|
+
|
|
30
|
+
历史上,部分指导内容位于 `dominds/` 源代码树中的传统内置"团队管理者"心智集中。该传统内置内容正在被移除。运行时的"单一事实来源"应该是 `team_mgmt_manual` 工具的输出。
|
|
31
|
+
|
|
32
|
+
计划变更:
|
|
33
|
+
|
|
34
|
+
- 添加一个新的函数工具 `team_mgmt_manual`,其响应涵盖团队管理主题(文件格式、工作流、安全性)
|
|
35
|
+
- 移除传统的内置指导以避免重复。如果保留任何存根,必须指向 `team_mgmt_manual`(而不是本文档)
|
|
36
|
+
|
|
37
|
+
理由:
|
|
38
|
+
|
|
39
|
+
- 该手册与工具行为版本化,因此保持准确
|
|
40
|
+
- 框架源代码树不应是团队配置格式被解释的"主要"地方。每个 rtws 可能具有不同的策略和默认值
|
|
41
|
+
|
|
42
|
+
## 当前问题陈述
|
|
43
|
+
|
|
44
|
+
在典型部署中,我们通过通用 rtws 文件工具拒绝直接的 `.minds/` 访问:
|
|
45
|
+
|
|
46
|
+
- `fs` / `txt`(`list_dir`、`read_file`、`overwrite_entire_file`,……)
|
|
47
|
+
|
|
48
|
+
这对于"普通"智能体来说是合理的,但它阻止了团队管理者完成其工作。
|
|
49
|
+
|
|
50
|
+
## 目标 / 非目标
|
|
51
|
+
|
|
52
|
+
**目标**
|
|
53
|
+
|
|
54
|
+
- 启用受信任的团队管理者仅管理 `.minds/` 配置面
|
|
55
|
+
- 提供一个单一的"手册"工具来教授正确的文件格式和安全的最佳实践
|
|
56
|
+
- 保持工具行为可预测并将路径静态作用域限制为 `.minds/`(不在该子树之外进行智能自动发现)
|
|
57
|
+
|
|
58
|
+
**非目标**
|
|
59
|
+
|
|
60
|
+
- 替换现有的 `ws_read` / `ws_mod` 工具集
|
|
61
|
+
- 提供跨仓库的通用文件编辑
|
|
62
|
+
- 默认让 `.minds/` 可广泛写入
|
|
63
|
+
|
|
64
|
+
## 提议的 `team-mgmt` 工具集
|
|
65
|
+
|
|
66
|
+
`team-mgmt` 工具集镜像 `fs`/`txt` 的最小子集,但**硬作用域**所有操作到 `.minds/` 并拒绝任何外部操作。
|
|
67
|
+
|
|
68
|
+
### 命名约定(人类 / UI)
|
|
69
|
+
|
|
70
|
+
- **工具**使用 `snake_case`(下划线分隔)作为工具 ID(例如 `team_mgmt_manual`)。避免为工具 ID 使用 `kebab-case` 别名;如果 UX 需要更友好的标签,将其视为仅展示层。
|
|
71
|
+
- **队友**使用 `kebab-case`(连字符分隔)或"互联网名称"(点分隔)。
|
|
72
|
+
- 这只是文档/UI/可读性的约定;不要通过验证或其他技术机制强制执行。
|
|
73
|
+
|
|
74
|
+
### 工具
|
|
75
|
+
|
|
76
|
+
推荐工具(名称是建议;使用 `snake_case` 以匹配现有工具):
|
|
77
|
+
|
|
78
|
+
| 工具名称 | 基于 | 用途 | 默认白名单作用域 |
|
|
79
|
+
| -------------------------------------- | ----- | ----------------------------------------------------------- | ---------------- |
|
|
80
|
+
| `team_mgmt_list_dir` | `fs` | 列出 `.minds/` 下的目录/文件 | `.minds/**` |
|
|
81
|
+
| `team_mgmt_read_file` | `txt` | 读取 `.minds/` 下的文本文件 | `.minds/**` |
|
|
82
|
+
| `team_mgmt_create_new_file` | `txt` | 在 `.minds/` 下创建新文件(允许空内容;拒绝覆写) | `.minds/**` |
|
|
83
|
+
| `team_mgmt_overwrite_entire_file` | `txt` | 覆写 `.minds/` 下的现有文件(受保护的异常路径) | `.minds/**` |
|
|
84
|
+
| `team_mgmt_prepare_file_range_edit` | `txt` | 准备在 `.minds/` 下进行单文件行范围编辑(返回差异 hunk id) | `.minds/**` |
|
|
85
|
+
| `team_mgmt_prepare_file_append` | `txt` | 准备在 `.minds/` 下进行追加到 EOF 编辑(返回差异 hunk id) | `.minds/**` |
|
|
86
|
+
| `team_mgmt_prepare_file_insert_after` | `txt` | 准备在 `.minds/` 下的锚点后插入(返回差异 hunk id) | `.minds/**` |
|
|
87
|
+
| `team_mgmt_prepare_file_insert_before` | `txt` | 准备在 `.minds/` 下的锚点前插入(返回差异 hunk id) | `.minds/**` |
|
|
88
|
+
| `team_mgmt_prepare_file_block_replace` | `txt` | 准备在 `.minds/` 下的锚点之间进行块替换(返回差异 hunk id) | `.minds/**` |
|
|
89
|
+
| `team_mgmt_apply_file_modification` | `txt` | 通过 hunk id 在 `.minds/` 下应用计划的修改 | `.minds/**` |
|
|
90
|
+
| `team_mgmt_mk_dir` | `fs` | 在 `.minds/` 下创建目录 | `.minds/**` |
|
|
91
|
+
| `team_mgmt_move_file` | `fs` | 移动/重命名 `.minds/` 下的文件 | `.minds/**` |
|
|
92
|
+
| `team_mgmt_move_dir` | `fs` | 移动/重命名 `.minds/` 下的目录 | `.minds/**` |
|
|
93
|
+
| `team_mgmt_rm_file` | `fs` | 删除 `.minds/` 下的文件 | `.minds/**` |
|
|
94
|
+
| `team_mgmt_rm_dir` | `fs` | 删除 `.minds/` 下的目录 | `.minds/**` |
|
|
95
|
+
| `team_mgmt_validate_team_cfg` | 新建 | 验证 `.minds/team.yaml` 并将问题发布到问题面板 | `.minds/**` |
|
|
96
|
+
| `team_mgmt_manual` | 新建 | 内置"操作指南"手册(见下文) | N/A |
|
|
97
|
+
|
|
98
|
+
注意:
|
|
99
|
+
|
|
100
|
+
- 包括完整的 `.minds/` 生命周期(创建、更新、重命名/移动、删除)。团队管理者必须能够纠正错误并从意外损坏中恢复(包括其他工具引入的损坏)
|
|
101
|
+
- 对 `.minds/team.yaml` 进行任何更改后,团队管理者应运行 `team_mgmt_validate_team_cfg({})` 以确保检测并暴露所有错误(并避免静默忽略损坏的成员配置)
|
|
102
|
+
- 路径处理应该严格:
|
|
103
|
+
- 拒绝绝对路径
|
|
104
|
+
- 拒绝包含 `..` 的路径
|
|
105
|
+
- 拒绝规范化后解析到 `.minds/` 之外的任何路径
|
|
106
|
+
- 优先使用显式白名单而非" rtws 中的任何内容"
|
|
107
|
+
- 对于 `team-mgmt`,该显式白名单是 `.minds/**`(包括 `.minds/memory/**`),以便团队管理者可以修复其他工具造成的意外损坏(即使 `.minds/memory/**` 已有专用的 `memory` / `team_memory` 工具供正常使用)
|
|
108
|
+
- 需要显式的 `.minds/...` 路径并验证它们;不支持像 `team.yaml` 这样的"隐式作用域"路径
|
|
109
|
+
|
|
110
|
+
### 为什么需要专用工具集(而不是仅 `read_dirs` / `write_dirs`)?
|
|
111
|
+
|
|
112
|
+
`read_dirs` / `write_dirs` 仍然很有价值,但它们配置在 `.minds/team.yaml` 中,在引导期间可能不存在。专用的 `team-mgmt` 工具集:
|
|
113
|
+
|
|
114
|
+
- 让团队管理者能够从"零状态"安全地创建 `.minds/team.yaml`
|
|
115
|
+
- 即使成员的目录允许/拒绝列表为空,也保持作用域边界
|
|
116
|
+
- 便于授予临时智能体仅团队管理能力而无需完整的 rtws 访问
|
|
117
|
+
|
|
118
|
+
## `team_mgmt_manual`
|
|
119
|
+
|
|
120
|
+
我们需要单一的聊天内手册工具,以便团队管理者能够可靠地自助指导,而无需阅读源代码。
|
|
121
|
+
|
|
122
|
+
### 命令形状
|
|
123
|
+
|
|
124
|
+
- `team_mgmt_manual({ "topics": [] })` → 显示简短索引(主题)
|
|
125
|
+
- `team_mgmt_manual({ "topics": ["topics"] })` → 列出主题
|
|
126
|
+
- `team_mgmt_manual({ "topics": ["llm"] })` → 如何管理 `.minds/llm.yaml`(+ 模板)
|
|
127
|
+
- `team_mgmt_manual({ "topics": ["llm", "builtin-defaults"] })` → 显示内置提供商/模型(来自默认值)
|
|
128
|
+
- `team_mgmt_manual({ "topics": ["mcp"] })` → 如何管理 `.minds/mcp.yaml`(+ 模板)
|
|
129
|
+
- `team_mgmt_manual({ "topics": ["mcp"] })` → 如何管理 `.minds/mcp.yaml`(传输、env/headers、工具白名单/黑名单、命名转换、热重载、租赁)
|
|
130
|
+
- `team_mgmt_manual({ "topics": ["mcp", "troubleshooting"] })` → 常见 MCP 故障模式及如何恢复
|
|
131
|
+
- `team_mgmt_manual({ "topics": ["team"] })` → 如何管理 `.minds/team.yaml`(+ 模板)
|
|
132
|
+
- `team_mgmt_manual({ "topics": ["team", "member-properties"] })` → 列出支持的成员字段及其含义
|
|
133
|
+
- `team_mgmt_manual({ "topics": ["minds"] })` → 如何管理 `.minds/team/<id>/*.md`(persona/knowledge/lessons)
|
|
134
|
+
- `team_mgmt_manual({ "topics": ["permissions"] })` → `read_dirs`/`write_dirs` 和拒绝列表如何工作
|
|
135
|
+
- `team_mgmt_manual({ "topics": ["troubleshooting"] })` → 常见故障模式及如何恢复
|
|
136
|
+
|
|
137
|
+
该手册应接受**多个**`topics` 条目(简单的主题"路径");工具应选择最具体的匹配,并在需要时回退到最近的父主题。
|
|
138
|
+
|
|
139
|
+
如果 UX 需要比 `team_mgmt_manual` 更友好的标签,将其视为仅展示层;规范的工具 ID 保持为 `team_mgmt_manual`。
|
|
140
|
+
|
|
141
|
+
## 手册覆盖要求(传统覆盖)
|
|
142
|
+
|
|
143
|
+
作为从传统内置团队管理者知识文件迁移的一部分,手册必须至少涵盖以前驻留在那里的信息:
|
|
144
|
+
|
|
145
|
+
- `!team`:
|
|
146
|
+
- 解释 `member_defaults`、`default_responder` 和 `members`(结构概述)
|
|
147
|
+
- 通过 `!team !member-properties` 包含显式的"成员配置属性"参考(字段表):
|
|
148
|
+
- `name`、`icon`、`gofor`、`provider`、`model`、`toolsets`、`tools`、`streaming`、`hidden`
|
|
149
|
+
- `read_dirs`、`no_read_dirs`、`write_dirs`、`no_write_dirs`
|
|
150
|
+
- `!llm`:
|
|
151
|
+
- 解释 `.minds/llm.yaml` 使用的提供商映射结构及其与 `.minds/team.yaml`(`provider` + `model` 键)的关系
|
|
152
|
+
- 通过 `!llm !builtin-defaults` 提供"内置默认值"视图
|
|
153
|
+
- 实现指导:在运行时从 `dominds/main/llm/defaults.yaml` 渲染此内容(或通过共享助手),而不是将静态块复制粘贴到代码中,这样它不会漂移
|
|
154
|
+
- `!mcp`:
|
|
155
|
+
- 解释 `.minds/mcp.yaml` 作为动态 MCP 工具集的来源
|
|
156
|
+
- 解释 MCP 服务器如何映射到工具集(`<serverId>`)以及如何通过 `.minds/team.yaml` 授予这些工具集
|
|
157
|
+
- 解释工具暴露控制(白名单/黑名单)和命名转换(前缀/后缀)
|
|
158
|
+
- 解释密钥/env 接线模式和问题排查(问题 + 日志、重启、热重载语义)
|
|
159
|
+
|
|
160
|
+
## 从 Dominds 安装动态加载(运行时资源)
|
|
161
|
+
|
|
162
|
+
在适当的情况下,手册应**动态加载**其"参考"内容自运行的 `dominds` 安装(即随附的后端交付的文件和注册表),而不是在以下位置复制该内容:
|
|
163
|
+
|
|
164
|
+
- `.minds/*`(rtws 保留状态),或
|
|
165
|
+
- 文档,或
|
|
166
|
+
- 工具实现中的硬编码字符串
|
|
167
|
+
|
|
168
|
+
这使手册在框架更改时保持准确,并避免文档漂移。
|
|
169
|
+
|
|
170
|
+
按主题推荐的来源:
|
|
171
|
+
|
|
172
|
+
- `team_mgmt_manual({ "topics": ["llm", "builtin-defaults"] })`
|
|
173
|
+
- 从运行时用于默认值的同一安装资源加载:`dominds/main/llm/defaults.yaml`(通过后端构建输出中的 `__dirname` 解析)
|
|
174
|
+
- 优先重用 `LlmConfig.load()` 并格式化其合并视图,或添加一个返回"仅默认值"和"合并"提供商映射的助手
|
|
175
|
+
- `team_mgmt_manual({ "topics": ["toolsets"] })`(如果添加)
|
|
176
|
+
- 在运行时从内存中注册表加载(`dominds/main/tools/registry.ts` 中的 `listToolsets()` / `listTools()`),而不是维护单独的列表
|
|
177
|
+
|
|
178
|
+
将这些保持为**静态/手册文本**(而非动态加载):
|
|
179
|
+
|
|
180
|
+
- 高级解释、最佳实践和"为什么"部分
|
|
181
|
+
- 模式摘要(例如成员字段表)。这些可以作为稳定的契约创作并在代码审查中验证;TypeScript 类型的运行时自省在构建后不可靠
|
|
182
|
+
|
|
183
|
+
## 管理 `.minds/llm.yaml`
|
|
184
|
+
|
|
185
|
+
### 它做什么
|
|
186
|
+
|
|
187
|
+
`dominds` 从 `dominds/main/llm/defaults.yaml` 加载内置提供商定义,然后合并来自 `.minds/llm.yaml` 的 rtws 覆盖(rtws 键覆盖默认值)。见:
|
|
188
|
+
|
|
189
|
+
- `dominds/main/llm/client.ts`(`LlmConfig.load()`)
|
|
190
|
+
- `dominds/main/llm/defaults.yaml`(内置提供商目录)
|
|
191
|
+
|
|
192
|
+
### 文件格式(模板)
|
|
193
|
+
|
|
194
|
+
`.minds/llm.yaml` 必须包含一个 `providers` 对象。每个提供商由一个短标识符键入,用于 `.minds/team.yaml` 成员配置。
|
|
195
|
+
|
|
196
|
+
`apiType` 说明(常见值):
|
|
197
|
+
|
|
198
|
+
- `openai`:使用 OpenAI **Responses API**(适用于 OpenAI 官方;需要 `/v1` 语义的 `responses` 端点)
|
|
199
|
+
- `openai-compatible`:使用 OpenAI **Chat Completions API**(适用于多数“OpenAI 兼容”第三方/代理;例如 Volcano Engine Ark `.../api/v3`)
|
|
200
|
+
- **识图支持**:如果该 provider/model 支持 Chat Completions 的多模态输入,Dominds 会把工具输出里的图片(`func_result_msg.contentItems[].type=input_image`,来自 MCP 等工具)读取 artifact 后作为 `image_url` 形式喂给模型;不支持的 mimeType 会降级成文本提示。
|
|
201
|
+
|
|
202
|
+
```yaml
|
|
203
|
+
providers:
|
|
204
|
+
openai:
|
|
205
|
+
name: OpenAI
|
|
206
|
+
apiType: openai
|
|
207
|
+
baseUrl: https://api.openai.com/v1
|
|
208
|
+
apiKeyEnvVar: OPENAI_API_KEY
|
|
209
|
+
tech_spec_url: https://platform.openai.com/docs
|
|
210
|
+
api_mgmt_url: https://platform.openai.com/api-keys
|
|
211
|
+
models:
|
|
212
|
+
gpt-5.2:
|
|
213
|
+
name: GPT-5.2
|
|
214
|
+
context_length: 272000
|
|
215
|
+
input_length: 272000
|
|
216
|
+
output_length: 32768
|
|
217
|
+
context_window: 272K
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
最佳实践:
|
|
221
|
+
|
|
222
|
+
- 在 `.minds/llm.yaml` 中**不存储任何密钥**。使用 `apiKeyEnvVar` 和环境变量
|
|
223
|
+
- 只添加你真正需要的提供商。大多数设置应该依赖 `defaults.yaml`
|
|
224
|
+
- 保持模型键稳定;它们成为 `.minds/team.yaml` 中使用的 `model` 值
|
|
225
|
+
|
|
226
|
+
## 管理 `.minds/mcp.yaml`(MCP 服务器)
|
|
227
|
+
|
|
228
|
+
### 它做什么
|
|
229
|
+
|
|
230
|
+
`.minds/mcp.yaml` 将 MCP(模型上下文协议)服务器配置为一级工具来源。每个配置的服务器注册一个 Dominds **工具集**,名为 `<serverId>`,以及该工具集下的一组工具。
|
|
231
|
+
|
|
232
|
+
此文件在运行时**热重载**(无需服务器重启)。如果文件不存在,MCP 支持被禁用(不会注册动态 MCP 工具集)。
|
|
233
|
+
|
|
234
|
+
参考规范:
|
|
235
|
+
|
|
236
|
+
- MCP 行为和语义:[`mcp-support.zh.md`](./mcp-support.zh.md)
|
|
237
|
+
|
|
238
|
+
### 映射:服务器 → 工具集(以及如何授予)
|
|
239
|
+
|
|
240
|
+
- 服务器 ID `sdk_http` 注册工具集 `sdk_http`
|
|
241
|
+
- 要允许队友使用 MCP 工具,在 `.minds/team.yaml` 中授予工具集:
|
|
242
|
+
|
|
243
|
+
```yaml
|
|
244
|
+
members:
|
|
245
|
+
alice:
|
|
246
|
+
toolsets:
|
|
247
|
+
- ws_read
|
|
248
|
+
- sdk_http
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
注意:
|
|
252
|
+
|
|
253
|
+
- MCP 工具名称在所有工具集(内置 + MCP)中是全局的。冲突导致工具被跳过,应通过问题 + 日志暴露
|
|
254
|
+
- `mcp_admin` 是一个内置工具集,包含 `mcp_restart`(每个服务器最佳努力重启)
|
|
255
|
+
|
|
256
|
+
### 文件格式(模板)
|
|
257
|
+
|
|
258
|
+
```yaml
|
|
259
|
+
version: 1
|
|
260
|
+
servers:
|
|
261
|
+
<serverId>:
|
|
262
|
+
# 传输:stdio
|
|
263
|
+
transport: stdio
|
|
264
|
+
command: npx
|
|
265
|
+
args: ['-y', '@playwright/mcp@latest']
|
|
266
|
+
env: {}
|
|
267
|
+
|
|
268
|
+
# 传输:streamable_http
|
|
269
|
+
# transport: streamable_http
|
|
270
|
+
# url: http://127.0.0.1:3000/mcp
|
|
271
|
+
# headers: {}
|
|
272
|
+
# sessionId: '' # 可选
|
|
273
|
+
|
|
274
|
+
# 工具暴露控制
|
|
275
|
+
tools:
|
|
276
|
+
whitelist: [] # 可选
|
|
277
|
+
blacklist: [] # 可选
|
|
278
|
+
|
|
279
|
+
# 工具名称转换
|
|
280
|
+
transform: [] # 可选
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### 工具暴露控制(白名单 / 黑名单)
|
|
284
|
+
|
|
285
|
+
使用 `tools.whitelist` / `tools.blacklist` 来减少暴露的工具表面并避免 UI 混乱。模式使用 `*` 通配符并应用于**原始 MCP 工具名称**(在转换之前),因此过滤器即使以后命名转换更改也保持稳定。
|
|
286
|
+
|
|
287
|
+
### 命名转换(前缀 / 后缀)
|
|
288
|
+
|
|
289
|
+
MCP 服务器通常导出简短/常见的工具名称(`open`、`search`、`list`,……)。使用转换来避免全局冲突并使工具名称可识别:
|
|
290
|
+
|
|
291
|
+
```yaml
|
|
292
|
+
transform:
|
|
293
|
+
- prefix: 'playwright_'
|
|
294
|
+
- suffix: '_mcp'
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Env 和 headers 接线
|
|
298
|
+
|
|
299
|
+
Prefer copying from the host environment for secrets:
|
|
300
|
+
|
|
301
|
+
```yaml
|
|
302
|
+
env:
|
|
303
|
+
MCP_TOKEN:
|
|
304
|
+
env: MY_LOCAL_MCP_TOKEN
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
对于 `streamable_http`,`headers` 支持相同的字面量或 env 映射。
|
|
308
|
+
|
|
309
|
+
### 操作行为(热重载 + 最近已知良好状态)
|
|
310
|
+
|
|
311
|
+
- 配置编辑应无需重启即可应用
|
|
312
|
+
- 如果服务器更新失败(生成/连接/模式/名称冲突等),系统应保持该服务器的**最近已知良好**工具集注册,并暴露描述失败的问题
|
|
313
|
+
- 删除 `.minds/mcp.yaml` 应取消注册所有 MCP 派生的工具集/工具并自动清除相关的 MCP 问题
|
|
314
|
+
|
|
315
|
+
## 管理 `.minds/team.yaml`
|
|
316
|
+
|
|
317
|
+
### 它做什么
|
|
318
|
+
|
|
319
|
+
`.minds/team.yaml` 定义:
|
|
320
|
+
|
|
321
|
+
- 团队名单(`members`)
|
|
322
|
+
- 应用于所有成员的默认值(`member_defaults`)
|
|
323
|
+
- 工具可用性(`toolsets` / `tools`)
|
|
324
|
+
- rtws 文件工具的目录访问控制(`read_dirs`、`write_dirs`、`no_*`)
|
|
325
|
+
|
|
326
|
+
该文件由 `dominds/main/team.ts` 中的 `Team.load()` 加载。如果文件不存在,运行时引导默认团队(今天它创建影子成员 `fuxi` + `pangu`)。
|
|
327
|
+
|
|
328
|
+
### 文件格式(模板)
|
|
329
|
+
|
|
330
|
+
```yaml
|
|
331
|
+
member_defaults:
|
|
332
|
+
provider: codex
|
|
333
|
+
model: gpt-5.2
|
|
334
|
+
toolsets:
|
|
335
|
+
- ws_read
|
|
336
|
+
- memory
|
|
337
|
+
# 默认姿态:拒绝普通成员的 `.minds/` 编辑
|
|
338
|
+
#(团队管理应通过 `team-mgmt` 工具完成,而非通用文件工具)
|
|
339
|
+
no_read_dirs:
|
|
340
|
+
- .minds/team.yaml
|
|
341
|
+
- .minds/llm.yaml
|
|
342
|
+
- .minds/mcp.yaml
|
|
343
|
+
- .minds/team/**
|
|
344
|
+
no_write_dirs:
|
|
345
|
+
- .minds/**
|
|
346
|
+
|
|
347
|
+
default_responder: fuxi
|
|
348
|
+
|
|
349
|
+
members:
|
|
350
|
+
# 示例显在成员(推荐):至少定义一个非隐藏的响应者用于日常工作
|
|
351
|
+
dev:
|
|
352
|
+
name: Dev
|
|
353
|
+
icon: '🧑💻'
|
|
354
|
+
toolsets:
|
|
355
|
+
- ws_mod
|
|
356
|
+
- os
|
|
357
|
+
streaming: true
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
重要说明:
|
|
361
|
+
|
|
362
|
+
- `member_defaults.provider` 和 `member_defaults.model` 是必需的(见 `dominds/main/team.ts` 中的验证和 `dominds/main/server/api-routes.ts` 中的服务器错误消息)
|
|
363
|
+
- 成员对象使用**原型回退**到 `member_defaults`(见 `dominds/main/team.ts` 中的 `Object.setPrototypeOf`)。省略的属性自动继承默认值
|
|
364
|
+
- 目录模式由 `dominds/main/access-control.ts` 中的 `matchesPattern()` 评估:
|
|
365
|
+
- 模式表现为"目录作用域",并支持 `*` 和 `**`
|
|
366
|
+
- 拒绝列表(`no_*`)在允许列表(`*_dirs`)之前检查
|
|
367
|
+
|
|
368
|
+
最佳实践:
|
|
369
|
+
|
|
370
|
+
- 使 `member_defaults` 保守。按成员授予额外的工具/目录
|
|
371
|
+
- 优先使用工具集而不是单独枚举工具,除非你需要一次性工具
|
|
372
|
+
- 保持 `.minds/team.yaml` 的所有权严格;只有团队管理者应该能够编辑它
|
|
373
|
+
- 避免在 `team.yaml` 中重复内置约束:
|
|
374
|
+
- `*.tsk/**`(封装的 Taskdocs)对所有通用文件工具被硬性拒绝
|
|
375
|
+
- `.minds/**` 对通用文件工具被硬性拒绝;只有专用的 `team-mgmt` 工具集可以访问它
|
|
376
|
+
- 只有当你需要额外的显式性时才将这些放入 `no_*`;无论如何都会强制执行
|
|
377
|
+
|
|
378
|
+
## 管理 `.minds/team/<member>/*.md`(智能体心智)
|
|
379
|
+
|
|
380
|
+
运行时在每次对话开始时读取这些:
|
|
381
|
+
|
|
382
|
+
- `.minds/team/<id>/persona.md`
|
|
383
|
+
- `.minds/team/<id>/knowledge.md`
|
|
384
|
+
- `.minds/team/<id>/lessons.md`
|
|
385
|
+
|
|
386
|
+
见 `dominds/main/minds/load.ts`(`readAgentMind()`)。
|
|
387
|
+
|
|
388
|
+
建议的结构:
|
|
389
|
+
|
|
390
|
+
```
|
|
391
|
+
.minds/
|
|
392
|
+
team.yaml
|
|
393
|
+
llm.yaml
|
|
394
|
+
team/
|
|
395
|
+
fuxi/
|
|
396
|
+
persona.md
|
|
397
|
+
knowledge.md
|
|
398
|
+
lessons.md
|
|
399
|
+
pangu/
|
|
400
|
+
persona.md
|
|
401
|
+
knowledge.md
|
|
402
|
+
lessons.md
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
## 引导策略:影子成员引导
|
|
406
|
+
|
|
407
|
+
初始引导的首选行为:
|
|
408
|
+
|
|
409
|
+
- 影子成员 `fuxi` 实例应该获得 `team-mgmt`(和手册工具),而不是广泛的 `ws_mod`
|
|
410
|
+
- 影子成员 `pangu` 实例应该获得广泛的 rtws 工具集(例如 `ws_read`、`ws_mod`、`os`),但不获得 `team-mgmt`
|
|
411
|
+
- 在创建 `.minds/team.yaml` 后,团队定义成为事实来源
|
|
412
|
+
|
|
413
|
+
这避免了需要授予完整的 rtws 访问权限来配置团队。
|
|
414
|
+
|
|
415
|
+
## 问题排查
|
|
416
|
+
|
|
417
|
+
- **"缺少必需的 provider/model"**:确保 `.minds/team.yaml` 有 `member_defaults.provider` 和 `member_defaults.model`
|
|
418
|
+
- **找不到提供商**:确保 `.minds/team.yaml` 的 `provider` 键存在于合并的提供商配置中(`dominds/main/llm/defaults.yaml` + `.minds/llm.yaml`)
|
|
419
|
+
- **编辑 `.minds/` 时访问被拒绝**:通用文件工具的预期行为;使用 `team-mgmt` 工具
|
|
420
|
+
- **MCP 工具在工具视图中不可见**:
|
|
421
|
+
- 确认 `.minds/mcp.yaml` 存在且有效
|
|
422
|
+
- 打开**问题**并查找 MCP 相关错误
|
|
423
|
+
- 确认队友在 `.minds/team.yaml` 中被授予了相关的 `<serverId>` 工具集
|
|
424
|
+
- **MCP 服务器持续 (re)load 失败**:
|
|
425
|
+
- 检查问题详细信息(缺少 env 变量、无效的工具名称、冲突、连接错误)
|
|
426
|
+
- 修复配置后,使用 `mcp_admin` 中的 `mcp_restart` 进行每个服务器的最佳努力重启
|
package/dist/llm/defaults.yaml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Optional provider-level retry controls for
|
|
1
|
+
# Optional provider-level retry controls for kernel dialog driving:
|
|
2
2
|
# - llm_retry_max_retries: extra retries after the initial attempt (default 5).
|
|
3
3
|
# - llm_retry_initial_delay_ms: delay before the 1st retry (default 1000).
|
|
4
4
|
# - llm_retry_backoff_multiplier: exponential factor between retries (default 2; e.g. 1.5).
|