mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 18:55:22 +00:00
- 组合包拥有、可随时重建的配置、日志与缓存统一放在 <agentDir>/my-pi/:permission-system/(policy.jsonc、hard-guards.jsonc、 logs/)、rtk-optimizer/config.json、tool-search/(config.json、 catalog-v1.json)与 system-prompt-cover.md。hashline.json、lsp.json 由外部扩展读取固定路径,是唯一例外。 - 新增 config/bundle-manifest.json 与 scripts/rebuild-bundle-config.mjs: 先校验全部来源与目标,在临时目录构建完整树,再整体删除旧 my-pi/ (符号链接只删链接)并原子替换,不备份。install.sh / update.sh 每次 运行都调用它;扩展自身不再播种或迁移配置。 - update.sh 删除 pi update 失败后的 git clean 恢复逻辑:Pi 1.3.0 会在 下一次 pi update 时依据中断标记自行恢复。同时删除 Tool Search settings.json 快照迁移与封面部署脚本。 - Tool Search 改为读取 my-pi/tool-search/config.json(源为 config/tool-search.json,须与 BUNDLE_TOOL_SEARCH_DEFAULTS 一致), 不再读写 settings.json 的 toolSearch 段,移除 bundleDefaultsVersion。 - 默认权限策略开启 debugLog。 - 旧位置的残留文件不迁移、不清理;AGENTS.md / README 同步新约束。 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
29 lines
1.3 KiB
TypeScript
29 lines
1.3 KiB
TypeScript
import { getAgentDir, type ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
|
|
import { readCoverFile, resolveCoverPath, spliceCover } from "./system-prompt-cover-config.ts";
|
|
|
|
export { COVER_FILE_NAME, readCoverFile, resolveCoverPath, spliceCover } from "./system-prompt-cover-config.ts";
|
|
|
|
/**
|
|
* Replaces Pi's default system prompt preamble with the bundle-managed cover while
|
|
* preserving every other prompt section in its original position.
|
|
*
|
|
* The cover is read on each `before_agent_start`, so edits to `system-prompt-cover.md` take
|
|
* effect on the next turn of an already-running session rather than requiring a restart.
|
|
*
|
|
* Returning `systemPrompt` sets Pi's `forceSystemPrompt`, which is projected onto the
|
|
* request at send time. That is deliberate: it is the only path that keeps the rendered
|
|
* section order intact. The options-based alternative (`customPrompt`) would suppress
|
|
* `tools`, `rules`, and `docs`, and any later re-injection cannot restore their original
|
|
* positions. Pi still diffs and persists the structured sections in the transcript.
|
|
*/
|
|
export default function systemPromptCoverExtension(pi: ExtensionAPI): void {
|
|
pi.on("before_agent_start", (event) => {
|
|
const cover = readCoverFile(resolveCoverPath(getAgentDir()));
|
|
if (cover === undefined) {
|
|
return;
|
|
}
|
|
return { systemPrompt: spliceCover(event.systemPrompt, cover) };
|
|
});
|
|
}
|