GPT-6 Astra · DeepSeek Harness Agent Preset
中文 | English
把 GPT-6 / Codex「Astra」提示词作为人格层,接到 DeepSeek Harness (dsh) 的 agent 预设上。装好后在 dsh 里选「GPT-6 Astra」即可得到一个带完整编码工具链、但身份 / 语气 / 判断准则 / 自主性按 Astra 原文运行的 agent。
一句话:工具用 dsh standard 的,人格用 Astra 的。
已发布:https://github.com/Zioove/gpt-6-astra-dsh-preset —— 方式 A 一条命令即可安装。
特性
- 人格按块内联,不是整份塞进去:源文件是一本给多个 Codex 界面用的提示词库, 本预设只取其中两段连续的、真正属于编码 agent 的指令(见「人格是怎么选出来的」)。
- 工具面保持完整:预设由 dsh 官方
standard预设整目录派生,文件读写 / 检索 / pwsh / 后台任务 / Skills / 计划 / 目标 / 子代理 / 工作流 / web 工具全部保留。 - 一段运行环境适配:
prompt/harness-bridge.md把原文里的工具名(functions.exec、apply_patch、update_plan、request_user_input、skills.list…)映射到本 harness 真实存在的工具,并声明哪些 Codex 产品面(Apps/Connectors、Plugins、request_permissions、end_conversation…)在这里不存在。 - 子代理不再背人格:
tool-subagent(providerspawn)行带一段 444 字符的子代理人格, 新 spawn 的子代理不会复制整份人格(fork 行刻意保持继承父人格——它的意义就是继承历史并复用 KV cache)。 - 原文随预设自带:预设内
skills/gpt-6-astra-reference/(由customSkillDirs+baseUrl挂载)把被排除的那 ~4,600 行、选块地图和重建方式放进一个按需加载的 skill, 常驻 token 成本为 0。 - 模型名来自变量:人格通过
{{model}}引用当前模型名,不硬写(上游范式:一个事实只有 一个归属方)。 - 可重建:
scripts/build.mjs从base/+prompt/重新生成 composition。 - 已挂载校验:composition 通过
agentPresets.standingKeyFor()真实挂载,18 个 row 全部激活、无 process-global 服务泄漏。
目录结构
.
├── package.json # 同时是一个 dsh bundle 插件(dsh.bundle.patch)
├── cordis.patch.yml # bundle patch:insert 一行 host 插件
├── lib/
│ └── index.js # host 插件:把 preset/(含 skills/)同步进 $DSH_HOME/.agent-presets/
├── preset/
│ ├── agent.cordis.yml # 可直接安装的 composition(含内联人格,约 60 KB)
│ ├── preset.yml # 显示名与描述
│ └── skills/
│ └── gpt-6-astra-reference/
│ ├── SKILL.md # 预设自带的 skill:选块地图、被排除的内容、如何改选块
│ └── reference/GPT-6-Astra_Prompts.md # 源文档逐字副本(339 KB)
├── base/
│ └── standard.agent.cordis.yml # 派生的上游基线(dsh 0.1.5-rc.3 的 standard 预设)
├── prompt/
│ ├── GPT-6-Astra_Prompts.md # 源文档(逐字,未改动)
│ └── harness-bridge.md # 追加的运行环境适配段
├── scripts/
│ ├── build.mjs # 选块 + 打补丁 → preset/agent.cordis.yml
│ ├── check.mjs # 生成物自检(row 完整、persona schema、内置补丁、skill 文件)
│ ├── check-plugin.mjs # bundle 自检(DSH_HOME、files + skills/、幂等、还原被改文件)
│ ├── ci-check.sh # 本地 CI:构建可复现 + 变量守卫 + 两个自检
│ ├── install.ps1 # Windows 安装(方式 B)
│ └── install.sh # macOS / Linux 安装(方式 B)
├── docs/
│ └── notes.md # 原理、选块依据、schema 迁移坑、升级维护
├── NOTICE.md # 提示词文本的来源与归属
└── LICENSE # MIT(仅覆盖脚本与配置)
安装
预设按 id 决定目录名,dsh 只会从 ${DSH_HOME:-~/.dsh}/.agent-presets/<id>/ 读取本地预设。
方式 A:通过 dsh 安装(推荐,一条命令,自带更新)
本仓库同时是一个 dsh bundle 插件(package.json 里声明 dsh.bundle.patch,
cordis.patch.yml 里 insert 一行 host 插件)。装上之后它会在每次启动时把 preset/ 的
两个文件和整个 skills/ 树同步进预设目录:
dsh plugin --profile web add github:Zioove/gpt-6-astra-dsh-preset
# 然后重启 dsh web(bundle 层在下次启动时加载)
也可以直接从本地目录装:dsh plugin --profile web add ./gpt-6-astra-dsh-preset
- 升级:
dsh plugin --profile web update dsh-preset-gpt-6-astra - 卸载:
dsh plugin --profile web remove dsh-preset-gpt-6-astra(已落盘的预设目录会保留,需要时自己删<DSH_HOME>/.agent-presets/gpt-6-astra/) - 该插件零依赖(只用 node 内置模块)、幂等(逐文件比字节)、不会因为失败而拖垮启动
(出错只打日志)。它以仓库为准,会覆盖同名的本地改动(含
skills/),但从不删除文件。 - 若 pnpm 提示需要
allowBuilds,那只会出现在带prepare/postinstall的包上, 本包没有安装脚本,正常情况不需要授权。
方式 B:克隆后运行安装脚本
pwsh -File scripts/install.ps1 # Windows(-Force 覆盖)
bash scripts/install.sh # macOS / Linux(FORCE=1 覆盖)
方式 C:手动复制
把 preset/ 整个目录复制到 %DSH_HOME%\.agent-presets\gpt-6-astra\
(或 ~/.dsh/.agent-presets/gpt-6-astra/):
.agent-presets/gpt-6-astra/agent.cordis.yml
.agent-presets/gpt-6-astra/preset.yml
.agent-presets/gpt-6-astra/skills/… # 可选:参考 skill
零拷贝(进阶)
dsh-agent-presets 的 row 支持 roots 配置(扫描顺序里靠前的 root 优先),所以也可以把
克隆下来的仓库直接挂成一个预设 root——把 preset/ 重排成
presets/gpt-6-astra/agent.cordis.yml,再在 profile 的 cordis.patch.yml 或宿主配置里给
agent-presets row 加:
- id: agent-presets
config:
roots:
- path: ~/src/gpt-6-astra-dsh-preset/presets
trust: user
path 支持 ~,相对路径按进程 cwd 解析,所以请用绝对路径或 ~。
验证与重建
node scripts/build.mjs # 选块 + 打补丁,重建 preset/agent.cordis.yml
node scripts/check.mjs # 自检:row 完整、persona schema、内置补丁、skill 文件
node scripts/check-plugin.mjs # bundle 自检:DSH_HOME 解析、files + skills/、幂等
bash scripts/ci-check.sh # 以上 + 构建可复现校验 + 提示词变量守卫(本地 CI)
preset/agent.cordis.yml 是生成物:改选块、改适配段或同步 base/ 之后必须重跑
build.mjs 并提交结果,否则 CI 会在 git diff --exit-code 上失败。
使用
重开或刷新 dsh Web GUI,在会话的预设选择器里选 GPT-6 Astra。
想让它成为新会话的默认预设,在
settings.yaml里写:agent-presets: default: gpt-6-astra(该值每次解析时读取,改完不需要重启 dsh。)
人格是怎么选出来的(重要)
源文档 prompt/GPT-6-Astra_Prompts.md 的标题就是 “Collected prompts and templates”:
它是给多个 Codex 界面用的提示词库(5,051 行),不是一份系统提示词。本预设只内联
两段连续的、真正属于编码 agent 的指令:
| 块 | 源文档行 | 内容 |
|---|---|---|
## Base model instruction template → # Apps (Connectors) 之前 |
5–157 | 模型层:身份、权限姿态、自主性与持久性、Personality 与写作风格、与用户沟通、把活干完的规则、使用 skills |
## Engine default base instruction template → 文件末尾 |
4,775–5,051 | 引擎层:组装好的 Codex CLI 基础指令(How you work / AGENTS.md / Responsiveness / Planning / Task execution / Validating / Ambition vs precision / 进度汇报 / 最终答复结构 / Tool Guidelines) |
其余约 4,600 行刻意排除,因为它们是对别的模型说的:# Classification 结尾写的是
"Output that single token immediately and nothing else."(分类器),还有 Guardian 审查模板、
批准与 request_permissions 片段、浏览器确认策略、code review rubric、realtime backend、
桌面 UI 片段、编排与压缩模板。它们没有丢——就在
preset/skills/gpt-6-astra-reference/reference/ 里,按需加载。
还有一个纯粹技术上的理由:第 362 行有 {{ tenant_policy_config }}。dsh 的提示词插值是
严格的,未注册的 {{...}} 组会让整轮请求失败;而 dsh-persona 没有 interpolate: false(只有用 ctx.systemPrompt.section({ interpolate: false }) 注册的段才有),
所以整份内联在这个 schema 下根本挂不上。
改选块:编辑 scripts/build.mjs 里的 SELECTION(起止标题锚点),重跑 build + check。
锚点找不到时构建会报错退出。
本预设相对 standard 的刻意改动
build.mjs 里有一个显式的 PATCHES 列表,每处改动都写明了它覆盖的是上游哪个事实、为什么。
锚点在新版 standard 里找不到(或匹配多处)时构建会报错退出,不会静默丢掉改动:
| 改动 | 为什么 |
|---|---|
skill-filesystem 加 customSkillDirs(!!js + baseUrl 指向 preset 自己的 skills/) |
让被排除的原文与选块说明随预设自带、按需加载;这是 shipped cordis 预设用的同一套机制 |
tool-subagent(spawn)加 444 字符 persona |
人格是常驻成本,新 spawn 的子代理不需要完整版本;fork 不加,因为它要继承历史并复用父级 KV cache |
原理
dsh 的系统提示是按段拼装的,dsh-persona 这个 row 提供两个段:
| 段 | order | 本预设内容 |
|---|---|---|
deployment:persona-prefix |
0 | 两段 Astra 指令 + 运行环境适配段 |
deployment:persona-suffix |
10200 | Your working directory is {{cwd}}. |
顺序是 identity-first(与 Claude Code / Codex 的惯例一致):harness 身份段(−100)→ 人格(0)→ 各工具 row 自己的指导(100–199)→ 工作目录尾段(10200)。也就是说 dsh 的工具 指导排人格之后,冲突时以 harness 的工具说明为准。
composition 里三条 isolate realm 规则(planning / compaction / delegation)是 dsh
对「预设自有服务」的硬要求,本仓库原样保留,未做改动。
成本提示
人格段常驻系统提示,约 44 K 字符 ≈ 11k token,每次请求都会带上。相比整份内联 (339 KB ≈ 85k token)已经是 1/8,而且:
- spawn 子代理只付 ~100 token 的人格,不再复制整份;
- 参考 skill 与原文在被读取前不产生任何 token 成本。
升级维护(重要)
dsh 会改 row 的 config schema。本仓库踩过的坑:
- dsh ≤ 0.1.4:
dsh-persona的字段是text: <string>。 - dsh 0.1.5-rc.3 起:字段改为
prefix(必填)与suffix;旧写法会以invalid config: $.prefix missing required value挂载失败。如果这个预设同时是默认预设, 症状就是新建对话直接失败、磁盘上不产生 session 目录。
升级 dsh 后请重新同步基线并重建:
# 1) 用新版 shipped standard 替换 base/
cp "$DSH_INSTALL/node_modules/@deepseek-ai/dsh-agent-presets/presets/standard/agent.cordis.yml" \
base/standard.agent.cordis.yml
# 2) 重建 + 自检
node scripts/build.mjs
node scripts/check.mjs
# 3) 安装/更新,并在 GUI 里新建一次会话确认
dsh plugin --profile web update dsh-preset-gpt-6-astra # 方式 A
# 或 bash scripts/install.sh / pwsh -File scripts/install.ps1 -Force
第 2 步是 standard 被改写时的报警点:PATCHES 的锚点会被检查,上游把 model / skill /
subagent 的 row 重排会让构建带着补丁名失败,而不是静默退回上游行为。
shipped 预设目录位置与预设 id 也会随版本变化(例如 0.1.5 起目录移到
node_modules/@deepseek-ai/dsh-agent-presets/presets/,预设 code 更名为 ptc)。
已知限制
- 原文提到的 Codex 产品面(Apps / Connectors、Plugins、Artifacts、
request_permissions、end_conversation、Guardian 审查、realtime backend)在 dsh 中不存在,适配段已明确排除; 需要跨会话记忆时使用本机记忆服务(OpenViking)的工具。 - 原文写的是 OpenAI 的产品体系,本预设只把它当人格与行为准则使用,不改变模型路由、也不代表
OpenAI 或 DeepSeek 的任何官方立场;
{{model}}说明真正在回答的模型是谁。 - 人格文本一旦改动,系统提示前缀即变化,会重建 KV cache。
- spawn 子代理的人格比父代理短。想让子代理恢复完整人格:删掉
preset/agent.cordis.yml里 spawn 行的persona:并重建。
贡献者
本仓库的每条提交的作者都是 Zioove;仓库归属 Zioove,T0mor1 拥有协作者权限。
许可与归属
- 本仓库的脚本、配置、文档:MIT,见
LICENSE。 prompt/GPT-6-Astra_Prompts.md(以及preset/skills/.../reference/里的同一份文本): 是 OpenAI GPT-6 / Codex 产品面的提示词文本,版权归 OpenAI,仅作技术研究与互操作研究收录, 不在 MIT 授权范围内。详见NOTICE.md。
No comments yet. Be the first to write one.