@kodax-ai/kodax 0.7.97-alpha.9 → 0.7.97-beta.2
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 +393 -0
- package/README.md +170 -29
- package/README_CN.md +116 -17
- package/config-templates/config.example.jsonc +2 -3
- package/dist/artifacts/skills/artifact-review/SKILL.md +44 -7
- package/dist/builtin/code-review/SKILL.md +5 -17
- package/dist/builtin/git-workflow/SKILL.md +9 -8
- package/dist/builtin/skill-creator/SKILL.md +38 -108
- package/dist/builtin/skill-creator/references/evaluation.md +50 -0
- package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +2 -0
- package/dist/builtin/skill-creator/scripts/analyze-benchmark.js +6 -3
- package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +2 -0
- package/dist/builtin/skill-creator/scripts/compare-runs.js +6 -3
- package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +2 -0
- package/dist/builtin/skill-creator/scripts/grade-evals.js +6 -3
- package/dist/builtin/skill-creator/scripts/run-eval.js +3 -3
- package/dist/builtin/skill-creator/scripts/run-loop.js +2 -1
- package/dist/builtin/skill-creator/scripts/run-trigger-eval.d.ts +2 -0
- package/dist/builtin/skill-creator/scripts/run-trigger-eval.js +3 -1
- package/dist/builtin/skill-creator/scripts/utils.d.ts +1 -1
- package/dist/builtin/skill-creator/scripts/utils.js +8 -0
- package/dist/builtin/tdd/SKILL.md +24 -40
- package/dist/builtin/visual-review/SKILL.md +7 -3
- package/dist/chunks/agent-DS7M57WD.js +2 -0
- package/dist/chunks/agent-adapter-TLWGGK3V.js +2 -0
- package/dist/chunks/argument-completer-OGCXKTRQ.js +2 -0
- package/dist/chunks/bedrock-native-Z5VNWF5U.js +4 -0
- package/dist/chunks/cell-LV7MNPNQ.js +2 -0
- package/dist/chunks/chunk-2HH5AS7E.js +1157 -0
- package/dist/chunks/chunk-3CP7AUWY.js +2 -0
- package/dist/chunks/chunk-45ZP2YHG.js +2 -0
- package/dist/chunks/chunk-4Y6U7AH4.js +9 -0
- package/dist/chunks/chunk-52EN2777.js +2 -0
- package/dist/chunks/{chunk-HXCY52Z2.js → chunk-53CJDQS2.js} +1 -1
- package/dist/chunks/{chunk-JNB2FL6P.js → chunk-5MUVRFMU.js} +1 -1
- package/dist/chunks/chunk-65652LR4.js +2 -0
- package/dist/chunks/chunk-6TITQQAI.js +351 -0
- package/dist/chunks/chunk-AGUM5SWX.js +2 -0
- package/dist/chunks/chunk-BBZWF2EA.js +2 -0
- package/dist/chunks/chunk-C6JGLEYD.js +2 -0
- package/dist/chunks/chunk-D36OIMV7.js +142 -0
- package/dist/chunks/chunk-D425EZGC.js +2 -0
- package/dist/chunks/chunk-D5OW7UD5.js +2 -0
- package/dist/chunks/chunk-DCE7XQUG.js +2 -0
- package/dist/chunks/chunk-DV5YPYLW.js +10 -0
- package/dist/chunks/chunk-EISRVOBJ.js +4 -0
- package/dist/chunks/chunk-EPK6EWRI.js +12 -0
- package/dist/chunks/chunk-F6GJXQNA.js +29 -0
- package/dist/chunks/chunk-GJXOTOZB.js +465 -0
- package/dist/chunks/chunk-GZUWQZJD.js +2 -0
- package/dist/chunks/chunk-I325ER7D.js +2 -0
- package/dist/chunks/chunk-ISLK6R2P.js +2 -0
- package/dist/chunks/chunk-J2L2NK6E.js +366 -0
- package/dist/chunks/chunk-JAF2YLZO.js +14 -0
- package/dist/chunks/chunk-KDLOPBFZ.js +2 -0
- package/dist/chunks/chunk-KDSO7V4O.js +5 -0
- package/dist/chunks/chunk-KE2NBMAP.js +20 -0
- package/dist/chunks/chunk-MCDZNQWD.js +634 -0
- package/dist/chunks/chunk-NSR4RW2F.js +3 -0
- package/dist/chunks/chunk-OGTRDK4Q.js +359 -0
- package/dist/chunks/chunk-P55RJIOG.js +18 -0
- package/dist/chunks/chunk-P7OJRV5Z.js +2 -0
- package/dist/chunks/chunk-QP47JIWP.js +3 -0
- package/dist/chunks/chunk-QSZCR5GC.js +190 -0
- package/dist/chunks/chunk-R2HTPDI7.js +2 -0
- package/dist/chunks/chunk-R42S4BLA.js +2 -0
- package/dist/chunks/chunk-RYBUYHDL.js +5 -0
- package/dist/chunks/chunk-SDPZFH6M.js +4 -0
- package/dist/chunks/chunk-SK3RRGHJ.js +142 -0
- package/dist/chunks/chunk-TQ475LOI.js +2 -0
- package/dist/chunks/chunk-UF3GZ5PO.js +2 -0
- package/dist/chunks/chunk-UL6YIT4M.js +2 -0
- package/dist/chunks/chunk-V2XJSFFE.js +19 -0
- package/dist/chunks/chunk-V4WSBIXB.js +2 -0
- package/dist/chunks/chunk-V5RCDBKU.js +2 -0
- package/dist/chunks/{chunk-FX4R5PB3.js → chunk-W2CWO4PQ.js} +1 -1
- package/dist/chunks/chunk-W33QJA3M.js +2 -0
- package/dist/chunks/chunk-WMMESRP3.js +9 -0
- package/dist/chunks/chunk-WWPVEK6B.js +127 -0
- package/dist/chunks/chunk-X5M7TLJV.js +2 -0
- package/dist/chunks/chunk-XDMNJW6J.js +42 -0
- package/dist/chunks/{chunk-L22BDZGE.js → chunk-XZSFUGPN.js} +1 -1
- package/dist/chunks/client-LTIFNED5.js +2 -0
- package/dist/chunks/compaction-config-ECMOFP5H.js +2 -0
- package/dist/chunks/{construction-bootstrap-XBHM6NON.js → construction-bootstrap-OAZKGI5Y.js} +1 -1
- package/dist/chunks/devtools-MVOFT6N7.js +2 -0
- package/dist/chunks/devtools-TXYDDL2A.js +2 -0
- package/dist/chunks/dist-5J53DGAO.js +2 -0
- package/dist/chunks/errors-ER7ZRPWC.js +2 -0
- package/dist/chunks/google-native-WLL27OV7.js +2 -0
- package/dist/chunks/host-65E5NM5P.js +2 -0
- package/dist/chunks/mistral-native-JXPIDDYZ.js +5 -0
- package/dist/chunks/model-DZF6URW3.js +2 -0
- package/dist/chunks/permission-YVVMLQ5I.js +2 -0
- package/dist/chunks/pi-messages-5LLOZH57.js +16 -0
- package/dist/chunks/readline-helpers-UZXWBRXQ.js +2 -0
- package/dist/chunks/responses-websocket-Y4N5GXD3.js +2 -0
- package/dist/chunks/run-manager-ZFACIZM2.js +2 -0
- package/dist/chunks/running-session-Q5Y6A2QV.js +2 -0
- package/dist/chunks/skills-TJP6BLZJ.js +2 -0
- package/dist/chunks/tool-dispatch-MLM3QTSU.js +2 -0
- package/dist/chunks/utils-2QNMYRGA.js +2 -0
- package/dist/generated-config-templates.json +6 -0
- package/dist/index.d.ts +34 -32
- package/dist/index.js +6 -6
- package/dist/kodax_bootstrap.js +4 -2
- package/dist/kodax_cli.js +1755 -2979
- package/dist/kodax_doctor.js +3 -0
- package/dist/kodax_resume.js +30 -30
- package/dist/manual-topics.json +2211 -0
- package/dist/native/darwin-arm64/kodax-text-transaction.node +0 -0
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
- package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/one-shot-task.js +2 -0
- package/dist/provider-auth-cli.js +16 -0
- package/dist/provider-capabilities.json +560 -40
- package/dist/runtime-daemon-schema.json +1 -0
- package/dist/sandbox-network-broker.js +260 -795
- package/dist/script-cell.js +1 -0
- package/dist/script-worker.cjs +2189 -0
- package/dist/sdk-a2a.d.ts +23 -22
- package/dist/sdk-a2a.js +6 -8
- package/dist/sdk-agent.d.ts +125 -98
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-client.d.ts +16 -10
- package/dist/sdk-client.js +1 -1
- package/dist/sdk-coding.d.ts +109 -80
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +3 -3
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +265 -14
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.d.ts +3 -3
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +41 -166
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +81 -51
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +216 -2989
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +15 -14
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.d.ts +2 -2
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +121 -75
- package/dist/static-text.json +371 -0
- package/dist/storage-repair-cli.js +3 -0
- package/dist/types-chunks/auth-file.d-ovsHEqD4.d.ts +178 -0
- package/dist/types-chunks/{bash-prefix-extractor.d-DFH463j2.d.ts → bash-prefix-extractor.d-CJliu5-D.d.ts} +326 -168
- package/dist/types-chunks/{capability-learning.d-B4pxKwP4.d.ts → capability-learning.d-BXDEOON2.d.ts} +4 -4
- package/dist/types-chunks/{capability.d-DOF3r0fJ.d.ts → capability.d-DapzKxy3.d.ts} +1 -1
- package/dist/types-chunks/{capsule.d-CwpmHGFB.d.ts → capsule.d-EMwSALqK.d.ts} +5 -5
- package/dist/types-chunks/{client-contract-CRm9ZpL2.d.ts → client-contract-B7q69yMA.d.ts} +265 -67
- package/dist/types-chunks/{controller.d-B4GyqWri.d.ts → controller.d-C0SAuNKu.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-P3H97ddz.d.ts → controller.d-D-hPLKaA.d.ts} +71 -11
- package/dist/types-chunks/{cost-tracker.d-BeaenODW.d.ts → cost-tracker.d-D1CTx-IO.d.ts} +37 -7
- package/dist/types-chunks/{base.d-ZBOdjDUT.d.ts → errors.d-D73qdYbS.d.ts} +91 -74
- package/dist/types-chunks/{history-retrieval.d-BzKWDjzG.d.ts → history-retrieval.d-BwEUR9cb.d.ts} +2 -2
- package/dist/types-chunks/{manager.d-C8OlTe2J.d.ts → manager.d-BMH8Q6TV.d.ts} +1 -1
- package/dist/types-chunks/{manifest.d-COreAnXG.d.ts → manifest.d-YE3-AIeO.d.ts} +1 -1
- package/dist/types-chunks/{provider-credential-context.d-BH2OaB1b.d.ts → provider-credential-context.d-Dw-sWcnu.d.ts} +11 -2
- package/dist/types-chunks/{provider-request-observation.d-C_bEqr4m.d.ts → provider-request-observation.d-CNe9vse3.d.ts} +4 -2
- package/dist/types-chunks/{public-api.d-BLmqDi73.d.ts → public-api.d-BhDU643p.d.ts} +13 -10
- package/dist/types-chunks/queue-BxQhqhFM.d.ts +166 -0
- package/dist/types-chunks/{resolver.d-DLY01RHx.d.ts → resolver.d-DrkpD8wY.d.ts} +142 -103
- package/dist/types-chunks/{review-inbox.d-BTLDdpG2.d.ts → review-inbox.d-Bgt46S7L.d.ts} +16 -3
- package/dist/types-chunks/{review-packet.d-Crra1Q7t.d.ts → review-packet.d-ChOfJaNI.d.ts} +7 -7
- package/dist/types-chunks/{run-manager.d-DmS1edk4.d.ts → run-manager.d-ChzguipG.d.ts} +48 -12
- package/dist/types-chunks/{runtime-client-info-BBBxdU8V.d.ts → runtime-client-info-P_mRDG7j.d.ts} +93 -7
- package/dist/types-chunks/runtime-event-BW5Pla7a.d.ts +48 -0
- package/dist/types-chunks/sdk-runtime-cDe7qmN3.d.ts +2244 -0
- package/dist/types-chunks/{sdk-session-DipY_CCd.d.ts → sdk-session-D3pcSbnA.d.ts} +13 -4
- package/dist/types-chunks/{sdk-skills-DokfOoJF.d.ts → sdk-skills-C-UA1A6I.d.ts} +3 -1
- package/dist/types-chunks/{side-query.d-DTrhVd_r.d.ts → side-query.d-UFKdWSw7.d.ts} +4 -4
- package/dist/types-chunks/{types.d-Jxj49rqO.d.ts → skill-invocation-error.d-gsNNDnnt.d.ts} +24 -14
- package/dist/types-chunks/task-results.d-XMdWq0eA.d.ts +15 -0
- package/dist/types-chunks/{trusted-repl-entry-B1cb7lAn.d.ts → trusted-repl-entry-Bbkd2HlO.d.ts} +10 -10
- package/dist/types-chunks/{types.d-BjOq57-z.d.ts → types.d-Bi8iUd6x.d.ts} +248 -4
- package/dist/types-chunks/{types.d-NyCB6ztO.d.ts → types.d-BlXTogOo.d.ts} +24 -13
- package/dist/types-chunks/types.d-BvEGNdN-.d.ts +131 -0
- package/dist/types-chunks/{types.d-Cb8RdrjU.d.ts → types.d-D8qQjMeo.d.ts} +5 -1
- package/dist/types-chunks/{utils.d-Bt6USYa5.d.ts → utils.d-CxHyBvO6.d.ts} +11 -7
- package/dist/windows-native-scripts.json +5 -0
- package/docs/ARTIFACT_SDK.md +8 -0
- package/docs/CLIENT_CONTRACT.md +195 -9
- package/docs/SDK_MIGRATION.md +887 -2
- package/docs/SPACE_SDK_SEAMS.md +255 -2
- package/package.json +33 -6
- package/public_docs/README.md +27 -2
- package/public_docs/configuration/config-files.md +6 -0
- package/public_docs/configuration/custom-providers.md +62 -0
- package/public_docs/configuration/providers.md +238 -3
- package/public_docs/configuration/sandbox.md +30 -0
- package/public_docs/getting-started/quickstart.md +10 -1
- package/public_docs/sdk/embedder-guide.md +476 -206
- package/dist/chunks/agent-C7MMIRIH.js +0 -2
- package/dist/chunks/argument-completer-WIQAV5GP.js +0 -2
- package/dist/chunks/chunk-2AM3FRQ7.js +0 -137
- package/dist/chunks/chunk-2TBKGO2Q.js +0 -497
- package/dist/chunks/chunk-35P7QL2Q.js +0 -2
- package/dist/chunks/chunk-5DQTOU2E.js +0 -69
- package/dist/chunks/chunk-7NH5BGE4.js +0 -350
- package/dist/chunks/chunk-AWYO4MH3.js +0 -635
- package/dist/chunks/chunk-CIPS75XZ.js +0 -260
- package/dist/chunks/chunk-CRQWSDHV.js +0 -429
- package/dist/chunks/chunk-HD5BDOPC.js +0 -2
- package/dist/chunks/chunk-JXZMES45.js +0 -12
- package/dist/chunks/chunk-KJSZTP5N.js +0 -2
- package/dist/chunks/chunk-KYHMB6XR.js +0 -431
- package/dist/chunks/chunk-ONUPGMER.js +0 -2
- package/dist/chunks/chunk-P42PHZWC.js +0 -351
- package/dist/chunks/chunk-SHG3EIH5.js +0 -19
- package/dist/chunks/chunk-UH6VOCVP.js +0 -2
- package/dist/chunks/chunk-V26LAWJY.js +0 -2
- package/dist/chunks/chunk-WOHHMGEF.js +0 -394
- package/dist/chunks/chunk-WONYJBAA.js +0 -2
- package/dist/chunks/chunk-XJWNIFC2.js +0 -298
- package/dist/chunks/chunk-XMWTEVFZ.js +0 -1481
- package/dist/chunks/chunk-YJTIPSNW.js +0 -22
- package/dist/chunks/chunk-YVBBU6K5.js +0 -5
- package/dist/chunks/client-XFASU74S.js +0 -2
- package/dist/chunks/compaction-config-JZNGDKWW.js +0 -2
- package/dist/chunks/devtools-CD6KSIHE.js +0 -2
- package/dist/chunks/devtools-XR5F2C6T.js +0 -2
- package/dist/chunks/dist-M4HLQAX7.js +0 -2
- package/dist/chunks/dist-ZLR4OTDD.js +0 -2
- package/dist/chunks/host-EHVJWNGS.js +0 -2
- package/dist/chunks/readline-helpers-KIDMSK76.js +0 -2
- package/dist/chunks/run-manager-HNGIYMG7.js +0 -2
- package/dist/chunks/tool-dispatch-ON33NJR5.js +0 -2
- package/dist/chunks/utils-RHR6YHB2.js +0 -2
|
@@ -1,16 +1,53 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: artifact-review
|
|
3
|
-
description:
|
|
3
|
+
description: Use already registered Artifact tools to create/edit PPTX or render and inspect supported PPTX, PDF, DOCX and image artifacts. Apply this adapter when the task uses artifact_* tools; use visual-review for general visual methods, websites, video or unsupported formats.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
# Artifact tool adapter
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
## Available tools and preparation
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Use the current registered tool catalog and artifact_capabilities. When runtime
|
|
11
|
+
preparation is needed, use artifact_prepare within the task's existing authorization
|
|
12
|
+
and normal managed Host permissions. If preparation is denied or unavailable,
|
|
13
|
+
report the affected scope as unverified and continue useful checks. Installation
|
|
14
|
+
outside that managed mechanism needs separate authorization. Missing tools do not
|
|
15
|
+
authorize registering a new adapter, expanding access or inventing a tool result.
|
|
11
16
|
|
|
12
|
-
Use
|
|
17
|
+
Use visual-review for the general evidence method. This Skill supplies Artifact
|
|
18
|
+
parameters and format limits; avoid repeating a second full review process.
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
## Author and edit
|
|
15
21
|
|
|
16
|
-
|
|
22
|
+
Use artifact_create/open/edit/export for supported PPTX work. Geometry is in inches;
|
|
23
|
+
edits require object IDs and the current sourceHash. Output is a new file. Respect
|
|
24
|
+
review-only requests. Use artifact_open to establish actual format and source identity.
|
|
25
|
+
|
|
26
|
+
## Render and inspect
|
|
27
|
+
|
|
28
|
+
artifact_render supports PPTX/PDF/DOCX pages and PNG/JPEG/WebP/SVG pixels. Inspect
|
|
29
|
+
actual returned images, at most four pages per batch. `ready` means evidence is
|
|
30
|
+
prepared, never visual approval. Check clipping, overlap, missing resources,
|
|
31
|
+
alignment and legibility. After edits, render the new source; old evidence cannot
|
|
32
|
+
approve a new revision. Report source hash, actual coverage and unverified scope.
|
|
33
|
+
|
|
34
|
+
artifact_read_evidence validates source/dependencies, raster provenance, hash and
|
|
35
|
+
geometry before returning PNG evidence. artifact_capture uses kind-matched locators:
|
|
36
|
+
static region; paginated page; interactive target/state/viewport/sequence; temporal
|
|
37
|
+
time. A receipt or image path does not establish that pixels were inspected.
|
|
38
|
+
|
|
39
|
+
## Limits and fallback
|
|
40
|
+
|
|
41
|
+
Lightweight rendering uses compatible Chromium, not PowerPoint or LibreOffice.
|
|
42
|
+
DOCX lightweight pagination remains unverified for Word/WPS fidelity. Native PDF
|
|
43
|
+
retains each page's dimensions and rotation. Missing fonts/resources and unsupported
|
|
44
|
+
objects remain unverified for affected requirements; optional static conversion
|
|
45
|
+
cannot verify animation or transitions.
|
|
46
|
+
|
|
47
|
+
Local HTML capture supports loaded state and sequence 0 at the requested viewport.
|
|
48
|
+
Native/live surfaces need their existing authorized owner. SVG temporal capture
|
|
49
|
+
samples actual SMIL seconds, not CSS/script animation. Spreadsheet native display
|
|
50
|
+
and calculation, video/GIF/audio, EPUB and 3D/CAD are unsupported by this default
|
|
51
|
+
adapter. Use existing authorized tools when available; report the exact remaining
|
|
52
|
+
gap without fabricating states or continuous coverage. Keep normal sandbox,
|
|
53
|
+
cancellation and settlement; no verifier daemon or separate completion API.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: code-review
|
|
3
3
|
description: 审查代码、diff、提交或当前 git 改动,重点发现 bug、行为回归、边界条件遗漏、安全风险、性能问题和缺失测试。当用户提到 code review、review 这段代码、帮我看看改动有没有问题、审查 PR/提交时使用;不要用于单纯解释代码或直接实现需求。
|
|
4
4
|
user-invocable: true
|
|
5
|
-
allowed-tools: "Read, Grep, Glob, Bash(npm
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Bash(git status, git status *, git diff, git diff *, git log, git log *, git show, git show *, git ls-files, git ls-files *, git rev-parse, git rev-parse *, git ls-tree, git ls-tree *, git blame, git blame *, git cat-file *, npm *, node *, npx *)"
|
|
6
6
|
argument-hint: "[file-or-directory]"
|
|
7
7
|
compatibility: "Works best in a git repository or when the review target is provided explicitly."
|
|
8
8
|
---
|
|
@@ -14,8 +14,10 @@ compatibility: "Works best in a git repository or when the review target is prov
|
|
|
14
14
|
## 范围判定
|
|
15
15
|
|
|
16
16
|
- 如果提供了 `$ARGUMENTS`,审查对应文件、目录、diff 或提交范围。
|
|
17
|
-
-
|
|
17
|
+
- 如果没有提供参数,先用 git status 清点任务相关的已暂存、未暂存与未跟踪文件,分别读取 staged/unstaged diff,并用 Read 检查相关未跟踪文件。一次 git diff 不代表审完全部改动。
|
|
18
|
+
- PR/提交范围使用明确基线,只审该范围,不混入当前工作区的无关修改;不在仓库且没有目标时才补齐范围。
|
|
18
19
|
- 在下结论前,尽量查看相邻实现、调用方、测试和相关配置,避免脱离上下文的误报。
|
|
20
|
+
- review-only 只报告,不编辑实现或暂存文件。测试前查看脚本副作用,沿用宿主授权;不为审查自动运行安装、--fix 或破坏性 Git 命令。
|
|
19
21
|
|
|
20
22
|
## 审查重点
|
|
21
23
|
|
|
@@ -39,23 +41,9 @@ compatibility: "Works best in a git repository or when the review target is prov
|
|
|
39
41
|
- 具体文件和行号
|
|
40
42
|
- 为什么这是问题,可能造成什么影响
|
|
41
43
|
- 建议的修复方向
|
|
42
|
-
- 如果没有发现值得报告的问题,明确写 `No findings
|
|
44
|
+
- 如果没有发现值得报告的问题,明确写 `No findings.`,并说明实际覆盖和未验证范围;不能暗示未运行的测试已通过。
|
|
43
45
|
- 需要时再追加 `## Open Questions` 或 `## Change Summary`,但不要用总体打分或“亮点”冲淡问题。
|
|
44
46
|
|
|
45
|
-
## 输出模板
|
|
46
|
-
|
|
47
|
-
```markdown
|
|
48
|
-
## Findings
|
|
49
|
-
- [High] Title — `path/to/file.ts:42`
|
|
50
|
-
Why it matters and what to change.
|
|
51
|
-
|
|
52
|
-
## Open Questions
|
|
53
|
-
- Optional clarification or assumption.
|
|
54
|
-
|
|
55
|
-
## Change Summary
|
|
56
|
-
- Optional short summary only after findings.
|
|
57
|
-
```
|
|
58
|
-
|
|
59
47
|
## 使用示例
|
|
60
48
|
|
|
61
49
|
- `/code-review src/auth.ts` - 审查单个文件
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
name: git-workflow
|
|
3
3
|
description: 执行明确的 Git 操作,例如查看状态、提交、建分支、push、stash 或创建 PR。只有在用户明确要求实际执行这些 Git 操作时才使用;不要用于单纯解释 Git 概念或讨论策略。
|
|
4
4
|
user-invocable: true
|
|
5
|
-
|
|
6
|
-
allowed-tools: "Read, Grep, Glob, Bash(git:*, gh:*)"
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Bash(git *, gh *, node *)"
|
|
7
6
|
argument-hint: "[status|commit|branch|push|pr|stash] [args]"
|
|
8
|
-
compatibility: "Requires
|
|
7
|
+
compatibility: "Requires Git for local operations. Remote actions use an available, authorized hosting tool and the repository's authentication rules."
|
|
9
8
|
---
|
|
10
9
|
|
|
11
10
|
# Git Workflow Skill
|
|
@@ -15,8 +14,8 @@ compatibility: "Requires a Git repository. Pull request creation works best when
|
|
|
15
14
|
## 总流程
|
|
16
15
|
|
|
17
16
|
1. 先检查仓库状态,例如 `git status --short --branch`,必要时补充 `git diff --stat`、`git diff --cached`、`git log --oneline`。
|
|
18
|
-
2.
|
|
19
|
-
3.
|
|
17
|
+
2. 从自然语言或参数确定操作类型与文件范围;沿用当前会话已有的授权,明确的 commit/push 请求直接推进。
|
|
18
|
+
3. 历史改写、强推或删除须有对应授权;普通已授权提交和推送不重复确认。宿主授权与执行策略始终生效。
|
|
20
19
|
4. 所有 Git 命令都使用非交互方式执行。
|
|
21
20
|
|
|
22
21
|
## 支持的操作
|
|
@@ -41,7 +40,7 @@ compatibility: "Requires a Git repository. Pull request creation works best when
|
|
|
41
40
|
|
|
42
41
|
### branch
|
|
43
42
|
- `create` / `new`: 创建新分支。除非用户指定,否则遵循仓库已有命名风格。
|
|
44
|
-
- `switch` / `checkout`:
|
|
43
|
+
- `switch` / `checkout`: 先检查工作区;只有会覆盖或混入当前改动时才处理冲突,保留无关修改。
|
|
45
44
|
- `list`: 列出本地/远程分支,并在有帮助时指出当前分支。
|
|
46
45
|
- `delete` / `remove`: 仅在删除条件安全且用户请求明确时执行。
|
|
47
46
|
|
|
@@ -53,7 +52,9 @@ compatibility: "Requires a Git repository. Pull request creation works best when
|
|
|
53
52
|
### pr
|
|
54
53
|
- 检查当前分支是否已 push,必要时先推送。
|
|
55
54
|
- 基于 diff 和提交历史生成简洁的 PR 标题与描述。
|
|
56
|
-
-
|
|
55
|
+
- 使用当前宿主和 Skill 策略允许的、已经授权的 Git 托管连接器、CLI 或 API;遵守仓库认证约定,不回显凭据、不主动切换认证或交互登录。
|
|
56
|
+
- 没有可用的 `gh` 时,声明允许经 Node 调用托管 API;仅为当前已授权的 Git 操作使用现有凭据,仍通过普通 Host 授权与沙箱。不要假定任意连接器工具都已被当前 Skill 策略放行。
|
|
57
|
+
- `gh` 可用时可用 `gh pr create`,但它不是所有宿主的前提。没有允许的创建路径时,保留已完成的提交与推送,说明缺少的能力。
|
|
57
58
|
|
|
58
59
|
### stash
|
|
59
60
|
- `save`: 有上下文时附带说明性消息。
|
|
@@ -65,7 +66,7 @@ compatibility: "Requires a Git repository. Pull request creation works best when
|
|
|
65
66
|
|
|
66
67
|
- 不要使用 `git reset --hard`、`git checkout --`、`git clean -fd`、`git commit --amend`、强推、历史改写等危险操作,除非用户明确要求。
|
|
67
68
|
- 不要回滚、覆盖或丢弃用户的无关改动。
|
|
68
|
-
-
|
|
69
|
+
- 按实际操作处理冲突、无 upstream 或权限不足;脏工作区及缺少 `gh` 本身不阻塞所有 Git 任务。
|
|
69
70
|
- 对“合并分支”“rebase”“cherry-pick”等这里没有明确定义的操作,如果用户明确提出,可以按 Git 最佳实践执行,但要先说明风险和计划。
|
|
70
71
|
|
|
71
72
|
## 汇报方式
|
|
@@ -1,127 +1,57 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-creator
|
|
3
|
-
description:
|
|
3
|
+
description: 创建、修改、迁移、验证或打包 Skill,或优化其描述与评测时使用;也用于把已有工作流沉淀成可反复调用的代理能力。不用于普通一次性写作、代码实现或仅使用某项既有 Skill 完成业务任务。
|
|
4
4
|
user-invocable: true
|
|
5
|
-
allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(node
|
|
5
|
+
allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(node *, npm *, npx *)"
|
|
6
6
|
argument-hint: "[skill-name-or-task]"
|
|
7
|
-
compatibility: "
|
|
7
|
+
compatibility: "KodaX/Agent Skills directories; helpers are plain Node ESM. Model evaluation needs a separately configured, authorized SDK Provider."
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Skill Creator
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
复用当前会话已有的目标、样例、范围和授权,区分用户要创建/修改、验证、打包还是
|
|
13
|
+
评测。仅补齐会改变结果的缺失信息;小改描述不必扩展成完整模型评测。
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
下面的 scripts/ 与 references/ 都相对本 Skill 目录。保留目标工作区语境,执行
|
|
16
|
+
helper 时给脚本路径和目标路径,不假定当前目录就是 Skill 目录。
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
- 用户要改已有 skill 的触发描述、结构、supporting files 或提示词。
|
|
18
|
-
- 用户要把 Claude / Anthropic / 其他平台的 skill 移植到 KodaX。
|
|
19
|
-
- 用户要为 skill 设计测试提示、评估结构、人工 review 流程或 benchmark 汇总。
|
|
18
|
+
## 创建、修改与迁移
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
- 新建时先起草,或用 `node scripts/init-skill.js <name> --path <skills-dir>` 初始化,
|
|
21
|
+
再按真实任务填写;已有 Skill 在原目录做必要修改。验证-only 只报告问题,不改文件。
|
|
22
|
+
- description 写任务与调用边界;默认开放模型发现。只有用户要求显式调用时才设
|
|
23
|
+
`disable-model-invocation: true`。每个已启用 Skill 仍接受 `/<name>` 和 `/skill:<name>`;
|
|
24
|
+
`user-invocable` 是兼容字段,不是执行权限。
|
|
25
|
+
- SKILL.md 保留共同方法和分支入口。机械步骤放 scripts/,分支细节放 references/,
|
|
26
|
+
模板放 assets/;只有实际需要时才新增支持文件。内置脚本使用 plain Node ESM `.js`,
|
|
27
|
+
`.ts` 需要相应构建链,不能假定被直接复制的 TypeScript 可以执行。
|
|
28
|
+
- allowed-tools 遵守当前宿主契约,例如 `Bash(npm *, node *)` 匹配完整命令文本,
|
|
29
|
+
不是 `npm:*` 冒号前缀。Skill 声明不会授予宿主权限,仍执行原有授权与沙箱检查。
|
|
30
|
+
- 移植时核对工具、路径、依赖和事件语义,保留真正可用的行为。记录可核实的来源
|
|
31
|
+
URL、revision、许可与改写范围;未核实的来源明确标未知,不追认一个上游版本。
|
|
22
32
|
|
|
23
|
-
|
|
33
|
+
完成后用 `node scripts/quick-validate.js <skill-dir>` 做结构检查,并核对正例、相邻
|
|
34
|
+
任务反例及支持文件引用。结构通过不等于真实触发或脚本执行已验证。交付实际修改
|
|
35
|
+
和证据;工具不足时继续有依据的起草/检查,明确未运行部分。
|
|
24
36
|
|
|
25
|
-
|
|
26
|
-
1. 这个 skill 要解决什么任务。
|
|
27
|
-
2. 什么时候应该触发,什么时候不应该触发。
|
|
28
|
-
3. 输出是什么形态。
|
|
29
|
-
4. 是否需要评测和人工 review。
|
|
37
|
+
## 打包与分享
|
|
30
38
|
|
|
31
|
-
|
|
39
|
+
`node scripts/package-skill.js <skill-dir> --output <file.skill>` 校验并生成归档。
|
|
40
|
+
用户只要分享包时,交付归档和验证结果即可,不默认安装到个人技能库。
|
|
32
41
|
|
|
33
|
-
|
|
42
|
+
需要验证安装链路时,用临时隔离目录:
|
|
43
|
+
`node scripts/install-skill.js <file.skill> --dest <isolated-dir>`,再检查解包内容和引用。
|
|
44
|
+
仅在任务要求真实安装时写入用户指定目录,沿用已有授权;不以 --force 绕过同名冲突。
|
|
34
45
|
|
|
35
|
-
|
|
36
|
-
- 可直接复用:SKILL.md 的思路、评测结构、参考文档组织方式。
|
|
37
|
-
- 需要改写:路径约定、触发描述、支持的 frontmatter 字段、命令示例。
|
|
38
|
-
- 不要硬搬:强依赖 Claude Code、`claude -p`、Cowork、Python stdlib 或专有事件流的部分。
|
|
46
|
+
## 评测或优化描述
|
|
39
47
|
|
|
40
|
-
|
|
48
|
+
先读 [评测方法与命令](references/evaluation.md),只执行需要的分支。
|
|
41
49
|
|
|
42
|
-
|
|
50
|
+
- quick-validate 是结构检查;run-trigger-eval 是单条描述的**语义筛查**,不是实际触发率。
|
|
51
|
+
- 真实触发需使用实际注册、可见的完整 catalog 和真实 skill 工具定义,记录是否真的
|
|
52
|
+
调用了 skill;包含自然语言正例和相邻任务反例,不能以判断题分数代替调用证据。
|
|
53
|
+
- run-eval 是独立 SDK 执行,必须明确 Provider、model、cwd、输入/输出路径与预算;
|
|
54
|
+
不自动继承 Space 当前会话凭据或工具。没有已授权模型能力时仍可完成静态工作。
|
|
43
55
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- 重复性、机械性、易出错的步骤,放到 `scripts/`。
|
|
47
|
-
- 大块参考资料放到 `references/`。
|
|
48
|
-
- 模板或静态文件放到 `assets/`。
|
|
49
|
-
- 如果某个专家流程只服务这个 skill,可以放进 `agents/`,但先把它当私有 contract,不要自动上升成全局产品概念。
|
|
50
|
-
- `description` 同时决定模型发现。自然语言只会看到未设置 `disable-model-invocation: true` 的 name/description。
|
|
51
|
-
- 需要只在显式 slash 后加载时,写 `disable-model-invocation: true`。这只关闭模型 catalog 与模型 `skill` 工具。
|
|
52
|
-
- 每个已启用 Skill 都接受 `/<name>` 和 `/skill:<name>`。
|
|
53
|
-
- token 可在 query 头部或中间。后续文本是 Skill 参数。
|
|
54
|
-
- `user-invocable` 只保留解析兼容。不要把它当成执行权限:宿主忽略该字段后,作者会误以为 `false` 能禁止 slash/SDK 调用。
|
|
55
|
-
|
|
56
|
-
### 4. Bundled scripts 默认用 Node.js
|
|
57
|
-
|
|
58
|
-
KodaX 当前会把 builtin skill 目录直接复制到 `dist/`。因此:
|
|
59
|
-
|
|
60
|
-
- skill 内的可执行脚本默认使用 plain Node ESM `.js`。
|
|
61
|
-
- 只有在你同时修改了构建链、确保脚本会被编译时,才在 skill 内使用 `.ts`。
|
|
62
|
-
- 如果用户只是想“改成 node/typescript”,默认先落成 Node `.js`,这是最稳妥的内建交付方式。
|
|
63
|
-
|
|
64
|
-
### 5. 先验证,再评估
|
|
65
|
-
|
|
66
|
-
起草完成后,优先按下面的顺序推进:
|
|
67
|
-
|
|
68
|
-
1. 用 `node scripts/quick-validate.js <skill-dir>` 做结构检查。
|
|
69
|
-
2. 如果还没有 skill 骨架,用 `node scripts/init-skill.js <skill-name> --path <skills-dir>` 初始化。
|
|
70
|
-
3. 设计 2 到 3 个真实用户会说的测试提示。
|
|
71
|
-
4. 如果要跑端到端 skill eval,把提示整理到 `evals/evals.json`,再用 `node scripts/run-eval.js --skill-path <skill-dir> --evals <evals.json> --workspace <iteration-dir>` 生成 `with_skill` / `without_skill` workspace。
|
|
72
|
-
5. 如果要补第 3 阶段的专家评测流,先用 `node scripts/grade-evals.js <workspace>` 生成 `grading.json`,再用 `node scripts/aggregate-benchmark.js <workspace> --skill-name <name>` 聚合 benchmark,用 `node scripts/analyze-benchmark.js <workspace>` 产出分析结论,用 `node scripts/compare-runs.js <workspace>` 做 blind comparison。
|
|
73
|
-
6. 如果要评估 description 的触发效果,再用 `node scripts/run-trigger-eval.js --skill-path <skill-dir> --evals <evals.json>` 跑一轮触发评测。
|
|
74
|
-
7. 如果要迭代 description,可以用 `node scripts/improve-description.js --skill-path <skill-dir> --eval-results <results.json>` 生成候选描述,或用 `node scripts/run-loop.js --skill-path <skill-dir> --evals <evals.json> --workspace <workspace-dir>` 跑多轮优化。
|
|
75
|
-
8. 如果需要人工 review,把运行结果整理到 workspace,再用 `node scripts/generate-review.js <workspace> --static <html-file>` 或本地服务模式生成 review 页面。
|
|
76
|
-
9. 如果要分享给别的 KodaX/Agent Skills 风格环境,用 `node scripts/package-skill.js <skill-dir>` 打包,再用 `node scripts/install-skill.js <archive-or-dir>` 验证安装链路。
|
|
77
|
-
|
|
78
|
-
## 评估建议
|
|
79
|
-
|
|
80
|
-
- 客观任务:优先写断言、grading 结构和 benchmark。
|
|
81
|
-
- 主观任务:优先给人类 review 页面,再用 comparator 做 blind comparison,而不是强行只看单一分数。
|
|
82
|
-
- 描述优化:先整理误触发/漏触发样例,再跑 `run-trigger-eval`,需要时再用 `improve-description` 或 `run-loop` 迭代。
|
|
83
|
-
- 如果需要专家提示词,把 `agents/grader.md`、`agents/analyzer.md`、`agents/comparator.md` 当作私有专家 contract 使用,不要先把它们产品化成通用 swarm 概念。
|
|
84
|
-
|
|
85
|
-
## 输出要求
|
|
86
|
-
|
|
87
|
-
默认给出:
|
|
88
|
-
- 修改后的 `SKILL.md`
|
|
89
|
-
- 新增或更新的 supporting files
|
|
90
|
-
- 简短的 trigger/eval 样例
|
|
91
|
-
- 还没覆盖的风险或后续建议
|
|
92
|
-
|
|
93
|
-
如果用户是在移植外部 skill,还要额外说明:
|
|
94
|
-
- 哪些能力已经迁移
|
|
95
|
-
- 哪些能力因为宿主差异被删减或改写
|
|
96
|
-
- 哪些部分后续值得继续产品化
|
|
97
|
-
|
|
98
|
-
## 可用工具
|
|
99
|
-
|
|
100
|
-
- `agents/grader.md`:给 `grade-evals.js` 使用的专家评分契约。
|
|
101
|
-
- `agents/analyzer.md`:给 `analyze-benchmark.js` 使用的分析契约。
|
|
102
|
-
- `agents/comparator.md`:给 `compare-runs.js` 使用的盲比契约。
|
|
103
|
-
- `scripts/quick-validate.js`:校验 skill 结构和 frontmatter。
|
|
104
|
-
- `scripts/init-skill.js`:初始化一个新的 skill 骨架,并可一并创建 `evals/evals.json`。
|
|
105
|
-
- `scripts/run-eval.js`:运行端到端 skill eval,生成 `with_skill` / `without_skill` workspace 结果。
|
|
106
|
-
- `scripts/grade-evals.js`:消费 workspace,给每个 run 生成 `grading.json` 与 `grading-summary.json`。
|
|
107
|
-
- `scripts/aggregate-benchmark.js`:聚合 `grading.json` / `timing.json` 生成 `benchmark.json` 与 `benchmark.md`。
|
|
108
|
-
- `scripts/analyze-benchmark.js`:基于 benchmark 和 grading 产出 `analysis.json` 与 `analysis.md`。
|
|
109
|
-
- `scripts/compare-runs.js`:对两个 config 做 blind comparison,生成 `comparison.json` 与 `comparison.md`。
|
|
110
|
-
- `scripts/run-trigger-eval.js`:对 description 做 KodaX 原生触发评测,检查误触发和漏触发。
|
|
111
|
-
- `scripts/improve-description.js`:基于评测结果生成新的 description 候选。
|
|
112
|
-
- `scripts/run-loop.js`:把触发评测和 description 改写串成可重复的多轮优化流程。
|
|
113
|
-
- `scripts/generate-review.js`:把 workspace 结果生成静态或本地服务版 HTML review 页面。
|
|
114
|
-
- `scripts/package-skill.js`:把 skill 目录打成 `.skill` 归档,便于分享与分发。
|
|
115
|
-
- `scripts/install-skill.js`:把 `.skill` 归档或目录安装到目标 skills 目录。
|
|
116
|
-
- `references/schemas.md`:评测相关 JSON 结构参考。
|
|
117
|
-
|
|
118
|
-
这里的 description eval、loop、grading、analysis、comparison 和 packaging 都已经是 KodaX 原生实现,不再依赖 Anthropic 的 Python 脚本或 Claude Code 专有宿主能力。
|
|
119
|
-
|
|
120
|
-
## 使用示例
|
|
121
|
-
|
|
122
|
-
- `/skill:skill-creator 把这个 Claude skill 迁移成 KodaX builtin`
|
|
123
|
-
- `/skill:skill-creator 新建一个 release-notes skill`
|
|
124
|
-
- `/skill:skill-creator 优化现有 skill 的 description 和 evals`
|
|
125
|
-
- `/skill:skill-creator 给这个 skill 补 trigger eval、grading、benchmark、comparison 和 review 流程`
|
|
126
|
-
- `/skill:skill-creator 把这个 skill 打成可分享的 .skill 包`
|
|
127
|
-
- `/skill:skill-creator 初始化一个新 skill 骨架并生成 eval workspace`
|
|
56
|
+
需要运行结果评审时再加载 agents/grader.md、agents/analyzer.md 或 agents/comparator.md;
|
|
57
|
+
它们是该流程的私有契约,不需要创建通用 swarm 或独立后台任务。
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 按证据选择评测
|
|
2
|
+
|
|
3
|
+
## 结构与描述语义筛查
|
|
4
|
+
|
|
5
|
+
`node scripts/quick-validate.js <skill-dir>` 只检查结构/frontmatter。
|
|
6
|
+
`node scripts/run-trigger-eval.js --skill-path <skill-dir> --evals <cases.json> --provider <provider> --model <model> --runs-per-query 1`
|
|
7
|
+
让模型仅根据一条 name/description/query 判断“应该使用吗”。输出的 precision/recall
|
|
8
|
+
是描述判断统计,没有竞争 catalog、真实工具调用或可见性执行证据;metadata 会标明
|
|
9
|
+
这是 description_semantic_screening,以及该 Skill 是否开放模型目录。
|
|
10
|
+
|
|
11
|
+
improve-description.js 根据结果生成候选;run-loop.js 串联筛查与改写。按需要限定
|
|
12
|
+
--max-iterations、--runs-per-query;只有明确要求写回时用 --write-best。改了评分器时
|
|
13
|
+
重读已有 raw,不能为了得到好分数无限重跑。不要把这些脚本的分数写成产品召回率。
|
|
14
|
+
|
|
15
|
+
## 真实触发
|
|
16
|
+
|
|
17
|
+
用产品相同的完整 Skill catalog、可见性和工具定义观察自然语言请求后的实际
|
|
18
|
+
skill 调用。保留请求、目录/工具的版本、原始响应、调用参数和未调用证据。覆盖
|
|
19
|
+
正例、邻近 Skill 的 near-miss、无关请求;否定回答中提到技能名不等于调用它。
|
|
20
|
+
描述被隐藏、工具未提供或环境不同的实验,不能证明生产模型发现正确。
|
|
21
|
+
|
|
22
|
+
## 执行 smoke
|
|
23
|
+
|
|
24
|
+
run-eval.js 通过公开 Skill SDK 加载/展开内容,使用独立 SDK 运行 with_skill /
|
|
25
|
+
without_skill;它不是重放当前 Space 会话。先明确当前环境中已授权的 provider/model
|
|
26
|
+
与凭据来源、输入文件和隔离 cwd;不要假定会继承产品会话的凭据、工具或工作目录。
|
|
27
|
+
|
|
28
|
+
示例(脚本路径相对本 Skill,路径含空格时按当前 Shell 引号规则处理):
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
node scripts/run-eval.js --skill-path <skill-dir> --evals <evals.json> --workspace <iteration-dir> --provider <provider> --model <model> --cwd <isolated-workspace> --runs 1 --max-iter 6
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
先用少量 case 验证脚本和任务有效。执行 smoke 与描述筛查、真实选择是不同证据,
|
|
35
|
+
端到端自由执行不能独自支持提示词优劣结论。冻结 case/config/runs/迭代上限,统计
|
|
36
|
+
实际调用与 token/费用;max-iter 不等于物理 Provider 请求上限。遵守当前项目的
|
|
37
|
+
预算与原始输出保留约定,超时与失败留存,不能盲目追加请求。
|
|
38
|
+
|
|
39
|
+
## 需要时再评审运行结果
|
|
40
|
+
|
|
41
|
+
- `grade-evals.js <workspace> --provider <provider> --model <model>` 读取各 run,写 grading。
|
|
42
|
+
- `aggregate-benchmark.js <workspace> --skill-name <name>` 聚合 grading/timing,不调用模型。
|
|
43
|
+
- `analyze-benchmark.js <workspace> --provider <provider> --model <model>` 形成有局限性说明的分析。
|
|
44
|
+
- `compare-runs.js <workspace> --provider <provider> --model <model>` 盲比两个 config。
|
|
45
|
+
- `generate-review.js <workspace> --static <review.html>` 生成静态人工评审页。
|
|
46
|
+
|
|
47
|
+
按任务加载 agents/ 中的对应契约和 [schemas.md](schemas.md)。报告任务有效性、差异、
|
|
48
|
+
失败归因、未验证范围及建议,不能用单一总分替代判断。若只做打包或静态修改,
|
|
49
|
+
不运行这些独立模型流程。当前 helper 为 KodaX 本地维护;没有锁定的外部版本时,
|
|
50
|
+
不要用外部最新代码覆盖当前宿主适配或声称已完成上游同步。
|
|
@@ -123,8 +123,8 @@ async function defaultRunAnalyst(prompt, options) {
|
|
|
123
123
|
provider: options.provider ?? 'anthropic',
|
|
124
124
|
model: options.model,
|
|
125
125
|
maxIter: options.maxIter ?? 20,
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
effort: options.effort ?? (options.reasoningMode ? undefined : 'medium'),
|
|
127
|
+
reasoningMode: options.reasoningMode,
|
|
128
128
|
context: {
|
|
129
129
|
gitRoot: path.resolve(options.cwd ?? options.workspaceDir ?? process.cwd()),
|
|
130
130
|
},
|
|
@@ -232,7 +232,8 @@ function parseArgs(argv) {
|
|
|
232
232
|
skillName: undefined,
|
|
233
233
|
provider: 'anthropic',
|
|
234
234
|
model: undefined,
|
|
235
|
-
|
|
235
|
+
effort: undefined,
|
|
236
|
+
reasoningMode: undefined,
|
|
236
237
|
maxIter: 20,
|
|
237
238
|
cwd: process.cwd(),
|
|
238
239
|
};
|
|
@@ -251,6 +252,8 @@ function parseArgs(argv) {
|
|
|
251
252
|
args.provider = argv[++index];
|
|
252
253
|
} else if (token === '--model' && argv[index + 1]) {
|
|
253
254
|
args.model = argv[++index];
|
|
255
|
+
} else if (token === '--effort' && argv[index + 1]) {
|
|
256
|
+
args.effort = argv[++index];
|
|
254
257
|
} else if (token === '--reasoning' && argv[index + 1]) {
|
|
255
258
|
args.reasoningMode = argv[++index];
|
|
256
259
|
} else if (token === '--max-iter' && argv[index + 1]) {
|
|
@@ -124,8 +124,8 @@ async function defaultRunComparator(prompt, options) {
|
|
|
124
124
|
provider: options.provider ?? 'anthropic',
|
|
125
125
|
model: options.model,
|
|
126
126
|
maxIter: options.maxIter ?? 20,
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
effort: options.effort ?? (options.reasoningMode ? undefined : 'medium'),
|
|
128
|
+
reasoningMode: options.reasoningMode,
|
|
129
129
|
context: {
|
|
130
130
|
gitRoot: path.resolve(options.cwd ?? options.workspaceDir ?? process.cwd()),
|
|
131
131
|
},
|
|
@@ -273,7 +273,8 @@ function parseArgs(argv) {
|
|
|
273
273
|
markdownPath: undefined,
|
|
274
274
|
provider: 'anthropic',
|
|
275
275
|
model: undefined,
|
|
276
|
-
|
|
276
|
+
effort: undefined,
|
|
277
|
+
reasoningMode: undefined,
|
|
277
278
|
maxIter: 20,
|
|
278
279
|
maxPairs: undefined,
|
|
279
280
|
cwd: process.cwd(),
|
|
@@ -293,6 +294,8 @@ function parseArgs(argv) {
|
|
|
293
294
|
args.provider = argv[++index];
|
|
294
295
|
} else if (token === '--model' && argv[index + 1]) {
|
|
295
296
|
args.model = argv[++index];
|
|
297
|
+
} else if (token === '--effort' && argv[index + 1]) {
|
|
298
|
+
args.effort = argv[++index];
|
|
296
299
|
} else if (token === '--reasoning' && argv[index + 1]) {
|
|
297
300
|
args.reasoningMode = argv[++index];
|
|
298
301
|
} else if (token === '--max-iter' && argv[index + 1]) {
|
|
@@ -216,8 +216,8 @@ async function defaultRunJudge(prompt, options) {
|
|
|
216
216
|
provider: options.provider ?? 'anthropic',
|
|
217
217
|
model: options.model,
|
|
218
218
|
maxIter: options.maxIter ?? 20,
|
|
219
|
-
|
|
220
|
-
|
|
219
|
+
effort: options.effort ?? (options.reasoningMode ? undefined : 'medium'),
|
|
220
|
+
reasoningMode: options.reasoningMode,
|
|
221
221
|
context: {
|
|
222
222
|
gitRoot: path.resolve(options.cwd ?? options.workspaceDir ?? process.cwd()),
|
|
223
223
|
},
|
|
@@ -351,7 +351,8 @@ function parseArgs(argv) {
|
|
|
351
351
|
workspaceDir: argv[2] ?? '',
|
|
352
352
|
provider: 'anthropic',
|
|
353
353
|
model: undefined,
|
|
354
|
-
|
|
354
|
+
effort: undefined,
|
|
355
|
+
reasoningMode: undefined,
|
|
355
356
|
maxIter: 20,
|
|
356
357
|
cwd: process.cwd(),
|
|
357
358
|
overwrite: false,
|
|
@@ -364,6 +365,8 @@ function parseArgs(argv) {
|
|
|
364
365
|
args.provider = argv[++index];
|
|
365
366
|
} else if (token === '--model' && argv[index + 1]) {
|
|
366
367
|
args.model = argv[++index];
|
|
368
|
+
} else if (token === '--effort' && argv[index + 1]) {
|
|
369
|
+
args.effort = argv[++index];
|
|
367
370
|
} else if (token === '--reasoning' && argv[index + 1]) {
|
|
368
371
|
args.reasoningMode = argv[++index];
|
|
369
372
|
} else if (token === '--max-iter' && argv[index + 1]) {
|
|
@@ -3,9 +3,7 @@
|
|
|
3
3
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import {
|
|
7
|
-
import { loadFullSkill } from '../../../skill-loader.js';
|
|
8
|
-
import { ensureDirectory, loadKodaXSDK } from './utils.js';
|
|
6
|
+
import { ensureDirectory, loadKodaXSDK, loadKodaXSkills } from './utils.js';
|
|
9
7
|
|
|
10
8
|
function normalizeAssertion(assertion) {
|
|
11
9
|
if (typeof assertion === 'string') {
|
|
@@ -124,6 +122,7 @@ async function defaultRunAgent(prompt, options) {
|
|
|
124
122
|
|
|
125
123
|
async function prepareConfigPrompt(configName, skill, taskPrompt, options) {
|
|
126
124
|
if (configName === 'with_skill') {
|
|
125
|
+
const { expandSkillForLLM } = await loadKodaXSkills();
|
|
127
126
|
const expanded = await expandSkillForLLM(
|
|
128
127
|
skill,
|
|
129
128
|
taskPrompt,
|
|
@@ -196,6 +195,7 @@ export async function runEvalWorkspace(
|
|
|
196
195
|
options,
|
|
197
196
|
runner = defaultRunAgent
|
|
198
197
|
) {
|
|
198
|
+
const { loadFullSkill } = await loadKodaXSkills();
|
|
199
199
|
const skill = await loadFullSkill(path.resolve(options.skillPath), 'user');
|
|
200
200
|
if (!skill) {
|
|
201
201
|
throw new Error(`Failed to load skill from ${options.skillPath}`);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
|
-
import { loadSkill, pathExists, writeSkill } from './utils.js';
|
|
6
|
+
import { ensureDirectory, loadSkill, pathExists, writeSkill } from './utils.js';
|
|
7
7
|
import { improveDescription } from './improve-description.js';
|
|
8
8
|
import { runTriggerEval } from './run-trigger-eval.js';
|
|
9
9
|
|
|
@@ -73,6 +73,7 @@ export async function runDescriptionLoop(
|
|
|
73
73
|
...dependencies,
|
|
74
74
|
};
|
|
75
75
|
const skill = await loadSkill(options.skillPath);
|
|
76
|
+
await ensureDirectory(options.workspaceDir);
|
|
76
77
|
const evalFile = JSON.parse(await readFile(options.evalsPath, 'utf8'));
|
|
77
78
|
const allEvals = Array.isArray(evalFile.evals) ? evalFile.evals : [];
|
|
78
79
|
const { train, test } = splitEvalSet(allEvals, options.holdout, options.seed);
|
|
@@ -149,7 +149,9 @@ export async function runTriggerEval(options, runner = defaultRunPrompt) {
|
|
|
149
149
|
model: options.model ?? null,
|
|
150
150
|
runs_per_query: runsPerQuery,
|
|
151
151
|
trigger_threshold: threshold,
|
|
152
|
-
|
|
152
|
+
evaluation_kind: 'description_semantic_screening',
|
|
153
|
+
model_catalog_visible: skill.frontmatter['disable-model-invocation'] !== true,
|
|
154
|
+
note: 'Single-description semantic screening; not observed Skill tool selection from a competing catalog.',
|
|
153
155
|
},
|
|
154
156
|
};
|
|
155
157
|
}
|
|
@@ -33,6 +33,14 @@ import YAML from 'yaml';
|
|
|
33
33
|
|
|
34
34
|
let _cachedSdk = null;
|
|
35
35
|
|
|
36
|
+
/** Published single-package entry, or the standalone Agent's public Skill API. */
|
|
37
|
+
export async function loadKodaXSkills() {
|
|
38
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
39
|
+
const bundled = path.resolve(here, '../../../sdk-skills.js');
|
|
40
|
+
if (existsSync(bundled)) return import(pathToFileURL(bundled).href);
|
|
41
|
+
return import('@kodax-ai/agent/capabilities/skills');
|
|
42
|
+
}
|
|
43
|
+
|
|
36
44
|
export function setKodaXSDKForSkillCreator(sdk) {
|
|
37
45
|
_cachedSdk = sdk;
|
|
38
46
|
}
|