mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 18:55:22 +00:00
feat: 系统提示词改为单一入口统一管理
多个扩展各自整段改写系统提示词并按加载顺序接力,任一扩展定死提示词后 其余只能做字符串手术,且各上游的工具说明与组合包实际工具格局冲突。 - 新增 extensions/system-prompt.ts 作为唯一出口(加载列表最后),按 config/prompt/(preamble.md、tools.jsonc、routing.jsonc、sections.jsonc) 组合开场白、工具简介/规则与 <tool_routing> 分区;替代原封面与 tool-routing 扩展,/dump-system-prompt 输出最终提示词。 - pi-chrome、pi-ssh、pi-hermes-memory 改为写命名分区,pi-rtk-optimizer 改写 promptGuidelines,pi-permission-system 直接过滤结构化 skills, 均不再返回 systemPrompt;pi-chrome 未授权时不再每轮冻结提示词。 - 新增 prompt-guard 代理加载第三方扩展(Hashline、FFF、LSP、 context-mode):拦截直接改写提示词并按目录覆盖工具说明;context-mode 去掉与组合包路由冲突的锚点段,保留记忆与恢复快照。 - 消除冲突:bash 简介不再建议 grep/find;Hashline edit 不再称可用 grep 锚点、不再介绍已关闭的 replace_text;context-mode 读写/网页路由提示。 - 守门测试:工具目录覆盖率、禁用用法检查、context-mode 上游原文锁定; AGENTS.md 新增「系统提示词单一所有权」。 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
dc4fe92e27
commit
ba164896d2
@@ -923,11 +923,12 @@ export default function (pi: ExtensionAPI): void {
|
||||
|
||||
pi.on("before_agent_start", (event) => {
|
||||
if (!chromeToolsRegistered || !chromeControlAuthorized()) {
|
||||
return { systemPrompt: event.systemPrompt };
|
||||
return;
|
||||
}
|
||||
const primer = `
|
||||
<chrome-profile-bridge>
|
||||
Chrome control is available through the chrome_* tools via a companion Chrome extension installed in the user's normal Chrome profile. Tools target the existing signed-in profile: no remote-debug port, no throwaway profile.
|
||||
// Contribute structurally: the bundle's single system-prompt owner
|
||||
// (extensions/system-prompt.ts) composes the final prompt; extensions
|
||||
// must not return `systemPrompt` themselves.
|
||||
const primer = `Chrome control is available through the chrome_* tools via a companion Chrome extension installed in the user's normal Chrome profile. Tools target the existing signed-in profile: no remote-debug port, no throwaway profile.
|
||||
|
||||
Tab/window isolation (important):
|
||||
- pi-chrome owns a dedicated automation window/tab. When a chrome_* tool runs with no explicit target, it acts on that pi-chrome-owned target — it never reuses or overwrites the user's currently active tab. The dedicated target is created on first use and reused afterward.
|
||||
@@ -948,9 +949,12 @@ Usage rules:
|
||||
5. \`chrome_navigate\` supports an optional \`initScript\` that runs at document_start in MAIN world for the next navigation (good for seeding localStorage or stubbing Date.now).
|
||||
6. By default chrome_* tools run in the background without focusing Chrome; pass \`background=false\` or run /chrome background off when the user wants to watch Chrome work.
|
||||
7. If you hit a native file-picker or privileged browser prompt gate, tell the user; generic clicks/typing/CSP gates are handled by Chrome input.
|
||||
8. Run /chrome doctor when in doubt about connectivity or capabilities.
|
||||
</chrome-profile-bridge>`;
|
||||
return { systemPrompt: event.systemPrompt + primer };
|
||||
8. Run /chrome doctor when in doubt about connectivity or capabilities.`;
|
||||
const promptOptions = event.systemPromptOptions as unknown as
|
||||
| { sections?: Record<string, string> }
|
||||
| undefined;
|
||||
if (!promptOptions) return; // hosts without structured options just skip the section
|
||||
(promptOptions.sections ??= {}).chrome_profile_bridge = primer;
|
||||
});
|
||||
|
||||
// Shared handlers, dispatched by the unified /chrome command below.
|
||||
|
||||
Reference in New Issue
Block a user