dominds 0.9.2 → 0.9.3
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/docs/team-mgmt-toolset.md +12 -12
- package/dist/docs/team-mgmt-toolset.zh.md +12 -12
- package/dist/minds/builtin/cmdr/persona.md +3 -0
- package/dist/minds/builtin/dijiang/knowledge.md +287 -0
- package/dist/minds/builtin/dijiang/persona.md +7 -0
- package/dist/showing-by-doing.js +31 -34
- package/dist/tools/apply-patch.js +4 -0
- package/dist/tools/builtins.js +3 -3
- package/dist/tools/context-health.js +7 -7
- package/dist/utils/task-doc.js +16 -16
- package/package.json +1 -1
- package/dist/docs/keep-going.zh.md +0 -162
- package/dist/docs/showing-by-doing.md +0 -208
- package/dist/docs/showing-by-doing.zh.md +0 -177
- package/dist/minds/promptdocs.js +0 -263
- package/dist/snippets/README.en.md +0 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Team Management Toolset (`
|
|
1
|
+
# Team Management Toolset (`team_mgmt`)
|
|
2
2
|
|
|
3
|
-
Chinese version: [中文版](./
|
|
3
|
+
Chinese version: [中文版](./team_mgmt-toolset.zh.md)
|
|
4
4
|
|
|
5
5
|
This document specifies a dedicated **team management toolset** whose only job is managing the
|
|
6
6
|
rtws’s “mindset” configuration files under `.minds/` (team roster, LLM providers, and agent
|
|
@@ -29,7 +29,7 @@ equivalent of the `ws_mod` toolset + unrestricted `read_dirs`/`write_dirs`), bec
|
|
|
29
29
|
|
|
30
30
|
## Migration Plan (Replacing legacy builtin team-manager knowledge)
|
|
31
31
|
|
|
32
|
-
This document is a **design spec** for the new `
|
|
32
|
+
This document is a **design spec** for the new `team_mgmt` toolset. It is not something we should
|
|
33
33
|
ever tell an agent to “look up” at runtime.
|
|
34
34
|
|
|
35
35
|
Instead, the runtime “single source of truth” for team management guidance should be
|
|
@@ -75,9 +75,9 @@ This makes sense for “normal” agents, but it blocks the team manager from do
|
|
|
75
75
|
- Providing general-purpose file editing across the repo.
|
|
76
76
|
- Making `.minds/` broadly writable by default team members.
|
|
77
77
|
|
|
78
|
-
## Proposed `
|
|
78
|
+
## Proposed `team_mgmt` Toolset
|
|
79
79
|
|
|
80
|
-
The `
|
|
80
|
+
The `team_mgmt` toolset mirrors a minimal subset of `fs`/`txt`, but **hard-scopes** all operations to
|
|
81
81
|
`.minds/` and rejects anything outside.
|
|
82
82
|
|
|
83
83
|
### Naming Conventions (Human / UI)
|
|
@@ -124,7 +124,7 @@ Notes:
|
|
|
124
124
|
- Reject paths containing `..`.
|
|
125
125
|
- Reject any path that resolves outside `.minds/` after normalization.
|
|
126
126
|
- Prefer an explicit allowlist over “anything in the rtws”.
|
|
127
|
-
- For `
|
|
127
|
+
- For `team_mgmt`, that explicit allowlist is `.minds/**` (including `.minds/memory/**`) so the
|
|
128
128
|
team manager can repair accidental corruptions made by other tools (even though `.minds/memory/**`
|
|
129
129
|
already has dedicated `memory` / `team_memory` tools for normal use).
|
|
130
130
|
- Require explicit `.minds/...` paths and validate them; do not support “implicitly scoped” paths
|
|
@@ -133,7 +133,7 @@ Notes:
|
|
|
133
133
|
### Why a dedicated toolset (instead of only `read_dirs` / `write_dirs`)?
|
|
134
134
|
|
|
135
135
|
`read_dirs` / `write_dirs` are still valuable, but they are configured in `.minds/team.yaml`, which
|
|
136
|
-
may not exist during bootstrap. A dedicated `
|
|
136
|
+
may not exist during bootstrap. A dedicated `team_mgmt` toolset:
|
|
137
137
|
|
|
138
138
|
- Lets the team manager create `.minds/team.yaml` safely from “zero state”.
|
|
139
139
|
- Keeps the scope bounded even if the member’s directory allow/deny lists are empty.
|
|
@@ -387,7 +387,7 @@ member_defaults:
|
|
|
387
387
|
- ws_read
|
|
388
388
|
- memory
|
|
389
389
|
# Default posture: deny `.minds/` edits for normal members.
|
|
390
|
-
# (Team management should be done via `
|
|
390
|
+
# (Team management should be done via `team_mgmt` tools, not general file tools.)
|
|
391
391
|
no_read_dirs:
|
|
392
392
|
- .minds/team.yaml
|
|
393
393
|
- .minds/llm.yaml
|
|
@@ -426,7 +426,7 @@ Best practices:
|
|
|
426
426
|
- Keep `.minds/team.yaml` ownership tight; only the team manager should be able to edit it.
|
|
427
427
|
- Avoid repeating built-in constraints in `team.yaml`:
|
|
428
428
|
- `*.tsk/**` (encapsulated Taskdocs) are hard-denied for all general file tools.
|
|
429
|
-
- `.minds/**` is hard-denied for general file tools; only the dedicated `
|
|
429
|
+
- `.minds/**` is hard-denied for general file tools; only the dedicated `team_mgmt` toolset can access it.
|
|
430
430
|
Put these in `no_*` only when you need extra explicitness; they are enforced regardless.
|
|
431
431
|
|
|
432
432
|
## Managing `.minds/team/<member>/*.md` (agent minds)
|
|
@@ -460,8 +460,8 @@ Suggested structure:
|
|
|
460
460
|
|
|
461
461
|
Preferred behavior for initial bootstrap:
|
|
462
462
|
|
|
463
|
-
- The shadow `fuxi` instance should get `
|
|
464
|
-
- The shadow `pangu` instance should get broad rtws toolsets (e.g. `ws_read`, `ws_mod`, `os`), but not `
|
|
463
|
+
- The shadow `fuxi` instance should get `team_mgmt` (and the manual tool), not broad `ws_mod`.
|
|
464
|
+
- The shadow `pangu` instance should get broad rtws toolsets (e.g. `ws_read`, `ws_mod`, `os`), but not `team_mgmt`.
|
|
465
465
|
- After `.minds/team.yaml` is created, the team definition becomes the source of truth.
|
|
466
466
|
|
|
467
467
|
This avoids needing to grant full rtws access to configure the team.
|
|
@@ -472,7 +472,7 @@ This avoids needing to grant full rtws access to configure the team.
|
|
|
472
472
|
`member_defaults.model`.
|
|
473
473
|
- **Provider not found**: Ensure `.minds/team.yaml` `provider` keys exist in merged provider config
|
|
474
474
|
(`dominds/main/llm/defaults.yaml` + `.minds/llm.yaml`).
|
|
475
|
-
- **Access denied when editing `.minds/`**: Intended for general file tools; use `
|
|
475
|
+
- **Access denied when editing `.minds/`**: Intended for general file tools; use `team_mgmt` tools.
|
|
476
476
|
- **MCP tools not visible in Tools view**:
|
|
477
477
|
- Confirm `.minds/mcp.yaml` exists and is valid.
|
|
478
478
|
- Open **Problems** and look for MCP-related errors.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# 团队管理工具集(`
|
|
1
|
+
# 团队管理工具集(`team_mgmt`)
|
|
2
2
|
|
|
3
|
-
英文版:[English](./
|
|
3
|
+
英文版:[English](./team_mgmt-toolset.md)
|
|
4
4
|
|
|
5
5
|
本文档指定了一个专用的**团队管理工具集**,其唯一职责是管理 rtws(运行时工作区)`.minds/` 下的"心智"配置文件(团队名单、LLM 提供商和智能体心智文件),而不授予广泛的运行时工作区访问权限。
|
|
6
6
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
## 迁移计划(替换传统的内置团队管理者知识)
|
|
25
25
|
|
|
26
|
-
本文档是新的 `
|
|
26
|
+
本文档是新的 `team_mgmt` 工具集的**设计规范**。这不是我们应该在运行时让智能体"查阅"的内容。
|
|
27
27
|
|
|
28
28
|
相反,运行时团队管理的"单一事实来源"应该是函数工具 `team_mgmt_manual` 的输出。
|
|
29
29
|
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
- 提供跨仓库的通用文件编辑
|
|
62
62
|
- 默认让 `.minds/` 可广泛写入
|
|
63
63
|
|
|
64
|
-
## 提议的 `
|
|
64
|
+
## 提议的 `team_mgmt` 工具集
|
|
65
65
|
|
|
66
|
-
`
|
|
66
|
+
`team_mgmt` 工具集镜像 `fs`/`txt` 的最小子集,但**硬作用域**所有操作到 `.minds/` 并拒绝任何外部操作。
|
|
67
67
|
|
|
68
68
|
### 命名约定(人类 / UI)
|
|
69
69
|
|
|
@@ -104,12 +104,12 @@
|
|
|
104
104
|
- 拒绝包含 `..` 的路径
|
|
105
105
|
- 拒绝规范化后解析到 `.minds/` 之外的任何路径
|
|
106
106
|
- 优先使用显式白名单而非" rtws 中的任何内容"
|
|
107
|
-
- 对于 `
|
|
107
|
+
- 对于 `team_mgmt`,该显式白名单是 `.minds/**`(包括 `.minds/memory/**`),以便团队管理者可以修复其他工具造成的意外损坏(即使 `.minds/memory/**` 已有专用的 `memory` / `team_memory` 工具供正常使用)
|
|
108
108
|
- 需要显式的 `.minds/...` 路径并验证它们;不支持像 `team.yaml` 这样的"隐式作用域"路径
|
|
109
109
|
|
|
110
110
|
### 为什么需要专用工具集(而不是仅 `read_dirs` / `write_dirs`)?
|
|
111
111
|
|
|
112
|
-
`read_dirs` / `write_dirs` 仍然很有价值,但它们配置在 `.minds/team.yaml` 中,在引导期间可能不存在。专用的 `
|
|
112
|
+
`read_dirs` / `write_dirs` 仍然很有价值,但它们配置在 `.minds/team.yaml` 中,在引导期间可能不存在。专用的 `team_mgmt` 工具集:
|
|
113
113
|
|
|
114
114
|
- 让团队管理者能够从"零状态"安全地创建 `.minds/team.yaml`
|
|
115
115
|
- 即使成员的目录允许/拒绝列表为空,也保持作用域边界
|
|
@@ -335,7 +335,7 @@ member_defaults:
|
|
|
335
335
|
- ws_read
|
|
336
336
|
- memory
|
|
337
337
|
# 默认姿态:拒绝普通成员的 `.minds/` 编辑
|
|
338
|
-
#(团队管理应通过 `
|
|
338
|
+
#(团队管理应通过 `team_mgmt` 工具完成,而非通用文件工具)
|
|
339
339
|
no_read_dirs:
|
|
340
340
|
- .minds/team.yaml
|
|
341
341
|
- .minds/llm.yaml
|
|
@@ -372,7 +372,7 @@ members:
|
|
|
372
372
|
- 保持 `.minds/team.yaml` 的所有权严格;只有团队管理者应该能够编辑它
|
|
373
373
|
- 避免在 `team.yaml` 中重复内置约束:
|
|
374
374
|
- `*.tsk/**`(封装的 Taskdocs)对所有通用文件工具被硬性拒绝
|
|
375
|
-
- `.minds/**` 对通用文件工具被硬性拒绝;只有专用的 `
|
|
375
|
+
- `.minds/**` 对通用文件工具被硬性拒绝;只有专用的 `team_mgmt` 工具集可以访问它
|
|
376
376
|
- 只有当你需要额外的显式性时才将这些放入 `no_*`;无论如何都会强制执行
|
|
377
377
|
|
|
378
378
|
## 管理 `.minds/team/<member>/*.md`(智能体心智)
|
|
@@ -406,8 +406,8 @@ members:
|
|
|
406
406
|
|
|
407
407
|
初始引导的首选行为:
|
|
408
408
|
|
|
409
|
-
- 影子成员 `fuxi` 实例应该获得 `
|
|
410
|
-
- 影子成员 `pangu` 实例应该获得广泛的 rtws 工具集(例如 `ws_read`、`ws_mod`、`os`),但不获得 `
|
|
409
|
+
- 影子成员 `fuxi` 实例应该获得 `team_mgmt`(和手册工具),而不是广泛的 `ws_mod`
|
|
410
|
+
- 影子成员 `pangu` 实例应该获得广泛的 rtws 工具集(例如 `ws_read`、`ws_mod`、`os`),但不获得 `team_mgmt`
|
|
411
411
|
- 在创建 `.minds/team.yaml` 后,团队定义成为事实来源
|
|
412
412
|
|
|
413
413
|
这避免了需要授予完整的 rtws 访问权限来配置团队。
|
|
@@ -416,7 +416,7 @@ members:
|
|
|
416
416
|
|
|
417
417
|
- **"缺少必需的 provider/model"**:确保 `.minds/team.yaml` 有 `member_defaults.provider` 和 `member_defaults.model`
|
|
418
418
|
- **找不到提供商**:确保 `.minds/team.yaml` 的 `provider` 键存在于合并的提供商配置中(`dominds/main/llm/defaults.yaml` + `.minds/llm.yaml`)
|
|
419
|
-
- **编辑 `.minds/` 时访问被拒绝**:通用文件工具的预期行为;使用 `
|
|
419
|
+
- **编辑 `.minds/` 时访问被拒绝**:通用文件工具的预期行为;使用 `team_mgmt` 工具
|
|
420
420
|
- **MCP 工具在工具视图中不可见**:
|
|
421
421
|
- 确认 `.minds/mcp.yaml` 存在且有效
|
|
422
422
|
- 打开**问题**并查找 MCP 相关错误
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
## Team Definition
|
|
2
|
+
|
|
3
|
+
The team definition lives in `.minds/team.yaml`. This file configures team composition, member roles, LLM provider/model for each member agent, toolsets, and access permissions for all AI agents in this workspace.
|
|
4
|
+
|
|
5
|
+
### Structure Overview
|
|
6
|
+
|
|
7
|
+
The `team.yaml` file has three main sections:
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
member_defaults: { ... } # Default settings applied to all members
|
|
11
|
+
default_responder: name # Member who handles unspecified requests
|
|
12
|
+
members: { ... } # Individual member configurations
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Member Configuration Properties
|
|
16
|
+
|
|
17
|
+
Each member supports these properties:
|
|
18
|
+
|
|
19
|
+
| Property | Type | Description |
|
|
20
|
+
| --------------- | ------- | --------------------------------------------------------------------------- |
|
|
21
|
+
| `name` | string | Display name for the member |
|
|
22
|
+
| `icon` | string | Emoji identifier for UI display |
|
|
23
|
+
| `gofor` | list | Responsibilities and primary duties |
|
|
24
|
+
| `provider` | string | LLM provider key from `llm.yaml` |
|
|
25
|
+
| `model` | string | Model name within the provider |
|
|
26
|
+
| `toolsets` | list | Capability groups: `memory`, `ws_read`, `ws_mod`, `team_memory` |
|
|
27
|
+
| `tools` | list | Specific tool names: `shell_cmd`, `git`, `stop_daemon`, `get_daemon_output` |
|
|
28
|
+
| `streaming` | boolean | Enable/disable streaming mode (required for shell tools) |
|
|
29
|
+
| `read_dirs` | list | Allowed read directories (glob patterns) |
|
|
30
|
+
| `no_read_dirs` | list | Explicitly denied read directories |
|
|
31
|
+
| `write_dirs` | list | Allowed write directories (glob patterns) |
|
|
32
|
+
| `no_write_dirs` | list | Explicitly denied write directories |
|
|
33
|
+
|
|
34
|
+
## LLM Configuration
|
|
35
|
+
|
|
36
|
+
### Builtin Defaults
|
|
37
|
+
|
|
38
|
+
Common defaults are already supplied:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
providers:
|
|
42
|
+
codex:
|
|
43
|
+
name: Codex (ChatGPT)
|
|
44
|
+
apiType: codex
|
|
45
|
+
baseUrl: https://chatgpt.com/backend-api/
|
|
46
|
+
apiKeyEnvVar: CODEX_HOME
|
|
47
|
+
tech_spec_url: https://platform.openai.com/docs/api-reference/responses
|
|
48
|
+
api_mgmt_url: https://chatgpt.com/
|
|
49
|
+
models:
|
|
50
|
+
gpt-5.2-codex:
|
|
51
|
+
name: GPT-5.2 Codex
|
|
52
|
+
context_length: 272000
|
|
53
|
+
input_length: 272000
|
|
54
|
+
output_length: 32768
|
|
55
|
+
context_window: '272K'
|
|
56
|
+
gpt-5.2:
|
|
57
|
+
name: GPT-5.2
|
|
58
|
+
context_length: 272000
|
|
59
|
+
input_length: 272000
|
|
60
|
+
output_length: 32768
|
|
61
|
+
context_window: '272K'
|
|
62
|
+
minimaxi.com-coding-plan:
|
|
63
|
+
name: MiniMax CN Coding Plan
|
|
64
|
+
apiType: anthropic
|
|
65
|
+
baseUrl: https://api.minimaxi.com/anthropic
|
|
66
|
+
apiKeyEnvVar: MINIMAX_CN_CP_API_KEY
|
|
67
|
+
tech_spec_url: https://platform.minimaxi.com/document/guides
|
|
68
|
+
api_mgmt_url: https://platform.minimaxi.com/
|
|
69
|
+
models:
|
|
70
|
+
MiniMax-M2.1:
|
|
71
|
+
name: MiniMax M2.1
|
|
72
|
+
context_length: 204800
|
|
73
|
+
input_length: 204800
|
|
74
|
+
output_length: 8192
|
|
75
|
+
context_window: '204K'
|
|
76
|
+
MiniMax-M2:
|
|
77
|
+
name: MiniMax M2
|
|
78
|
+
context_length: 204800
|
|
79
|
+
input_length: 204800
|
|
80
|
+
output_length: 8192
|
|
81
|
+
context_window: '204K'
|
|
82
|
+
minimaxi.com:
|
|
83
|
+
name: MiniMax CN
|
|
84
|
+
apiType: anthropic
|
|
85
|
+
baseUrl: https://api.minimaxi.com/anthropic
|
|
86
|
+
apiKeyEnvVar: MINIMAX_CN_API_KEY
|
|
87
|
+
tech_spec_url: https://platform.minimaxi.com/document/guides
|
|
88
|
+
api_mgmt_url: https://platform.minimaxi.com/
|
|
89
|
+
models:
|
|
90
|
+
MiniMax-M2.1:
|
|
91
|
+
name: MiniMax M2.1
|
|
92
|
+
context_length: 204800
|
|
93
|
+
input_length: 204800
|
|
94
|
+
output_length: 8192
|
|
95
|
+
context_window: '204K'
|
|
96
|
+
MiniMax-M2:
|
|
97
|
+
name: MiniMax M2 Stable
|
|
98
|
+
context_length: 204800
|
|
99
|
+
input_length: 204800
|
|
100
|
+
output_length: 8192
|
|
101
|
+
context_window: '204K'
|
|
102
|
+
minimax.io-coding-plan:
|
|
103
|
+
name: MiniMax International Coding Plan
|
|
104
|
+
apiType: anthropic
|
|
105
|
+
baseUrl: https://api.minimax.io/anthropic
|
|
106
|
+
apiKeyEnvVar: MINIMAX_CP_API_KEY
|
|
107
|
+
tech_spec_url: https://platform.minimax.io/docs/api-reference
|
|
108
|
+
api_mgmt_url: https://platform.minimax.io/
|
|
109
|
+
models:
|
|
110
|
+
MiniMax-M2.1:
|
|
111
|
+
name: MiniMax M2.1
|
|
112
|
+
context_length: 204800
|
|
113
|
+
input_length: 204800
|
|
114
|
+
output_length: 8192
|
|
115
|
+
context_window: '204K'
|
|
116
|
+
MiniMax-M2:
|
|
117
|
+
name: MiniMax M2
|
|
118
|
+
context_length: 204800
|
|
119
|
+
input_length: 204800
|
|
120
|
+
output_length: 8192
|
|
121
|
+
context_window: '204K'
|
|
122
|
+
minimax.io:
|
|
123
|
+
name: MiniMax International
|
|
124
|
+
apiType: anthropic
|
|
125
|
+
baseUrl: https://api.minimax.io/anthropic
|
|
126
|
+
apiKeyEnvVar: MINIMAX_API_KEY
|
|
127
|
+
tech_spec_url: https://platform.minimax.io/docs/api-reference
|
|
128
|
+
api_mgmt_url: https://platform.minimax.io/
|
|
129
|
+
models:
|
|
130
|
+
MiniMax-M2.1:
|
|
131
|
+
name: MiniMax M2.1
|
|
132
|
+
context_length: 204800
|
|
133
|
+
input_length: 204800
|
|
134
|
+
output_length: 8192
|
|
135
|
+
context_window: '204K'
|
|
136
|
+
MiniMax-M2:
|
|
137
|
+
name: MiniMax M2 Stable
|
|
138
|
+
context_length: 204800
|
|
139
|
+
input_length: 204800
|
|
140
|
+
output_length: 8192
|
|
141
|
+
context_window: '204K'
|
|
142
|
+
bigmodel:
|
|
143
|
+
name: BigModel
|
|
144
|
+
apiType: anthropic
|
|
145
|
+
baseUrl: https://open.bigmodel.cn/api/anthropic
|
|
146
|
+
apiKeyEnvVar: ZHIPUAI_API_KEY
|
|
147
|
+
tech_spec_url: https://docs.bigmodel.cn/
|
|
148
|
+
api_mgmt_url: https://open.bigmodel.cn/usercenter/apikeys
|
|
149
|
+
models:
|
|
150
|
+
glm-4.7:
|
|
151
|
+
name: GLM-4.7
|
|
152
|
+
context_length: 200000
|
|
153
|
+
input_length: 200000
|
|
154
|
+
output_length: 8192
|
|
155
|
+
context_window: '200K'
|
|
156
|
+
glm-4.6:
|
|
157
|
+
name: GLM-4.6
|
|
158
|
+
context_length: 200000
|
|
159
|
+
input_length: 200000
|
|
160
|
+
output_length: 8192
|
|
161
|
+
context_window: '200K'
|
|
162
|
+
glm-4.5:
|
|
163
|
+
name: GLM-4.5
|
|
164
|
+
context_length: 128000
|
|
165
|
+
input_length: 128000
|
|
166
|
+
output_length: 8192
|
|
167
|
+
context_window: '128K'
|
|
168
|
+
glm-4.5-air:
|
|
169
|
+
name: GLM-4.5-Air
|
|
170
|
+
context_length: 128000
|
|
171
|
+
input_length: 128000
|
|
172
|
+
output_length: 8192
|
|
173
|
+
context_window: '128K'
|
|
174
|
+
ark-coding-plan:
|
|
175
|
+
name: Ark Coding Plan
|
|
176
|
+
apiType: anthropic
|
|
177
|
+
baseUrl: https://ark.cn-beijing.volces.com/api/coding
|
|
178
|
+
apiKeyEnvVar: ARK_API_KEY
|
|
179
|
+
tech_spec_url: https://api.volcengine.com/api-docs/view?serviceCode=ark&version=2024-01-01
|
|
180
|
+
api_mgmt_url: https://console.volcengine.com/ark
|
|
181
|
+
models:
|
|
182
|
+
doubao-seed-code-preview-latest:
|
|
183
|
+
name: Doubao Seed Code Preview
|
|
184
|
+
context_length: 256000
|
|
185
|
+
input_length: 256000
|
|
186
|
+
output_length: 8192
|
|
187
|
+
context_window: '256K'
|
|
188
|
+
optimization: 专为Agentic Coding任务优化
|
|
189
|
+
ark:
|
|
190
|
+
name: Ark
|
|
191
|
+
apiType: openai
|
|
192
|
+
baseUrl: https://ark.cn-beijing.volces.com/api/v3
|
|
193
|
+
apiKeyEnvVar: ARK_API_KEY
|
|
194
|
+
tech_spec_url: https://api.volcengine.com/api-docs/view?serviceCode=ark&version=2024-01-01
|
|
195
|
+
api_mgmt_url: https://console.volcengine.com/ark
|
|
196
|
+
models:
|
|
197
|
+
deepseek-v3-2-251201:
|
|
198
|
+
name: DeepSeek-V3.2
|
|
199
|
+
context_length: 128000
|
|
200
|
+
input_length: 96000
|
|
201
|
+
output_length: 32000
|
|
202
|
+
context_window: '128K'
|
|
203
|
+
doubao-seed-code-preview-251028:
|
|
204
|
+
name: Doubao Seed Code Preview 251028
|
|
205
|
+
context_length: 256000
|
|
206
|
+
input_length: 256000
|
|
207
|
+
output_length: 8192
|
|
208
|
+
context_window: '256K'
|
|
209
|
+
doubao-seed-1-6-251015:
|
|
210
|
+
name: Doubao Seed 1.6
|
|
211
|
+
context_length: 256000
|
|
212
|
+
input_length: 256000
|
|
213
|
+
output_length: 8192
|
|
214
|
+
context_window: '256K'
|
|
215
|
+
doubao-seed-1-6-thinking-250715:
|
|
216
|
+
name: Doubao Seed 1.6 Thinking
|
|
217
|
+
context_length: 256000
|
|
218
|
+
input_length: 256000
|
|
219
|
+
output_length: 8192
|
|
220
|
+
context_window: '256K'
|
|
221
|
+
doubao-seed-1-6-lite-251015:
|
|
222
|
+
name: Doubao Seed 1.6 Lite
|
|
223
|
+
context_length: 32000
|
|
224
|
+
input_length: 32000
|
|
225
|
+
output_length: 8192
|
|
226
|
+
context_window: '32K'
|
|
227
|
+
kimi-k2-250905:
|
|
228
|
+
name: Kimi K2
|
|
229
|
+
context_length: 200000
|
|
230
|
+
input_length: 200000
|
|
231
|
+
output_length: 8192
|
|
232
|
+
context_window: '200K (约20万汉字)'
|
|
233
|
+
deepseek-v3-1-terminus:
|
|
234
|
+
name: DeepSeek V3.1 Terminus
|
|
235
|
+
context_length: 131072
|
|
236
|
+
input_length: 131072
|
|
237
|
+
output_length: 8192
|
|
238
|
+
context_window: '128K'
|
|
239
|
+
anthropic:
|
|
240
|
+
name: Anthropic
|
|
241
|
+
apiType: anthropic
|
|
242
|
+
baseUrl: https://api.anthropic.com
|
|
243
|
+
apiKeyEnvVar: ANTHROPIC_API_KEY
|
|
244
|
+
tech_spec_url: https://docs.anthropic.com/en/docs
|
|
245
|
+
api_mgmt_url: https://console.anthropic.com/
|
|
246
|
+
models:
|
|
247
|
+
claude-opus-4.5:
|
|
248
|
+
name: Claude Opus 4.5
|
|
249
|
+
context_length: 200000
|
|
250
|
+
input_length: 200000
|
|
251
|
+
output_length: 8192
|
|
252
|
+
context_window: '200K'
|
|
253
|
+
claude-sonnet-4.5:
|
|
254
|
+
name: Claude Sonnet 4.5
|
|
255
|
+
context_length: 200000
|
|
256
|
+
input_length: 200000
|
|
257
|
+
output_length: 8192
|
|
258
|
+
context_window: '200K'
|
|
259
|
+
claude-haiku-4.5:
|
|
260
|
+
name: Claude Haiku 4.5
|
|
261
|
+
context_length: 200000
|
|
262
|
+
input_length: 200000
|
|
263
|
+
output_length: 8192
|
|
264
|
+
context_window: '200K'
|
|
265
|
+
openai:
|
|
266
|
+
name: OpenAI
|
|
267
|
+
apiType: openai
|
|
268
|
+
baseUrl: https://api.openai.com/v1
|
|
269
|
+
apiKeyEnvVar: OPENAI_API_KEY
|
|
270
|
+
tech_spec_url: https://platform.openai.com/docs
|
|
271
|
+
api_mgmt_url: https://platform.openai.com/api-keys
|
|
272
|
+
models:
|
|
273
|
+
gpt-5.2:
|
|
274
|
+
name: GPT-5.2
|
|
275
|
+
context_length: 272000
|
|
276
|
+
input_length: 272000
|
|
277
|
+
output_length: 32768
|
|
278
|
+
context_window: '272K'
|
|
279
|
+
gpt-5.2-codex:
|
|
280
|
+
name: GPT-5.2 Codex
|
|
281
|
+
context_length: 272000
|
|
282
|
+
input_length: 272000
|
|
283
|
+
output_length: 32768
|
|
284
|
+
context_window: '272K'
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
More custom LLM providers can be configured in `.minds/llm.yaml` with the same format as above.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
You are dijiang, the hundun (chaos) itself. You are invoked because the human user yet has no idea/plan of what to do with current workspace. Your mythical incarnations is the pun of your job: transform yourself into many avatars then disappear.
|
|
2
|
+
|
|
3
|
+
Your job is to guide the human user through the initial product definition, goal/constraint setting, and team definition for this workspace.
|
|
4
|
+
|
|
5
|
+
You collect/clarify the user's mission/vision for what to build and maintain, then suggest an optimal agent team definition with social division of labor among individual agents as team members, then land the definition into `.minds/team.yaml` and `.minds/team/*/*.md`
|
|
6
|
+
|
|
7
|
+
The team will serve as the workforce to sustain current workspace as a live produce under continuous DevOps.
|
package/dist/showing-by-doing.js
CHANGED
|
@@ -36,11 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.getShowingByDoingCacheStatus = getShowingByDoingCacheStatus;
|
|
37
37
|
exports.scheduleShowingByDoingForNewDialog = scheduleShowingByDoingForNewDialog;
|
|
38
38
|
const dialog_run_state_1 = require("./dialog-run-state");
|
|
39
|
-
const client_1 = require("./llm/client");
|
|
40
39
|
const driver_1 = require("./llm/driver");
|
|
41
|
-
const registry_1 = require("./llm/gen/registry");
|
|
42
40
|
const log_1 = require("./log");
|
|
43
|
-
const load_1 = require("./minds/load");
|
|
44
41
|
const runtime_language_1 = require("./shared/runtime-language");
|
|
45
42
|
const id_1 = require("./shared/utils/id");
|
|
46
43
|
const inter_dialog_format_1 = require("./shared/utils/inter-dialog-format");
|
|
@@ -558,29 +555,11 @@ async function generatePrimingNoteViaMainlineAgent(options) {
|
|
|
558
555
|
const { dlg, snapshotCmd, snapshotText, fbrResponses, shellPolicy, fbrEffort } = options;
|
|
559
556
|
const language = (0, runtime_language_1.getWorkLanguage)();
|
|
560
557
|
try {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
const model = agent.model ?? team.memberDefaults.model;
|
|
567
|
-
if (!provider || !model) {
|
|
568
|
-
throw new Error(`Missing provider/model for agent '${dlg.agentId}'`);
|
|
569
|
-
}
|
|
570
|
-
const llmCfg = await client_1.LlmConfig.load();
|
|
571
|
-
const providerCfg = llmCfg.getProvider(provider);
|
|
572
|
-
if (!providerCfg) {
|
|
573
|
-
throw new Error(`Provider configuration not found: '${provider}'`);
|
|
574
|
-
}
|
|
575
|
-
const llmGen = (0, registry_1.getLlmGenerator)(providerCfg.apiType);
|
|
576
|
-
if (!llmGen) {
|
|
577
|
-
throw new Error(`LLM generator not found for apiType='${providerCfg.apiType}'`);
|
|
578
|
-
}
|
|
579
|
-
// Force non-streaming for this synthetic summary generation.
|
|
580
|
-
const agentForGen = Object.create(agent);
|
|
581
|
-
agentForGen.streaming = false;
|
|
582
|
-
// Intentionally pass zero tools: we want a pure text synthesis and must avoid accidental
|
|
583
|
-
// `clear_mind` / `change_mind` calls during dialog creation.
|
|
558
|
+
// Use the normal dialog driver (streaming/non-streaming selection, retries, etc.) with a
|
|
559
|
+
// toolless `@self` subdialog, so this behavior matches the runtime driver with no local drift.
|
|
560
|
+
//
|
|
561
|
+
// Tool-less is important here: the Agent Priming synthesis must be a pure text transform of
|
|
562
|
+
// snapshot + drafts, and must not run tools (including any mind-edit tools).
|
|
584
563
|
const prompt = formatPrimingSynthesisPrompt({
|
|
585
564
|
language,
|
|
586
565
|
snapshotCmd,
|
|
@@ -589,17 +568,35 @@ async function generatePrimingNoteViaMainlineAgent(options) {
|
|
|
589
568
|
fbrDrafts: fbrResponses,
|
|
590
569
|
shellPolicy,
|
|
591
570
|
});
|
|
592
|
-
const
|
|
593
|
-
const
|
|
594
|
-
const
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
.
|
|
598
|
-
.
|
|
599
|
-
|
|
571
|
+
const tellaskHead = '@self (agent priming synthesis)';
|
|
572
|
+
const tellaskBody = prompt;
|
|
573
|
+
const sub = await dlg.createSubDialog(dlg.agentId, tellaskHead, tellaskBody, {
|
|
574
|
+
originMemberId: dlg.agentId,
|
|
575
|
+
callerDialogId: dlg.id.selfId,
|
|
576
|
+
callId: (0, id_1.generateShortId)(),
|
|
577
|
+
collectiveTargets: [dlg.agentId],
|
|
578
|
+
});
|
|
579
|
+
const initPrompt = (0, inter_dialog_format_1.formatAssignmentFromSupdialog)({
|
|
580
|
+
fromAgentId: dlg.agentId,
|
|
581
|
+
toAgentId: sub.agentId,
|
|
582
|
+
tellaskHead,
|
|
583
|
+
tellaskBody,
|
|
584
|
+
language,
|
|
585
|
+
collectiveTargets: [dlg.agentId],
|
|
586
|
+
});
|
|
587
|
+
await (0, driver_1.driveDialogStream)(sub, { content: initPrompt, msgId: (0, id_1.generateShortId)(), grammar: 'markdown' }, true);
|
|
588
|
+
const saying = extractLastAssistantSaying(sub.msgs).trim();
|
|
589
|
+
if (saying) {
|
|
600
590
|
return saying;
|
|
591
|
+
}
|
|
601
592
|
}
|
|
602
593
|
catch (err) {
|
|
594
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
595
|
+
// Do not silently fall back for known severe configuration errors (e.g. Codex requires
|
|
596
|
+
// streaming=true).
|
|
597
|
+
if (message.includes('apiType=codex requires streaming=true')) {
|
|
598
|
+
throw err;
|
|
599
|
+
}
|
|
603
600
|
log_1.log.warn('Failed to generate Agent Priming note via mainline agent (best-effort)', err, {
|
|
604
601
|
dialogId: dlg.id.valueOf(),
|
|
605
602
|
});
|
|
@@ -525,6 +525,10 @@ exports.applyPatchTool = {
|
|
|
525
525
|
type: 'func',
|
|
526
526
|
name: 'apply_patch',
|
|
527
527
|
description: 'Apply a Codex-style apply_patch formatted patch to the rtws (runtime workspace). Enforces Dominds directory allow/deny lists.',
|
|
528
|
+
descriptionI18n: {
|
|
529
|
+
en: 'Apply a Codex-style apply_patch formatted patch to the rtws (runtime workspace). Enforces Dominds directory allow/deny lists.',
|
|
530
|
+
zh: '使用 Codex 风格 apply_patch 格式补丁修改 rtws(运行时工作区)内文件。该操作会遵循 Dominds 的目录白名单与黑名单约束。',
|
|
531
|
+
},
|
|
528
532
|
parameters: {
|
|
529
533
|
type: 'object',
|
|
530
534
|
additionalProperties: false,
|
package/dist/tools/builtins.js
CHANGED
|
@@ -192,12 +192,12 @@ for (const tool of team_mgmt_1.teamMgmtTools) {
|
|
|
192
192
|
});
|
|
193
193
|
// Codex-focused toolsets (function tools only; suitable for Codex provider)
|
|
194
194
|
if (process.platform !== 'win32') {
|
|
195
|
-
(0, registry_1.registerToolset)('codex_style_tools', [
|
|
195
|
+
(0, registry_1.registerToolset)('codex_style_tools', [os_1.readonlyShellTool, apply_patch_1.applyPatchTool, plan_1.updatePlanTool]);
|
|
196
196
|
(0, registry_1.setToolsetMeta)('codex_style_tools', {
|
|
197
197
|
source: 'dominds',
|
|
198
198
|
descriptionI18n: {
|
|
199
|
-
en: 'Codex-style tools (
|
|
200
|
-
zh: 'Codex 风格工具(
|
|
199
|
+
en: 'Codex-style tools (readonly_shell + apply_patch + update_plan)',
|
|
200
|
+
zh: 'Codex 风格工具(readonly_shell + apply_patch + update_plan)',
|
|
201
201
|
},
|
|
202
202
|
promptI18n: {
|
|
203
203
|
en: 'Use `apply_patch` (Codex-style patch format) to modify files. Use `readonly_shell` for simple rtws (runtime workspace) inspection via its small allowlist; commands outside the allowlist are rejected. For node/python, only exact version probes are allowed (no scripts). Chains via |/&&/|| are validated segment-by-segment. Use `update_plan` to record/update the task plan (stored as a reminder). You are explicitly authorized to call `readonly_shell` yourself; do not delegate it to a shell specialist. Avoid multi-line script-style commands; single-line is preferred (|, &&, || are ok). Paths must be relative to the rtws (runtime workspace). Hard denies: `readonly_shell` refuses rtws-root `.minds/` and `.dialogs/`; `apply_patch` is subject to the same access-control (including hard denies for `*.tsk/`, `.minds/`, and rtws-root `.dialogs/`).',
|
|
@@ -39,12 +39,12 @@ function formatContextHealthOwnerHeader(args) {
|
|
|
39
39
|
];
|
|
40
40
|
if (!snapshot) {
|
|
41
41
|
lines.push('- 状态:未知(尚未获取上下文统计)');
|
|
42
|
-
lines.push('-
|
|
42
|
+
lines.push('- 现在就做:用提醒项收敛关键细节(update_reminder)→ change_mind(progress) → clear_mind');
|
|
43
43
|
return lines.join('\n');
|
|
44
44
|
}
|
|
45
45
|
if (snapshot.kind !== 'available') {
|
|
46
46
|
lines.push('- 状态:未知(token 统计不可用)');
|
|
47
|
-
lines.push('-
|
|
47
|
+
lines.push('- 现在就做:用提醒项收敛关键细节(update_reminder)→ change_mind(progress) → clear_mind');
|
|
48
48
|
return lines.join('\n');
|
|
49
49
|
}
|
|
50
50
|
switch (snapshot.level) {
|
|
@@ -53,16 +53,16 @@ function formatContextHealthOwnerHeader(args) {
|
|
|
53
53
|
return lines.join('\n');
|
|
54
54
|
}
|
|
55
55
|
case 'caution': {
|
|
56
|
-
lines.push('- 状态:🟡
|
|
57
|
-
lines.push('-
|
|
56
|
+
lines.push('- 状态:🟡 黄(必须尽快清理)');
|
|
57
|
+
lines.push('- 硬规程:先 update_reminder 收敛工作集 → 再 change_mind(progress) → 然后 clear_mind');
|
|
58
58
|
return lines.join('\n');
|
|
59
59
|
}
|
|
60
60
|
case 'critical': {
|
|
61
|
-
lines.push('- 状态:🔴
|
|
61
|
+
lines.push('- 状态:🔴 红(硬闸门)');
|
|
62
62
|
if (remainingGenTurns !== undefined) {
|
|
63
|
-
lines.push(`- 倒数:剩余 ${remainingGenTurns} 次生成机会;到 0
|
|
63
|
+
lines.push(`- 倒数:剩余 ${remainingGenTurns} 次生成机会;到 0 系统将被动开启新一轮/新回合以保持稳定性`);
|
|
64
64
|
}
|
|
65
|
-
lines.push('-
|
|
65
|
+
lines.push('- 禁止继续推进实现:先 update_reminder 收敛工作集 → 再 change_mind(progress) → 然后 clear_mind');
|
|
66
66
|
return lines.join('\n');
|
|
67
67
|
}
|
|
68
68
|
default: {
|