odai-dsh-agent 0.1.0 → 0.1.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "odai-dsh-agent",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "完整继承 DSH 标准模式 全部能力的 Odai Agent preset。主要用于治理、规划、测试、验证 等,可当成默认总控使用。",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -3,6 +3,7 @@ import { randomUUID } from "node:crypto";
3
3
  export const ROUTE_CARD_PROMPT = [
4
4
  "## Odai frozen route cards",
5
5
  "Use odai_route_card only after planning has frozen a concrete implementation boundary and executor separation has an observable net benefit.",
6
+ "After the canonical executor reassessment proves observable net benefit, freeze the card before implementation continues. Otherwise continue directly without a card or process narration.",
6
7
  "A card must preserve the target, decisive evidence, allowed and forbidden scope, acceptance conditions, and stop condition. Do not freeze a card merely because an executor model is configured or cheaper.",
7
8
  "The controller owns the card. Child agents may not create, replace, or clear it. A frozen card is consumed only by a later explicit execution continuation such as continue, proceed, execute, or implement the plan.",
8
9
  ].join("\n");
@@ -75,9 +75,21 @@ const LOW_RISK_TRANSFORM_PATTERNS = [
75
75
  /\b(?:restate|summari[sz]e|translate|shorten|rewrite|format|explain)\b/iu,
76
76
  ];
77
77
 
78
- const EXECUTION_CONTINUATION_PATTERNS = [
79
- /(?:继续|开始|执行|实施|落实|动手|按(?:照)?(?:方案|计划|卡片)|就按)/iu,
80
- /\b(?:continue|proceed|execute|implement|apply|go ahead|follow the plan)\b/iu,
78
+ const EXPLICIT_EXECUTION_CONTINUATION_PATTERNS = [
79
+ /(?:继续|接着|就按|按(?:照)?(?:(?:这个|该|上述|上面|前面|刚才)的?)?(?:方案|计划|卡片))/iu,
80
+ /\b(?:continue|proceed|go ahead|follow the plan)\b/iu,
81
+ ];
82
+ const EXECUTION_ACTION_PATTERNS = [
83
+ /(?:开始|执行|实施|落实|动手)/iu,
84
+ /\b(?:start|execute|implement|apply)\b/iu,
85
+ ];
86
+ const ROUTE_CARD_REFERENCE_PATTERNS = [
87
+ /(?:(?:这个|该|上述|上面|前面|刚才)的?(?:方案|计划|卡片|实现|改动|工作))/iu,
88
+ /\b(?:(?:this|that|the|above|previous)\s+(?:plan|proposal|route card|implementation|change)|(?:it|that))\b/iu,
89
+ ];
90
+ const NEW_TASK_PATTERNS = [
91
+ /(?:另一个|另一项|另一件|另外(?:一个|一项|一件)|新(?:的)?(?:问题|任务|需求|工作))/iu,
92
+ /\b(?:another|(?:a )?new|different|separate)\s+(?:task|issue|problem|request|change|project)\b/iu,
81
93
  ];
82
94
 
83
95
  const FRONTEND_SCOPE_PATTERNS = [
@@ -131,6 +143,13 @@ function stripQuotedMaterial(text) {
131
143
  .replace(/“[^”\n]*”|‘[^’\n]*’|「[^」\n]*」|『[^』\n]*』|《[^》\n]*》|"[^"\n]*"/gu, " ");
132
144
  }
133
145
 
146
+ function isExecutionContinuation(text) {
147
+ if (matchesAny(text, NEW_TASK_PATTERNS)) return false;
148
+ if (matchesAny(text, EXPLICIT_EXECUTION_CONTINUATION_PATTERNS)) return true;
149
+ return matchesAny(text, EXECUTION_ACTION_PATTERNS)
150
+ && matchesAny(text, ROUTE_CARD_REFERENCE_PATTERNS);
151
+ }
152
+
134
153
  function hasContextualPlannerGap(text) {
135
154
  return matchesAny(text, RISK_PATTERNS)
136
155
  && matchesAny(text, UNVERIFIED_CAUSAL_PATTERNS)
@@ -273,7 +292,7 @@ export function decideRoute(input = {}) {
273
292
 
274
293
  if (input.routeCard?.frozen === true
275
294
  && input.routeCard?.observableBenefit === true
276
- && matchesAny(explicitIntentText, EXECUTION_CONTINUATION_PATTERNS)) {
295
+ && isExecutionContinuation(explicitIntentText)) {
277
296
  signals.push("route-card-frozen", "observable-net-benefit", "explicit-execution-continuation");
278
297
  return route(
279
298
  "controller",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "name": "odai",
4
- "skillVersion": "0.2.0",
4
+ "skillVersion": "0.2.1",
5
5
  "runtimeContract": 3,
6
6
  "requiredFiles": [
7
7
  "SKILL.md",
@@ -9,7 +9,7 @@
9
9
  - **researcher** 只补多源事实获取与原始上下文压缩缺口。只有一个会改变后续决定的具体问题需要多份权威来源或较大材料,且有界来源账本能直接补足该决定缺口时才使用。它只读返回事实、精确来源、权威与时效、冲突、未知和停止依据,不选方案、冻结计划、实施或放行。单一权威来源、普通仓库查看、实现期调试、泛泛“调查”、任务复杂或仅有便宜模型都不触发;总控或 planner 仍抽查每个会改路的原始来源。
10
10
  - researcher 运行时只判任务适配,不感知模型价格;映射只是用户显式启用窄触发,不证明或保证降本,缺可比权威价格与实测 usage 时不得作节省承诺。
11
11
  - **planner** 只补独立判断缺口。当用户前提、根因、路线或验收设计仍有会改变结果的分支,且新上下文能增加当前线程拿不到的判断时才调用。planner 只冻结目标、证据、边界、决定、验收与停止条件,不预做实施。
12
- - **executor** 只在决定已冻结、实施有界且可独立验证,并且分离能带来可观察净收益时使用。它只接收冻结方案与证据指针,不重新解释请求、改路、扩围或批准交付。模型更便宜、角色已配置或任务看起来复杂,都不单独构成交接收益。
12
+ - **executor** 只在决定已冻结、实施有界且可独立验证,并且分离能带来可观察净收益时使用。它只接收冻结方案与证据指针,不重新解释请求、改路、扩围或批准交付。模型更便宜、角色已配置或任务看起来复杂,都不单独构成交接收益。一旦任务从未决判断转为边界冻结的实施合同,或实施范围发生实质变化,先前的 direct 判断即失效;总控须在下一次实质写入前重新评估一次 executor 分离收益,不因执行惯性继续 direct,也不因规模本身委派。
13
13
  - **reviewer** 只在独立判断能改变尚未放行的具体属性时使用。宿主把用户请求、规划、执行回交、实际 diff 与决定性工具结果各保留一份组成不可变证据包;reviewer 不扫描仓库或重复成功检查。实施偏差回 executor,路线失效回总控或 planner,缺用户决定或外部条件则停在安全边界。
14
14
  - **frontend** 只补界面设计或前端制作的专业能力缺口,不是领域资料包,也不构成按数据库、安全等领域名称追加平行责任的先例。只有当前总控不能可靠闭合且专长能改变成品质量时才使用;局部样式、文案和窄修复直接完成。宿主可在当前线程取得该责任,也可启动有界独立上下文;责任合同不绑定模型、预算或调度形态。目标、范围或验收未冻结时回 planner 或总控,冻结后的具体制作与界面验证遵循 `references/craft.md`,不在本文件复制工艺。
15
15
  - agent 启动默认选择新鲜独立上下文,只交付按缺口裁剪的有界任务包,不得复制完整总控会话。任务包保留当前目标与约束、责任合同、必要原文、commit / diff / 文件指针、决定性工具结果和未决问题,省略长聊天、重复工具输出与过程叙述。