@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.
- package/CHANGELOG.md +158 -0
- package/README.en.md +83 -18
- package/README.md +19 -9
- package/dist/agent/main-loop.d.ts +120 -0
- package/dist/agent/main-loop.d.ts.map +1 -0
- package/dist/agent/main-loop.js +279 -0
- package/dist/agent/subtask-parallel.d.ts +29 -0
- package/dist/agent/subtask-parallel.d.ts.map +1 -0
- package/dist/agent/subtask-parallel.js +107 -0
- package/dist/agent/subtask.d.ts +13 -0
- package/dist/agent/subtask.d.ts.map +1 -1
- package/dist/agent/subtask.js +79 -24
- package/dist/agent/system-prompt.d.ts +39 -0
- package/dist/agent/system-prompt.d.ts.map +1 -0
- package/dist/agent/system-prompt.js +89 -0
- package/dist/agent/tool-orchestrator.d.ts +66 -0
- package/dist/agent/tool-orchestrator.d.ts.map +1 -0
- package/dist/agent/tool-orchestrator.js +355 -0
- package/dist/agent-loop.d.ts +29 -16
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +262 -807
- package/dist/agents/roles.d.ts +57 -0
- package/dist/agents/roles.d.ts.map +1 -0
- package/dist/agents/roles.js +198 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +17 -3
- package/dist/commands/claude-style.d.ts.map +1 -1
- package/dist/commands/claude-style.js +19 -10
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +3 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +6 -0
- package/dist/commands/mode.d.ts +16 -0
- package/dist/commands/mode.d.ts.map +1 -0
- package/dist/commands/mode.js +67 -0
- package/dist/commands/recover.d.ts +3 -0
- package/dist/commands/recover.d.ts.map +1 -0
- package/dist/commands/recover.js +69 -0
- package/dist/commands/runtime.d.ts +2 -0
- package/dist/commands/runtime.d.ts.map +1 -1
- package/dist/commands/runtime.js +2 -0
- package/dist/commands/trace.d.ts +3 -0
- package/dist/commands/trace.d.ts.map +1 -0
- package/dist/commands/trace.js +45 -0
- package/dist/commands/verify.js +2 -2
- package/dist/config-report.d.ts +0 -1
- package/dist/config-report.d.ts.map +1 -1
- package/dist/config-report.js +1 -2
- package/dist/config.d.ts +0 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -1
- package/dist/context-report.d.ts +13 -7
- package/dist/context-report.d.ts.map +1 -1
- package/dist/context-report.js +64 -61
- package/dist/context-tool-hygiene.d.ts +36 -0
- package/dist/context-tool-hygiene.d.ts.map +1 -0
- package/dist/context-tool-hygiene.js +125 -0
- package/dist/dashboard/client.d.ts +2 -0
- package/dist/dashboard/client.d.ts.map +1 -0
- package/dist/dashboard/client.js +305 -0
- package/dist/dashboard/model.d.ts +13 -0
- package/dist/dashboard/model.d.ts.map +1 -0
- package/dist/dashboard/model.js +112 -0
- package/dist/dashboard/page.d.ts +3 -0
- package/dist/dashboard/page.d.ts.map +1 -0
- package/dist/dashboard/page.js +204 -0
- package/dist/dashboard/types.d.ts +63 -0
- package/dist/dashboard/types.d.ts.map +1 -0
- package/dist/dashboard/types.js +1 -0
- package/dist/dashboard-server.d.ts +24 -4
- package/dist/dashboard-server.d.ts.map +1 -1
- package/dist/dashboard-server.js +397 -302
- package/dist/discovery-registry.d.ts +17 -3
- package/dist/discovery-registry.d.ts.map +1 -1
- package/dist/discovery-registry.js +78 -3
- package/dist/doctor.d.ts +8 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +116 -0
- package/dist/eval/llm-tasks.d.ts +5 -0
- package/dist/eval/llm-tasks.d.ts.map +1 -0
- package/dist/eval/llm-tasks.js +125 -0
- package/dist/eval/repo-tasks.d.ts +12 -0
- package/dist/eval/repo-tasks.d.ts.map +1 -0
- package/dist/eval/repo-tasks.js +220 -0
- package/dist/eval/runner.d.ts +3 -1
- package/dist/eval/runner.d.ts.map +1 -1
- package/dist/eval/runner.js +23 -4
- package/dist/eval/tasks.d.ts.map +1 -1
- package/dist/eval/tasks.js +186 -0
- package/dist/eval/types.d.ts +8 -5
- package/dist/eval/types.d.ts.map +1 -1
- package/dist/execution/event-bus.d.ts +44 -0
- package/dist/execution/event-bus.d.ts.map +1 -0
- package/dist/execution/event-bus.js +76 -0
- package/dist/execution/failure-classifier.d.ts +11 -0
- package/dist/execution/failure-classifier.d.ts.map +1 -0
- package/dist/execution/failure-classifier.js +66 -0
- package/dist/execution/progress-detector.d.ts +3 -0
- package/dist/execution/progress-detector.d.ts.map +1 -0
- package/dist/execution/progress-detector.js +23 -0
- package/dist/execution/recovery-controller.d.ts +24 -0
- package/dist/execution/recovery-controller.d.ts.map +1 -0
- package/dist/execution/recovery-controller.js +114 -0
- package/dist/execution/recovery-messages.d.ts +24 -0
- package/dist/execution/recovery-messages.d.ts.map +1 -0
- package/dist/execution/recovery-messages.js +48 -0
- package/dist/execution/recovery-metrics.d.ts +16 -0
- package/dist/execution/recovery-metrics.d.ts.map +1 -0
- package/dist/execution/recovery-metrics.js +73 -0
- package/dist/execution/recovery-strategy-planner.d.ts +6 -0
- package/dist/execution/recovery-strategy-planner.d.ts.map +1 -0
- package/dist/execution/recovery-strategy-planner.js +24 -0
- package/dist/execution/run-trace-store.d.ts +29 -0
- package/dist/execution/run-trace-store.d.ts.map +1 -0
- package/dist/execution/run-trace-store.js +140 -0
- package/dist/execution/staged-verifier.d.ts +33 -0
- package/dist/execution/staged-verifier.d.ts.map +1 -0
- package/dist/execution/staged-verifier.js +39 -0
- package/dist/execution/types.d.ts +58 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +1 -0
- package/dist/execution/verification-loop.d.ts +58 -0
- package/dist/execution/verification-loop.d.ts.map +1 -0
- package/dist/execution/verification-loop.js +195 -0
- package/dist/execution/verification-stages.d.ts +17 -0
- package/dist/execution/verification-stages.d.ts.map +1 -0
- package/dist/execution/verification-stages.js +102 -0
- package/dist/help-topics.d.ts.map +1 -1
- package/dist/help-topics.js +11 -0
- package/dist/index.js +0 -8
- package/dist/lsp/ts-service.d.ts +36 -0
- package/dist/lsp/ts-service.d.ts.map +1 -0
- package/dist/lsp/ts-service.js +291 -0
- package/dist/memory/lifecycle.d.ts +19 -0
- package/dist/memory/lifecycle.d.ts.map +1 -0
- package/dist/memory/lifecycle.js +53 -0
- package/dist/memory.d.ts +0 -16
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +0 -36
- package/dist/metrics/collector.d.ts +7 -0
- package/dist/metrics/collector.d.ts.map +1 -1
- package/dist/metrics/collector.js +60 -0
- package/dist/mission/manager.d.ts +1 -0
- package/dist/mission/manager.d.ts.map +1 -1
- package/dist/mission/manager.js +9 -0
- package/dist/mission/progress-notify.d.ts +39 -0
- package/dist/mission/progress-notify.d.ts.map +1 -0
- package/dist/mission/progress-notify.js +386 -0
- package/dist/pipeline/hooks.d.ts +1 -1
- package/dist/pipeline/hooks.d.ts.map +1 -1
- package/dist/pipeline/hooks.js +1 -0
- package/dist/pipeline/sections.d.ts +8 -4
- package/dist/pipeline/sections.d.ts.map +1 -1
- package/dist/pipeline/sections.js +70 -27
- package/dist/pipeline/verification.d.ts +1 -0
- package/dist/pipeline/verification.d.ts.map +1 -1
- package/dist/pipeline/verification.js +10 -7
- package/dist/providers/llm-client.d.ts +38 -0
- package/dist/providers/llm-client.d.ts.map +1 -0
- package/dist/providers/llm-client.js +105 -0
- package/dist/sdk.d.ts +1 -0
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +1 -0
- package/dist/session/durable-session-supervisor.d.ts.map +1 -1
- package/dist/session/durable-session-supervisor.js +13 -6
- package/dist/session/session-persistence.d.ts +29 -0
- package/dist/session/session-persistence.d.ts.map +1 -0
- package/dist/session/session-persistence.js +45 -0
- package/dist/session/session-scheduler.d.ts +8 -1
- package/dist/session/session-scheduler.d.ts.map +1 -1
- package/dist/session/session-scheduler.js +33 -4
- package/dist/session-task-report.d.ts +1 -0
- package/dist/session-task-report.d.ts.map +1 -1
- package/dist/session-task-report.js +2 -1
- package/dist/shortcuts.d.ts.map +1 -1
- package/dist/shortcuts.js +1 -0
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +10 -0
- package/dist/skills/security-scan.d.ts +15 -0
- package/dist/skills/security-scan.d.ts.map +1 -0
- package/dist/skills/security-scan.js +95 -0
- package/dist/skills/types.d.ts +2 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/statusline.d.ts +3 -3
- package/dist/statusline.d.ts.map +1 -1
- package/dist/statusline.js +9 -17
- package/dist/token-usage.d.ts +27 -0
- package/dist/token-usage.d.ts.map +1 -0
- package/dist/token-usage.js +107 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +5 -3
- package/dist/tools/browser-act-session.d.ts +48 -0
- package/dist/tools/browser-act-session.d.ts.map +1 -0
- package/dist/tools/browser-act-session.js +168 -0
- package/dist/tools/browser-act.d.ts +14 -0
- package/dist/tools/browser-act.d.ts.map +1 -0
- package/dist/tools/browser-act.js +297 -0
- package/dist/tools/code-symbols.d.ts +35 -0
- package/dist/tools/code-symbols.d.ts.map +1 -0
- package/dist/tools/code-symbols.js +257 -0
- package/dist/tools/index.d.ts +4 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +22 -2
- package/dist/tools/lsp.d.ts +13 -0
- package/dist/tools/lsp.d.ts.map +1 -0
- package/dist/tools/lsp.js +136 -0
- package/dist/tools/patch.d.ts +5 -0
- package/dist/tools/patch.d.ts.map +1 -1
- package/dist/tools/patch.js +25 -4
- package/dist/tools/search.d.ts +7 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +20 -3
- package/dist/tools/skill.d.ts +2 -0
- package/dist/tools/skill.d.ts.map +1 -1
- package/dist/tools/skill.js +47 -14
- package/dist/tools/subtask.d.ts +3 -1
- package/dist/tools/subtask.d.ts.map +1 -1
- package/dist/tools/subtask.js +151 -56
- package/dist/tui/shell.d.ts +12 -0
- package/dist/tui/shell.d.ts.map +1 -1
- package/dist/tui/shell.js +36 -3
- package/dist/tui/streaming-repl.d.ts +1 -0
- package/dist/tui/streaming-repl.d.ts.map +1 -1
- package/dist/tui/streaming-repl.js +27 -4
- package/dist/tui/streaming-tui.d.ts +10 -0
- package/dist/tui/streaming-tui.d.ts.map +1 -1
- package/dist/tui/streaming-tui.js +70 -12
- package/dist/types.d.ts +0 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/workflow-runtime.d.ts.map +1 -1
- package/dist/workflow-runtime.js +10 -2
- package/dist/workflow-types.d.ts +2 -0
- package/dist/workflow-types.d.ts.map +1 -1
- package/docs/install.md +46 -12
- package/docs/skills.md +56 -7
- package/docs/web-routing.md +83 -0
- package/package.json +18 -4
- package/scripts/dep-layers.mjs +275 -0
- package/scripts/eval-llm.mjs +27 -0
- package/scripts/eval-recovery.mjs +101 -0
- package/scripts/eval-tasks.mjs +20 -0
- package/scripts/validate-packaging.mjs +57 -0
- package/skills/examples/README.md +23 -0
- package/skills/examples/add-function/SKILL.md +31 -0
- package/skills/examples/fix-failing-test/SKILL.md +32 -0
- package/skills/examples/pr-summary/SKILL.md +34 -0
- package/skills/lifecycle-build/SKILL.md +22 -0
- package/skills/lifecycle-plan/SKILL.md +32 -0
- package/skills/lifecycle-review/SKILL.md +25 -0
- package/skills/lifecycle-ship/SKILL.md +22 -0
- package/skills/lifecycle-spec/SKILL.md +24 -0
- package/skills/lifecycle-test/SKILL.md +21 -0
- package/skills/opencli/SKILL.md +222 -0
- 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 {
|
|
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
|
-
|
|
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
|
|
1035
|
-
|
|
1036
|
-
|
|
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("☑
|
|
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 {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;KACjF,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,cAAc,EAAE,CAAC;IAExB,
|
|
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,
|
|
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"}
|
package/dist/workflow-runtime.js
CHANGED
|
@@ -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
|
-
|
|
51
|
-
|
|
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();
|
package/dist/workflow-types.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
106
|
+
1.1.1 的 npm tarball **已填真实 SHA256**(见 manifest `hash`)。仍未进官方 Scoop bucket:需自建 bucket 或社区 bucket PR。
|
|
81
107
|
|
|
82
108
|
```powershell
|
|
83
|
-
#
|
|
109
|
+
# 私有 bucket 放入 packaging/scoop/qling.json 后可试装
|
|
110
|
+
# 若 shim 不理想,post_install 会提示改用 npm 全局安装
|
|
84
111
|
scoop install qling
|
|
85
112
|
```
|
|
86
113
|
|
|
87
|
-
|
|
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.
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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.
|
|
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
|
-
"
|
|
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",
|