架构 v2:单一 persona + 工具锚定 + 按需知识
August 28, 2026 · View on GitHub
0. 结论
- 第一注入 = 每个 preset 的 persona:
# 安全分析工程代理工作规范,complete: true、includeRuntimeContext: false。 - 领域 skill 只存在于
references/,通过read_reference按需读取;skill 内不保留激活词、强制开场白或隐藏启动协议。 - 工具目录由
@dsh-security/bootstrap首轮收窄,晋升后放开。 - 每个结论必须带置信度,并注明依据。
1. 设计目标
- 唯一系统提示:persona 是唯一注入 prompt,便于审计。
- 工具与知识分离:领域能力注册为工具,知识放
references/。 - 无 skill 内激活协议:所有"激活词 / 强制进入某模式"内容删除。
- 可验证:构建产物可
node --check,preset 可真实 mount。
2. 第一注入(单一事实源)
每个 agent.cordis.yml 只有一段系统提示:
- id: persona
name: '@deepseek-ai/dsh-persona'
config:
text: |
# 安全分析工程代理工作规范
...
complete: true
includeRuntimeContext: false
这段文本是 helmd 的身份与纪律层,不展开领域知识;领域规则在工作时按需读取。
2.1 两层注入模型
| 层 | 载体 | 内容 | 注入方式 |
|---|---|---|---|
| Layer 1 | @deepseek-ai/dsh-persona | 安全身份与纪律锚点 | 系统提示,complete: true |
| Layer 2 | dsh-agent-instructions + AGENTS.md | 完整工程代理工作规范 | 按 AGENTS.md 自动加载,作为 <system-reminder> |
- Layer 1 保持精简:只放安全边界、身份、按需读取原则、置信度要求。
- Layer 2 放原来的完整规范:可拆分到项目
AGENTS.md,由已存在的agent-instructions行加载。 prompt-deepseek优化版.md不进入 Layer 1 或 Layer 2:它的内容会让模型绕过安全边界。
3. AI 遇到一个问题的调用链
flowchart TD
U["用户问题"] --> S["session / step assembly"]
S --> A["system-prompt/assemble waterfall"]
A --> B["bootstrap 过滤器"]
B --> B1{"顶层 agent 且未晋升?"}
B1 -- 是 --> C["首轮目录:pwsh/read 或 bash/read"]
B1 -- 否 --> D["完整工具目录"]
C --> M1["模型请求 #1"]
D --> M2["后续请求"]
M2 --> P{"首个 tool/call 或 assistant/message?"}
P -- 是 --> R["会话晋升"]
R --> T["router + 领域 bundle 工具"]
T --> K["read_reference 按需读 references/"]
K --> O["模型自主判断 + 置信度结论"]
4. 组件职责
| 组件 | 注入方式 | 是否进入 system prompt | 职责 |
|---|---|---|---|
| persona | preset 行 | 是,唯一系统提示 | 身份、纪律、置信度要求 |
| bootstrap | preset 行,inject=['systemPrompt'] | 否 | 首轮工具收窄,晋升后放开 |
| router | preset 行,inject=['tools'] | 否 | 注册 skill_catalog / read_reference |
| 领域 bundle | preset 行,inject=['tools'] | 否 | 注册领域工具,描述指向 references/ |
| references | 工具读取 | 否,按需读取 | 领域规则、工作流、脚本说明 |
5. 目录结构
helmd/
├── packages/
│ ├── bootstrap/
│ ├── router/
│ ├── skill-android/
│ ├── skill-web/
│ ├── skill-native/
│ ├── skill-protocol/
│ ├── skill-malware/
│ ├── skill-ai-security/
│ └── skill-evidence/
├── presets/
│ └── full-reverse/
└── docs/
├── architecture.md
└── architecture-v2.md
6. 本轮删除项
skill-evidence/references/reverse-flow-skill.md:删除旧的激活协议与强制"进入逆向模式"开场白。skill-evidence/references/prompting.md:删除旧的启动提示代码块与开场白。- 全仓库无旧的
Activation protocol/ skill 内激活词。 - 激活协议唯一来源为
packages/helmd/presets/persona.txt,精确输入helmd才返回固定上线语;router 残留 prompt 不再定义第二套激活回复。 create_case生成的 case prompt 只记录任务上下文,不自动宣告进入逆向模式,避免把普通 case 创建误当作启动指令。
7. 验证
- 9 个
dist/index.js通过node --check。 --profile web真实启动成功。helmd(full-reverse) preset 通过session.create真实 mount。- 搜索 skill 引用,无剩余激活词。
8. 残余风险
- 首轮只暴露
pwsh/read或bash/read、次轮放开完整目录的行为未跑真实模型请求验证;需要用户发一条消息观察工具目录。 - 置信度:构建与 mount 为高;首轮工具锚定行为为中。