hnlg-coder/dsh-sisyphus-presets

dsh-sisyphus-presets

DeepSeek Harness agent presets: Sisyphus orchestrator (6 expert subagent lanes) + Sisyphus Oracle read-only consultant. Ported from oh-my-openagent workflow.

待分类agent-presetai-agentdeepseek-harness

DSH Sisyphus 预设

DeepSeek Harness 智能体预设:Sisyphus(编排者)与 Sisyphus Oracle(只读顾问),移植自 oh-my-openagent(OMO)的 Sisyphus 工作流。

English README

预设角色简介
sisyphus编排者分解任务、并行委派给六条专家子代理车道、验证结果、推动任务完成。
sisyphus-oracle只读顾问诊断、架构设计、权衡评估、安全/性能审查。绝不修改任何内容。

本项目是 oh-my-openagent 的 Sisyphus persona 与编排工作流的衍生作品,采用 SUL-1.0 许可(见 LICENSE)。


更新记录(2026-09-02)

  • persona 重写并压缩约 55%:决策框架不变(意图门、委派协议、验证循环、红线),删除机制复述;新增 FIXED ULTRAWORK 模式:分级强制规划、二值通过条件的场景契约、双证据 RED/GREEN 的 TDD、触发式评审门、持久便签。
  • MCP 可见性开关(sisyphus/mcp-switch.js,新增):blender/playwright 的 MCP 工具集(约 50 个 schema)在 sisyphus 会话默认隐藏,保证每次请求的提示词精简;mcp_enable / mcp_disable 按需显示/隐藏。GitHub 工具始终可见。
  • Oracle 掩码自动解除(sisyphus-oracle/restrict.js):只读工具掩码现按会话追踪,会话切换到非 sisyphus-oracle 预设(如 router 预设)时自动解除——修复需要 platform shell 的预设首轮装配失败的问题。
  • 新增 command-goal 行(人类 /goal 命令 + 模型侧 goal 工具共享同一持久目标域);bash/pwsh 行恢复为一次性 shell(持久 PTY shell 会丢失 run_in_background)。
  • lane-models.js 注释块修复(此前为乱码)并保持完全可移植:所有车道默认 null = 继承会话模型(钉模型见模型策略)。
  • 版本下限上调:本版本要求 DSH ≥ 0.1.2-alpha.3 —— mcp-switch.js 使用 0.1.2-alpha.3 的工具 output 契约注册工具,restrict.js 使用 disposer 式掩码 API(agent-preset/selected 事件),command-goal 随 app 主包附带。在 0.1.2-alpha.4 上构建并验证;旧的 0.1.0-rc.x 系列没有这些 API(见前置条件)。

目录


功能特性

Sisyphus —— 带六条专家委派车道的编排者

  • 意图门(Intent Gate):行动前先分类请求(解释/实现/调查/评估/修复/重构);对提问绝不擅自实现。
  • 三种模式:Orchestrate(默认编排)、Advise(问答)、Execute(琐碎单文件工作直接执行)。
  • 六条只读、可续接的子代理车道(支持后台运行、send_message 续接、完成通知):
车道用途toolFilter 白名单要点
subagent_explore内部代码库检索("上下文 grep")read/glob/grep/lsp/session_*
subagent_oracle硬问题的高 IQ 咨询另含 get_goal/job_list/job_output
subagent_vision图像理解(多模态)read_image/read/glob/grep
subagent_librarian外部参考检索(文档/开源)web_search/read/glob/grep
subagent_metis规划前分析:隐藏意图、歧义、AI 失败点read/glob/grep/lsp/session_*
subagent_momus对抗式计划评审(PASS / PASS-WITH-FIXES / FAIL)read/glob/grep/lsp/session_*
  • 规划闭环:METIS → 计划 → MOMUS → 修订 → 用户批准(小任务跳过)。
  • 并行执行纪律:多角度任务并发 2–5 个后台子代理;绝不重复已委派的搜索。
  • 验证循环:证据落地、lsp 诊断、测试、构建、手动 QA、独立核验委派结果。
  • 硬性不变量:禁止类型错误抑制、禁止空 catch、禁止破坏性 git、禁止伪造引用/验证。
  • 分类路由:workflow 工具 + team-orchestration skill 的 category-router.js 模板,按任务域在运行时把单元路由到不同模型(视觉→多模态、硬逻辑→重推理、琐碎→便宜模型)。
  • MCP 可见性开关:blender/playwright 的 MCP 工具 schema(约 50 个,sisyphus/mcp-switch.js)默认隐藏,保持每次请求的提示词精简;mcp_enable / mcp_disable 按需显示/隐藏。GitHub 工具始终可见。

Sisyphus Oracle —— 只读顾问

  • 三层只读强制:
    1. restrict.js 插件——监听 agent/created,在 agent 自身作用域调用 tools.restrict({allow: [...]}),屏蔽全部继承的全局工具(MCP github/playwright/blender、write/edit、bash/pwsh、schedule、goals、jobs)。掩码按会话追踪,会话切换到非 oracle 预设(agent-preset/selected)时自动解除。
    2. persona 硬约束(绝不编辑、绝不执行副作用命令)。
    3. 宿主审批策略(ask)。
  • 保留工具:read、read_image、glob、grep、lsp、web_search、ask_user_question(+ 无害的 agent 级 schedule_*)。
  • 模型:跟随用户当前会话模型(见模型策略)。

与官方预设对比

DSH 官方自带四个预设。以下是 sisyphus / sisyphus-oracle 与它们的关系:

能力standardcodecordisminimalsisyphussisyphus-oracle
Persona短短长(两平面)固定(complete: true)压缩编排协议(ultrawork 模式)只读顾问
bash / pwsh✅✅✅持久 PTY✅✅(restrict.js 屏蔽)
fs 读写✅✅✅fs-local✅只读(restrict.js)
str_replace_editor❌❌❌✅✅❌
后台任务✅✅✅❌✅❌
goal✅✅✅❌✅❌
计划模式✅✅✅❌✅❌
压缩✅✅✅❌✅✅
skills✅✅✅ + 编辑技能❌✅❌
子代理委派✅✅✅❌✅ + 6 条角色车道❌
workflow / ralph✅✅✅❌✅❌
run_code(Code Mode)❌✅❌❌✅(mode: both)❌
tool-cordis(自改运行时)❌❌✅❌✅❌
lsp❌❌❌❌✅✅
会话检索❌❌❌❌✅❌
角色车道(explore/oracle/vision/librarian/metis/momus)❌❌❌❌✅❌
注册表级只读强制❌❌❌❌❌✅(restrict.js)
车道模型集中配置(lane-models.js)❌❌❌❌✅不适用

如何选择:

  • standard — 日常编码的纯净基线。
  • code — 与 standard 相同,但通过 run_code 批量执行多步操作。
  • cordis — 想让 agent 自己编写/修改 DSH 预设时(自引用工具集 + 编辑技能)。
  • minimal — 固定提示词、两个持久工具,确定性优先,无任何 agent 机制。
  • sisyphus — 需要编排能力时:意图门、六条专家车道、METIS→计划→MOMUS 闭环、并行委派、分类路由。是 standard 的超集,另含 LSP/会话检索/run_code/cordis。
  • sisyphus-oracle — 需要"零副作用硬保证"的咨询时(注册表级工具屏蔽)。

与 oh-my-openagent(OMO)对比

sisyphus 是 OMO 的 Sisyphus 工作流向 DSH 平台的移植。两者共享编排哲学,但机制不同:

方面oh-my-openagent(opencode 插件)DSH Sisyphus说明
Agent 构建动态(createSisyphusAgent(model, availableAgents, tools, skills, categories)——提示词随模型族变化并注入实时环境)静态 persona(手写、模型无关)DSH 预设是声明式文件,无运行时提示词生成
委派 APItask() + category(8 类别)+ subagent_type(explore/librarian/oracle/metis/momus)subagent 工具 + 6 条固定车道(explore/oracle/vision/librarian/metis/momus)角色集相同,载体不同
动态分类路由原生 category 参数调用时选模型workflow 脚本 agent(prompt, {provider, model}) 运行时覆盖,category-router.js 模板DSH 用 workflow 引擎实现等价能力
Metis / Momus预规划顾问 + 计划评审(昂贵模型)✅ 移植为 subagent_metis / subagent_momus 车道规划闭环:METIS → 计划 → MOMUS
Librarian外部参考 agent(GitHub/Context7/Web)✅ 移植为 subagent_librarian 车道(web_search)
Visionmultimodal-looker✅ subagent_vision 车道
技能注入动态 availableSkills 注入 persona静态技能引用 + tool-skillpersona 写使用规则,非实时目录
会话延续continuation session id持久子代理 id + send_message等价
并行后台探索run_in_background + background_outputbackgroundMode: continuable + 完成通知等价
工作流引擎无原生等价(hyperplan = skill 模拟)原生 workflow 工具(JS 编排脚本)DSH 优势
Ralph 循环无原生等价原生 ralph 工具(自引用循环)DSH 优势
自我修改无tool-cordis(inspect/define/run/stop/undefine 活运行时)DSH 优势
Code Mode无run_code(TypeScript SDK 批量执行)DSH 优势
只读保证仅 persona注册表级(restrict.js 从目录屏蔽工具)sisyphus-oracle 的 DSH 优势
许可证SUL-1.0SUL-1.0(衍生)见 LICENSE

OMO 有而 DSH Sisyphus 没有的:

  • 按模型族动态生成提示词(OMO 为 kimi/gpt/claude 各烘焙不同提示词)。
  • 实时环境注入(persona 直接列出会话真实可用的 agents/tools/skills)。
  • task() 的原生 category 参数(DSH 需要 workflow 脚本实现等价)。

DSH Sisyphus 有而 OMO 没有的:

  • 原生 workflow 引擎、ralph 循环、run_code、tool-cordis 自我修改。
  • 注册表级只读强制(restrict.js)。
  • 声明式预设文件——复制目录即安装,无需构建步骤。

1. 安装预设

将每个预设目录复制到 DSH 用户预设根目录($DSH_HOME/.agent-presets/):

# 在本仓库目录下
Copy-Item .\sisyphus        <DSH_HOME>\.agent-presets\sisyphus        -Recurse
Copy-Item .\sisyphus-oracle <DSH_HOME>\.agent-presets\sisyphus-oracle -Recurse

预设会以 "Sisyphus" 和 "Sisyphus Oracle" 的名称出现在 Web UI 的预设选择器中。

2. 安装 team-orchestration skill(推荐)

sisyphus 的 persona 会引用 team-orchestration skill 中的工作流模板(hyperplan、安全研究、并行探索、分类路由):

Copy-Item .\skills\team-orchestration <DSH_HOME>\skills\team-orchestration -Recurse

3. 重启 DSH

停止并启动你的 harness 实例(使用你惯常的重启方式——启动命令、服务管理器或 Web UI 的重启操作均可)。新会话会加载新预设。


部署与应用

文件必须放到的位置

文件必须位于
sisyphus/(整个目录)<DSH_HOME>\.agent-presets\sisyphus\
sisyphus-oracle/(整个目录)<DSH_HOME>\.agent-presets\sisyphus-oracle\
skills/team-orchestration/(整个目录)<DSH_HOME>\skills\team-orchestration\

DSH_HOME 是 harness 家目录(启动脚本设置;本仓库参考机器上是 D:\DeepSeek Harness\home)。必须复制整个目录,而不是只复制里面的文件——预设目录携带自己的 lane-models.js、mcp-switch.js 和 restrict.js 兄弟文件,composition 通过相对路径引用它们。

将预设设为默认

要让 sisyphus 成为所有新会话的默认预设,在 settings.yaml 中设置:

agent-presets:
  default: sisyphus

该值在每次创建会话时读取——仅此改动无需重启。你也可以保留官方默认,改为按会话选择预设。

使用预设

  • Web UI:创建新会话时打开预设选择器,选择 Sisyphus 或 Sisyphus Oracle。
  • API:在 session.create 中传 "agentPreset": "sisyphus"(或 "sisyphus-oracle"):
$body = '{"type":"client-request","rpcId":"t","method":"session.create","payload":{"workspaceId":"<ws-id>","agentPreset":"sisyphus"}}'
Invoke-WebRequest -Uri "http://127.0.0.1:3080/api/session.create" -Method POST -ContentType "application/json" -Body $body -UseBasicParsing
  • 切换空白会话:尚未产生任何轮次的会话可通过 agentPreset.select 切换预设(已运行的会话锁定其预设)。
  • 重启说明:修改 lane-models.js(固定车道模型)或预设目录内任何文件需要重启 DSH——composition 在预设挂载时读取。settings.yaml 的改动(默认预设、模型 provider)无需重启即生效。

部署后检查清单

  1. 两个预设都能挂载:分别创建会话——期望 ok: true。
  2. Oracle 会话只显示只读工具(见验证方法)。
  3. Sisyphus 会话暴露全部六条车道(subagent_explore/oracle/vision/librarian/metis/momus)以及 workflow、ralph、run_code、cordis_*。
  4. 车道模型解析正常:让 oracle 子代理自报 {{model}}——应与你的会话模型(或 lane-models.js 的固定值)一致。

AI 辅助部署提示词

如果你想用 AI 编码助手(Claude Code、opencode、Cursor 等)帮你部署这些预设,直接粘贴下面的提示词。它自包含:告诉 AI 精确的复制目标、位置和验证方式,无需额外上下文。

提示词:部署预设

Deploy the DSH Sisyphus presets to a DeepSeek Harness installation.

Context:
- The presets are in this repository: the `sisyphus/` and `sisyphus-oracle/`
  directories (each is an agent preset = a directory with agent.cordis.yml
  plus sibling files), and the `skills/team-orchestration/` directory
  (a DSH skill with a SKILL.md and references/).
- DSH_HOME is the harness home directory. On Windows it is typically
  D:\DeepSeek Harness\home; on Linux/macOS it is $HOME/.dsh. Find the real
  one by checking the launcher scripts for the DSH_HOME environment
  variable, or look for the `profiles/` and `sessions/` directories.

Steps:
1. Copy the whole `sisyphus/` directory to <DSH_HOME>\.agent-presets\sisyphus\
   (copy the directory itself, not just its files).
2. Copy the whole `sisyphus-oracle/` directory to
   <DSH_HOME>\.agent-presets\sisyphus-oracle\.
3. Copy the whole `skills/team-orchestration/` directory to
   <DSH_HOME>\skills\team-orchestration\.
4. Restart DSH (stop then start the harness using whatever restart
   procedure this deployment normally uses).

Verification (required, report the results):
- Create a session with agentPreset "sisyphus": expect ok:true and no
  "failed to mount" error.
- Create a session with agentPreset "sisyphus-oracle": expect ok:true.
- In the oracle session, prompt "List every tool name in your catalog" —
  the visible tools must be exactly: read, read_image, glob, grep, lsp,
  web_search, ask_user_question, schedule_create, schedule_delete,
  schedule_list. There must be NO write/edit/pwsh/mcp__* tools.
- In the sisyphus session, verify the six subagent lanes exist:
  subagent_explore, subagent_oracle, subagent_vision, subagent_librarian,
  subagent_metis, subagent_momus.

Constraints:
- Do NOT modify any file inside the preset directories after copying.
- Do NOT create a git repo, do not push anything.
- If a copy target already exists, report it and stop rather than
  overwriting.

提示词:验证已有部署

Verify that the DSH Sisyphus presets are correctly deployed on this
DeepSeek Harness installation.

Check:
0. DSH version is ≥ 0.1.2-alpha.3 (check the app package version / `npm ls @deepseek-ai/dsh`);
   note this release does NOT run on 0.1.0-rc.x builds.
1. <DSH_HOME>\.agent-presets\sisyphus\ exists and contains
   agent.cordis.yml + lane-models.js + mcp-switch.js (plus preset.yml).
2. <DSH_HOME>\.agent-presets\sisyphus-oracle\ exists and contains
   agent.cordis.yml + restrict.js (plus preset.yml).
3. <DSH_HOME>\skills\team-orchestration\ exists with SKILL.md and
   references/ (hyperplan.js, security-research.js,
   parallel-exploration.js, category-router.js).
4. The presets mount: call session.create with each preset id and report
   ok:true / any mount errors.
5. sisyphus-oracle tool restriction is active: in an oracle session, ask
   "List every tool name in your catalog" and confirm only read-only tools
   are visible (no write/edit/pwsh/mcp__*).
6. Lane model config is wired: check that sisyphus/agent.cordis.yml lane
   rows reference lane-models.js via agentOptions !!js expressions, and
   that lane-models.js has entries for all six lanes.

Report a pass/fail table for each check with the evidence you found.

提示:第二个提示词在 DSH 升级后也很有用——预设 composition 和 restrict.js 位于 harness 家目录,升级重写 app 目录不会触碰它们,但重新验证成本很低。


前置条件

要求说明
DSH 版本要求 ≥ 0.1.2-alpha.3;构建并验证于 0.1.2-alpha.4。本版本使用 0.1.2-alpha.3 的工具 output 契约(mcp-switch.js)、disposer 式 tools.restrict + agent-preset/selected 事件(restrict.js)与 app 随附的 @deepseek-ai/dsh-command-goal。0.1.0-rc.x 系列没有这些 API——不要在 rc 构建上运行本版本。
宿主平面服务lsp(LSP)、session-query(会话检索)、schedule、tool-web(web_search)必须挂载在宿主组合(cordis.patch.yml)中。官方 web profile 自带这些。
插件版本profile 插件版本必须与 app 主包版本一致——注意 DSH 官方 AGENTS.md §1 提到的 latest tag 陷阱。
模型 providersettings.yaml → llm-pi-ai.providers 中配置的任意 provider(见模型策略)。

模型策略

两个预设都不固定模型。 所有子代理车道与 Oracle 预设都继承父 agent 的模型路由(在会话/agent 创建时快照)——即会话启动时选择的模型(默认取部署默认值)。这让预设跨部署可移植:没有任何 provider 或模型名被硬编码,在任何 DSH 安装上都能工作,无论配置了哪家 LLM provider。

⚠️ 会话中途切换模型不会重路由子代理。 子代理在委派时继承 parent.options.model(已实测:通过 session.selectModel 切到更重的模型后,父会话自身请求会切换,但已创建的子代理车道保持创建时的模型)。Oracle 预设的顶层 agent 会跟随会话切换(其请求解析当前会话模型);它的子代理车道不会。

车道路由模型优先级

1. lane-models.js 中固定配置的 { provider, model }   ← 显式单车道覆盖(最高)
2. 否则:父 agent 创建时的模型                         ← 默认(会话启动时的模型)

自定义单车道模型——编辑 lane-models.js,无需改 YAML

每条车道的模型从 sisyphus/lane-models.js(随预设旅行的纯 JS 模块)解析。null = 继承会话模型(默认);{ provider, model } = 固定该车道。编辑文件后重启 DSH:

// sisyphus/lane-models.js
// 将 <your-provider> 替换为你自己的 settings.yaml → llm-pi-ai.providers 中的 key。
module.exports = {
  explore:   null,                                                          // 继承
  oracle:    { provider: '<your-provider>', model: '<heavy-reasoning-model>' },  // 固定示例
  vision:    { provider: '<your-provider>', model: '<multimodal-model>' },  // read_image 需多模态
  librarian: null,
  metis:     null,
  momus:     null,
};
  • provider 必须是你的 settings.yaml → llm-pi-ai.providers 中的 key。
  • agent.cordis.yml 中的六条车道通过 loader 的 !!js + createRequire 机制读取该文件——你永远不需要编辑 YAML 结构。
  • 修改固定配置需要重启 DSH(配置在 preset 挂载时读取)。

⚠️ Vision 车道注意:read_image 仅当路由模型声明支持图像输入时才可用。如果会话模型是纯文本,要么把会话切换到支持图像的模型,要么通过 lane-models.js 把 subagent_vision 固定为多模态模型。

运行时分类路由(workflow)

对于多领域任务,workflow 工具的 agent(prompt, { provider, model }) 支持运行时模型覆盖。team-orchestration skill 内置 references/category-router.js 模板,把每个单元路由到其类别对应的模型。

发布版路由表完全可移植:每个类别默认 null = 继承当前会话模型,零硬编码 provider/模型名。 要启用按域路由,编辑 category-router.js 中的 CATEGORY_ROUTE 表(workflow 脚本运行在沙箱中、无 require,路由表必须内联)。示例配置:

category模型(示例)
visual-engineeringmimo-v2.5(多模态)
ultrabrain / deepdeepseek-v4-pro(仅真硬推理)
artistry / writing / quick / unspecified-lowdeepseek-v4-flash
unspecified-high / 未传 / inherit当前会话模型

为什么需要这两个 JS 文件(模型间接层)

你可能会问:为什么不直接把模型写进 agent.cordis.yml?有三个原因迫使引入间接层——用一个 JS 文件把车道/类别映射到实际模型:

  1. 预设是声明式的,不是可执行的。 agent.cordis.yml 是静态 YAML 声明,在预设挂载时读取一次。它不能计算、不能读配置、不能分支——所以"跟随部署的 provider 选择模型"这类逻辑无法在 YAML 本身表达。

  2. 硬编码模型名会破坏可移植性。 一个写着 model: deepseek-v4-pro 的预设,在任何 settings.yaml 未定义该模型、或 provider key 不同的部署上都会失败。把映射放在 JS 文件里、默认值为 null(继承会话模型),预设就能在任何地方运行;用户只需编辑一个小文件即可选择固定路由。

  3. 两种机制活在两个不同的执行环境中:

    • lane-models.js 由 DSH loader 在预设挂载时读取:agent.cordis.yml 中每条车道的 agentOptions 是一个 !!js 表达式,通过 createRequire 加载该文件并取对应车道条目。loader 环境有 require,所以映射可以放在独立文件中,不用塞进 YAML。
    • category-router.js 是 workflow 脚本,在 workflow 引擎的沙箱中执行——没有 require、没有文件系统、没有 Node API。因此路由表必须内联在脚本里。这就是它默认全 null(继承)而不是指向外部文件的原因。

所以这两个文件是同一个思路应用到两个不同的载体:默认保持预设可移植,同时给用户一个小的、文档完善的、可以固定真实模型的地方。

文件载体执行环境为什么需要 JS 文件
lane-models.js固定 subagent_* 车道DSH loader(有 require)agent.cordis.yml 是静态 YAML;模型映射必须在挂载时计算,且不触碰 YAML 结构即可用户编辑
category-router.jsworkflow 运行时路由workflow 沙箱(无 require)workflow 脚本不能读文件,所以表内联;发布版全 null(继承)以保持可移植

Sisyphus(编排者)

  • 意图门 — 行动前分类(解释/实现/调查/评估/修复/重构)。
  • 三种操作模式 — Orchestrate(默认)、Advise(问答)、Execute(琐碎单文件工作)。
  • 六条专家委派车道 — 全部只读、全部可续接(可后台、持久子代理 id、send_message 续接、完成通知)。
  • 规划闭环 — METIS → 计划 → MOMUS → 修订 → 用户批准(小任务跳过)。
  • 并行执行纪律 — 多角度工作并发 2–5 个后台子代理;绝不重复已委派的搜索。
  • 验证循环 — 证据落地、lsp 诊断、测试、构建、手动 QA、独立核验委派结果。
  • 硬性不变量 — 禁止类型错误抑制、禁止空 catch、禁止破坏性 git、禁止伪造引用/验证、咨询中的子代理未返回前绝不交付最终答案。

Sisyphus Oracle(只读顾问)

  • 只读三层强制:
    1. restrict.js 插件——监听 agent/created,在 agent 自身作用域调用 tools.restrict({allow: [...]}),屏蔽全部继承的全局工具(MCP github/playwright/blender、write/edit、bash/pwsh、schedule、goals、jobs)。掩码按会话追踪,会话切换到非 oracle 预设(agent-preset/selected)时自动解除。
    2. persona 硬约束(绝不编辑、绝不执行副作用命令)。
    3. 宿主审批策略(ask)。
  • 保留工具:read、read_image、glob、grep、lsp、web_search、ask_user_question(+ 无害的 agent 级 schedule_*)。
  • 模型:跟随当前会话模型(可随时切换)。

验证方法

# 1) 两个预设都能挂载(ok: true)
$body = '{"type":"client-request","rpcId":"t","method":"session.create","payload":{"workspaceId":"<ws-id>","agentPreset":"sisyphus"}}'
Invoke-WebRequest -Uri "http://127.0.0.1:3080/api/session.create" -Method POST -ContentType "application/json" -Body $body -UseBasicParsing
# 用 agentPreset "sisyphus-oracle" 重复一次

# 2) Oracle 会话不暴露任何修改类工具
#    提示词: "List every tool name in your catalog" → 应只显示
#    read/read_image/glob/grep/lsp/web_search/ask_user_question/schedule_*

常见问题

Q: 我切换会话模型后,为什么子代理还在用旧模型? A: 子代理继承的是父 agent 的模型路由,在会话/agent 创建时快照(parent.options.model)。切换会话模型只影响父会话自身之后的请求。要改车道模型:新开会话、编辑 lane-models.js、或在 workflow 的 agent() 调用中传 {provider, model}。

Q: 我用的 LLM provider 和示例不同,需要改什么? A: 默认(继承)行为下什么都不用改——车道跟随会话模型。只有固定车道时,使用你自己的 settings.yaml → llm-pi-ai.providers 中的 provider key。

Q: Oracle 预设真的绝不修改任何东西吗? A: 是的。restrict.js 在注册表层面从工具目录中屏蔽 write/edit/bash/pwsh 和全部 MCP 工具,加上 persona 约束与宿主审批策略(ask)。已端到端验证:尝试 write 的提示词得到"我的可用函数集中不存在该工具"的回复。

Q: 可以添加自己的车道吗? A: 可以。复制 sisyphus/agent.cordis.yml 中任意车道块,给它唯一的 toolName 和 id,在 lane-models.js 添加对应条目,(可选)配置 toolFilter 白名单。

Q: 必须安装 team-orchestration skill 吗? A: 只有使用工作流模板(hyperplan、安全研究、并行探索、分类路由)时才需要。六条子代理车道不依赖它。

Q: 为什么我的 sisyphus 会话里看不到 blender/playwright 的 MCP 工具? A: sisyphus/mcp-switch.js 默认隐藏两个服务端的全部工具(约 50 个 schema),保证每次请求的提示词精简——这就是 ultrawork 的"上下文节食"。调用 mcp_enable 并传服务端名即可显示(下一次请求生效);mcp_disable 重新隐藏。GitHub 工具永不被隐藏。

Q: 需要哪个 DSH 版本? A: 至少 0.1.2-alpha.3 —— mcp-switch.js 使用的工具 output 契约、restrict.js 的 disposer 式掩码 API、以及 app 随附的 dsh-command-goal 命令都来自 0.1.2-alpha 系列。参考部署:0.1.2-alpha.4。rc 构建(0.1.0-rc.x)将无法挂载 mcp-switch。


许可证

SUL-1.0(Sustainable Use License v1.0)——oh-my-openagent(© YeonGyu-Kim)的衍生作品,上游同样采用 SUL-1.0。完整条款见 LICENSE。

非商业/个人使用免费。商业使用需另行授权。再分发必须保留本声明与原始许可条款。