@suifei/dsh-ai-team 0.3.34 → 0.3.35
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 +9 -1
- package/index.js +1 -1
- package/lib/host/waker.js +2 -2
- package/lib/runtime/core-skill.js +4 -0
- package/lib/runtime/skill-loader.js +3 -3
- package/package.json +1 -1
- package/skills/ai-team-core/SKILL.md +26 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.35 — 2026-11-10
|
|
4
|
+
|
|
5
|
+
- 内置 `ai-team-core` skill 自动注入所有 Agent wake;
|
|
6
|
+
- 状态变化 toast 气泡、成员视图最近 Task 状态气泡;
|
|
7
|
+
- PMO 自动推进 prompt 加入复盘/头脑风暴/深度研究会议要求。
|
|
8
|
+
|
|
3
9
|
## 0.3.34 — 2026-11-10
|
|
4
10
|
|
|
5
11
|
- 新增 Project 级 PMO 全自动开关,默认开启;关闭后决策回到收件箱;
|
|
6
12
|
- PMO 每 60s 检查:未读结构化决策按最高价值建议自动决策,不需要 Human 再确认;
|
|
7
13
|
- 无 active Task 时自动唤醒 Project owner 续派下一批 Task,避免「全部完成但停住」;
|
|
8
14
|
- PMO 自动决策写入 Task Thread,author=mem_pmo,并唤醒 owner/assignee;
|
|
9
|
-
- 插件新增状态变化 toast 气泡;成员视图新增最近 Task
|
|
15
|
+
- 插件新增状态变化 toast 气泡;成员视图新增最近 Task 状态气泡;
|
|
16
|
+
- 内置 `ai-team-core` skill(单一实现、网页取证/代理、懒惰高级程序员、最小依赖、日志埋点),所有 Agent wake 自动注入;
|
|
17
|
+
- PMO 续派 prompt 要求先做复盘/头脑风暴/深度研究会议,再产出验收标准与下一批 Task。
|
|
10
18
|
|
|
11
19
|
## 0.3.33 — 2026-11-10
|
|
12
20
|
|
package/index.js
CHANGED
|
@@ -34,7 +34,7 @@ export const name = 'ai-team';
|
|
|
34
34
|
/** The workbench only makes sense where the Web carrier exists. */
|
|
35
35
|
export const inject = ['webServer', 'permissionPresets', 'sandboxPolicy'];
|
|
36
36
|
|
|
37
|
-
const VERSION = '0.3.
|
|
37
|
+
const VERSION = '0.3.35';
|
|
38
38
|
const PROJECT_ID = 'prj_main';
|
|
39
39
|
const HUMAN_ID = 'mem_human';
|
|
40
40
|
|
package/lib/host/waker.js
CHANGED
|
@@ -63,7 +63,7 @@ function promptFor(reason, state, taskId) {
|
|
|
63
63
|
return 'Team event: 你的收件箱有新条目。调用 team 工具查看 inbox,处理与你有关的事项。';
|
|
64
64
|
}
|
|
65
65
|
if (reason === 'pmo_continue') {
|
|
66
|
-
return 'PMO 自动推进:当前没有 active Task
|
|
66
|
+
return 'PMO 自动推进:当前没有 active Task。先开一次复盘/头脑风暴/深度研究会议(读取已完成 Task、Thread 与核心 skill;在 Thread/@ 相关成员形成意见),据此自己产出验收标准与下一批 Task;resultDefinition 必须可验证,qaRequired 必须有 qaChecklist。不要等待 Human、不要只汇报、不要重复已完成卡。Human 只观测,所有需要决策的问题交 PMO 自动决策。';
|
|
67
67
|
}
|
|
68
68
|
return `Team event: ${task?.title ?? taskId}。调用 team 工具查看 tasks/thread 后行动。`;
|
|
69
69
|
}
|
|
@@ -168,7 +168,7 @@ export function planWakes(state, result, actor = {}) {
|
|
|
168
168
|
null,
|
|
169
169
|
'human_message',
|
|
170
170
|
`human_message:${event.seq ?? event.payload?.seq}`,
|
|
171
|
-
`你是 Project owner。Human 在 Main stream 说:“${body}”。本轮必须先用 team action=members 查看成员,再用 action=create 创建至少一个 Task;ownerId 必须使用成员 id,写明可验证的 resultDefinition。可用成员:${roster || '无'}。如果需求很大或外部链接只是参考,先创建“调研/澄清/拆解”Task
|
|
171
|
+
`你是 Project owner。Human 在 Main stream 说:“${body}”。本轮必须先用 team action=members 查看成员,再用 action=create 创建至少一个 Task;ownerId 必须使用成员 id,写明可验证的 resultDefinition。可用成员:${roster || '无'}。如果需求很大或外部链接只是参考,先创建“调研/澄清/拆解”Task,不要直接开始实现。先做复盘/头脑风暴/深度研究,再产出验收标准;不要等 Human、不要把决策推回 Human。需要记录决策时调用 team action=askHuman,PMO 会自动按最高价值建议处理;不要只写“见报告/§6/已提交 Human”。resultDefinition 只写验收标准,不要写“等待 Human 验收”;不要只读文件或只回一段话结束。`,
|
|
172
172
|
);
|
|
173
173
|
}
|
|
174
174
|
if (event?.type === 'pmo/continue') {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { basename, join } from 'node:path';
|
|
3
3
|
import { isSkillExcluded } from './skill-policy.js';
|
|
4
|
+
import { CORE_SKILL_TEXT } from './core-skill.js';
|
|
4
5
|
|
|
5
6
|
const MAX_SKILL_CHARS = 1800;
|
|
6
7
|
|
|
7
8
|
/** Read bounded SKILL.md files for member-declared skills from the profile skill library. */
|
|
8
9
|
export async function loadSkillContext(member, dataDir) {
|
|
9
10
|
const skills = Array.isArray(member?.skills) ? member.skills : [];
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
for (const raw of skills.slice(0, 4)) {
|
|
11
|
+
const chunks = [CORE_SKILL_TEXT.replace(/^---[\s\S]*?\n---\s*/, '').trim()];
|
|
12
|
+
for (const raw of (typeof dataDir === 'string' ? skills.slice(0, 4) : [])) {
|
|
13
13
|
const name = basename(String(raw)).replace(/[^a-zA-Z0-9._-]/g, '');
|
|
14
14
|
if (name === '' || name === '.' || name === '..' || name.startsWith('.')) continue;
|
|
15
15
|
if (isSkillExcluded(name)) continue;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@suifei/dsh-ai-team",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.35",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "文渊阁 (Wenyuan Pavilion) — AI Team mode for DeepSeek Harness: concurrent projects, owned tasks, threads, inbox and an append-only team ledger",
|
|
6
6
|
"license": "MIT",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-team-core
|
|
3
|
+
description: 文渊阁 AI Team 核心工程纪律:单一实现、网页取证与代理、懒惰的高级程序员、最小依赖、日志埋点。
|
|
4
|
+
whenToUse: 所有 Agent(PMO/主理人/执行/验收)在规划、实现、验收、排查和汇报前都应加载并遵守。
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI Team 核心工程纪律
|
|
8
|
+
|
|
9
|
+
**同一能力在仓库内只允许一份实现,禁止另立简化版并存。**
|
|
10
|
+
|
|
11
|
+
**抓取网页可以模拟请求带 useragent,海外如果联不通,则探查本地是否有存在 http 代理再试。**
|
|
12
|
+
|
|
13
|
+
## 开发规程(长期生效)
|
|
14
|
+
|
|
15
|
+
**核心理念:懒惰的高级程序员思维**,这里的“懒惰”不是敷衍,而是对成本、风险与维护负担的敏感。
|
|
16
|
+
|
|
17
|
+
- **能不写就不写。** 每一行新代码都是维护负债;写代码是最后手段,不是第一反应。
|
|
18
|
+
- **能复用就不重造。** 已有且经过验证的实现优先;能扩展现有实现,就不另起一套。
|
|
19
|
+
- **系统原生能解决就不引入新依赖。** 在目标平台与架构允许的边界内,优先使用标准库、运行时与操作系统已有能力。
|
|
20
|
+
- 必须实现日志埋点,记录关键操作和流程,用于 debug 分析插件工作状态。
|
|
21
|
+
|
|
22
|
+
## 角色要求
|
|
23
|
+
|
|
24
|
+
- PMO/主理人:用复盘、头脑风暴、深度研究形成验收标准与 Task 草案,不把决策推给 Human;需要 Human 时交给 PMO 自动决策。
|
|
25
|
+
- 执行:先读核心纪律与结果定义;交付证据必须实测,不手填数字。
|
|
26
|
+
- 验收:独立复跑;只按 resultDefinition / QA checklist 判定;不共享执行者的 claim。
|