@hawk2048/oh-my-dsh 0.2.1 → 0.3.3

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.
Files changed (49) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/LICENSE +21 -21
  3. package/README.md +246 -235
  4. package/README.zh.md +246 -235
  5. package/agent.cordis.yml +288 -0
  6. package/commands/omd-commands.mjs +150 -141
  7. package/cordis.patch.yml +20 -20
  8. package/index.js +8 -8
  9. package/install.ps1 +92 -0
  10. package/install.sh +81 -0
  11. package/package.json +46 -36
  12. package/preset.yml +2 -0
  13. package/skills/omd-ai-slop-cleaner/SKILL.md +43 -43
  14. package/skills/omd-autopilot/SKILL.md +51 -51
  15. package/skills/omd-autoresearch/CHANGELOG.md +46 -0
  16. package/skills/omd-autoresearch/SKILL.md +117 -24
  17. package/skills/omd-autoresearch/references/eval-prompt.md +79 -0
  18. package/skills/omd-autoresearch/references/report-rules.md +121 -0
  19. package/skills/omd-autoresearch/references/report-style.md +228 -0
  20. package/skills/omd-autoresearch/references/report_lint.py +466 -0
  21. package/skills/omd-autoresearch/references/rubric.md +89 -0
  22. package/skills/omd-autoresearch/references/skill-survey.md +158 -0
  23. package/skills/omd-cancel/SKILL.md +36 -36
  24. package/skills/omd-debug/SKILL.md +35 -35
  25. package/skills/omd-deep-analyze/SKILL.md +36 -36
  26. package/skills/omd-deep-interview/SKILL.md +68 -68
  27. package/skills/omd-deepsearch/SKILL.md +36 -36
  28. package/skills/omd-doctor/SKILL.md +39 -39
  29. package/skills/omd-execute/SKILL.md +41 -41
  30. package/skills/omd-external-context/SKILL.md +36 -36
  31. package/skills/omd-help/SKILL.md +35 -35
  32. package/skills/omd-hud/SKILL.md +80 -79
  33. package/skills/omd-minimal-code-discipline/SKILL.md +36 -36
  34. package/skills/omd-plan/SKILL.md +51 -51
  35. package/skills/omd-pyramid/SKILL.md +121 -0
  36. package/skills/omd-ralph/SKILL.md +62 -62
  37. package/skills/omd-ralplan/SKILL.md +45 -45
  38. package/skills/omd-release/SKILL.md +36 -36
  39. package/skills/omd-remember/SKILL.md +35 -35
  40. package/skills/omd-research/SKILL.md +40 -38
  41. package/skills/omd-review/SKILL.md +47 -45
  42. package/skills/omd-skillify/SKILL.md +36 -36
  43. package/skills/omd-tdd/SKILL.md +37 -37
  44. package/skills/omd-team/SKILL.md +96 -96
  45. package/skills/omd-ultragoal/SKILL.md +46 -46
  46. package/skills/omd-ultrathink/SKILL.md +39 -39
  47. package/skills/omd-verify/SKILL.md +44 -44
  48. package/skills/omd-visual-verdict/SKILL.md +36 -36
  49. package/skills/omd-wiki/SKILL.md +36 -36
package/install.ps1 ADDED
@@ -0,0 +1,92 @@
1
+ # Install oh-my-dsh as an agent preset (per-session composition) under
2
+ # $DSH_HOME\.agent-presets\oh-my-dsh. Run from a checkout of this repository.
3
+ # This is the "manual preset" path; the primary install is `dsh plugin add`.
4
+ #
5
+ # NON-DESTRUCTIVE by design: the preset directory is never deleted. Your own
6
+ # additions survive an upgrade:
7
+ # - files this repo does not ship (e.g. a locally written skill) are left alone;
8
+ # - a shipped file that WOULD overwrite a locally modified copy is backed up
9
+ # first as <name>.bak-<timestamp>; only then is the shipped version copied.
10
+ # Re-running this script is therefore safe, and reversible.
11
+
12
+ $ErrorActionPreference = 'Stop'
13
+
14
+ $src = Split-Path -Parent $MyInvocation.MyCommand.Path
15
+ $dshHome = if ($env:DSH_HOME) { $env:DSH_HOME } else { Join-Path $HOME '.dsh' }
16
+ $dst = Join-Path $dshHome '.agent-presets\oh-my-dsh'
17
+ $stamp = Get-Date -Format 'yyyyMMdd-HHmmss'
18
+
19
+ New-Item -ItemType Directory -Force -Path $dst | Out-Null
20
+
21
+ # Every file this repo ships, relative to the checkout root.
22
+ $shipped = New-Object System.Collections.Generic.List[string]
23
+ $shipped.Add('agent.cordis.yml')
24
+ $shipped.Add('preset.yml')
25
+ foreach ($d in @('skills', 'commands')) {
26
+ $root = Join-Path $src $d
27
+ if (Test-Path $root) {
28
+ Get-ChildItem -Path $root -Recurse -File | ForEach-Object {
29
+ $shipped.Add($_.FullName.Substring($src.Length + 1))
30
+ }
31
+ }
32
+ }
33
+
34
+ function Backup-IfDiffers {
35
+ param([string]$Rel)
36
+ $destPath = Join-Path $dst $Rel
37
+ $srcPath = Join-Path $src $Rel
38
+ if (-not (Test-Path $destPath -PathType Leaf)) { return }
39
+ if (-not (Test-Path $srcPath -PathType Leaf)) { return }
40
+ $localHash = (Get-FileHash -Path $destPath -Algorithm SHA256).Hash
41
+ $shippedHash = (Get-FileHash -Path $srcPath -Algorithm SHA256).Hash
42
+ if ($localHash -ne $shippedHash) {
43
+ Copy-Item -Path $destPath -Destination "$destPath.bak-$stamp" -Force
44
+ Write-Host " backed up local $Rel -> $Rel.bak-$stamp"
45
+ }
46
+ }
47
+
48
+ foreach ($rel in $shipped) { Backup-IfDiffers -Rel $rel }
49
+
50
+ # Merge-copy: add/overwrite the files this repo ships and touch nothing else.
51
+ Copy-Item (Join-Path $src 'agent.cordis.yml') $dst -Force
52
+ Copy-Item (Join-Path $src 'preset.yml') $dst -Force
53
+
54
+ # Copy the CONTENTS of skills/ and commands/, never those directories themselves.
55
+ # `Copy-Item <src>\skills <dst>\skills -Recurse` into a directory that already
56
+ # exists copies the whole tree INSIDE it, producing <dst>\skills\skills and
57
+ # leaving the real skill files at their old version -- an upgrade that reports
58
+ # success while shipping nothing. Enumerate the children and copy those.
59
+ foreach ($d in @('skills', 'commands')) {
60
+ $srcDir = Join-Path $src $d
61
+ if (-not (Test-Path $srcDir -PathType Container)) { continue }
62
+ $dstDir = Join-Path $dst $d
63
+ New-Item -ItemType Directory -Force -Path $dstDir | Out-Null
64
+ $children = Get-ChildItem -Path $srcDir -Force
65
+ if ($children) {
66
+ Copy-Item -Path $children.FullName -Destination $dstDir -Recurse -Force
67
+ }
68
+ }
69
+
70
+ Write-Host "installed oh-my-dsh preset to $dst"
71
+
72
+ # Report -- never delete -- a duplicate tree that an older version of this script
73
+ # nested. Those files are not what the preset loads, so they are dead weight.
74
+ foreach ($d in @('skills', 'commands')) {
75
+ $nested = Join-Path $dst (Join-Path $d $d)
76
+ if (Test-Path $nested -PathType Container) {
77
+ Write-Host " WARNING duplicate tree from an older installer: $nested"
78
+ Write-Host " nothing loads it; delete it after you have checked it."
79
+ }
80
+ }
81
+
82
+ # Report what the upgrade left alone, so nothing local disappears silently.
83
+ $installed = Get-ChildItem -Path $dst -Recurse -File |
84
+ Where-Object { $_.Name -notmatch '\.bak-\d{8}-\d{6}$' } |
85
+ ForEach-Object { $_.FullName.Substring($dst.Length + 1) }
86
+ $preserved = $installed | Where-Object { -not $shipped.Contains($_) }
87
+ if ($preserved) {
88
+ Write-Host "preserved files that this repo does not ship (left untouched):"
89
+ $preserved | ForEach-Object { Write-Host " $_" }
90
+ }
91
+
92
+ Write-Host "start a new session and select 'oh-my-dsh' from the preset picker."
package/install.sh ADDED
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env sh
2
+ # Install oh-my-dsh as an agent preset (per-session composition) under
3
+ # $DSH_HOME/.agent-presets/oh-my-dsh. Run from a checkout of this repository.
4
+ # This is the "manual preset" path; the primary install is `dsh plugin add`.
5
+ #
6
+ # NON-DESTRUCTIVE by design: the preset directory is never deleted. Your own
7
+ # additions survive an upgrade:
8
+ # - files this repo does not ship (e.g. a locally written skill) are left alone;
9
+ # - a shipped file that WOULD overwrite a locally modified copy is backed up
10
+ # first as <name>.bak-<timestamp>; only then is the shipped version copied.
11
+ # Re-running this script is therefore safe, and reversible.
12
+
13
+ set -eu
14
+
15
+ SRC="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
16
+ DSH_HOME="${DSH_HOME:-$HOME/.dsh}"
17
+ DST="$DSH_HOME/.agent-presets/oh-my-dsh"
18
+ STAMP="$(date +%Y%m%d-%H%M%S)"
19
+
20
+ mkdir -p "$DST"
21
+
22
+ # Back up $1 (relative to the preset root) when the local copy differs from ours.
23
+ backup_if_differs() {
24
+ rel="$1"
25
+ if [ -f "$DST/$rel" ] && [ -f "$SRC/$rel" ] && ! cmp -s "$SRC/$rel" "$DST/$rel"; then
26
+ cp -p "$DST/$rel" "$DST/$rel.bak-$STAMP"
27
+ echo " backed up local $rel -> $rel.bak-$STAMP"
28
+ fi
29
+ }
30
+
31
+ backup_if_differs agent.cordis.yml
32
+ backup_if_differs preset.yml
33
+
34
+ for d in skills commands; do
35
+ [ -d "$SRC/$d" ] || continue
36
+ find "$SRC/$d" -type f -print | while IFS= read -r f; do
37
+ backup_if_differs "${f#"$SRC"/}"
38
+ done
39
+ done
40
+
41
+ # Merge-copy: add/overwrite the files this repo ships and touch nothing else.
42
+ cp "$SRC/agent.cordis.yml" "$SRC/preset.yml" "$DST/"
43
+
44
+ # Copy the CONTENTS of skills/ and commands/ (note the trailing `/.`), so the
45
+ # copy merges into the existing directory on every re-run instead of depending
46
+ # on how this machine's cp treats an already-existing destination directory.
47
+ for d in skills commands; do
48
+ [ -d "$SRC/$d" ] || continue
49
+ mkdir -p "$DST/$d"
50
+ cp -R "$SRC/$d/." "$DST/$d/"
51
+ done
52
+
53
+ echo "installed oh-my-dsh preset to $DST"
54
+
55
+ # Report -- never delete -- a duplicate tree that the PowerShell installer of an
56
+ # older version nested. Nothing loads those files.
57
+ for d in skills commands; do
58
+ if [ -d "$DST/$d/$d" ]; then
59
+ echo " WARNING duplicate tree from an older installer: $DST/$d/$d"
60
+ echo " nothing loads it; delete it after you have checked it."
61
+ fi
62
+ done
63
+
64
+ # Report what the upgrade left alone, so nothing local disappears silently.
65
+ LIST_DIR="$(mktemp -d)"
66
+ trap 'rm -rf "$LIST_DIR"' EXIT
67
+ find "$DST" -type f ! -name '*.bak-*' | sed "s|^$DST/||" | sort >"$LIST_DIR/installed"
68
+ {
69
+ echo agent.cordis.yml
70
+ echo preset.yml
71
+ for d in skills commands; do
72
+ [ -d "$SRC/$d" ] && find "$SRC/$d" -type f | sed "s|^$SRC/||"
73
+ done
74
+ } | sort >"$LIST_DIR/shipped"
75
+ PRESERVED="$(comm -23 "$LIST_DIR/installed" "$LIST_DIR/shipped")"
76
+ if [ -n "$PRESERVED" ]; then
77
+ echo "preserved files that this repo does not ship (left untouched):"
78
+ echo "$PRESERVED" | sed 's/^/ /'
79
+ fi
80
+
81
+ echo "start a new session and select 'oh-my-dsh' from the preset picker."
package/package.json CHANGED
@@ -1,36 +1,46 @@
1
- {
2
- "name": "@hawk2048/oh-my-dsh",
3
- "version": "0.2.1",
4
- "description": "oh-my-dsh: DeepSeek Harness multi-agent orchestration layer — OMC-style workflow skills, slash commands, and an agent preset.",
5
- "type": "module",
6
- "main": "index.js",
7
- "exports": {
8
- ".": "./index.js",
9
- "./commands": "./commands/omd-commands.mjs"
10
- },
11
- "files": [
12
- "index.js",
13
- "commands/",
14
- "skills/",
15
- "cordis.patch.yml",
16
- "README.zh.md"
17
- ],
18
- "dsh": {
19
- "bundle": {
20
- "patch": "./cordis.patch.yml"
21
- }
22
- },
23
- "license": "MIT",
24
- "keywords": [
25
- "dsh-plugin",
26
- "deepseek-harness",
27
- "orchestration",
28
- "multi-agent",
29
- "workflow",
30
- "agent-preset"
31
- ],
32
- "repository": {
33
- "type": "git",
34
- "url": "git+https://github.com/hawk2048/oh-my-dsh.git"
35
- }
36
- }
1
+ {
2
+ "name": "@hawk2048/oh-my-dsh",
3
+ "version": "0.3.3",
4
+ "description": "oh-my-dsh: DeepSeek Harness multi-agent orchestration layer — OMC-style workflow skills, slash commands, and an agent preset.",
5
+ "type": "module",
6
+ "main": "index.js",
7
+ "exports": {
8
+ ".": "./index.js",
9
+ "./commands": "./commands/omd-commands.mjs"
10
+ },
11
+ "scripts": {
12
+ "test": "node tests/run.mjs"
13
+ },
14
+ "files": [
15
+ "index.js",
16
+ "commands/",
17
+ "skills/",
18
+ "cordis.patch.yml",
19
+ "preset.yml",
20
+ "agent.cordis.yml",
21
+ "install.sh",
22
+ "install.ps1",
23
+ "README.md",
24
+ "README.zh.md",
25
+ "CHANGELOG.md"
26
+ ],
27
+ "dsh": {
28
+ "bundle": {
29
+ "patch": "./cordis.patch.yml"
30
+ }
31
+ },
32
+ "license": "MIT",
33
+ "keywords": [
34
+ "dsh-plugin",
35
+ "deepseek-harness",
36
+ "orchestration",
37
+ "multi-agent",
38
+ "workflow",
39
+ "agent-preset"
40
+ ],
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "git+https://github.com/hawk2048/oh-my-dsh.git"
44
+ }
45
+ }
46
+
package/preset.yml ADDED
@@ -0,0 +1,2 @@
1
+ name: oh-my-dsh 编排
2
+ description: 多智能体编排层:核心流水线 Plan→Execute→Review→Verify,加 Team/Autopilot/Ralph/Deep-Interview/Ralplan/Research/Autoresearch/Ultragoal 与 HUD;另含表达与推理纪律(pyramid 金字塔结构化表达、tdd、deepsearch、deep-analyze、ultrathink、ai-slop-cleaner)与工具 skill(doctor、debug、release、remember、cancel、minimal-code-discipline、external-context、visual-verdict、skillify、wiki、help)。30 个 skill + 13 条 /omd-* 斜杠命令,全部封装在 DSH 原生 workflow/subagent/ralph/goal 工具之上。
@@ -1,43 +1,43 @@
1
- ---
2
- name: omd-ai-slop-cleaner
3
- description: "去AI味:清除代码或文本里 AI 生成的废话、套话、冗余注释与含糊表述。触发词:ai-slop / 去废话 / 精简 / 去水 / 太啰嗦 / 去AI味;或想让输出更紧凑时。"
4
- ---
5
-
6
- # oh-my-dsh · AI-slop-cleaner 去废话
7
-
8
- 删除 AI 生成的冗余、套话、废话注释与空洞措辞,让代码/文本**精炼、具体、像人写的**。对应 OMC 的 `ai-slop-cleaner` 提示词触发模式(其内部转 `review`)。
9
-
10
- ## 何时用
11
-
12
- - 用户嫌输出啰嗦、有「AI 味」、要精简。
13
- - 清理冗余注释、无意义样板、`In conclusion` 式套话。
14
-
15
- ## 清理纪律
16
-
17
- 识别并移除这些典型 slop:
18
-
19
- | 类型 | 例子 | 处理 |
20
- |------|------|------|
21
- | 复述注释 | `// set x to 1` 紧跟 `x = 1` | 删注释,代码自明 |
22
- | 废话样板 | "In today's fast-paced world…" | 整段删 |
23
- | 空洞形容词 | "robust, scalable, cutting-edge" | 换成具体事实 |
24
- | 冗余总结 | 结尾把上文再讲一遍 | 删,留结论 |
25
- | 无意义占位 | TODO 永不实现、`pass` 式填充 | 删或落实 |
26
-
27
- 原则:**保留含义,删掉水分**。改完让输出更短、更具体,但不丢信息。
28
-
29
- ## 与其它模式的关系
30
-
31
- - 清理完交给 `omd-review` 复核,确认没误删语义。
32
- - 清理的是「写得啰嗦」,不是「逻辑有错」——后者走 `omd-debug` / `omd-review`。
33
- - 用于生成时,把它当 `omd-execute` 的输出后置滤网。
34
-
35
- ## 收尾:HUD
36
-
37
- 用 `omd-hud` 输出清理对照:删除条目 + 前后字数 + 类型分布。让「删了什么、精简多少」一眼可见。
38
-
39
- ## 反模式
40
-
41
- - 别为精简牺牲准确性或可读性。
42
- - 别把有信息量的注释当 slop 删掉(`为什么` 的注释要留)。
43
- - 别只删不改——该重写的句子要重写成具体措辞。
1
+ ---
2
+ name: omd-ai-slop-cleaner
3
+ description: "去AI味:清除代码或文本里 AI 生成的废话、套话、冗余注释与含糊表述。触发词:ai-slop / 去废话 / 精简 / 去水 / 太啰嗦 / 去AI味;或想让输出更紧凑时。"
4
+ ---
5
+
6
+ # oh-my-dsh · AI-slop-cleaner 去废话
7
+
8
+ 删除 AI 生成的冗余、套话、废话注释与空洞措辞,让代码/文本**精炼、具体、像人写的**。对应 OMC 的 `ai-slop-cleaner` 提示词触发模式(其内部转 `review`)。
9
+
10
+ ## 何时用
11
+
12
+ - 用户嫌输出啰嗦、有「AI 味」、要精简。
13
+ - 清理冗余注释、无意义样板、`In conclusion` 式套话。
14
+
15
+ ## 清理纪律
16
+
17
+ 识别并移除这些典型 slop:
18
+
19
+ | 类型 | 例子 | 处理 |
20
+ |------|------|------|
21
+ | 复述注释 | `// set x to 1` 紧跟 `x = 1` | 删注释,代码自明 |
22
+ | 废话样板 | "In today's fast-paced world…" | 整段删 |
23
+ | 空洞形容词 | "robust, scalable, cutting-edge" | 换成具体事实 |
24
+ | 冗余总结 | 结尾把上文再讲一遍 | 删,留结论 |
25
+ | 无意义占位 | TODO 永不实现、`pass` 式填充 | 删或落实 |
26
+
27
+ 原则:**保留含义,删掉水分**。改完让输出更短、更具体,但不丢信息。
28
+
29
+ ## 与其它模式的关系
30
+
31
+ - 清理完交给 `omd-review` 复核,确认没误删语义。
32
+ - 清理的是「写得啰嗦」,不是「逻辑有错」——后者走 `omd-debug` / `omd-review`。
33
+ - 用于生成时,把它当 `omd-execute` 的输出后置滤网。
34
+
35
+ ## 收尾:HUD
36
+
37
+ 用 `omd-hud` 输出清理对照:删除条目 + 前后字数 + 类型分布。让「删了什么、精简多少」一眼可见。
38
+
39
+ ## 反模式
40
+
41
+ - 别为精简牺牲准确性或可读性。
42
+ - 别把有信息量的注释当 slop 删掉(`为什么` 的注释要留)。
43
+ - 别只删不改——该重写的句子要重写成具体措辞。
@@ -1,51 +1,51 @@
1
- ---
2
- name: omd-autopilot
3
- description: "自动驾驶:一个主控代理(你)跨目标轮次把单一目标持续做到已验证完成,用子代理委派并以 todo_write 跟踪。适合低仪式感的端到端自主功能开发;触发词:autopilot / 自动驾驶 / 自主执行 / 自动驾驶式。"
4
- ---
5
-
6
- # oh-my-dsh · Autopilot 自动驾驶
7
-
8
- 一个主控代理(你)把一个目标从模糊一路推到「已验证完成」。对应 OMC 的 Autopilot 模式:**单领导、自主执行、持续到底**。
9
-
10
- ## 何时用
11
-
12
- - 用户给了一个明确的最终目标:"搭一个 REST API""重构认证模块"。
13
- - 不想走 Team 的完整五阶段仪式,但目标要真正跑完、验证过。
14
- - 用户说"autopilot""自动驾驶""自主执行""一路做完"。
15
-
16
- ## 核心:goal 工具循环
17
-
18
- Autopilot 的地基是 DSH 的 goal 工具——一个**跨多轮持续到完成**的目标,不是单轮内做完。
19
-
20
- ```
21
- create_goal(objective) → [每一轮] todo_write 推进 → subagent 委托 → update_goal 推进 → 完成
22
- ```
23
-
24
- 1. **建目标**:`create_goal(objective, { max_goal_rounds })`。objective 写成"可验收的完成目标",不是任务描述——"通过 npm test 的认证模块重构"优于"重构认证"。
25
- 2. **拆计划**:立刻用 `todo_write` 列出实现步骤,每步一条;并行步骤可同时 `in_progress`。
26
- 3. **每轮推进**:本轮该做的做(`subagent` 委托独立子任务、读代码、改文件),做完就把对应 todo 置 `completed`,用 `update_goal` 保持目标推进。
27
- 4. **持续到完成**:跨轮继续,别在单轮里硬塞。每个长目标都属于 goal 工具,不属于一次回答。
28
- 5. **委托**:能独立、能并行的子任务用 `subagent`(后台并行),不要把上下文全烧在主控里。
29
- 6. **收尾**:只有「验证通过、验收标准满足」才 `update_goal complete`;用 `get_goal` 读当前 revision 再更新。
30
-
31
- ## 目标状态纪律
32
-
33
- - `complete`:目标**真正达成**才标。别因为"做完了主要部分"就提前标。
34
- - `blocked`:**同一阻塞条件持续至少 3 个 goal 轮**才标,并在 `blocked_reason` 里写明具体条件。"难/不确定/还有活"不算 blocked。
35
- - 目标在会话恢复或 fork 后会解除武装:用户说"继续/接着做"时用 `update_goal resume` 重新武装。
36
-
37
- ## 与 Team / Ralph 的边界
38
-
39
- - **Team**:多子系统、要分阶段规格。Autopilot 是单领导直推,不搞 prd 仪式。
40
- - **Ralph**:要"每个完成都必须验证、不许静默半成品"的强验证循环,或用户明说 fresh-agent 迭代。
41
- - Autopilot 内部可以顺手并行 `subagent`,但主控权始终在你这一个代理手里。
42
-
43
- ## 收尾:HUD
44
-
45
- 每轮结束按 `omd-hud` 输出内联仪表盘:目标 + 轮次 + todo 进度 + 子代理状态。让用户始终看到"现在到哪了、还差什么"。
46
-
47
- ## 反模式
48
-
49
- - 别在单轮里试图一次做完整个目标——goal 工具就是为"跨轮持续"设计的。
50
- - 别把 goal 用在琐碎的单轮任务上。
51
- - 别静默交付半成品——收尾前必须验证。
1
+ ---
2
+ name: omd-autopilot
3
+ description: "自动驾驶:一个主控代理(你)跨目标轮次把单一目标持续做到已验证完成,用子代理委派并以 todo_write 跟踪。适合低仪式感的端到端自主功能开发;触发词:autopilot / 自动驾驶 / 自主执行 / 自动驾驶式。"
4
+ ---
5
+
6
+ # oh-my-dsh · Autopilot 自动驾驶
7
+
8
+ 一个主控代理(你)把一个目标从模糊一路推到「已验证完成」。对应 OMC 的 Autopilot 模式:**单领导、自主执行、持续到底**。
9
+
10
+ ## 何时用
11
+
12
+ - 用户给了一个明确的最终目标:"搭一个 REST API""重构认证模块"。
13
+ - 不想走 Team 的完整五阶段仪式,但目标要真正跑完、验证过。
14
+ - 用户说"autopilot""自动驾驶""自主执行""一路做完"。
15
+
16
+ ## 核心:goal 工具循环
17
+
18
+ Autopilot 的地基是 DSH 的 goal 工具——一个**跨多轮持续到完成**的目标,不是单轮内做完。
19
+
20
+ ```
21
+ create_goal(objective) → [每一轮] todo_write 推进 → subagent 委托 → update_goal 推进 → 完成
22
+ ```
23
+
24
+ 1. **建目标**:`create_goal(objective, { max_goal_rounds })`。objective 写成"可验收的完成目标",不是任务描述——"通过 npm test 的认证模块重构"优于"重构认证"。
25
+ 2. **拆计划**:立刻用 `todo_write` 列出实现步骤,每步一条;并行步骤可同时 `in_progress`。
26
+ 3. **每轮推进**:本轮该做的做(`subagent` 委托独立子任务、读代码、改文件),做完就把对应 todo 置 `completed`,用 `update_goal` 保持目标推进。
27
+ 4. **持续到完成**:跨轮继续,别在单轮里硬塞。每个长目标都属于 goal 工具,不属于一次回答。
28
+ 5. **委托**:能独立、能并行的子任务用 `subagent`(后台并行),不要把上下文全烧在主控里。
29
+ 6. **收尾**:只有「验证通过、验收标准满足」才 `update_goal complete`;用 `get_goal` 读当前 revision 再更新。
30
+
31
+ ## 目标状态纪律
32
+
33
+ - `complete`:目标**真正达成**才标。别因为"做完了主要部分"就提前标。
34
+ - `blocked`:**同一阻塞条件持续至少 3 个 goal 轮**才标,并在 `blocked_reason` 里写明具体条件。"难/不确定/还有活"不算 blocked。
35
+ - 目标在会话恢复或 fork 后会解除武装:用户说"继续/接着做"时用 `update_goal resume` 重新武装。
36
+
37
+ ## 与 Team / Ralph 的边界
38
+
39
+ - **Team**:多子系统、要分阶段规格。Autopilot 是单领导直推,不搞 prd 仪式。
40
+ - **Ralph**:要"每个完成都必须验证、不许静默半成品"的强验证循环,或用户明说 fresh-agent 迭代。
41
+ - Autopilot 内部可以顺手并行 `subagent`,但主控权始终在你这一个代理手里。
42
+
43
+ ## 收尾:HUD
44
+
45
+ 每轮结束按 `omd-hud` 输出内联仪表盘:目标 + 轮次 + todo 进度 + 子代理状态。让用户始终看到"现在到哪了、还差什么"。
46
+
47
+ ## 反模式
48
+
49
+ - 别在单轮里试图一次做完整个目标——goal 工具就是为"跨轮持续"设计的。
50
+ - 别把 goal 用在琐碎的单轮任务上。
51
+ - 别静默交付半成品——收尾前必须验证。
@@ -0,0 +1,46 @@
1
+ # 变更记录 · omd-autoresearch
2
+
3
+ ## 2.0.0 — 2026-11-04
4
+
5
+ 这一版把「评估器驱动的改进循环」从提示词改成带检查脚本的流程,并补上了语言层面的判定。
6
+
7
+ ### 新增
8
+
9
+ - `references/report_lint.py`:可执行的检查脚本,覆盖禁句、句式、句长、段长、破折号、密度、篇幅、标题层级。
10
+ - `references/rubric.md`:五维评分模板,含四条不合格项与差距清单格式。
11
+ - `references/eval-prompt.md`:评估子代理的提示词模板。
12
+ - `references/report-rules.md`:来源分级、证据清单、反面证据写法、结构、篇幅。
13
+ - `references/report-style.md`:语言规范,按处置力度分为三档,含黑话表、语域说明、比喻禁用表。
14
+ - `references/skill-survey.md`:十三个外部项目的调研结论与采纳记录。
15
+ - 写作阶段的分段检查:每写完一节先过四道检查,再写下一节。
16
+ - 字数与结构额度表:按读者需要分三档,先定额度再动笔。
17
+
18
+ ### 检查脚本规则
19
+
20
+ - 对偶转折句(不是…而是…,含省略「而」的变体):按篇幅给豁免额度,超出判不合格。
21
+ - 报告正文出现自我更正:判不合格。
22
+ - 生造黑话(`钉死`、`抓手`、`小疤`、`打穿` 等):判不合格,另设字面义白名单。
23
+ - 工程词外泄(报警项、判死、落盘、跑通):判不合格;闸门、拆轮一类只提示。
24
+ - 比喻与借代(`骨架`、`台账`、`三角验证`、`双轴` 等):提示。
25
+ - 超长句、超长段、破折号过密、标题跳级:判不合格。
26
+ - 数字密度、图表密度、AI 腔词密度、加粗密度:严格模式判不合格,默认只提示。
27
+ - 规则文档本身用 `--doc` 跳过工程词与密度检查。
28
+
29
+ ### 修正
30
+
31
+ - 「——」被重复计数(一个破折号算成三处)。
32
+ - 同一句被多条正则重复计数,改为按字符位置合并。
33
+ - `--scale` 对下限型密度方向相反,改为上限除以倍数、下限乘以倍数。
34
+ - 两份文档的篇幅表数字不一致,统一到一处。
35
+ - 段落长度口径三处不一致,统一为七行、暂以 300 字近似判定。
36
+ - 引用他人原话(中文引号、直角引号、Markdown 引用块)被误判为对偶句,已放行。
37
+ - 字面义术语(水位、体感温度、资金沉淀、打通最后一公里)被误判为黑话,已放行。
38
+ - 删除陈旧的重复目录 `omd-autoresearch/omd-autoresearch/`。
39
+
40
+ ### 兼容
41
+
42
+ - 触发词保留 autoresearch、自动调研改进、边做边评、持续打磨到达标,新增写报告、报告太长、太干、边写边改。
43
+
44
+ ## 1.0.0 — 2026-09-12
45
+
46
+ 初版:产出、评估、改进三步循环,无评分模板与检查脚本。