@suifei/dsh-ai-team 0.0.0-stage → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +104 -0
- package/LICENSE +21 -0
- package/README.md +226 -2
- package/client.js +2901 -0
- package/cordis.patch.yml +31 -0
- package/icon.svg +27 -0
- package/index.js +893 -0
- package/lib/domain/errors.js +36 -0
- package/lib/domain/ids.js +26 -0
- package/lib/domain/inbox.js +87 -0
- package/lib/domain/member-config.js +168 -0
- package/lib/domain/member-profile.js +53 -0
- package/lib/domain/policy.js +102 -0
- package/lib/domain/task.js +309 -0
- package/lib/domain/thread.js +54 -0
- package/lib/host/fault-adapter.js +50 -0
- package/lib/host/member-tools.js +225 -0
- package/lib/host/permission-guard.js +28 -0
- package/lib/host/project-registry.js +68 -0
- package/lib/host/project-runtime.js +73 -0
- package/lib/host/service.js +810 -0
- package/lib/host/views.js +213 -0
- package/lib/host/waker.js +177 -0
- package/lib/ledger/checkpoint.js +395 -0
- package/lib/ledger/events.js +398 -0
- package/lib/ledger/fold.js +991 -0
- package/lib/ledger/writer.js +983 -0
- package/lib/runtime/failure-policy.js +113 -0
- package/lib/runtime/host-agent.js +101 -0
- package/lib/runtime/member-runtime.js +286 -0
- package/lib/runtime/skill-catalog.js +27 -0
- package/lib/runtime/skill-loader.js +26 -0
- package/lib/runtime/skill-provider.js +121 -0
- package/lib/vendor/skillopt/LICENSE +21 -0
- package/lib/vendor/skillopt/requirements.txt +31 -0
- package/lib/vendor/skillopt/scripts/sleep.py +119 -0
- package/lib/vendor/skillopt/skillopt_sleep/__init__.py +20 -0
- package/lib/vendor/skillopt/skillopt_sleep/__main__.py +942 -0
- package/lib/vendor/skillopt/skillopt_sleep/adapters/__init__.py +1 -0
- package/lib/vendor/skillopt/skillopt_sleep/adapters/superpowers.py +1379 -0
- package/lib/vendor/skillopt/skillopt_sleep/backend.py +2844 -0
- package/lib/vendor/skillopt/skillopt_sleep/budget.py +75 -0
- package/lib/vendor/skillopt/skillopt_sleep/config.py +257 -0
- package/lib/vendor/skillopt/skillopt_sleep/consolidate.py +558 -0
- package/lib/vendor/skillopt/skillopt_sleep/cycle.py +1270 -0
- package/lib/vendor/skillopt/skillopt_sleep/dream.py +173 -0
- package/lib/vendor/skillopt/skillopt_sleep/evalkit.py +718 -0
- package/lib/vendor/skillopt/skillopt_sleep/evidence.py +143 -0
- package/lib/vendor/skillopt/skillopt_sleep/experiments/__init__.py +1 -0
- package/lib/vendor/skillopt/skillopt_sleep/experiments/gbrain_bench.py +119 -0
- package/lib/vendor/skillopt/skillopt_sleep/experiments/personas.py +86 -0
- package/lib/vendor/skillopt/skillopt_sleep/experiments/report.py +132 -0
- package/lib/vendor/skillopt/skillopt_sleep/experiments/run_experiment.py +178 -0
- package/lib/vendor/skillopt/skillopt_sleep/experiments/run_gbrain.py +209 -0
- package/lib/vendor/skillopt/skillopt_sleep/experiments/run_transfer.py +155 -0
- package/lib/vendor/skillopt/skillopt_sleep/experiments/sweep.py +164 -0
- package/lib/vendor/skillopt/skillopt_sleep/gate.py +50 -0
- package/lib/vendor/skillopt/skillopt_sleep/handoff_backend.py +173 -0
- package/lib/vendor/skillopt/skillopt_sleep/harvest.py +691 -0
- package/lib/vendor/skillopt/skillopt_sleep/harvest_codex.py +260 -0
- package/lib/vendor/skillopt/skillopt_sleep/harvest_copilot.py +443 -0
- package/lib/vendor/skillopt/skillopt_sleep/harvest_copilot_cli.py +244 -0
- package/lib/vendor/skillopt/skillopt_sleep/harvest_cursor.py +316 -0
- package/lib/vendor/skillopt/skillopt_sleep/harvest_opencode.py +364 -0
- package/lib/vendor/skillopt/skillopt_sleep/harvest_pi.py +311 -0
- package/lib/vendor/skillopt/skillopt_sleep/harvest_sources.py +135 -0
- package/lib/vendor/skillopt/skillopt_sleep/judges.py +344 -0
- package/lib/vendor/skillopt/skillopt_sleep/llm_miner.py +187 -0
- package/lib/vendor/skillopt/skillopt_sleep/memory.py +166 -0
- package/lib/vendor/skillopt/skillopt_sleep/mine.py +427 -0
- package/lib/vendor/skillopt/skillopt_sleep/multi_skill.py +190 -0
- package/lib/vendor/skillopt/skillopt_sleep/prompts.py +250 -0
- package/lib/vendor/skillopt/skillopt_sleep/replay.py +211 -0
- package/lib/vendor/skillopt/skillopt_sleep/rollout.py +184 -0
- package/lib/vendor/skillopt/skillopt_sleep/scheduler.py +286 -0
- package/lib/vendor/skillopt/skillopt_sleep/skill_resolver.py +244 -0
- package/lib/vendor/skillopt/skillopt_sleep/slow_update.py +141 -0
- package/lib/vendor/skillopt/skillopt_sleep/staging.py +3285 -0
- package/lib/vendor/skillopt/skillopt_sleep/state.py +283 -0
- package/lib/vendor/skillopt/skillopt_sleep/tasks_file.py +100 -0
- package/lib/vendor/skillopt/skillopt_sleep/types.py +227 -0
- package/lib/vendor/skillopt/src/index.js +394 -0
- package/package.json +62 -4
- package/skills/skillopt-sleep/SKILL.md +121 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.3.4 — 2026-11-09
|
|
4
|
+
|
|
5
|
+
- README 精装修:品牌、快速开始、能力地图、架构图、API、验证证据、文档索引;
|
|
6
|
+
- 发布到 npm / GitHub Releases,补充 repository / homepage / keywords / LICENSE;
|
|
7
|
+
- desktop profile 改为从 npm 安装。
|
|
8
|
+
|
|
9
|
+
## 0.3.3 — 2026-11-09
|
|
10
|
+
|
|
11
|
+
- 产品显示名改为「文渊阁」(Wenyuan Pavilion),取藏修、校勘、纂辑之意;
|
|
12
|
+
- 保持包名 `@suifei/dsh-ai-team` 与内部 Team 域对象不变。
|
|
13
|
+
|
|
14
|
+
## 0.3.2 — 2026-11-09
|
|
15
|
+
|
|
16
|
+
- 产品显示名改为「三省」(Three Departments),副标「三省六部」;
|
|
17
|
+
- 修复热加载时 permission 服务尚未就绪导致 `BOOT_FAILED / permission services are unavailable`,Host 显式 inject `permissionPresets` 与 `sandboxPolicy`;
|
|
18
|
+
- 四象限空 items / null taskNumber / 无 taskId 的决策项做健壮处理,避免点击异常与 `#null` 文案。
|
|
19
|
+
|
|
20
|
+
## 0.3.1 — 2026-11-09
|
|
21
|
+
|
|
22
|
+
- SkillOpt 完全内置:7 个 `skillopt_*` 工具、Python engine bootstrap、`skillopt-sleep` 技能随插件分发,不再装到用户 DSH;
|
|
23
|
+
- 冷恢复重新 mount member preset,修复重启后 `pwsh/read/write` 工具消失;
|
|
24
|
+
- 失败决策自动带 taskId;跨 Project 收件箱可一键打开 Task;
|
|
25
|
+
- 双真实 provider SSE:DeepSeek 与 Zhipu 各自项目独立分桶;
|
|
26
|
+
- 测试 82 条。
|
|
27
|
+
|
|
28
|
+
## 0.3.0 — 2026-11-09
|
|
29
|
+
|
|
30
|
+
- 并发 ProjectRuntime:启动打开全部 Project,各自 ledger/Waker/SSE/Team 工具路由;
|
|
31
|
+
- 跨 Project 收件箱:聚合、项目标记、按项目 ack、打开 Task 前切项目;
|
|
32
|
+
- V-10:新增真实 turn 中途降级 E2E 测试钩子(生产 403),守卫在工具调用前修复权限;
|
|
33
|
+
- billing/网络:测试专用 `ai-team-fault` LLM adapter,真实 Agent loop 验证 402 与 ECONNRESET 分类/恢复;
|
|
34
|
+
- 技能:新增 `ai-team-files` provider,发现 `~/.dsh/skills` 与项目技能;nuwa/distilly/darwin/SkillOpt 四个技能安装并由真实成员加载。
|
|
35
|
+
|
|
36
|
+
## 0.2.6 — 2026-11-09
|
|
37
|
+
|
|
38
|
+
- 工具调用前权限守卫:managed member 若在 turn 中途被降级,下一步工具前先修复为 danger-full-access;修不好则拒绝;
|
|
39
|
+
- 非成员工具调用不受影响;
|
|
40
|
+
- V-10 从“仅激活时检查”前移到每次工具调用。
|
|
41
|
+
|
|
42
|
+
## 0.2.5 — 2026-11-09
|
|
43
|
+
|
|
44
|
+
- 成员 config 新增 `preset`:`standard / ptc / minimal / cordis`,默认 `standard`;
|
|
45
|
+
- 资料抽屉可选择运行配方;
|
|
46
|
+
- 激活时 mount 对应 preset,未知配方被校验拒绝。
|
|
47
|
+
|
|
48
|
+
## 0.2.4 — 2026-11-09
|
|
49
|
+
|
|
50
|
+
- 修复成员工具链:`agents.create` 的 setup 里 mount `standard` preset,成员获得 pwsh/read/write/edit/skill 等完整工具;
|
|
51
|
+
- 真实成员用 pwsh 写文件、用 skill 加载 DSH 技能并写结果;
|
|
52
|
+
- 健康检查暴露 `presets` 与 `skillsService`。
|
|
53
|
+
|
|
54
|
+
## 0.2.3 — 2026-11-09
|
|
55
|
+
|
|
56
|
+
- 成员 activation/wake 注入 DSH `skills` 目录摘要(名称/描述/何时用,最多 12 条);
|
|
57
|
+
- 完整技能正文由成员自己的 `skill` 工具按需加载;
|
|
58
|
+
- 保留 `<dataDir>/skills/<name>/SKILL.md` 有界注入。
|
|
59
|
+
|
|
60
|
+
## 0.2.2 — 2026-11-09
|
|
61
|
+
|
|
62
|
+
- 多 Project 单活动切换:每 Project 独立 ledger,`projects.json` 索引;
|
|
63
|
+
- Host `project.create` / `project.activate`;
|
|
64
|
+
- UI 新建项目弹窗 + 项目列表切换;
|
|
65
|
+
- 切换后重拉 bootstrap、重连 SSE,未完成 Task 由 `team/startup` 恢复;
|
|
66
|
+
- 已知限制:同一时刻只开一个 Project runtime,非活动项目不并发唤醒。
|
|
67
|
+
|
|
68
|
+
## 0.2.1 — 2026-11-09
|
|
69
|
+
|
|
70
|
+
- QA checklist 硬门禁:`qaRequired` + `qaChecklist`,全部通过才能 accept。
|
|
71
|
+
- 启动恢复:`team/startup` 恢复未完成 Task,无定时器;真实重启 E2E 跑通。
|
|
72
|
+
- 抽出 `ProjectRuntime`(默认项目行为不变),为多 Project 做准备。
|
|
73
|
+
- 修复资料抽屉白屏(early-return 前引用 selectedTask / data null)。
|
|
74
|
+
- 真实浏览器验证 DM:`member.message` + wake,成员 session 前进。
|
|
75
|
+
|
|
76
|
+
## 0.2.0 — 2026-11-09
|
|
77
|
+
|
|
78
|
+
M2.5「团队进化」迭代。
|
|
79
|
+
|
|
80
|
+
### 新增
|
|
81
|
+
|
|
82
|
+
- 成员资料:name / role / personality / profileVersion;Human 可编辑,空个性按“不修改”处理。
|
|
83
|
+
- 自我进化:`team.evolve` 只允许 Agent 改自己的 personality;验收后 reflection wake 触发;真实跑通并写 `member/distilled`。
|
|
84
|
+
- 模型蒸馏:`member.distill(mode:'model')` 由 Host 单步调用 `llm.stream`,无工具、固定 JSON schema;真实跑通。
|
|
85
|
+
- 人才库:`member.leave` / `member.rejoin`,身份与 session 保留;`member.takeover` 接遗留 Task,保留 claim/takeover 历史。
|
|
86
|
+
- QA:`qaRequired` 硬门禁、`qaChecklist` 逐项通过、QA 优先自动 reviewer;真实 QA 自动验收。
|
|
87
|
+
- 备忘/技能:`team.note` / `team.skill` / `team.recall`;`<dataDir>/skills/<name>/SKILL.md` 有界加载进 prompt。
|
|
88
|
+
- 私信:`member.message` 只唤醒目标成员。
|
|
89
|
+
- 关注:`task.follow`;验收后给仍关注者生成 `followed_task_update`。
|
|
90
|
+
- 收件箱:真实 `data.inbox`、ack、打开 Task;失败恢复 UI(改配置 + retry)。
|
|
91
|
+
- 启动恢复:`team/startup` 恢复未完成 Task,无定时器;真实重启 E2E。
|
|
92
|
+
- 任务动作 UI:取消/重开/删除/改派;Thread 回复/验收/退回真实命令。
|
|
93
|
+
- 安装/卸载/升级文档与 profile 隔离检查。
|
|
94
|
+
|
|
95
|
+
### 测试
|
|
96
|
+
|
|
97
|
+
- `node --test` 71/71。
|
|
98
|
+
|
|
99
|
+
### 已知边界
|
|
100
|
+
|
|
101
|
+
- 单机、单 Human;多 Project 仍以默认 Project 为主。
|
|
102
|
+
- 技能文件只进 prompt,不是可执行工具注册。
|
|
103
|
+
- 外部失败注入仅覆盖真实 401;billing/网络注入仍待。
|
|
104
|
+
- 多 Project、V-10、真实卸载/升级演练未完成。
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 suifei
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,227 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./icon.svg" width="88" height="88" alt="文渊阁" />
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
<h1 align="center">文渊阁</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>把工作交给一支 AI 团队:它们把事做到底,你定方向、把关键的关。</strong>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://www.npmjs.com/package/@suifei/dsh-ai-team"><img alt="npm" src="https://img.shields.io/npm/v/@suifei/dsh-ai-team?color=2f6feb&label=npm"></a>
|
|
13
|
+
<a href="https://github.com/suifei/dsh-ai-team/releases"><img alt="release" src="https://img.shields.io/github/v/release/suifei/dsh-ai-team?color=2f6feb"></a>
|
|
14
|
+
<a href="./LICENSE"><img alt="license" src="https://img.shields.io/badge/license-MIT-2f6feb"></a>
|
|
15
|
+
<img alt="tests" src="https://img.shields.io/badge/tests-82%20passing-2ea043">
|
|
16
|
+
<img alt="dsh" src="https://img.shields.io/badge/DeepSeek%20Harness-plugin-6f42c1">
|
|
17
|
+
</p>
|
|
18
|
+
|
|
19
|
+
> 文渊阁,藏修、校勘、纂辑之地。
|
|
20
|
+
> 在这里,Human 不在环里逐条调度,而是在环上定方向、守信任、做最后那一步。
|
|
21
|
+
|
|
22
|
+
`@suifei/dsh-ai-team` 是 DeepSeek Harness 的按需启用插件:装进专用 `ai-team` profile 后,DSH 里出现一个三栏工作台——左侧 Project 与成员,中间主对话 / 看板 / 态势,右侧 Thread。Agent 自己认领 Task、互相交接,由做的人以外的成员验收;Human 只处理方向、信任和不可撤回的决定。
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 为什么是「文渊阁」
|
|
27
|
+
|
|
28
|
+
- **成员是持久的。** 每个 Agent 有名字、角色、personality、notes、skills 和 session;DSH 重启、上下文压缩、换代之后,它还是它。
|
|
29
|
+
- **每个结果都有 owner。** Project 有具名 owner;Task 有唯一 accountable owner,由它推到验收。
|
|
30
|
+
- **做的人不验收。** Agent 只能验收已进入待验收、且自己从未认领过的 Task;QA Task 只有 QA 成员能验收。
|
|
31
|
+
- **房间是为 Agent 设计的。** 成员从自己的 inbox 拉取消息,而不是被每条消息推着走;对着已经变化的 Thread 写的回复会被退回,并附上变化摘要。
|
|
32
|
+
- **一切有记录。** Main stream、Thread、Task、收件箱都是同一本 append-only 账本的视图。
|
|
33
|
+
- **没有定时器。** Agent 只由 Team 事件(消息、@、交接、验收请求)唤醒;团队完全安静时不会自己醒来。
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 快速开始
|
|
38
|
+
|
|
39
|
+
### 1. 建专用 profile
|
|
40
|
+
|
|
41
|
+
```powershell
|
|
42
|
+
dsh --profile ai-team --from-default-profile web --dump-config
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. 从 npm 安装
|
|
46
|
+
|
|
47
|
+
```powershell
|
|
48
|
+
dsh plugin --profile ai-team add @suifei/dsh-ai-team
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
或从 checkout 安装:
|
|
52
|
+
|
|
53
|
+
```powershell
|
|
54
|
+
dsh plugin --profile ai-team add E:/works/dsh-ai-team
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 3. 启动
|
|
58
|
+
|
|
59
|
+
```powershell
|
|
60
|
+
dsh --profile ai-team --no-open --port 33271
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
打开终端输出的 URL,点侧栏 **文渊阁**。
|
|
64
|
+
|
|
65
|
+
> 插件只应安装在可信机器 / 可信 Workspace:成员以 `danger-full-access` 运行,且 profile patch 会把 sandbox / approval / permission 固定为 `danger-full-access / never`。普通 `desktop`/`web` profile 不安装时保持原有 preset roster。
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 界面
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
┌ 文渊阁 ───────────────────────────────────────────────────────────┐
|
|
73
|
+
│ Projects │ Main stream / Board / Situation │ Thread │
|
|
74
|
+
│ # 我的项目 │ 主对话:一句话开工 │ 回复 │
|
|
75
|
+
│ # UI 项目 │ 看板:待处理 / 进行中 / 待验收 / 完成│ 验收 / 退回 │
|
|
76
|
+
│ │ 态势:需要你 / 团队在做 / 等待受阻 / 最近完成 │ 任务动作 │
|
|
77
|
+
│ Agents │ │ │
|
|
78
|
+
│ 沈舟 (Lead) │ │ │
|
|
79
|
+
│ 林岚 (QA) │ │ │
|
|
80
|
+
└─────────────────┴────────────────────────────────────┴─────────────┘
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- **主对话**:Human 的一句话进入 Main stream,Project owner 拆 Task;Composer 支持讨论 / 任务模式。
|
|
84
|
+
- **看板**:四列;进行中的卡片显示 accountable owner 与执行者;数量只统计 active Task。
|
|
85
|
+
- **态势**:四象限——需要你、团队在做、等待受阻、最近完成。点击条目打开对应 Task 的 Thread。
|
|
86
|
+
- **收件箱**:跨 Project 聚合;失败决策、需要你决定、关注 Task 的完成报告都在这里。
|
|
87
|
+
- **成员资料**:改名、职责、personality、provider/model、运行配方、notes、skills、re-distill、离队/人才库。
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 能力地图
|
|
92
|
+
|
|
93
|
+
| 能力 | 说明 |
|
|
94
|
+
|---|---|
|
|
95
|
+
| Project | 具名 owner;并发 runtime;每 Project 独立账本、Waker、SSE |
|
|
96
|
+
| Task | 唯一 accountable owner;pending / in_progress / pending_acceptance / done / cancelled |
|
|
97
|
+
| Thread | append-only;回复带 `baseSeq`,旧基线会被拒并说明变化 |
|
|
98
|
+
| 验收 | maker 不能验收;QA 硬门禁;`qaChecklist` 逐项通过 |
|
|
99
|
+
| 收件箱 | Human/Agent 各自拉取;跨 Project 聚合与项目内 ack |
|
|
100
|
+
| 关注 | 关注 Task;完成后收到 `followed_task_update` |
|
|
101
|
+
| 成员 | 持久 session;名字/角色/personality/notes/skills |
|
|
102
|
+
| 进化 | `team.evolve` 只改自己的 personality;验收后 reflection wake |
|
|
103
|
+
| 人才库 | leave/rejoin;遗留 Task 可被接管(taken-over) |
|
|
104
|
+
| 运行配方 | `standard` / `ptc` / `minimal` / `cordis` |
|
|
105
|
+
| 技能 | DSH `skill` 工具真实加载;SkillOpt 7 工具内置 |
|
|
106
|
+
| 重启恢复 | `team/startup` 恢复未完成 Task,无定时器 |
|
|
107
|
+
| 安全 | 每次成员工具调用前守卫 `danger-full-access` |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 架构
|
|
112
|
+
|
|
113
|
+
```mermaid
|
|
114
|
+
flowchart TB
|
|
115
|
+
H[Human] --> UI[文渊阁 Workbench]
|
|
116
|
+
UI --> HOST[Host /ai-team/api]
|
|
117
|
+
HOST --> R1[ProjectRuntime prj_main]
|
|
118
|
+
HOST --> R2[ProjectRuntime prj_ui]
|
|
119
|
+
R1 --> L1[(append-only ledger)]
|
|
120
|
+
R2 --> L2[(append-only ledger)]
|
|
121
|
+
R1 --> S1[TeamService]
|
|
122
|
+
R2 --> S2[TeamService]
|
|
123
|
+
S1 --> M1[Member sessions]
|
|
124
|
+
S2 --> M2[Member sessions]
|
|
125
|
+
L1 -. Waker / SSE .-> M1
|
|
126
|
+
L2 -. Waker / SSE .-> M2
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
- **Host**:路由、命令、SSE、Waker、成员 runtime、权限守卫。
|
|
130
|
+
- **ProjectRuntime**:一个 Project 一个 ledger + TeamService;启动时全部打开。
|
|
131
|
+
- **Ledger**:JSONL + SHA-256 hash chain + checkpoint + 纯函数 fold。
|
|
132
|
+
- **MemberRuntime**:真实 DSH Agent session,直接 `agents.create` / `followup`,没有模拟执行。
|
|
133
|
+
- **Waker**:只从账本 append / HTTP 命令结果计划唤醒;没有 heartbeat/timer。
|
|
134
|
+
|
|
135
|
+
### API 速览
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
GET /ai-team/api/health
|
|
139
|
+
GET /ai-team/api/bootstrap?project=<id>
|
|
140
|
+
GET /ai-team/api/projects/<id>/board
|
|
141
|
+
GET /ai-team/api/projects/<id>/quadrants
|
|
142
|
+
GET /ai-team/api/projects/<id>/events # SSE
|
|
143
|
+
POST /ai-team/api/projects/<id>/commands
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
命令覆盖 `task.create/claim/submit/accept/request_changes/cancel/reopen/delete/reassign`、`member.add/activate/config.update/profile.update/message/leave/rejoin/takeover`、`project.create/activate`、`inbox.ack` 等。
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 技能与 SkillOpt
|
|
151
|
+
|
|
152
|
+
- 成员资料可追加 notes / skills,activation / wake prompt 会注入有界技能目录;
|
|
153
|
+
- 完整技能正文由成员自己的 `skill` 工具加载;
|
|
154
|
+
- `ai-team-files` provider 会读取:
|
|
155
|
+
- `<DSH_HOME>/skills`
|
|
156
|
+
- `<cwd>/.dsh/skills`
|
|
157
|
+
- `<cwd>/.agents/skills`
|
|
158
|
+
- **Microsoft SkillOpt 已内置**:7 个 `skillopt_*` 工具、Python engine bootstrap、`skillopt-sleep` 技能随插件分发,不需要单独安装 `dsh-skillopt`。
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 验证
|
|
163
|
+
|
|
164
|
+
- `node --test`:**82 / 82**
|
|
165
|
+
- 文档 QA:`node .ptc/tools/docs_check.mjs` → **0 problems**
|
|
166
|
+
- 真实 E2E 覆盖:
|
|
167
|
+
- 两 Agent claim → Thread → 独立验收;
|
|
168
|
+
- 一句话 → Lead 开卡 → QA 自动验收 → owner 自进化;
|
|
169
|
+
- 强停重启 → `startup_resume` → 继续 Task;
|
|
170
|
+
- 真实浏览器私信成员;
|
|
171
|
+
- 四运行配方分别执行 `run_code` / `pwsh`;
|
|
172
|
+
- 并发 Project + 跨 Project 收件箱;
|
|
173
|
+
- DeepSeek + Zhipu 双订阅 SSE 分桶;
|
|
174
|
+
- V-10 turn 中途权限降级后工具前修复;
|
|
175
|
+
- billing 402 / ECONNRESET 三次重试与恢复;
|
|
176
|
+
- 从 npm 安装后在独立 profile 启动 health 200。
|
|
177
|
+
|
|
178
|
+
证据目录(本机 `.ptc/rounds/`,不随 npm 发布):
|
|
179
|
+
|
|
180
|
+
```text
|
|
181
|
+
round-02 两 Agent 独立验收
|
|
182
|
+
round-06 验收后 self-evolve
|
|
183
|
+
round-09 重启 startup_resume
|
|
184
|
+
round-10 资料抽屉私信
|
|
185
|
+
round-11 多 Project 新建/切换
|
|
186
|
+
round-12 成员工具链 + skill 加载
|
|
187
|
+
round-13 四种运行配方
|
|
188
|
+
round-14 安装/卸载 smoke
|
|
189
|
+
round-15 并发/收件箱/V-10/billing
|
|
190
|
+
round-16 四技能安装
|
|
191
|
+
round-17 SkillOpt 内置 + 冷恢复
|
|
192
|
+
round-18 跨 Project 打开 Task + SSE 分桶
|
|
193
|
+
round-19 DeepSeek + Zhipu 双 provider
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 文档
|
|
199
|
+
|
|
200
|
+
- [需求研究](docs/01-需求研究报告.md)
|
|
201
|
+
- [PRD](docs/02-产品需求文档-PRD.md)
|
|
202
|
+
- [架构设计](docs/03-架构设计报告.md)
|
|
203
|
+
- [UI/UX/UE 研究](docs/04-UI-UX-UE研究报告.md)
|
|
204
|
+
- [启动与执行计划](docs/05-项目启动与执行计划.md)
|
|
205
|
+
- [会议纪要](docs/06-会议纪要.md)
|
|
206
|
+
- [四象限设计](docs/07-四象限视图研究与设计.md)
|
|
207
|
+
- [异常恢复与模型治理](docs/08-异常恢复与模型治理.md)
|
|
208
|
+
- [团队进化与人才库](docs/09-团队进化与人才库.md)
|
|
209
|
+
- [安装、卸载与升级](docs/10-安装卸载升级.md)
|
|
210
|
+
- [M3 并发多项目与边界补齐](docs/reports/M3-并发多项目与边界补齐.md)
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## 当前边界
|
|
215
|
+
|
|
216
|
+
- 单机、单 Human;不支持多 Human 共享 Team;
|
|
217
|
+
- billing/网络注入是测试 adapter,不是物理断网;
|
|
218
|
+
- SSE 分桶用两个真实 provider 的独立订阅端验证,不是两个浏览器窗口;
|
|
219
|
+
- nuwa / distilly / darwin 不内置,有则用、无则不用;
|
|
220
|
+
- desktop profile 由插件 patch 固定为 `danger-full-access / never`,只应在可信机器使用。
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## License
|
|
225
|
+
|
|
226
|
+
MIT。
|
|
227
|
+
Bundled SkillOpt integration derives from [Microsoft SkillOpt](https://github.com/microsoft/SkillOpt) `plugins/dsh` (MIT); its license lives at `lib/vendor/skillopt/LICENSE`.
|