@qlingzzy/qling 1.0.0 → 1.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.
Files changed (254) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/README.en.md +83 -18
  3. package/README.md +19 -9
  4. package/dist/agent/main-loop.d.ts +120 -0
  5. package/dist/agent/main-loop.d.ts.map +1 -0
  6. package/dist/agent/main-loop.js +279 -0
  7. package/dist/agent/subtask-parallel.d.ts +29 -0
  8. package/dist/agent/subtask-parallel.d.ts.map +1 -0
  9. package/dist/agent/subtask-parallel.js +107 -0
  10. package/dist/agent/subtask.d.ts +13 -0
  11. package/dist/agent/subtask.d.ts.map +1 -1
  12. package/dist/agent/subtask.js +79 -24
  13. package/dist/agent/system-prompt.d.ts +39 -0
  14. package/dist/agent/system-prompt.d.ts.map +1 -0
  15. package/dist/agent/system-prompt.js +89 -0
  16. package/dist/agent/tool-orchestrator.d.ts +66 -0
  17. package/dist/agent/tool-orchestrator.d.ts.map +1 -0
  18. package/dist/agent/tool-orchestrator.js +355 -0
  19. package/dist/agent-loop.d.ts +29 -16
  20. package/dist/agent-loop.d.ts.map +1 -1
  21. package/dist/agent-loop.js +262 -807
  22. package/dist/agents/roles.d.ts +57 -0
  23. package/dist/agents/roles.d.ts.map +1 -0
  24. package/dist/agents/roles.js +198 -0
  25. package/dist/commands/agents.d.ts.map +1 -1
  26. package/dist/commands/agents.js +17 -3
  27. package/dist/commands/claude-style.d.ts.map +1 -1
  28. package/dist/commands/claude-style.js +19 -10
  29. package/dist/commands/help.d.ts.map +1 -1
  30. package/dist/commands/help.js +3 -2
  31. package/dist/commands/index.d.ts.map +1 -1
  32. package/dist/commands/index.js +6 -0
  33. package/dist/commands/mode.d.ts +16 -0
  34. package/dist/commands/mode.d.ts.map +1 -0
  35. package/dist/commands/mode.js +67 -0
  36. package/dist/commands/recover.d.ts +3 -0
  37. package/dist/commands/recover.d.ts.map +1 -0
  38. package/dist/commands/recover.js +69 -0
  39. package/dist/commands/runtime.d.ts +2 -0
  40. package/dist/commands/runtime.d.ts.map +1 -1
  41. package/dist/commands/runtime.js +2 -0
  42. package/dist/commands/trace.d.ts +3 -0
  43. package/dist/commands/trace.d.ts.map +1 -0
  44. package/dist/commands/trace.js +45 -0
  45. package/dist/commands/verify.js +2 -2
  46. package/dist/config-report.d.ts +0 -1
  47. package/dist/config-report.d.ts.map +1 -1
  48. package/dist/config-report.js +1 -2
  49. package/dist/config.d.ts +0 -1
  50. package/dist/config.d.ts.map +1 -1
  51. package/dist/config.js +0 -1
  52. package/dist/context-report.d.ts +13 -7
  53. package/dist/context-report.d.ts.map +1 -1
  54. package/dist/context-report.js +64 -61
  55. package/dist/context-tool-hygiene.d.ts +36 -0
  56. package/dist/context-tool-hygiene.d.ts.map +1 -0
  57. package/dist/context-tool-hygiene.js +125 -0
  58. package/dist/dashboard/client.d.ts +2 -0
  59. package/dist/dashboard/client.d.ts.map +1 -0
  60. package/dist/dashboard/client.js +305 -0
  61. package/dist/dashboard/model.d.ts +13 -0
  62. package/dist/dashboard/model.d.ts.map +1 -0
  63. package/dist/dashboard/model.js +112 -0
  64. package/dist/dashboard/page.d.ts +3 -0
  65. package/dist/dashboard/page.d.ts.map +1 -0
  66. package/dist/dashboard/page.js +204 -0
  67. package/dist/dashboard/types.d.ts +63 -0
  68. package/dist/dashboard/types.d.ts.map +1 -0
  69. package/dist/dashboard/types.js +1 -0
  70. package/dist/dashboard-server.d.ts +24 -4
  71. package/dist/dashboard-server.d.ts.map +1 -1
  72. package/dist/dashboard-server.js +397 -302
  73. package/dist/discovery-registry.d.ts +17 -3
  74. package/dist/discovery-registry.d.ts.map +1 -1
  75. package/dist/discovery-registry.js +78 -3
  76. package/dist/doctor.d.ts +8 -0
  77. package/dist/doctor.d.ts.map +1 -1
  78. package/dist/doctor.js +116 -0
  79. package/dist/eval/llm-tasks.d.ts +5 -0
  80. package/dist/eval/llm-tasks.d.ts.map +1 -0
  81. package/dist/eval/llm-tasks.js +125 -0
  82. package/dist/eval/repo-tasks.d.ts +12 -0
  83. package/dist/eval/repo-tasks.d.ts.map +1 -0
  84. package/dist/eval/repo-tasks.js +220 -0
  85. package/dist/eval/runner.d.ts +3 -1
  86. package/dist/eval/runner.d.ts.map +1 -1
  87. package/dist/eval/runner.js +23 -4
  88. package/dist/eval/tasks.d.ts.map +1 -1
  89. package/dist/eval/tasks.js +186 -0
  90. package/dist/eval/types.d.ts +8 -5
  91. package/dist/eval/types.d.ts.map +1 -1
  92. package/dist/execution/event-bus.d.ts +44 -0
  93. package/dist/execution/event-bus.d.ts.map +1 -0
  94. package/dist/execution/event-bus.js +76 -0
  95. package/dist/execution/failure-classifier.d.ts +11 -0
  96. package/dist/execution/failure-classifier.d.ts.map +1 -0
  97. package/dist/execution/failure-classifier.js +66 -0
  98. package/dist/execution/progress-detector.d.ts +3 -0
  99. package/dist/execution/progress-detector.d.ts.map +1 -0
  100. package/dist/execution/progress-detector.js +23 -0
  101. package/dist/execution/recovery-controller.d.ts +24 -0
  102. package/dist/execution/recovery-controller.d.ts.map +1 -0
  103. package/dist/execution/recovery-controller.js +114 -0
  104. package/dist/execution/recovery-messages.d.ts +24 -0
  105. package/dist/execution/recovery-messages.d.ts.map +1 -0
  106. package/dist/execution/recovery-messages.js +48 -0
  107. package/dist/execution/recovery-metrics.d.ts +16 -0
  108. package/dist/execution/recovery-metrics.d.ts.map +1 -0
  109. package/dist/execution/recovery-metrics.js +73 -0
  110. package/dist/execution/recovery-strategy-planner.d.ts +6 -0
  111. package/dist/execution/recovery-strategy-planner.d.ts.map +1 -0
  112. package/dist/execution/recovery-strategy-planner.js +24 -0
  113. package/dist/execution/run-trace-store.d.ts +29 -0
  114. package/dist/execution/run-trace-store.d.ts.map +1 -0
  115. package/dist/execution/run-trace-store.js +140 -0
  116. package/dist/execution/staged-verifier.d.ts +33 -0
  117. package/dist/execution/staged-verifier.d.ts.map +1 -0
  118. package/dist/execution/staged-verifier.js +39 -0
  119. package/dist/execution/types.d.ts +58 -0
  120. package/dist/execution/types.d.ts.map +1 -0
  121. package/dist/execution/types.js +1 -0
  122. package/dist/execution/verification-loop.d.ts +58 -0
  123. package/dist/execution/verification-loop.d.ts.map +1 -0
  124. package/dist/execution/verification-loop.js +195 -0
  125. package/dist/execution/verification-stages.d.ts +17 -0
  126. package/dist/execution/verification-stages.d.ts.map +1 -0
  127. package/dist/execution/verification-stages.js +102 -0
  128. package/dist/help-topics.d.ts.map +1 -1
  129. package/dist/help-topics.js +11 -0
  130. package/dist/index.js +0 -8
  131. package/dist/lsp/ts-service.d.ts +36 -0
  132. package/dist/lsp/ts-service.d.ts.map +1 -0
  133. package/dist/lsp/ts-service.js +291 -0
  134. package/dist/memory/lifecycle.d.ts +19 -0
  135. package/dist/memory/lifecycle.d.ts.map +1 -0
  136. package/dist/memory/lifecycle.js +53 -0
  137. package/dist/memory.d.ts +0 -16
  138. package/dist/memory.d.ts.map +1 -1
  139. package/dist/memory.js +0 -36
  140. package/dist/metrics/collector.d.ts +7 -0
  141. package/dist/metrics/collector.d.ts.map +1 -1
  142. package/dist/metrics/collector.js +60 -0
  143. package/dist/mission/manager.d.ts +1 -0
  144. package/dist/mission/manager.d.ts.map +1 -1
  145. package/dist/mission/manager.js +9 -0
  146. package/dist/mission/progress-notify.d.ts +39 -0
  147. package/dist/mission/progress-notify.d.ts.map +1 -0
  148. package/dist/mission/progress-notify.js +386 -0
  149. package/dist/pipeline/hooks.d.ts +1 -1
  150. package/dist/pipeline/hooks.d.ts.map +1 -1
  151. package/dist/pipeline/hooks.js +1 -0
  152. package/dist/pipeline/sections.d.ts +8 -4
  153. package/dist/pipeline/sections.d.ts.map +1 -1
  154. package/dist/pipeline/sections.js +70 -27
  155. package/dist/pipeline/verification.d.ts +1 -0
  156. package/dist/pipeline/verification.d.ts.map +1 -1
  157. package/dist/pipeline/verification.js +10 -7
  158. package/dist/providers/llm-client.d.ts +38 -0
  159. package/dist/providers/llm-client.d.ts.map +1 -0
  160. package/dist/providers/llm-client.js +105 -0
  161. package/dist/sdk.d.ts +1 -0
  162. package/dist/sdk.d.ts.map +1 -1
  163. package/dist/sdk.js +1 -0
  164. package/dist/session/durable-session-supervisor.d.ts.map +1 -1
  165. package/dist/session/durable-session-supervisor.js +13 -6
  166. package/dist/session/session-persistence.d.ts +29 -0
  167. package/dist/session/session-persistence.d.ts.map +1 -0
  168. package/dist/session/session-persistence.js +45 -0
  169. package/dist/session/session-scheduler.d.ts +8 -1
  170. package/dist/session/session-scheduler.d.ts.map +1 -1
  171. package/dist/session/session-scheduler.js +33 -4
  172. package/dist/session-task-report.d.ts +1 -0
  173. package/dist/session-task-report.d.ts.map +1 -1
  174. package/dist/session-task-report.js +2 -1
  175. package/dist/shortcuts.d.ts.map +1 -1
  176. package/dist/shortcuts.js +1 -0
  177. package/dist/skills/registry.d.ts.map +1 -1
  178. package/dist/skills/registry.js +10 -0
  179. package/dist/skills/security-scan.d.ts +15 -0
  180. package/dist/skills/security-scan.d.ts.map +1 -0
  181. package/dist/skills/security-scan.js +95 -0
  182. package/dist/skills/types.d.ts +2 -0
  183. package/dist/skills/types.d.ts.map +1 -1
  184. package/dist/statusline.d.ts +3 -3
  185. package/dist/statusline.d.ts.map +1 -1
  186. package/dist/statusline.js +9 -17
  187. package/dist/token-usage.d.ts +27 -0
  188. package/dist/token-usage.d.ts.map +1 -0
  189. package/dist/token-usage.js +107 -0
  190. package/dist/tools/bash.d.ts.map +1 -1
  191. package/dist/tools/bash.js +5 -3
  192. package/dist/tools/browser-act-session.d.ts +48 -0
  193. package/dist/tools/browser-act-session.d.ts.map +1 -0
  194. package/dist/tools/browser-act-session.js +168 -0
  195. package/dist/tools/browser-act.d.ts +14 -0
  196. package/dist/tools/browser-act.d.ts.map +1 -0
  197. package/dist/tools/browser-act.js +297 -0
  198. package/dist/tools/code-symbols.d.ts +35 -0
  199. package/dist/tools/code-symbols.d.ts.map +1 -0
  200. package/dist/tools/code-symbols.js +257 -0
  201. package/dist/tools/index.d.ts +4 -1
  202. package/dist/tools/index.d.ts.map +1 -1
  203. package/dist/tools/index.js +22 -2
  204. package/dist/tools/lsp.d.ts +13 -0
  205. package/dist/tools/lsp.d.ts.map +1 -0
  206. package/dist/tools/lsp.js +136 -0
  207. package/dist/tools/patch.d.ts +5 -0
  208. package/dist/tools/patch.d.ts.map +1 -1
  209. package/dist/tools/patch.js +25 -4
  210. package/dist/tools/search.d.ts +7 -0
  211. package/dist/tools/search.d.ts.map +1 -1
  212. package/dist/tools/search.js +20 -3
  213. package/dist/tools/skill.d.ts +2 -0
  214. package/dist/tools/skill.d.ts.map +1 -1
  215. package/dist/tools/skill.js +47 -14
  216. package/dist/tools/subtask.d.ts +3 -1
  217. package/dist/tools/subtask.d.ts.map +1 -1
  218. package/dist/tools/subtask.js +151 -56
  219. package/dist/tui/shell.d.ts +12 -0
  220. package/dist/tui/shell.d.ts.map +1 -1
  221. package/dist/tui/shell.js +36 -3
  222. package/dist/tui/streaming-repl.d.ts +1 -0
  223. package/dist/tui/streaming-repl.d.ts.map +1 -1
  224. package/dist/tui/streaming-repl.js +27 -4
  225. package/dist/tui/streaming-tui.d.ts +10 -0
  226. package/dist/tui/streaming-tui.d.ts.map +1 -1
  227. package/dist/tui/streaming-tui.js +70 -12
  228. package/dist/types.d.ts +0 -8
  229. package/dist/types.d.ts.map +1 -1
  230. package/dist/workflow-runtime.d.ts.map +1 -1
  231. package/dist/workflow-runtime.js +10 -2
  232. package/dist/workflow-types.d.ts +2 -0
  233. package/dist/workflow-types.d.ts.map +1 -1
  234. package/docs/install.md +46 -12
  235. package/docs/skills.md +56 -7
  236. package/docs/web-routing.md +83 -0
  237. package/package.json +18 -4
  238. package/scripts/dep-layers.mjs +275 -0
  239. package/scripts/eval-llm.mjs +27 -0
  240. package/scripts/eval-recovery.mjs +101 -0
  241. package/scripts/eval-tasks.mjs +20 -0
  242. package/scripts/validate-packaging.mjs +57 -0
  243. package/skills/examples/README.md +23 -0
  244. package/skills/examples/add-function/SKILL.md +31 -0
  245. package/skills/examples/fix-failing-test/SKILL.md +32 -0
  246. package/skills/examples/pr-summary/SKILL.md +34 -0
  247. package/skills/lifecycle-build/SKILL.md +22 -0
  248. package/skills/lifecycle-plan/SKILL.md +32 -0
  249. package/skills/lifecycle-review/SKILL.md +25 -0
  250. package/skills/lifecycle-ship/SKILL.md +22 -0
  251. package/skills/lifecycle-spec/SKILL.md +24 -0
  252. package/skills/lifecycle-test/SKILL.md +21 -0
  253. package/skills/opencli/SKILL.md +222 -0
  254. package/skills/qling.md +14 -3
@@ -18,7 +18,7 @@ import { default as stringWidth } from "string-width";
18
18
  import { findSlashCompletion, formatSlashCommandPanel, formatGroupedSlashPanel } from "../commands/index.js";
19
19
  import { InputBuffer } from "./input-buffer.js";
20
20
  import { formatProgressPulse } from "./progress.js";
21
- import { formatBottomHints, formatWelcomeGuide, formatRoleHeader, formatToolOutputCard, formatToolTimelineRow, formatTopBar, padVisible, truncateVisible, } from "./shell.js";
21
+ import { formatWelcomeGuide, formatRoleHeader, formatResultHighlight, formatToolOutputCard, formatToolTimelineRow, formatTopBar, padVisible, truncateVisible, } from "./shell.js";
22
22
  import { formatMarkdownForTerminal } from "./markdown.js";
23
23
  import { getPackageVersion } from "../package-version.js";
24
24
  // ── ANSI 颜色工具 ───────────────────────────────────────
@@ -101,6 +101,7 @@ export class StreamUI {
101
101
  slashCompletionSelectedIndex = 0;
102
102
  inputCursorAnchor = "current";
103
103
  inputStartRow = 0;
104
+ recoveryState = null;
104
105
  now;
105
106
  doubleCtrlCExitWindowMs = 2_000;
106
107
  constructor(model = "deepseek-chat", tools = 0, options = {}) {
@@ -148,6 +149,30 @@ export class StreamUI {
148
149
  if (next)
149
150
  this.model = next;
150
151
  }
152
+ setRecoveryState(state) {
153
+ this.recoveryState = state ? { ...state } : null;
154
+ if (state?.status === "paused")
155
+ this.appendRecoveryCard(state);
156
+ }
157
+ setInputDraft(draft) {
158
+ this.input.clear();
159
+ for (const ch of draft)
160
+ ch === "\n" ? this.input.insertNewline() : this.input.insertChar(ch);
161
+ this.draftDisplaySource = draft.includes("\n") ? "typed" : null;
162
+ this.redrawInput();
163
+ }
164
+ appendRecoveryCard(state) {
165
+ this.moveAfterInputFrame();
166
+ const failure = state.lastFailure;
167
+ process.stdout.write("\n" + [
168
+ S.y("执行已暂停"),
169
+ `${DIM("原因")} ${failure?.category ?? "unknown"}: ${failure?.message ?? "-"}`,
170
+ `${DIM("证据")} ${failure?.fingerprint ?? "-"} ${DIM("剩余预算")} ${state.remainingStrategyAttempts}`,
171
+ `${S.p("R")} 重试 ${S.p("S")} 下一策略 ${S.p("E")} 编辑任务 ${S.p("C")} 取消并保存摘要`,
172
+ ].join("\n") + "\n");
173
+ this.writeInputValue(true);
174
+ this.syncCursor();
175
+ }
151
176
  isExpandLongToolOutput() {
152
177
  return this.expandLongToolOutput;
153
178
  }
@@ -210,13 +235,12 @@ export class StreamUI {
210
235
  process.stdout.write(chunks.join(""));
211
236
  }
212
237
  // ── 底部输入栏 ────────────────────────────────────
238
+ /**
239
+ * 输入框上方不再堆叠 statusline / 快捷键黑灰提示(去噪)。
240
+ * 详情仍可通过 /statusline、/shortcuts 与顶栏查看。
241
+ */
213
242
  printPromptHint() {
214
- const chunks = [];
215
- if (this.statusLineEnabled && this.statusLine) {
216
- chunks.push(DIM(this.statusLine) + "\n");
217
- }
218
- chunks.push(DIM(formatBottomHints()) + "\n");
219
- process.stdout.write(chunks.join(""));
243
+ // intentionally empty — keep input chrome minimal
220
244
  }
221
245
  printInputBar() {
222
246
  this.printPromptHint();
@@ -537,6 +561,11 @@ export class StreamUI {
537
561
  this.dataHandler = (chunk) => {
538
562
  if (!this.running)
539
563
  return;
564
+ if (this.recoveryState?.status === "paused" && !this.input.value && /^[rsec]$/i.test(chunk)) {
565
+ const action = { r: "retry", s: "next", e: "edit", c: "cancel" }[chunk.toLowerCase()];
566
+ this.inputCallback?.(`/recover ${action}`);
567
+ return;
568
+ }
540
569
  if (chunk === "\x1b") {
541
570
  partial = "";
542
571
  return;
@@ -610,6 +639,10 @@ export class StreamUI {
610
639
  partial = "";
611
640
  this.handleTab();
612
641
  }
642
+ else if (seq === "\x1b[Z") {
643
+ partial = "";
644
+ this.handleShiftTab();
645
+ }
613
646
  else if (seq === "\x03") {
614
647
  partial = "";
615
648
  this.handleCtrlC();
@@ -751,6 +784,14 @@ export class StreamUI {
751
784
  }
752
785
  this.appendFeedbackAndRedraw(S.y("Tab agents 仅在空输入时打开;当前草稿已保留,补全未启用"));
753
786
  }
787
+ handleShiftTab() {
788
+ this.lastEmptyCtrlCAt = 0;
789
+ this.moveAfterInputFrame();
790
+ process.stdout.write("\n");
791
+ if (this.inputCallback) {
792
+ this.inputCallback("/mode cycle");
793
+ }
794
+ }
754
795
  handleCtrlC() {
755
796
  if (!this.input.value) {
756
797
  const now = this.now();
@@ -1029,11 +1070,28 @@ export class StreamUI {
1029
1070
  process.stdout.write("\n " + S.d("retry:") + " " + S.y(String(retryCount)));
1030
1071
  }
1031
1072
  appendFinal(text) {
1032
- process.stdout.write("\n" + S.p(formatRoleHeader("assistant")) + "\n");
1033
1073
  const width = process.stdout.columns || 100;
1034
- const lines = formatMarkdownForTerminal(text, { width });
1035
- for (const line of lines) {
1036
- process.stdout.write(line + "\n");
1074
+ const mdWidth = Math.max(40, width - 4);
1075
+ const mdLines = formatMarkdownForTerminal(text, { width: mdWidth });
1076
+ process.stdout.write("\n" + S.p(BOLD(formatRoleHeader("assistant"))) + " " + S.g(BOLD("结果")) + "\n");
1077
+ const box = formatResultHighlight({
1078
+ header: "结果",
1079
+ lines: mdLines,
1080
+ width,
1081
+ });
1082
+ for (let i = 0; i < box.length; i++) {
1083
+ const line = box[i];
1084
+ // 顶/底与左右边框用强调色;正文保留 Markdown 原色
1085
+ if (i === 0 || i === box.length - 1) {
1086
+ process.stdout.write(S.g(BOLD(line)) + "\n");
1087
+ }
1088
+ else if (line.startsWith("│ ") && line.endsWith(" │")) {
1089
+ const mid = line.slice(2, line.length - 2);
1090
+ process.stdout.write(S.g("│ ") + mid + S.g(" │") + "\n");
1091
+ }
1092
+ else {
1093
+ process.stdout.write(S.g(line) + "\n");
1094
+ }
1037
1095
  }
1038
1096
  }
1039
1097
  appendError(text) {
@@ -1044,6 +1102,6 @@ export class StreamUI {
1044
1102
  }
1045
1103
  appendDone(durationMs) {
1046
1104
  const dur = fmtDur(durationMs);
1047
- process.stdout.write("\n" + S.g("☑ 分析完成") + " " + DIM(dur));
1105
+ process.stdout.write("\n" + S.g(BOLD("☑ 任务完成")) + " " + S.p(dur) + "\n");
1048
1106
  }
1049
1107
  }
package/dist/types.d.ts CHANGED
@@ -37,7 +37,6 @@ export interface AgentConfig {
37
37
  systemPrompt: string;
38
38
  maxIterations: number;
39
39
  tools: ToolDefinition[];
40
- tokenBudget?: TokenBudgetConfig;
41
40
  sections?: PromptSectionRegistry;
42
41
  runtime?: {
43
42
  workspaceDir: string | null;
@@ -45,7 +44,6 @@ export interface AgentConfig {
45
44
  fileStateDir: string;
46
45
  maxSteps: number;
47
46
  parseRetries: number;
48
- maxTokenBudget: number;
49
47
  toolRepeatLimit: number;
50
48
  timeoutMs: number;
51
49
  };
@@ -87,12 +85,6 @@ export interface ToolDefinition {
87
85
  scenes?: string[];
88
86
  priority?: number;
89
87
  }
90
- export interface TokenBudgetConfig {
91
- maxTokens: number;
92
- nudgeThreshold: number;
93
- totalBudget: number;
94
- usedTokens?: number;
95
- }
96
88
  export type HookName = "PreToolUse" | "PostToolUse" | "PostToolUseFailure";
97
89
  export type PermissionDecision = "allow" | "deny" | "ask";
98
90
  export interface ToolHookContext {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-runtime.d.ts","sourceRoot":"","sources":["../src/workflow-runtime.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAiB,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAmC;gBAEvC,aAAa,EAAE,MAAM;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqBpH;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBxD;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvE;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D,aAAa,IAAI,kBAAkB,GAAG,IAAI;YAI5B,cAAc;IAM5B,OAAO,CAAC,iBAAiB;CAG1B"}
1
+ {"version":3,"file":"workflow-runtime.d.ts","sourceRoot":"","sources":["../src/workflow-runtime.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,QAAQ,CAAmC;gBAEvC,aAAa,EAAE,MAAM;IAI3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsBpH;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0BxD;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvE;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAOpC;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D,aAAa,IAAI,kBAAkB,GAAG,IAAI;YAI5B,cAAc;IAM5B,OAAO,CAAC,iBAAiB;CAG1B"}
@@ -26,6 +26,7 @@ export class WorkflowRuntime {
26
26
  this.currentCheckpoint = {
27
27
  runId,
28
28
  workflowId: workflow.id,
29
+ workflowDefinition: workflow,
29
30
  sessionId,
30
31
  status: "running",
31
32
  currentState: workflow.initialState,
@@ -42,13 +43,20 @@ export class WorkflowRuntime {
42
43
  * 从 Checkpoint 恢复
43
44
  */
44
45
  async resume(runId) {
46
+ if (!/^[A-Za-z0-9_-]+$/.test(runId)) {
47
+ throw new Error(`Invalid workflow runId: ${runId}`);
48
+ }
45
49
  const cpPath = this.getCheckpointPath(runId);
46
50
  if (!existsSync(cpPath)) {
47
51
  throw new Error(`Checkpoint not found for runId: ${runId}`);
48
52
  }
49
53
  const raw = await fs.readFile(cpPath, "utf-8");
50
- this.currentCheckpoint = JSON.parse(raw);
51
- // TODO: 这里需要加载对应的 WorkflowDefinition(可能需要持久化存储定义)
54
+ const checkpoint = JSON.parse(raw);
55
+ if (!checkpoint.workflowDefinition || checkpoint.workflowDefinition.id !== checkpoint.workflowId) {
56
+ throw new Error(`Checkpoint ${runId} cannot be resumed: workflow definition is missing or inconsistent`);
57
+ }
58
+ this.workflow = checkpoint.workflowDefinition;
59
+ this.currentCheckpoint = checkpoint;
52
60
  this.currentCheckpoint.status = "running";
53
61
  this.currentCheckpoint.updatedAt = Date.now();
54
62
  await this.saveCheckpoint();
@@ -37,6 +37,8 @@ export interface WorkflowDefinition {
37
37
  export interface WorkflowCheckpoint {
38
38
  runId: string;
39
39
  workflowId: string;
40
+ /** Definition required to restore state transitions after process restart. */
41
+ workflowDefinition?: WorkflowDefinition;
40
42
  sessionId: string;
41
43
  status: "running" | "paused" | "completed" | "failed" | "awaiting_approval";
42
44
  currentState: string;
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-types.d.ts","sourceRoot":"","sources":["../src/workflow-types.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;IAChD,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc;IACd,WAAW,EAAE,KAAK,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,iBAAiB;IACjB,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,mBAAmB,CAAC;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,yBAAyB;IACzB,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,wBAAwB;IACxB,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAC7B,yBAAyB;IACzB,oBAAoB,EAAE,UAAU,EAAE,CAAC;IACnC,gBAAgB;IAChB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAWpC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKlC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAQpC,KAAK,IAAI,kBAAkB;CAG5B"}
1
+ {"version":3,"file":"workflow-types.d.ts","sourceRoot":"","sources":["../src/workflow-types.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;IAChD,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc;IACd,WAAW,EAAE,KAAK,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,iBAAiB;IACjB,WAAW,CAAC,EAAE;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,mBAAmB,CAAC;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,yBAAyB;IACzB,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,wBAAwB;IACxB,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAC7B,yBAAyB;IACzB,oBAAoB,EAAE,UAAU,EAAE,CAAC;IACnC,gBAAgB;IAChB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAWpC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKlC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAQpC,KAAK,IAAI,kBAAkB;CAG5B"}
package/docs/install.md CHANGED
@@ -34,18 +34,20 @@ qling --help
34
34
 
35
35
  `bootstrap` 会:检查 Node/npm → 安装依赖 → 构建 → 创建 `~/.qling/` → 给出 `doctor`/`setup` 下一步。默认**不**安装浏览器、**不**自动开 dashboard。
36
36
 
37
- ## 方式 B:npm 全局安装
37
+ ## 方式 B:npm 全局安装(已发布 1.1.1)
38
38
 
39
- 包名因 npm 相似度策略使用作用域 **`@qlingzzy/qling`**(安装后命令仍是 `qling`):
39
+ 包名因 npm 相似度策略使用作用域 **`@qlingzzy/qling`**(安装后命令仍是 `qling`)。
40
+ 包页:https://www.npmjs.com/package/@qlingzzy/qling
40
41
 
41
42
  ```bash
42
- npm install -g @qlingzzy/qling
43
+ # 若本机默认 registry 是国内镜像,发布/校验请显式指定官方源
44
+ npm install -g @qlingzzy/qling --registry https://registry.npmjs.org/
43
45
  qling --version
44
46
  qling bootstrap
45
47
  qling setup
46
48
  ```
47
49
 
48
- 从 GitHub 直接装:
50
+ 从 GitHub 直接装(不经过 npm registry):
49
51
 
50
52
  ```bash
51
53
  npm install -g github:Zzy-min/qling
@@ -53,6 +55,15 @@ npm install -g github:Zzy-min/qling
53
55
 
54
56
  > 注意:`better-sqlite3` 为原生模块,需本机可编译环境;Windows 建议安装 [Visual Studio Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) 或使用已预编译的 Node 版本。
55
57
 
58
+ ### 发布者备忘(维护者)
59
+
60
+ 本机默认若为 `registry.npmmirror.com`,`npm whoami` / `npm login` 会对镜像失败;身份与 publish 必须带官方源:
61
+
62
+ ```bash
63
+ npm whoami --registry https://registry.npmjs.org/
64
+ npm publish --access public --registry https://registry.npmjs.org/
65
+ ```
66
+
56
67
  ## 方式 C:Windows PowerShell 快速路径
57
68
 
58
69
  ```powershell
@@ -75,28 +86,51 @@ qling
75
86
 
76
87
  ## 方式 D:Scoop 草案(未上架)
77
88
 
78
- 清单草稿:`packaging/scoop/qling.json`。
89
+ 清单草稿:`packaging/scoop/qling.json`(版本与 `package.json` 对齐,当前 **1.1.1**)。
90
+
91
+ 本地校验(不安装到官方 bucket):
92
+
93
+ ```powershell
94
+ npm run validate:packaging
95
+ # 检查 version / url 是否钉死到当前版本
96
+ Get-Content packaging/scoop/qling.json | ConvertFrom-Json | Select-Object version, url, hash
97
+ ```
98
+
99
+ 本地试用(需自建 bucket,并先把 `hash` 换成真实 tarball SHA256):
100
+
101
+ ```powershell
102
+ # 示例:私有 bucket 放好 manifest 后
103
+ scoop install qling
104
+ ```
79
105
 
80
- 本地试用(需自行维护 bucket release 资产 URL):
106
+ 1.1.1 的 npm tarball **已填真实 SHA256**(见 manifest `hash`)。仍未进官方 Scoop bucket:需自建 bucket 或社区 bucket PR。
81
107
 
82
108
  ```powershell
83
- # 示例:把 packaging/scoop 加入自建 bucket 后
109
+ # 私有 bucket 放入 packaging/scoop/qling.json 后可试装
110
+ # 若 shim 不理想,post_install 会提示改用 npm 全局安装
84
111
  scoop install qling
85
112
  ```
86
113
 
87
- 当前草案以 **npm 全局安装** 作为 `post_install` 思路;正式上架前请替换为固定 version npm tarball 或 GitHub Release 资产,并填写正确 hash
114
+ **推荐**用户路径仍是:`npm install -g @qlingzzy/qling --registry https://registry.npmjs.org/` 或源码 bootstrap
88
115
 
89
116
  ## 方式 E:winget 草案(未上架)
90
117
 
91
- 清单草稿:`packaging/winget/Zzy-min.qling.yaml`。
118
+ 清单草稿:`packaging/winget/Zzy-min.qling.yaml`(`PackageVersion` 与当前版本对齐)。
119
+
120
+ 本地校验:
121
+
122
+ ```powershell
123
+ npm run validate:packaging
124
+ Select-String -Path packaging/winget/Zzy-min.qling.yaml -Pattern 'PackageVersion|InstallerUrl|InstallerSha256'
125
+ ```
92
126
 
93
127
  正式提交需:
94
128
 
95
- 1. 稳定版本的安装包 URL(msi/zip 或 portable)
96
- 2. SHA256
129
+ 1. 稳定版本的安装包 URL(msi/zip 或 portable;当前示例为 GitHub Release zip
130
+ 2. 真实 `InstallerSha256`(草案里为全零占位)
97
131
  3. 通过 [winget-pkgs](https://github.com/microsoft/winget-pkgs) 审核
98
132
 
99
- 当前文件仅为**结构样例**,不可直接 `winget install`。
133
+ 当前文件仅为**结构样例**,不可直接 `winget install`。发布 zip 前可先用 npm 全局安装路径。
100
134
 
101
135
  ## 配置与安全
102
136
 
package/docs/skills.md CHANGED
@@ -1,10 +1,32 @@
1
1
  # Skills 约定
2
2
 
3
- 轻灵通过 Markdown skill 扩展领域知识。扫描路径:
3
+ 轻灵通过 Markdown skill 扩展领域知识。扫描路径(去重,优先靠前):
4
4
 
5
- - 仓库 `skills/`
6
- - 本机 `~/.qling/skills/`
7
- - 项目 `.qling/skills/`(若存在)
5
+ 1. **包内** `skills/`(随 `@qlingzzy/qling` 安装,全局可用)
6
+ 2. 本机 `~/.qling/skills/`
7
+ 3. 当前工作区 `skills/`
8
+ 4. 项目 `.qling/skills/`(若存在)
9
+ 5. 可选 `HERMES_HOME/skills`
10
+
11
+ 内置:`opencli`(平台数据必读)、`qling`、**lifecycle-*** 生命周期六件套,以及 `skills/examples/` 示例包:
12
+
13
+ | 示例 skill | 用途 |
14
+ |------------|------|
15
+ | `repo-triage` | 陌生仓库快速摸底 |
16
+ | `fix-failing-test` | 修失败单测 |
17
+ | `add-function` | 增量加导出函数 |
18
+ | `pr-summary` | 写 PR / 发布摘要 |
19
+
20
+ 详见 `skills/examples/README.md`。
21
+
22
+ ## 渐进加载(Progressive Skills)
23
+
24
+ | 层级 | 内容 |
25
+ |------|------|
26
+ | System 索引 | 仅 `name` / `description` / `tags` / `triggers`(短描述) |
27
+ | 按需正文 | `skill name="..."` 或 `/skill <name>` 加载 Markdown body |
28
+
29
+ **原则**:用到什么知识,临时加载什么知识,不把全部 skill 正文塞进 system prompt。
8
30
 
9
31
  ## 文件约定
10
32
 
@@ -21,9 +43,33 @@
21
43
  name: my-skill
22
44
  description: 何时使用该 skill(给模型做路由)
23
45
  tags: [optional, tags]
46
+ triggers: [关键词1, 场景2]
24
47
  ---
25
48
  ```
26
49
 
50
+ ## 安全扫描
51
+
52
+ 加载 skill 前默认静态扫描(`QLING_SKILL_SCAN`):
53
+
54
+ | 值 | 行为 |
55
+ |----|------|
56
+ | `on`(默认) | critical/high 命中则 **拒绝加载** |
57
+ | `warn` | 仅警告仍加载 |
58
+ | `off` | 关闭(仅调试) |
59
+
60
+ 规则覆盖:私钥 PEM、典型密钥形态、`curl|bash` / `irm|iex`、可疑 base64 执行等。
61
+
62
+ ## 生命周期 skills
63
+
64
+ | name | 用途 |
65
+ |------|------|
66
+ | `lifecycle-spec` | 规格 / 验收 |
67
+ | `lifecycle-plan` | 任务拆分 |
68
+ | `lifecycle-build` | 增量实现 |
69
+ | `lifecycle-test` | 测试证明 |
70
+ | `lifecycle-review` | 合并前审查 |
71
+ | `lifecycle-ship` | 发布清单 |
72
+
27
73
  ## 模板与示例
28
74
 
29
75
  - 模板:`skills/templates/SKILL.md`
@@ -42,10 +88,13 @@ cp skills/templates/SKILL.md skills/my-skill/SKILL.md
42
88
  ```text
43
89
  /skill list
44
90
  /skill my-skill
91
+ /skill lifecycle-plan
45
92
  ```
46
93
 
47
94
  ## 设计原则
48
95
 
49
- 1. **短而可执行** — 步骤可直接变成工具调用
50
- 2. **诚实边界** — 写清不要做什么
51
- 3. **本地优先** — 不要求外网上传
96
+ 1. **短而可执行** — 步骤可直接变成工具调用
97
+ 2. **诚实边界** — 写清不要做什么
98
+ 3. **本地优先** — 不要求外网上传
99
+ 4. **渐进加载** — 索引进 prompt,正文 on-demand
100
+ 5. **默认可扫描** — 第三方 skill 先过安全规则
@@ -0,0 +1,83 @@
1
+ # 网页 / 平台数据路由(Phase 3.3)
2
+
3
+ 轻灵有多条「上网」路径。**先选对通道,再调用**,避免反爬挑战页被当成成功数据。
4
+
5
+ ## 决策树
6
+
7
+ ```
8
+ 需要外部数据?
9
+ ├─ 社交/内容平台(抖音、小红书、微博、B站、TikTok、X…)
10
+ │ → skill name="opencli"
11
+ │ → bash: opencli <site> … -f json
12
+ │ → 禁止 url_fetch / browser_* 当主路径
13
+
14
+ ├─ 普通 HTTPS API / 静态页
15
+ │ → url_fetch(Guard 白名单 / 私网拦截)
16
+
17
+ ├─ 文档站 / 弱反爬、需 JS 渲染摘要
18
+ │ → browser_fetch(Playwright 只读抓取)
19
+
20
+ ├─ 需要点击/填表等交互(实验)
21
+ │ → 优先 opencli browser <session> …
22
+ │ → 或启用 browser_act(QLING_BROWSER_ACT=1,默认关)
23
+
24
+ └─ 不确定
25
+ → opencli list / doctor;不要盲目重试 url_fetch
26
+ ```
27
+
28
+ ## 工具对照
29
+
30
+ | 工具 | 默认 | 能力 | 典型场景 |
31
+ |------|------|------|----------|
32
+ | **opencli**(via bash) | 本机已装则可用 | 站点适配器、登录会话、结构化 JSON | 抖/红/微/B/推 |
33
+ | **url_fetch** | 开 | HTTP + Guard | 公开 API、静态资源 |
34
+ | **browser_fetch** | 开 | 无头浏览、正文摘要 | 文档站 SPA |
35
+ | **browser_act** | **关** | goto/click/type/extract | 显式启用后的弱交互 |
36
+
37
+ ## browser_act 启用与跨步会话
38
+
39
+ ```powershell
40
+ # Windows PowerShell
41
+ $env:QLING_BROWSER_ACT = "1"
42
+ ```
43
+
44
+ **推荐流程(同 session 保活页面)**:
45
+
46
+ ```text
47
+ browser_act action=open session=demo url="https://example.com"
48
+ browser_act action=click session=demo selector="a.docs"
49
+ browser_act action=extract session=demo
50
+ browser_act action=close session=demo
51
+ browser_act action=status
52
+ ```
53
+
54
+ - `session` 默认 `default`;进程内保活,跨多次 tool 调用
55
+ - 空闲超时默认 10 分钟:`QLING_BROWSER_ACT_IDLE_TTL_MS`
56
+ - 最大会话数默认 3:`QLING_BROWSER_ACT_MAX_SESSIONS`
57
+ - 与 `url_fetch` **共用网络 Guard**;**Plan Mode 禁止**
58
+ - 强反爬平台仍应 **opencli**,不要靠 browser_act 硬抠
59
+
60
+ ## 失败诚实
61
+
62
+ | 现象 | 含义 | 动作 |
63
+ |------|------|------|
64
+ | HTML 含 `_$jsvmprt` / `acrawler` | 反爬挑战页 | 换 opencli 站点命令 + 登录 |
65
+ | `BROWSER_ACT_DISABLED` | 未开启交互 | 开 env 或改 opencli browser |
66
+ | Guard deny | 策略拦截 | 检查网络模式 / 白名单 |
67
+
68
+ ## 使命通道通知(Phase 3.5)
69
+
70
+ | 变量 | 默认 | 说明 |
71
+ |------|------|------|
72
+ | `QLING_MISSION_NOTIFY` | on | 总开关 |
73
+ | `QLING_MISSION_NOTIFY_STYLE` | rich | rich=TG HTML / Slack Blocks;plain=纯文本 |
74
+ | `QLING_MISSION_NOTIFY_LOGS` | milestone | off / milestone / all — 日志推送粒度 |
75
+ | `QLING_CHANNEL_TELEGRAM_TOKEN` + chat ids | — | Telegram |
76
+ | `QLING_CHANNEL_SLACK_BOT_TOKEN` + channel ids | — | Slack |
77
+
78
+ `qling doctor` 会摘要 browser_act / parallel / notify 开关。
79
+
80
+ ## 相关
81
+
82
+ - Skill:`skills/opencli/SKILL.md`
83
+ - 沙箱/网络:`docs/docker.md`、环境变量 `QLING_GUARD_*`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qlingzzy/qling",
3
- "version": "1.0.0",
3
+ "version": "1.1.1",
4
4
  "description": "轻灵 Qling - 本地优先的中文 AI Agent CLI 工作台 / Local-first Chinese AI Agent CLI workbench",
5
5
  "type": "module",
6
6
  "main": "./dist/sdk.js",
@@ -32,7 +32,8 @@
32
32
  "docs/sdk.md",
33
33
  "docs/skills.md",
34
34
  "docs/install.md",
35
- "docs/docker.md"
35
+ "docs/docker.md",
36
+ "docs/web-routing.md"
36
37
  ],
37
38
  "engines": {
38
39
  "node": ">=18"
@@ -77,12 +78,17 @@
77
78
  "bootstrap": "node scripts/bootstrap.mjs",
78
79
  "daemon": "node dist/daemon.js",
79
80
  "prepare": "npm run build",
80
- "prepack": "npm run build",
81
81
  "dev": "tsc --watch",
82
82
  "test": "npm run build && node --experimental-test-module-mocks --test \"tests/unit/**/*.test.mjs\"",
83
83
  "test:smoke": "npm run build && node --test \"tests/smoke/**/*.test.mjs\"",
84
84
  "eval:smoke": "npm run build && node scripts/eval-smoke.mjs",
85
- "ci:check": "npm run build && node --experimental-test-module-mocks --test \"tests/unit/**/*.test.mjs\" && node --test \"tests/smoke/**/*.test.mjs\" && node scripts/eval-smoke.mjs"
85
+ "eval:recovery": "npm run build && node scripts/eval-recovery.mjs",
86
+ "eval:tasks": "npm run build && node scripts/eval-tasks.mjs",
87
+ "eval:llm": "npm run build && node scripts/eval-llm.mjs",
88
+ "validate:packaging": "node scripts/validate-packaging.mjs",
89
+ "dep:layers": "node scripts/dep-layers.mjs",
90
+ "dep:layers:json": "node scripts/dep-layers.mjs --json",
91
+ "ci:check": "npm run build && node --experimental-test-module-mocks --test \"tests/unit/**/*.test.mjs\" && node --test \"tests/smoke/**/*.test.mjs\" && node scripts/eval-smoke.mjs && node scripts/eval-tasks.mjs && node scripts/validate-packaging.mjs"
86
92
  },
87
93
  "dependencies": {
88
94
  "axios": "^1.7.0",
@@ -93,6 +99,14 @@
93
99
  "yaml": "^2.8.1",
94
100
  "zod": "^3.23.0"
95
101
  },
102
+ "peerDependencies": {
103
+ "typescript": ">=5.0.0"
104
+ },
105
+ "peerDependenciesMeta": {
106
+ "typescript": {
107
+ "optional": true
108
+ }
109
+ },
96
110
  "devDependencies": {
97
111
  "@types/better-sqlite3": "^7.6.13",
98
112
  "@types/node": "^22.19.17",