odai-dsh-agent 0.2.39 → 0.2.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -11
- package/build/src/control-center-installer.d.mts.map +1 -1
- package/build/src/control-center-installer.mjs +5 -0
- package/build/src/control-center-installer.mjs.map +1 -1
- package/build/src/installer.d.mts.map +1 -1
- package/build/src/installer.mjs +1 -1
- package/build/src/installer.mjs.map +1 -1
- package/client/client.js +27 -6
- package/package.json +1 -1
- package/preset/odai/package.json +2 -1
- package/preset/odai/runtime/compaction-config.d.mts +2 -2
- package/preset/odai/runtime/compaction-config.d.mts.map +1 -1
- package/preset/odai/runtime/context-activation.mjs +1 -1
- package/preset/odai/runtime/context-activation.mjs.map +1 -1
- package/preset/odai/runtime/index.mjs +1 -1
- package/preset/odai/runtime/index.mjs.map +1 -1
- package/preset/odai/runtime/lifecycle-runtime.d.mts.map +1 -1
- package/preset/odai/runtime/lifecycle-runtime.mjs +25 -4
- package/preset/odai/runtime/lifecycle-runtime.mjs.map +1 -1
- package/preset/odai/runtime/model-route.d.mts +5 -0
- package/preset/odai/runtime/model-route.d.mts.map +1 -1
- package/preset/odai/runtime/model-route.mjs +21 -2
- package/preset/odai/runtime/model-route.mjs.map +1 -1
- package/preset/odai/runtime/output-config.d.mts.map +1 -1
- package/preset/odai/runtime/output-config.mjs +2 -1
- package/preset/odai/runtime/output-config.mjs.map +1 -1
- package/preset/odai/runtime/role-overlays.d.mts +1 -1
- package/preset/odai/runtime/role-overlays.d.mts.map +1 -1
- package/preset/odai/runtime/role-overlays.mjs +4 -1
- package/preset/odai/runtime/role-overlays.mjs.map +1 -1
- package/preset/odai/runtime/router.d.mts +5 -1
- package/preset/odai/runtime/router.d.mts.map +1 -1
- package/preset/odai/runtime/router.mjs +47 -2
- package/preset/odai/runtime/router.mjs.map +1 -1
- package/preset/odai/runtime/routing-config.d.mts +5 -2
- package/preset/odai/runtime/routing-config.d.mts.map +1 -1
- package/preset/odai/runtime/routing-config.mjs +87 -42
- package/preset/odai/runtime/routing-config.mjs.map +1 -1
- package/preset/odai/runtime/runtime-config.d.mts +1 -1
- package/preset/odai/runtime/runtime-config.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-config.mjs +15 -9
- package/preset/odai/runtime/runtime-config.mjs.map +1 -1
- package/preset/odai/runtime/runtime-support.d.mts +6 -1
- package/preset/odai/runtime/runtime-support.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-support.mjs +90 -7
- package/preset/odai/runtime/runtime-support.mjs.map +1 -1
- package/preset/odai/runtime/runtime-types.d.mts +8 -1
- package/preset/odai/runtime/runtime-types.d.mts.map +1 -1
- package/preset/odai/runtime/runtime-types.mjs.map +1 -1
- package/preset/odai/runtime/skill-bundle.d.mts +1 -1
- package/preset/odai/runtime/skill-bundle.d.mts.map +1 -1
- package/preset/odai/runtime/work-policy.d.mts.map +1 -1
- package/preset/odai/runtime/work-policy.mjs +8 -2
- package/preset/odai/runtime/work-policy.mjs.map +1 -1
- package/preset/odai/skills/odai-orchestration/SKILL.md +1 -1
- package/preset/odai/skills/odai-orchestration/assets/codex-agents/role.toml +1 -0
- package/preset/odai/skills/odai-orchestration/assets/routing-roles/controller.md +1 -1
- package/preset/odai/skills/odai-orchestration/assets/routing-roles/creative.md +9 -0
- package/preset/odai/skills/odai-orchestration/manifest.json +9 -4
- package/preset/odai/skills/odai-orchestration/references/install.md +31 -1
- package/preset/odai/skills/odai-orchestration/references/orchestration.md +1 -0
- package/preset/odai/skills/odai-orchestration/scripts/build-routing.mjs +78 -17
- package/preset/odai/skills/odai-orchestration/scripts/compose-contracts.d.mts +1 -1
- package/preset/odai/skills/odai-orchestration/scripts/compose-contracts.mjs +2 -2
- package/preset/odai/skills/odai-orchestration/scripts/install-routing.mjs +101 -23
- package/preset/odai/skills/odai-orchestration/scripts/local-cli.d.mts +75 -0
- package/preset/odai/skills/odai-orchestration/scripts/local-cli.mjs +409 -0
- package/preset/odai/skills/odai-orchestration/scripts/run-role.mjs +190 -92
- package/preset/odai/skills/odai-orchestration/scripts/verify-routing.mjs +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-types.d.mts","sourceRoot":"","sources":["../src/runtime-types.mts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"runtime-types.d.mts","sourceRoot":"","sources":["../src/runtime-types.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-types.mjs","sourceRoot":"","sources":["../src/runtime-types.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-types.mjs","sourceRoot":"","sources":["../src/runtime-types.mts"],"names":[],"mappings":"AAIA,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AA8BD,8EAA8E;AAC9E,6EAA6E;AAC7E,mDAAmD;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAG,yBAAyB,CAAC;AAoGlE,MAAM,UAAU,aAAa,CAAC,OAAyC;IACrE,OAAO,OAAO,OAAO,EAAE,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvF,CAAC"}
|
|
@@ -6,7 +6,7 @@ export declare const ODAI_RUNTIME_CONTRACT = 9;
|
|
|
6
6
|
export declare const SKILL_MANIFEST_FILE = "manifest.json";
|
|
7
7
|
export declare const SKILL_SOURCE_MODES: readonly ["bundled", "auto", "user"];
|
|
8
8
|
export type SkillSourceMode = (typeof SKILL_SOURCE_MODES)[number];
|
|
9
|
-
export declare const ODAI_ROLE_NAMES: readonly ["controller", "researcher", "planner", "reviewer", "frontend"];
|
|
9
|
+
export declare const ODAI_ROLE_NAMES: readonly ["controller", "researcher", "planner", "reviewer", "frontend", "creative"];
|
|
10
10
|
export declare const ODAI_REFERENCE_NAMES: readonly ["dao", "planning", "craft", "verification", "memory", "leverage", "care", "human-safety", "orchestration"];
|
|
11
11
|
export type OdaiRoleName = (typeof ODAI_ROLE_NAMES)[number];
|
|
12
12
|
export type OdaiReferenceName = (typeof ODAI_REFERENCE_NAMES)[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-bundle.d.mts","sourceRoot":"","sources":["../src/skill-bundle.mts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC3H,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,eAAO,MAAM,qBAAqB,IAAsB,CAAC;AACzD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,kBAAkB,sCAAsD,CAAC;AACtF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"skill-bundle.d.mts","sourceRoot":"","sources":["../src/skill-bundle.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-policy.d.mts","sourceRoot":"","sources":["../src/work-policy.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"work-policy.d.mts","sourceRoot":"","sources":["../src/work-policy.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAO1D;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAgDxE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const GOAL_START = "Use goal tools for one long-running completion objective in the current session. create_goal may infer goal intent from a direct human request in any language; do not create a goal for routine single-turn work.";
|
|
2
|
+
const GOAL_START_020 = "create_goal may infer goal intent from a direct human request in any language.";
|
|
2
3
|
const GOAL_RESUME = "After session resume or fork, an active goal is disarmed: when a human asks to continue or resume in any wording or language, use update_goal action resume to rearm it.";
|
|
3
4
|
const GOAL_POLICY = "Use persistent goal tools only when the human explicitly requests autonomous continuation across goal rounds. A multi-step task, implementation request, or instruction to keep working does not by itself request a persistent goal; carry out the authorized work directly.";
|
|
4
5
|
/** Adapt the pinned host's optional work tools as one policy, not competing defaults.
|
|
@@ -11,7 +12,7 @@ export function applyWorkPolicy(assembly) {
|
|
|
11
12
|
if (section.name === "tool:goal")
|
|
12
13
|
return {
|
|
13
14
|
...section,
|
|
14
|
-
text: section.text.replace(GOAL_START, GOAL_POLICY).replace(GOAL_RESUME, "After session resume or fork, an active goal is disarmed. Rearm it only when the human explicitly asks to resume that autonomous goal; otherwise continue authorized work without rearming it."),
|
|
15
|
+
text: section.text.replace(GOAL_START, GOAL_POLICY).replace(GOAL_START_020, GOAL_POLICY).replace(GOAL_RESUME, "After session resume or fork, an active goal is disarmed. Rearm it only when the human explicitly asks to resume that autonomous goal; otherwise continue authorized work without rearming it."),
|
|
15
16
|
};
|
|
16
17
|
if (section.name === "tool:ralph")
|
|
17
18
|
return {
|
|
@@ -37,7 +38,12 @@ export function applyWorkPolicy(assembly) {
|
|
|
37
38
|
if (tool.name === "todo_write")
|
|
38
39
|
return {
|
|
39
40
|
...tool,
|
|
40
|
-
description: tool.description
|
|
41
|
+
description: tool.description
|
|
42
|
+
.replace("Record and update a task list to plan multi-step work and show progress; skip it for trivial single-step tasks. Add one todo per concrete step before you start. ", "Record and update a task list. Use it only when a task list helps coordinate or recover the work; multi-step work alone does not require a list. Skip trivial single-step tasks. ")
|
|
43
|
+
.replace("While work remains, keep the todos being worked on `in_progress`, several only when work runs in parallel. ", "Mark active work `in_progress`, several only when work runs in parallel. ")
|
|
44
|
+
.replace("While work remains, keep exactly one todo `in_progress`. ", "Keep AT MOST ONE todo `in_progress` at a time. ")
|
|
45
|
+
.replace("Mark each todo `completed` as soon as it is done.", "Update the list on meaningful progress or handoff; completed items may be reported together. Status must reflect actual work, including when nothing is actively running.")
|
|
46
|
+
.replace("Use it to plan multi-step work and show progress: add one todo per concrete step before you start. ", "Use it only when a task list helps coordinate or recover the work; multi-step work alone does not require a list. ")
|
|
41
47
|
.replace("; while work remains, at least one task should be `in_progress`.", ".")
|
|
42
48
|
.replace("; while work remains, exactly one active task should be `in_progress`.", ".")
|
|
43
49
|
.replace("Mark a todo `completed` the moment it is done (do not batch completions), and allow no `in_progress` item only once all work is complete.", "Update the list on meaningful progress or handoff; completed items may be reported together. Status must reflect actual work, including when nothing is actively running."),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-policy.mjs","sourceRoot":"","sources":["../src/work-policy.mts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,oNAAoN,CAAC;AACxO,MAAM,WAAW,GAAG,0KAA0K,CAAC;AAC/L,MAAM,WAAW,GAAG,+QAA+Q,CAAC;AAEpS;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAwB;IACtD,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO;oBACvC,GAAG,OAAO;oBACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"work-policy.mjs","sourceRoot":"","sources":["../src/work-policy.mts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,oNAAoN,CAAC;AACxO,MAAM,cAAc,GAAG,gFAAgF,CAAC;AACxG,MAAM,WAAW,GAAG,0KAA0K,CAAC;AAC/L,MAAM,WAAW,GAAG,+QAA+Q,CAAC;AAEpS;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAwB;IACtD,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO;oBACvC,GAAG,OAAO;oBACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,WAAW,EAC1G,gMAAgM,CAAC;iBACpM,CAAC;YACF,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY;gBAAE,OAAO;oBACxC,GAAG,OAAO;oBACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CACxB,wIAAwI,EACxI,+FAA+F,CAAC;iBACnG,CAAC;YACF,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QACF,oEAAoE;QACpE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACjE,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;gBAAE,OAAO;oBACtC,GAAG,IAAI;oBACP,WAAW,EAAE,wQAAwQ;iBACtR,CAAC;YACF,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACtD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;gBAAE,OAAO;oBAChC,GAAG,IAAI;oBACP,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,iEAAiE,EAAE,EAAE,CAAC;iBAC7G,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY;gBAAE,OAAO;oBACrC,GAAG,IAAI;oBACP,WAAW,EAAE,IAAI,CAAC,WAAW;yBAC1B,OAAO,CAAC,mKAAmK,EAC1K,mLAAmL,CAAC;yBACrL,OAAO,CAAC,6GAA6G,EACpH,2EAA2E,CAAC;yBAC7E,OAAO,CAAC,2DAA2D,EAAE,iDAAiD,CAAC;yBACvH,OAAO,CAAC,mDAAmD,EAC1D,2KAA2K,CAAC;yBAC7K,OAAO,CAAC,qGAAqG,EAC5G,oHAAoH,CAAC;yBACtH,OAAO,CAAC,kEAAkE,EAAE,GAAG,CAAC;yBAChF,OAAO,CAAC,wEAAwE,EAAE,GAAG,CAAC;yBACtF,OAAO,CAAC,2IAA2I,EAClJ,2KAA2K,CAAC;iBACjL,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -10,7 +10,7 @@ description: Odai 的可选多能力编排。用户要求分工、独立规划
|
|
|
10
10
|
## 使用
|
|
11
11
|
|
|
12
12
|
- 启用编排不等于每个任务都派角色。当前能力足够时直接完成;只有独立判断、专业能力、访问差异或真正并行能改善结果时才分工。
|
|
13
|
-
- 选择职责和准备交接时读取 `references/orchestration.md`。controller 持有整体结果,researcher、planner、reviewer、frontend 是可选职责预设,不是固定阶段、模型等级或权限来源。
|
|
13
|
+
- 选择职责和准备交接时读取 `references/orchestration.md`。controller 持有整体结果,researcher、planner、reviewer、frontend、creative 是可选职责预设,不是固定阶段、模型等级或权限来源。
|
|
14
14
|
- 宿主已有符合要求的原生能力时使用它;配套适配器只补模型映射、生成、安装和调用核验。按当前用户映射与真实工具权限执行。
|
|
15
15
|
- 治理、编排与宿主权限分别有效。DSH 已内置本技能时使用其现有能力;不额外运行其他宿主安装器。
|
|
16
16
|
- 用户要求为 Codex、Claude Code 或 Copilot 安装、更新、卸载或修复路由时读取 `references/install.md`;普通任务不需要它。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
你是当前编排的总控,持有完整目标、授权、全局状态、实施整合、修正回路与最终交付;需求覆盖和最终验收责任不能随委派转移。
|
|
2
2
|
|
|
3
|
-
当前能力足够就直接完成。可选职责:__ODAI_RESEARCHER_ROLE__、__ODAI_PLANNER_ROLE__、__ODAI_REVIEWER_ROLE__、__ODAI_FRONTEND_ROLE__。按随合同提供的 orchestration reference 选择职责、核实权限并准备有界交接;任务复杂、高风险或角色已配置不自动触发。
|
|
3
|
+
当前能力足够就直接完成。可选职责:__ODAI_RESEARCHER_ROLE__、__ODAI_PLANNER_ROLE__、__ODAI_REVIEWER_ROLE__、__ODAI_FRONTEND_ROLE__、__ODAI_CREATIVE_ROLE__。按随合同提供的 orchestration reference 选择职责、核实权限并准备有界交接;任务复杂、高风险或角色已配置不自动触发。
|
|
4
4
|
|
|
5
5
|
回交只证明其实际覆盖。局部判断和审查不要求重建全任务合同,若干局部通过也不能替代组合结果;核实 finding 对既有要求与安全边界的影响,既不让它产生新目标或写域,也不忽略真实失败。实施偏差组织修正;路线失效只重判受影响决定;缺用户取舍或外部条件只阻断依赖项。
|
|
6
6
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
## 创意专业责任
|
|
2
|
+
|
|
3
|
+
只承接已经明确的创意判断或创意制作缺口,不限领域:需要发散的构思(点子、概念、命名与创意方向),面向用户或读者的写作与表达(介绍与宣传、产品与界面文字、叙事与内容创作、语气与文风),视觉与表现方向,以及这类内容的品味与体验把关。不是第二个总控;业务目标、产品范围、价值取舍、授权或验收未定时,回交准确的决定缺口,不自行补定。
|
|
4
|
+
|
|
5
|
+
先读清受众、语境、项目已有设定与风格约定、禁用项和既有决定,再出方案;写作与设计方法遵循随合同提供的 治理 craft reference。发散时候选要实质有别,不只是换种说法,各写明意图、取舍和适用条件;需要定案时给出推荐及依据,不以数量或形容词代替判断。体验判断只基于给定材料,说明哪些结论需要实际使用或用户反馈才能确认。
|
|
6
|
+
|
|
7
|
+
把关时逐条给出位置、问题、对受众的影响和可直接替换的写法,区分事实或设定错误、违背既有约定与个人偏好。套话、空泛修饰、模板句式、不像真人会说的话、前后语气不一致与设定冲突都在检查范围内;偏好不作为阻断条件。
|
|
8
|
+
|
|
9
|
+
只读:交回构思、文字、候选或审查意见,不编辑文件,不把建议写成已采纳或已落盘;需要改动时给出原文与替换文本,由总控核对后落盘。不扩大到相邻内容的重写,顺带发现的问题单列为建议。模型、预算及执行权限由宿主选择,不写入本通用责任合同。回交实际产物、决定性取舍、依据、未决项和需要用户判断之处。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"name": "odai-orchestration",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.1",
|
|
5
5
|
"governanceContract": 9,
|
|
6
6
|
"delegationFile": "contracts/delegation.md",
|
|
7
7
|
"roleFiles": {
|
|
@@ -9,14 +9,16 @@
|
|
|
9
9
|
"researcher": "assets/routing-roles/researcher.md",
|
|
10
10
|
"planner": "assets/routing-roles/planner.md",
|
|
11
11
|
"reviewer": "assets/routing-roles/reviewer.md",
|
|
12
|
-
"frontend": "assets/routing-roles/frontend.md"
|
|
12
|
+
"frontend": "assets/routing-roles/frontend.md",
|
|
13
|
+
"creative": "assets/routing-roles/creative.md"
|
|
13
14
|
},
|
|
14
15
|
"rolePresets": {
|
|
15
16
|
"controller": { "references": ["orchestration"] },
|
|
16
17
|
"researcher": { "references": [] },
|
|
17
18
|
"planner": { "references": ["planning"] },
|
|
18
19
|
"reviewer": { "references": ["verification"] },
|
|
19
|
-
"frontend": { "references": ["craft"] }
|
|
20
|
+
"frontend": { "references": ["craft"] },
|
|
21
|
+
"creative": { "references": ["craft"] }
|
|
20
22
|
},
|
|
21
23
|
"referenceFiles": { "orchestration": "references/orchestration.md" },
|
|
22
24
|
"requiredFiles": [
|
|
@@ -28,6 +30,7 @@
|
|
|
28
30
|
"assets/routing-roles/planner.md",
|
|
29
31
|
"assets/routing-roles/reviewer.md",
|
|
30
32
|
"assets/routing-roles/frontend.md",
|
|
33
|
+
"assets/routing-roles/creative.md",
|
|
31
34
|
"assets/codex-agents/config.toml",
|
|
32
35
|
"assets/codex-agents/role.toml",
|
|
33
36
|
"assets/claude-agents/agent.md",
|
|
@@ -39,6 +42,8 @@
|
|
|
39
42
|
"scripts/run-role.mjs",
|
|
40
43
|
"scripts/verify-routing.mjs",
|
|
41
44
|
"scripts/compose-contracts.mjs",
|
|
42
|
-
"scripts/compose-contracts.d.mts"
|
|
45
|
+
"scripts/compose-contracts.d.mts",
|
|
46
|
+
"scripts/local-cli.mjs",
|
|
47
|
+
"scripts/local-cli.d.mts"
|
|
43
48
|
]
|
|
44
49
|
}
|
|
@@ -2,9 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
用户要求为 Codex、Claude Code 或 Copilot 安装、更新、卸载或修复职责路由时读取。安装本技能和 `odai` 只使规则与脚本可发现,不自动修改宿主配置;DSH 已内置编排时使用其现有能力,不运行这里的安装器。
|
|
4
4
|
|
|
5
|
-
1. 从宿主确认实际模型、能力与作用域。controller、planner、reviewer 显式映射,researcher 和
|
|
5
|
+
1. 从宿主确认实际模型、能力与作用域。controller、planner、reviewer 显式映射,researcher、frontend 和 creative 按需选择,默认不生成,也不从其他职责继承映射;creative 只读,交回内容由总控核对后落盘;从真实模型目录核对,不虚构模型 ID。默认当前项目,跨项目作用域须明确授权。
|
|
6
6
|
2. 先用 `scripts/build-routing.mjs --help` 查看生成接口;治理安装位置不相邻时显式传入 `--governance-root`。
|
|
7
7
|
3. 需要持久安装、更新或卸载时使用 `scripts/install-routing.mjs --help` 对应入口,说明映射、写入范围与新会话生效条件。已有授权覆盖本次动作时直接执行;否则完成准备后取得授权。
|
|
8
8
|
4. 按安装结果在新会话核对真实角色和模型的实际调用。生成文件和配置成功只证明文件生成,不证明路由已调用。托管清单负责更新、漂移检查、卸载与恢复,遇到外部修改不覆盖。
|
|
9
9
|
|
|
10
|
+
## Claude Code 总控调用本机 CLI
|
|
11
|
+
|
|
12
|
+
`build-routing.mjs` 与 `install-routing.mjs` 在 `--host claude` 下接受非 controller 职责的 `--<role>-cli <codex|antigravity|grok>`,必须同时显式提供该职责的 `--<role>-model`;`--<role>-effort` 可选。未指定 CLI 的职责仍使用 Claude Code 原生子代理,controller 始终保持原生。其他宿主不接受这些 CLI 选项,`claude` 不作为本机目标重复配置。
|
|
13
|
+
|
|
14
|
+
例如,先在临时输出目录生成 Claude Code 总控与 planner、由 Codex 承担 reviewer 的配置(模型名替换为已确认可用的 ID):
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
node skills/odai-orchestration/scripts/build-routing.mjs \
|
|
18
|
+
--host claude --out <临时输出目录> \
|
|
19
|
+
--controller-model <Claude模型> --planner-model <Claude模型> \
|
|
20
|
+
--reviewer-cli codex --reviewer-model <Codex模型> --reviewer-effort high
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
取得目标项目安装授权后,用相同的模型与 CLI 参数调用 `install-routing.mjs --host claude --scope project --target <项目目录> … --yes`。已有安装通过安装器更新;生成器遇到旧输出中相反后端的文件会拒绝并要求新的 `--out` 目录,避免留下同名原生代理。用户级安装使用 `--scope user --target <配置目录>`,其调用说明与权限指向配置目录内执行器的绝对路径。
|
|
24
|
+
|
|
25
|
+
本机职责不生成同名原生代理;安装器管理 `.claude/odai-run-role.mjs`、`.claude/odai-local-cli.mjs`、角色合同与路由清单,并向宿主设置的 `permissions.allow` 合并执行器 Bash 权限。既有权限与其他设置保留;更新、漂移检查和卸载覆盖新文件,卸载仅撤回安装器新增的权限。存在非托管的同名原生代理时拒绝安装,不覆盖它。
|
|
26
|
+
|
|
27
|
+
总控把有界任务包写入文件,再按生成的 controller 说明调用,例如:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
node .claude/odai-run-role.mjs --role reviewer --input <任务包文件> \
|
|
31
|
+
--evidence <证据文件> --output <正文文件>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
执行器把角色合同和任务包交给目标 CLI,所有职责均只读;制作任务只能交回未应用补丁,由总控核对落盘。需要先安装并登录目标 CLI;子进程继承 Claude Code 的环境变量,需要代理时应在启动 Claude Code 的环境中配置 `HTTPS_PROXY` 等变量。可执行文件分别由 `ODAI_CODEX_COMMAND`、`ODAI_AGY_COMMAND`、`ODAI_GROK_COMMAND` 覆盖。默认超时 1200 秒,`--timeout` 接受 1–7200 整数秒。
|
|
35
|
+
|
|
36
|
+
执行器输出 version 1 证据;省略 `--evidence` 时持久保存在执行器同目录 `role-evidence/`,路径写到 stderr。证据是运行产物,卸载保留。只有调用完成、正文非空且实际模型核实时才输出正文并退出 0;能取得推理档证据的 CLI 出现推理档不一致时同样失败。失败退出非 0,不输出正文、不覆盖已有正文文件。Codex 通过本次会话的模型与推理档取证;Antigravity 和 Grok 目前只能把推理档记为 `requested-only`,证据如实记录、不阻断回交,与 DSH 的规则一致。
|
|
37
|
+
|
|
38
|
+
Antigravity 使用计划模式并禁用斜杠命令展开,制作请求可能返回实施计划;其浏览器、联网和生成工具是否全部受只读限制尚未逐项实测。Grok 适配继续标注**按官方文档及既有评测证据实现,当前适配未实测**:优先取 JSON `modelUsage`,缺失时回退会话 summary;格式不符或证据缺失就失败。各 CLI 自身的会话或计划目录可能产生运行记录,只读边界针对被委托项目。
|
|
39
|
+
|
|
10
40
|
安装只启用按缺口选择的分工,不注入每轮必走流程。没有宿主适配或无法取得所需能力时,治理仍独立工作:继续安全可完成的部分,准确交付剩余缺口;不要把技能已安装、角色已配置或一次自报当成调用和收益证明。
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
- **planner**:关键前提、路线或验收仍有实质分支,且独立上下文能补当前判断时使用。局部决定只回交该决定;明确委托正式计划才覆盖该计划范围,不预做实施。接回后依原有效授权继续,不额外等待“继续”。
|
|
11
11
|
- **reviewer**:独立判断能改变尚未放行的具体属性,或用户明确要求独立复核时使用。点名属性与必要依赖,完整需求覆盖须明确委托;不自设验收或扩围,不重跑仍有效的成功检查。按绑定本次范围与版本的可追溯原件判断,读取方式遵循宿主权限和本次授权,缺失原件保留未判定。
|
|
12
12
|
- **frontend**:界面设计或前端制作存在当前能力不能可靠闭合的专业缺口时使用。局部样式与文案通常直接完成;目标或范围未定先回交决定缺口。宿主可在当前线程或独立上下文取得该能力,权限分别核实。
|
|
13
|
+
- **creative**:发散构思、面向用户或读者的写作与表达、视觉与表现方向或品味把关存在当前能力不能可靠闭合的专业缺口时使用,不限领域。普通措辞调整、已定稿内容的机械替换和局部文字修正直接完成;目标、受众或风格约定未定先回交决定缺口。只读,回交构思、候选、取舍依据或审查意见,由总控核对后落盘。
|
|
13
14
|
|
|
14
15
|
这些是预设而非能力上限。其他工具、技能或原生子代理可承接有界工作,但不得靠改名绕过只读、授权或证据边界。实际模型、权限、上下文与独立性分别核实;共用原件的独立推理可以提供复核,同源转述不增加原始证据。
|
|
15
16
|
|
|
@@ -6,6 +6,7 @@ import process from "node:process";
|
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
7
|
import { composeRoleContract, validateCompositionManifest, stripEntryMetadata } from "./compose-contracts.mjs";
|
|
8
8
|
import { createHash } from "node:crypto";
|
|
9
|
+
import { validateLocalCliRoute } from "./local-cli.mjs";
|
|
9
10
|
|
|
10
11
|
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
11
12
|
const skillRoot = path.resolve(scriptDir, "..");
|
|
@@ -42,11 +43,12 @@ function printHelp() {
|
|
|
42
43
|
console.log(`Usage:
|
|
43
44
|
node skills/odai-orchestration/scripts/build-routing.mjs --host <codex|claude|copilot> --out <directory> [--governance-root <path>] \\
|
|
44
45
|
--controller-model <model> --planner-model <model> --reviewer-model <model> \\
|
|
45
|
-
[--researcher-model <model>] [--frontend-model <model>] [--controller-effort <effort>] \\
|
|
46
|
+
[--researcher-model <model>] [--frontend-model <model>] [--creative-model <model>] [--controller-effort <effort>] \\
|
|
46
47
|
[--researcher-effort <effort>] [--planner-effort <effort>] [--reviewer-effort <effort>] \\
|
|
47
|
-
[--frontend-effort <effort>] [--verifier-command <command>]
|
|
48
|
+
[--frontend-effort <effort>] [--creative-effort <effort>] [--verifier-command <command>]
|
|
49
|
+
Claude Code only: [--<role>-cli <codex|antigravity|grok>] (non-controller roles)
|
|
48
50
|
|
|
49
|
-
生成 odai 的可选宿主 auto
|
|
51
|
+
生成 odai 的可选宿主 auto 路由适配器。一个持续总控负责实施整合与最终交付,只在证据压缩、独立规划、独立验收、前端专业制作或创意专业判断能改变结果时调用相应责任;researcher、frontend 与 creative 映射默认不生成。Claude Code 可把非 controller 职责显式映射到只读本机 CLI;不增加第二总控或隐藏的每轮前置流程。`);
|
|
50
52
|
process.exit(0);
|
|
51
53
|
}
|
|
52
54
|
|
|
@@ -59,6 +61,7 @@ const models = {
|
|
|
59
61
|
planner: option("--planner-model"),
|
|
60
62
|
reviewer: option("--reviewer-model"),
|
|
61
63
|
frontend: option("--frontend-model"),
|
|
64
|
+
creative: option("--creative-model"),
|
|
62
65
|
};
|
|
63
66
|
const efforts = {
|
|
64
67
|
controller: option("--controller-effort"),
|
|
@@ -66,13 +69,29 @@ const efforts = {
|
|
|
66
69
|
planner: option("--planner-effort"),
|
|
67
70
|
reviewer: option("--reviewer-effort"),
|
|
68
71
|
frontend: option("--frontend-effort"),
|
|
72
|
+
creative: option("--creative-effort"),
|
|
69
73
|
};
|
|
74
|
+
const localRoutes = {};
|
|
75
|
+
for (const role of ["researcher", "planner", "reviewer", "frontend", "creative"]) {
|
|
76
|
+
const cli = option(`--${role}-cli`);
|
|
77
|
+
if (!cli) continue;
|
|
78
|
+
if (host !== "claude") throw new Error(`--${role}-cli is only supported with --host claude`);
|
|
79
|
+
if (!["codex", "antigravity", "grok"].includes(cli)) throw new Error(`--${role}-cli must be codex, antigravity, or grok`);
|
|
80
|
+
localRoutes[role] = validateLocalCliRoute({ backend: "local-cli", cli, model: models[role],
|
|
81
|
+
...(efforts[role] ? { reasoningEffort: efforts[role] } : {}) });
|
|
82
|
+
}
|
|
83
|
+
const hasLocalRoutes = Object.keys(localRoutes).length > 0;
|
|
84
|
+
const roleMapping = (role) => ({
|
|
85
|
+
...(localRoutes[role] ? { backend: "local-cli", cli: localRoutes[role].cli } : { provider: host }),
|
|
86
|
+
model: models[role], reasoning_effort: efforts[role] || null,
|
|
87
|
+
});
|
|
70
88
|
const verifierCommand = option("--verifier-command") || "node .codex/odai-verify-routing.mjs";
|
|
71
89
|
const requiredRoles = ["controller", "planner", "reviewer"];
|
|
72
90
|
const roles = Object.freeze([
|
|
73
91
|
...requiredRoles,
|
|
74
92
|
...(models.researcher ? ["researcher"] : []),
|
|
75
93
|
...(models.frontend ? ["frontend"] : []),
|
|
94
|
+
...(models.creative ? ["creative"] : []),
|
|
76
95
|
]);
|
|
77
96
|
const descriptions = {
|
|
78
97
|
controller: "持续持有用户目标、全局状态、修正回路与最终交付。",
|
|
@@ -80,6 +99,7 @@ const descriptions = {
|
|
|
80
99
|
planner: "只在独立判断能改变路线时形成有界的证据化规划。",
|
|
81
100
|
reviewer: "只在独立判断能改变放行结果时依据真实证据验收。",
|
|
82
101
|
frontend: "只在界面设计或前端制作存在专业缺口时形成可验证成品。",
|
|
102
|
+
creative: "只在发散构思、面向用户的写作与表达或品味把关存在专业缺口时提供构思、候选、取舍或把关意见。",
|
|
83
103
|
};
|
|
84
104
|
|
|
85
105
|
if (!new Set(["codex", "claude", "copilot"]).has(host)) throw new Error(`Unsupported routing host: ${host || "(missing)"}`);
|
|
@@ -87,6 +107,7 @@ if (!out) throw new Error("--out requires a directory");
|
|
|
87
107
|
for (const role of requiredRoles) if (!models[role]) throw new Error(`--${role}-model is required`);
|
|
88
108
|
if (efforts.researcher && !models.researcher) throw new Error("--researcher-effort requires --researcher-model");
|
|
89
109
|
if (efforts.frontend && !models.frontend) throw new Error("--frontend-effort requires --frontend-model");
|
|
110
|
+
if (efforts.creative && !models.creative) throw new Error("--creative-effort requires --creative-model");
|
|
90
111
|
if (host === "copilot" && Object.values(efforts).some(Boolean)) {
|
|
91
112
|
throw new Error("Copilot custom-agent profiles do not provide a portable reasoning-effort field");
|
|
92
113
|
}
|
|
@@ -105,11 +126,7 @@ const metadata = {
|
|
|
105
126
|
governance: { version: governanceManifest.skillVersion, digest: core.digest },
|
|
106
127
|
orchestration: { version: manifest.version, digest: extension.digest },
|
|
107
128
|
mode: "single-controller-conditional-routing",
|
|
108
|
-
mapping: Object.fromEntries(roles.map((role) => [role,
|
|
109
|
-
provider: host,
|
|
110
|
-
model: models[role],
|
|
111
|
-
reasoning_effort: efforts[role] || null,
|
|
112
|
-
}])),
|
|
129
|
+
mapping: Object.fromEntries(roles.map((role) => [role, roleMapping(role)])),
|
|
113
130
|
routing_policy: {
|
|
114
131
|
mode: policy,
|
|
115
132
|
controller_identity: "persistent-task-thread",
|
|
@@ -122,12 +139,20 @@ const metadata = {
|
|
|
122
139
|
frontend_activation: models.frontend
|
|
123
140
|
? "only-when-interface-design-or-production-needs-specialist-capability"
|
|
124
141
|
: "unconfigured",
|
|
142
|
+
creative_activation: models.creative
|
|
143
|
+
? "only-when-player-or-user-facing-content-needs-specialist-creative-judgment"
|
|
144
|
+
: "unconfigured",
|
|
125
145
|
controller_owns_implementation: true,
|
|
126
146
|
sufficient_controller_defaults_to_single_pass: true,
|
|
127
147
|
},
|
|
128
148
|
runtime_verification: host === "codex"
|
|
129
149
|
? { mode: "post-run-executable", command: verifierCommand }
|
|
130
|
-
:
|
|
150
|
+
: hasLocalRoutes ? {
|
|
151
|
+
mode: "per-role-evidence-required",
|
|
152
|
+
roles: Object.fromEntries(roles.map(role => [role, localRoutes[role]
|
|
153
|
+
? { mode: "role-executor-evidence", command: `node .claude/odai-run-role.mjs --role ${role} --input <file>` }
|
|
154
|
+
: { mode: "host-native-evidence-required", command: null }])),
|
|
155
|
+
} : { mode: "host-native-evidence-required", command: null },
|
|
131
156
|
activation: activation(host),
|
|
132
157
|
profiles: roles.map((role) => ({ name: `odai-${role}`, purpose: descriptions[role] })),
|
|
133
158
|
};
|
|
@@ -151,6 +176,7 @@ function buildCodex(root) {
|
|
|
151
176
|
writeRendered(path.join(sourceDir, "role.toml"), path.join(agentsRoot, `odai-${role}.toml`), {
|
|
152
177
|
__ODAI_ROLE_MODEL__: JSON.stringify(models[role]),
|
|
153
178
|
__ODAI_ROLE_EFFORT_LINE__: tomlEffortLine(efforts[role]),
|
|
179
|
+
__ODAI_ROLE_SANDBOX_LINE__: role === "creative" ? 'sandbox_mode = "read-only"' : "",
|
|
154
180
|
__ODAI_ROLE_BODY__: roleBody(role, "codex"),
|
|
155
181
|
});
|
|
156
182
|
}
|
|
@@ -162,19 +188,45 @@ function buildCodex(root) {
|
|
|
162
188
|
function buildClaude(root) {
|
|
163
189
|
const source = path.join(skillRoot, "assets", "claude-agents", "agent.md");
|
|
164
190
|
const agentsRoot = path.join(root, ".claude", "agents");
|
|
191
|
+
// Never leave a native proxy beside a local route, or reuse a stale local manifest.
|
|
192
|
+
// Build output has no installation ownership record: reject instead of deleting files.
|
|
193
|
+
for (const role of ["researcher", "planner", "reviewer", "frontend", "creative"]) {
|
|
194
|
+
const opposite = localRoutes[role] ? `agents/odai-${role}.md` : `role-contracts/odai-${role}.md`;
|
|
195
|
+
if (existsSync(path.join(root, ".claude", opposite))) throw new Error(`Conflicting previous routing output: ${opposite}; use a fresh --out directory`);
|
|
196
|
+
}
|
|
197
|
+
if (!hasLocalRoutes && ["odai-run-role.mjs", "odai-local-cli.mjs", "odai-routing.json"].some(file => existsSync(path.join(root, ".claude", file)))) {
|
|
198
|
+
throw new Error("Conflicting previous local CLI output; use a fresh --out directory");
|
|
199
|
+
}
|
|
165
200
|
mkdirSync(agentsRoot, { recursive: true });
|
|
166
201
|
for (const role of roles) {
|
|
202
|
+
if (localRoutes[role]) {
|
|
203
|
+
const contractsRoot = path.join(root, ".claude", "role-contracts");
|
|
204
|
+
mkdirSync(contractsRoot, { recursive: true });
|
|
205
|
+
writeFileSync(path.join(contractsRoot, `odai-${role}.md`), roleBody(role, "claude"), "utf8");
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
167
208
|
writeRendered(source, path.join(agentsRoot, `odai-${role}.md`), {
|
|
168
209
|
__ODAI_ROLE__: role,
|
|
169
210
|
__ODAI_ROLE_DESCRIPTION__: descriptions[role],
|
|
170
211
|
__ODAI_ROLE_MODEL__: models[role],
|
|
171
212
|
__ODAI_ROLE_EFFORT_LINE__: yamlEffortLine(efforts[role]),
|
|
172
|
-
__ODAI_PERMISSION_MODE__: ["researcher", "planner", "reviewer"].includes(role) ? "plan" : "default",
|
|
213
|
+
__ODAI_PERMISSION_MODE__: ["researcher", "planner", "reviewer", "creative"].includes(role) ? "plan" : "default",
|
|
173
214
|
__ODAI_TOOLS_LINE__: "",
|
|
174
215
|
__ODAI_ROLE_BODY__: roleBody(role, "claude"),
|
|
175
216
|
});
|
|
176
217
|
}
|
|
177
|
-
|
|
218
|
+
if (hasLocalRoutes) {
|
|
219
|
+
copyScript("run-role.mjs", path.join(root, ".claude", "odai-run-role.mjs"));
|
|
220
|
+
copyScript("local-cli.mjs", path.join(root, ".claude", "odai-local-cli.mjs"));
|
|
221
|
+
writeFileSync(path.join(root, ".claude", "odai-routing.json"), `${JSON.stringify({
|
|
222
|
+
id: "odai-routing-installation", host: "claude",
|
|
223
|
+
mapping: Object.fromEntries(Object.keys(localRoutes).map(role => [role, roleMapping(role)])),
|
|
224
|
+
}, null, 2)}\n`, "utf8");
|
|
225
|
+
}
|
|
226
|
+
writeFileSync(path.join(root, ".claude", "settings.patch.json"), `${JSON.stringify({
|
|
227
|
+
agent: "odai-controller",
|
|
228
|
+
...(hasLocalRoutes ? { permissions: { allow: ["Bash(node .claude/odai-run-role.mjs:*)"] } } : {}),
|
|
229
|
+
}, null, 2)}\n`, "utf8");
|
|
178
230
|
}
|
|
179
231
|
|
|
180
232
|
function buildCopilot(root) {
|
|
@@ -188,7 +240,7 @@ function buildCopilot(root) {
|
|
|
188
240
|
__ODAI_ROLE_MODEL__: models[role],
|
|
189
241
|
__ODAI_DISABLE_MODEL_INVOCATION__: role === "controller" ? "true" : "false",
|
|
190
242
|
__ODAI_USER_INVOCABLE__: role === "controller" ? "true" : "false",
|
|
191
|
-
__ODAI_TOOLS__:
|
|
243
|
+
__ODAI_TOOLS__: ["researcher", "creative"].includes(role)
|
|
192
244
|
? '["view", "glob", "grep"]'
|
|
193
245
|
: ["planner", "reviewer"].includes(role) ? '["view", "glob", "grep", "shell"]' : '["*"]',
|
|
194
246
|
__ODAI_ROLE_BODY__: roleBody(role, "copilot"),
|
|
@@ -205,17 +257,25 @@ function roleBody(role, hostName) {
|
|
|
205
257
|
const source = path.join(skillRoot, manifest.roleFiles[role]);
|
|
206
258
|
if (!existsSync(source)) throw new Error(`Missing canonical routing role body: ${source}`);
|
|
207
259
|
const names = hostName === "codex"
|
|
208
|
-
? { researcher: "odai_researcher", planner: "odai_planner", reviewer: "odai_reviewer", frontend: "odai_frontend" }
|
|
209
|
-
: { researcher: "odai-researcher", planner: "odai-planner", reviewer: "odai-reviewer", frontend: "odai-frontend" };
|
|
260
|
+
? { researcher: "odai_researcher", planner: "odai_planner", reviewer: "odai_reviewer", frontend: "odai_frontend", creative: "odai_creative" }
|
|
261
|
+
: { researcher: "odai-researcher", planner: "odai-planner", reviewer: "odai-reviewer", frontend: "odai-frontend", creative: "odai-creative" };
|
|
262
|
+
if (hostName === "claude") {
|
|
263
|
+
for (const [localRole, route] of Object.entries(localRoutes)) {
|
|
264
|
+
names[localRole] += `(本机 ${route.cli},只读;把有界任务包写入文件后运行 node .claude/odai-run-role.mjs --role ${localRole} --input <文件>)`;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
210
267
|
const rendered = renderText(composeRoleContract(role, governance, manifest, contractContents), {
|
|
211
268
|
__ODAI_POLICY__: policy,
|
|
212
269
|
__ODAI_RESEARCHER_ROLE__: models.researcher ? names.researcher : "researcher(当前适配器未配置映射,不能调用)",
|
|
213
270
|
__ODAI_PLANNER_ROLE__: names.planner,
|
|
214
271
|
__ODAI_REVIEWER_ROLE__: names.reviewer,
|
|
215
272
|
__ODAI_FRONTEND_ROLE__: models.frontend ? names.frontend : "frontend(当前适配器未配置映射,不能调用)",
|
|
273
|
+
__ODAI_CREATIVE_ROLE__: models.creative ? names.creative : "creative(当前适配器未配置映射,不能调用)",
|
|
216
274
|
__ODAI_RUNTIME_VERIFICATION__: hostName === "codex"
|
|
217
275
|
? "实际路由必须用宿主返回的线程、角色、模型与用量证据核对,不从调用请求推断成功。"
|
|
218
|
-
:
|
|
276
|
+
: hasLocalRoutes
|
|
277
|
+
? "原生子代理用宿主运行证据核实角色与模型;本机 CLI 用角色执行器的 version 1 证据核实,证据路径见 stderr。执行器非 0 退出时不能接收正文为成功;显式请求的推理档也必须核实。"
|
|
278
|
+
: "只有宿主原生运行证据能识别实际角色与模型时,路由才算已核实。",
|
|
219
279
|
__ODAI_HOST_NOTE__: hostName === "copilot" ? "Copilot Auto 会覆盖角色模型选择;需要区分角色时不使用 Auto。" : "",
|
|
220
280
|
}, source);
|
|
221
281
|
return rendered;
|
|
@@ -252,8 +312,9 @@ function copyScript(name, targetFile) {
|
|
|
252
312
|
function assertKnownArgs() {
|
|
253
313
|
const known = new Set([
|
|
254
314
|
"--host", "--out", "--governance-root", "--controller-model", "--researcher-model", "--planner-model",
|
|
255
|
-
"--reviewer-model", "--frontend-model", "--controller-effort", "--researcher-effort",
|
|
256
|
-
"--planner-effort", "--reviewer-effort", "--frontend-effort", "--verifier-command",
|
|
315
|
+
"--reviewer-model", "--frontend-model", "--creative-model", "--controller-effort", "--researcher-effort",
|
|
316
|
+
"--planner-effort", "--reviewer-effort", "--frontend-effort", "--creative-effort", "--verifier-command",
|
|
317
|
+
"--researcher-cli", "--planner-cli", "--reviewer-cli", "--frontend-cli", "--creative-cli",
|
|
257
318
|
]);
|
|
258
319
|
for (let index = 0; index < argv.length; index += 2) {
|
|
259
320
|
const name = argv[index];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const RUNTIME_CONTRACT: 9;
|
|
2
2
|
export const MANIFEST_SCHEMA: 1;
|
|
3
3
|
export const ORCHESTRATION_URL: URL;
|
|
4
|
-
export const ROLE_NAMES: readonly ["controller", "researcher", "planner", "reviewer", "frontend"];
|
|
4
|
+
export const ROLE_NAMES: readonly ["controller", "researcher", "planner", "reviewer", "frontend", "creative"];
|
|
5
5
|
export const REFERENCE_NAMES: readonly ["dao", "planning", "craft", "verification", "memory", "leverage", "care", "human-safety", "orchestration"];
|
|
6
6
|
export type RoleName = typeof ROLE_NAMES[number];
|
|
7
7
|
export type ReferenceName = typeof REFERENCE_NAMES[number];
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
export const RUNTIME_CONTRACT = 9;
|
|
3
3
|
export const MANIFEST_SCHEMA = 1;
|
|
4
4
|
export const ORCHESTRATION_URL = new URL("../", import.meta.url);
|
|
5
|
-
export const ROLE_NAMES = Object.freeze(["controller", "researcher", "planner", "reviewer", "frontend"]);
|
|
5
|
+
export const ROLE_NAMES = Object.freeze(["controller", "researcher", "planner", "reviewer", "frontend", "creative"]);
|
|
6
6
|
export const REFERENCE_NAMES = Object.freeze(["dao", "planning", "craft", "verification", "memory", "leverage", "care", "human-safety", "orchestration"]);
|
|
7
|
-
const REQUIRED_REFERENCES = { controller: ["orchestration"], researcher: [], planner: ["planning"], reviewer: ["verification"], frontend: ["craft"] };
|
|
7
|
+
const REQUIRED_REFERENCES = { controller: ["orchestration"], researcher: [], planner: ["planning"], reviewer: ["verification"], frontend: ["craft"], creative: ["craft"] };
|
|
8
8
|
function object(value, label) {
|
|
9
9
|
if (!value || typeof value !== "object" || Array.isArray(value)) throw new TypeError(`${label} must be an object`);
|
|
10
10
|
return value;
|