mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 10:45:22 +00:00
feat(pi-subagents): 重新启用子 Agent 并使用独立的子 Agent 提示词
- 根包恢复 file:./pi-subagents 依赖与 extensions/subagents.ts 加载 (排在 permission-system 之后、Tool Search 之前),并刷新根锁文件; Agent / get_subagent_result / steer_subagent 权限设为 allow, 子 Agent 内的实际操作仍逐个经权限系统并转发主会话。 - 新增 config/prompt/subagent/:执行者角色 preamble 与组合包自带的 general-purpose / Explore / Plan 定义(替换上游内置,去掉 bash find 冲突规则与写死的 Haiku 模型)。 - pi-subagents 新增 basePrompt / bundledAgentsDir / excludedExtensionPaths 选项:子 Agent 不再嵌入父会话提示词,身份标记置于开头;子会话排除 pi-ask-user。未传选项时保持上游行为。 - system-prompt.ts:customPrompt 自带开场白时不再覆盖(修复子 Agent 角色 与 <active_agent> 身份被抹掉);仅凭 customPrompt 上的 <active_agent> 识别子会话,routing 规则支持 scope,sections 支持 subagentExclude (子会话去掉 memory_policy 与 chrome_profile_bridge)。 - pi-hermes-memory:子会话只读,记忆/skill 写入工具返回错误,后台整理、 纠错检测、会话 flush 与索引写入全部跳过。 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
parent
b817d66a11
commit
360d8cffc8
@@ -136,3 +136,26 @@ test("every package-local @earendil-works/* devDependency is pinned to latest",
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
test("subagent prompt profile: preamble non-blank, agent names match filename stems", async () => {
|
||||
const subagentDir = join(bundleConfigDir, "prompt", "subagent");
|
||||
const preamble = await readFile(join(subagentDir, "preamble.md"), "utf8");
|
||||
assert.ok(
|
||||
preamble.trim().length > 0,
|
||||
"config/prompt/subagent/preamble.md must not be blank",
|
||||
);
|
||||
const agentsDir = join(subagentDir, "agents");
|
||||
const agentFiles = (await readdir(agentsDir)).filter((name) => name.endsWith(".md"));
|
||||
assert.ok(agentFiles.length > 0, "config/prompt/subagent/agents/ must ship agent files");
|
||||
for (const file of agentFiles) {
|
||||
const raw = await readFile(join(agentsDir, file), "utf8");
|
||||
const frontmatter = raw.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
||||
assert.ok(frontmatter, `${file} must open with a frontmatter block`);
|
||||
const name = frontmatter[1].match(/^name:[ \t]*["']?([^"'\r\n]+?)["']?[ \t]*$/m)?.[1];
|
||||
assert.equal(
|
||||
name,
|
||||
file.slice(0, -".md".length),
|
||||
`config/prompt/subagent/agents/${file} frontmatter name must match its filename stem`,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user