/** * The agent kit `loopgraph init` drops into a target repo (Proposal 009): * instruction files a coding agent in that repo reads and executes. Shipped as * embedded constants because the npm package publishes `dist/` only. * * PRIVACY: these constants compile into the PUBLIC npm package. They must stay * GENERIC — no target-repo internals (table names, file paths, loop ids). The * calibrated versions with real teaching examples live in docs/prompts/ * (repo-private, excluded from the package). A structural test keeps the pass * skeleton in sync and asserts no target internals leak here. */ export declare const LOOP_DISCOVERY_PROMPT = "# Loop Discovery \u63D0\u793A\u8BCD(\u56DB\u904D\u626B\u63CF\u6CD5)\n\n\u7ED9 agent \u7528\u7684\u884C\u4E3A\u53D1\u73B0\u65B9\u6CD5:**\u4E24\u7C7B\u5019\u9009\u53EC\u56DE \u2192 \u8BC1\u4F2A \u2192 \u7EC4\u5408 \u2192 trace \u5347\u7EF4**\u3002\n\n\u53EC\u56DE**\u4E24\u7C7B**:\u81EA\u4E3B\u63A8\u8FDB\u7684 **loop**(\u540E\u53F0\u5FAA\u73AF),\u4EE5\u53CA\u88AB\u89E6\u53D1\u4E00\u6B21\u8DD1\u5B8C\u7684**\u6267\u884C\u8DEF\u5F84**(CLI \u547D\u4EE4\u3001\n\u6784\u5EFA\u7BA1\u7EBF\u3001\u542F\u52A8\u5F15\u5BFC\u94FE)\u2014\u2014\u540E\u8005\u5EFA\u6210 `shape: anchored` \u7684 flow\u3002**\u53EA\u627E loop \u4F1A\u8BA9\u96F6-loop \u4ED3\u5E93\n(CLI / \u4E00\u6B21\u6027\u7BA1\u7EBF)\u62FF\u5230\u4E00\u4EFD\u7A7A\u6A21\u578B**,\u90A3\u4E0D\u662F\"\u6CA1\u4EC0\u4E48\u597D\u5EFA\u6A21\u7684\",\u662F\u5EFA\u6A21\u65B9\u5F0F\u9009\u9519\u4E86\u3002\n\n## \u524D\u7F6E\u94C1\u5F8B(\u6BCF\u4E00\u904D\u90FD\u9002\u7528)\n\n1. **\u6BCF\u6761\u65AD\u8A00\u5FC5\u987B\u5E26 `\u6587\u4EF6\u8DEF\u5F84#\u7B26\u53F7` \u951A\u70B9,\u4E14 grep \u5BF9\u76EE\u6807\u4ED3 HEAD \u6838\u5B9E**\u3002\u6838\u5B9E\u4E0D\u5230\u5C31\u6807 unverified,\u4E0D\u7F16\u9020\u3002\n2. \u4EA7\u51FA\u5199\u6210 loopgraph model YAML \u8349\u6848(loop / junction / flow / debt),\u4EA4 `loopgraph check --strict-anchors` \u6838\u951A\u70B9\u3001`loopgraph reconcile` \u53CD\u5411\u5BF9\u8D26\u2014\u2014**LLM \u8D1F\u8D23\u53D1\u73B0,\u5F15\u64CE\u8D1F\u8D23\u6838\u5BF9**\u3002\n3. \u8FD0\u884C\u6570\u636E\u53EA\u4F5C\u5B9E\u73B0\u72B6\u6001\u8BC1\u636E,\u4E0D\u53CD\u5411\u6539\u6A21\u578B\u8BED\u4E49\u3002\n\n## Pass 1 \u2014 \u7A77\u4E3E\u5019\u9009(loop \u5019\u9009 + \u8DEF\u5F84\u5019\u9009)\n\n**\u5FC3\u6CD5:\u5B81\u6EE5\u52FF\u7F3A\u3002\u4E3E\u8BC1\u8D23\u4EFB\u5728\u8BC1\u4F2A\u7AEF,\u8FD9\u4E00\u904D\u53EA\u7BA1\u53EC\u56DE\u3002**\n\n\u626B**\u4E24\u7C7B**\u5019\u9009\u3002\u53EA\u626B A \u7C7B\u662F\u96F6-loop \u4ED3\u5E93\u62FF\u5230\u7A7A\u6A21\u578B\u7684\u6839\u56E0\u2014\u2014CLI / \u6784\u5EFA\u5DE5\u5177 / \u4E00\u6B21\u6027\u7BA1\u7EBF\u7684\n\u4E3B\u8DEF\u5F84\u4E0D\u4F1A\u547D\u4E2D\u4EFB\u4F55\"\u81EA\u4E3B\u63A8\u8FDB\"\u4FE1\u53F7,\u4F46\u5B83\u4EEC\u7167\u6837\u662F\u8BE5\u88AB\u9489\u4F4F\u7684\u884C\u4E3A\u3002\n\n### A \u7C7B \u2014 loop \u5019\u9009(\u81EA\u4E3B\u63A8\u8FDB)\n\n\u6309\u4FE1\u53F7\u65CF\u5730\u6BEF\u5F0F\u626B,\u6BCF\u4E2A\u547D\u4E2D\u5148\u5047\u8BBE\u662F\u4E00\u4E2A loop:\n\n| \u4FE1\u53F7\u65CF | \u4F8B |\n|---|---|\n| \u72B6\u6001\u5217/\u679A\u4E3E | `status` / `state` / `phase` \u5217,`VALID_*_TRANSITIONS` \u8F6C\u79FB\u8868 |\n| \u961F\u5217 | `*_QUEUE` const\u3001\u6D88\u8D39\u6CE8\u518C(`.work(` \u7B49)\u3001\u5165\u961F\u8C03\u7528 |\n| \u5B9A\u65F6 | `setInterval` / **\u9012\u5F52 `setTimeout` \u81EA\u6211\u91CD\u6392**(leader \u7EED\u79DF\u3001\u9000\u907F\u91CD\u8BD5\u5E38\u7528\u6B64\u5F62\u6001,\u53EA grep setInterval \u4F1A\u6F0F) / cron / `*_tick` / `*_sweep` |\n| \u4E3B\u52A8\u5FAA\u73AF | `while (true)` / poll / watch / long-poll |\n| \u91CD\u8BD5\u6062\u590D | retry / backoff / `:recover` \u961F\u5217 / reconcile / cleanup |\n| \u534F\u8C03\u539F\u8BED | lease / lock / fencing / singleton key |\n| \u4FDD\u6D3B | heartbeat / keepalive / TTL renewal |\n| \u4E8B\u52A1\u6A21\u5F0F | saga / outbox / \u5E26\u72B6\u6001\u63A8\u8FDB\u7684\u8BA2\u9605 |\n\n\u6BCF\u4E2A\u5019\u9009\u8BB0\u5F55:`\u8349\u540D | \u547D\u4E2D\u4FE1\u53F7 | \u951A\u70B9 | \u7591\u4F3C\u72B6\u6001\u8F7D\u4F53 | \u7591\u4F3C\u63A8\u8FDB\u673A\u5236`\u3002\n\n### B \u7C7B \u2014 \u8DEF\u5F84\u5019\u9009(\u88AB\u89E6\u53D1\u4E00\u6B21\u8DD1\u5B8C,anchored flow \u7684\u6765\u6E90)\n\n| \u4FE1\u53F7\u65CF | \u4F8B |\n|---|---|\n| CLI \u5165\u53E3/\u5B50\u547D\u4EE4 | `bin` \u58F0\u660E\u3001argv \u89E3\u6790\u3001`Command`/`yargs`/`commander` \u6CE8\u518C\u3001`--flag` \u5206\u652F |\n| \u4E00\u6B21\u6027\u7BA1\u7EBF | build / compile / bundle / codegen / migrate-run / export / publish |\n| \u542F\u52A8\u5F15\u5BFC\u94FE | \u5165\u53E3 `main()` \u2192 \u521D\u59CB\u5316 \u2192 \u88C5\u914D \u2192 \u4EA4\u51FA\u63A7\u5236\u6743(**\u6BCF\u6B21\u8C03\u7528\u90FD\u91CD\u8DD1\u7684\u90A3\u79CD**) |\n| \u975E\u4EA4\u4E92\u6A21\u5F0F | pipe / `-p` / `--print` / stdin \u9A71\u52A8\u7684\u4E00\u8D9F\u5904\u7406 |\n| \u8BF7\u6C42-\u54CD\u5E94\u5904\u7406\u5668 | \u5355\u4E2A handler \u4ECE\u5165\u53C2\u5230\u843D\u76D8\u7684\u5B8C\u6574\u94FE\u8DEF(\u65E0\u540E\u53F0\u63A8\u8FDB) |\n\n\u6BCF\u4E2A\u5019\u9009\u8BB0\u5F55:`\u8349\u540D | \u5165\u53E3\u951A\u70B9 | \u9014\u7ECF\u5173\u952E\u7B26\u53F7 | \u51FA\u53E3(\u843D\u76D8/\u8F93\u51FA/\u9000\u51FA\u7801)`\u3002\n\n**A/B \u4E0D\u4E92\u65A5**:\u4E00\u4E2A\u4ED3\u5E93\u4E24\u7C7B\u90FD\u6709\u5F88\u6B63\u5E38(\u5982 CLI \u5DE5\u5177\u5E26\u540E\u53F0 daemon)\u3002**B \u7C7B\u5019\u9009\u4E0D\u8FDB Pass 2 \u4E09\u5224\u636E**\n(\u5B83\u4EEC\u672C\u6765\u5C31\u4E0D\u8BE5\u901A\u8FC7\"\u72EC\u7ACB\u63A8\u8FDB\u673A\u5236\"),\u76F4\u63A5\u8FDB Pass 3 \u5EFA `anchored` flow\u3002\n\n**\u626B\u63CF\u5B8C\u6574\u6027**:\u6309\u5B50\u76EE\u5F55\u5730\u6BEF\u626B\u5B8C\u540E,**\u5FC5\u987B\u5355\u72EC\u626B\u6240\u6709\u672A\u88AB\u5B50\u76EE\u5F55\u5305\u542B\u7684\u9876\u5C42 .ts \u6587\u4EF6**(`src/*.ts`\u3001\u5305\u6839 `index.ts`\u3001\u975E src \u5165\u53E3\u7B49\u2014\u2014\u65D7\u8230\u72B6\u6001\u673A\u5E38\u5728\u6839\u5C42\u88AB\u6574\u4F53\u6F0F\u6389);\u8F93\u51FA NOTES \u5FC5\u987B**\u5BA3\u544A\u672A\u8986\u76D6\u8FB9\u754C**(\u6D4F\u89C8\u5668\u7AEF\u4EE3\u7801\u3001vendored \u4F9D\u8D56\u3001\u8D8A\u754C\u5305),\u9632\"\u6CA1\u62A5=\u6CA1\u6709\"\u8BEF\u8BFB\u3002\n\n## Pass 2 \u2014 \u8BC1\u4F2A(\u6740\u6B7B\u4F2A loop)\n\n\u5BF9\u6BCF\u4E2A\u5019\u9009\u8DD1\u4E09\u5224\u636E,**\u4EFB\u4F55\u4E00\u6761\u627E\u4E0D\u5230\u5C31\u4E0D\u662F\u72EC\u7ACB loop**:\n\n1. **\u72B6\u6001\u8F7D\u4F53**:\u8FDB\u5EA6\u5B58\u5728\u54EA?(DB \u5217 / \u961F\u5217\u4F4D\u7F6E / \u5185\u5B58+lease)\u2014\u2014\u627E\u4E0D\u5230 \u2192 \u65E0\u72B6\u6001\u5DE5\u5177\u51FD\u6570,\u6740\u3002\n2. **\u72EC\u7ACB\u63A8\u8FDB\u673A\u5236**:\u6CA1\u6709\u8C03\u7528\u8005\u65F6\u8C01\u5728\u63A8\u8FDB\u5B83?(worker / poller / cron / \u8BA2\u9605)\u2014\u2014\u53EA\u88AB\u52A8\u7B49\u8C03\u7528 \u2192 \u6740\u3002\n3. **\u6062\u590D\u8DEF\u5F84**:\u5D29\u6E83/\u9519\u8FC7\u4E4B\u540E\u8C01\u63A5\u7740\u63A8?(**\u660E\u786E\u6CA1\u6709\u4E5F\u884C,\u4F46\u5FC5\u987B\u8BB0\u5F55**)\u3002\n\n**\u6740\u524D\u5FC5\u7B54\u4E09\u95EE(\u4F8B\u5916\u89C4\u5219\u5185\u8054\u5316\u2014\u2014\"\u4F8B\u5916\u8BF4\u660E\"\u5728\u957F\u4EFB\u52A1\u91CC\u4F1A\u88AB\u9057\u5FD8,\u6545\u5347\u683C\u4E3A\u6BCF\u6761 KILLED \u8BB0\u5F55\u7684\u5FC5\u586B\u5B57\u6BB5)**:\n\u6BCF\u6740\u4E00\u4E2A\u5019\u9009,KILLED \u8BB0\u5F55\u5FC5\u987B\u663E\u5F0F\u56DE\u7B54:\n- **Q1 \u63A8\u8FDB\u5668\u662F\u5426\u53EF\u80FD\u5728\u8303\u56F4\u5916?**(\u88AB dispatch/\u5176\u4ED6\u5305\u7684 worker/\u5BA2\u6237\u7AEF\u9A71\u52A8)\u662F \u2192 **stub \u4FDD\u7559**,\u4E0D\u6740(\u6267\u884C\u5E73\u9762 loop \u5929\u7136\"\u63A8\u8FDB\u5668\u5728\u522B\u5904\",\u6781\u6613\u7CFB\u7EDF\u6027\u8FC7\u6740)\u3002\n- **Q2 \u662F\u5426\u8DE8\u7EC4\u4EF6\u95ED\u73AF\u7684\u63A5\u6536\u7AEF?**(\u56DE\u8C03/invalidate/webhook \u6536\u7AEF)\u662F \u2192 \u8BB0 Pass 3 \u95ED\u73AF\u5019\u9009,\u4E0D\u6740\u3002\n- **Q3 \u5F52\u7236\u65F6\u662F\u5426\u6709\u72EC\u7ACB\u72B6\u6001\u5B50\u96C6\u4E0E\u9636\u6BB5\u8FB9\u754C?** \u662F \u2192 \u6807 embedded \u5B50\u673A\u5019\u9009(`parent`+`embedded: true`),\u4E0D\u65E0\u75D5\u6298\u53E0\u3002\n\n**\u5206\u6B67\u7C7B\u6807\u6CE8**:\u8BC1\u4F2A\u6740\u6389\u4EE5\u4E0B\u56DB\u7C7B\u65F6\u5FC5\u987B\u6807 `divergence-class`,\u4EA4\u6A21\u578B\u7EF4\u62A4\u8005\u7EC8\u5BA1(\u65E2\u6709\u5206\u7C7B\u5B66\u53EF\u80FD\u4E0E\u4E09\u5224\u636E\u5206\u6B67,\u4E0D\u7B97 agent \u5B9A\u8BBA):\u5355\u8D9F\u7BA1\u7EBF / \u6709\u754C\u91CD\u8BD5\u94FE / vendor \u5305\u88F9\u673A\u5236 / \u65E0\u63A8\u8FDB resolver\u3002\n\n**KILLED \u8BB0\u5F55\u7684\u56FA\u5B9A\u5B57\u6BB5(\u7ED3\u6784\u5316\u9632\u9057\u6F0F)**:\n```\n- name / anchor / killed_by\n q1_advance_out_of_scope: \n q2_closed_loop_receiver: \n q3_embedded_state_subset: \n divergence_class: \n disposition: \n```\n(\u4E09\u95EE\u662F**\u9632\u8FC7\u6740**\u95F8\u95E8,\u53EA\u6302\u5728 KILLED \u4E0A;\u5E78\u5B58\u8005\u65E0\u9700\u8FC7\u3002)\n\n**\u88AB\u6740\u5019\u9009\u4E0D\u662F\u4E22\u5F03,\u6309\u5F52\u5BBF\u5206\u6D41**(\u8FD9\u4E00\u6B65\u4EA7\u51FA\u7684 debt \u548C\u5F52\u5C5E,\u548C loop \u4E00\u6837\u503C\u94B1):\n\n| \u8BC1\u4F2A\u5F62\u6001 | \u5F52\u5BBF |\n|---|---|\n| \u6709 status \u5217\u4F46\u5168\u4ED3\u65E0 transition writer | **debt**(\u6B7B\u72B6\u6001\u673A) |\n| insert-once \u9759\u6001\u6807\u5FD7,\u4ECE\u4E0D\u8FC1\u79FB | **debt** |\n| append-only \u5BA1\u8BA1\u8D26(action \u975E state) | \u4E0D\u5EFA\u6A21 |\n| \u6307\u9488/\u4E0D\u53EF\u53D8\u5FEB\u7167,\u65E0\u751F\u547D\u5468\u671F | \u4E0D\u5EFA\u6A21 |\n| \u7236 loop \u8FD0\u884C\u671F\u5185\u7684\u652F\u6491\u5B9A\u65F6\u5668(\u968F\u67D0\u6B21\u6267\u884C\u542F\u52A8/\u6E05\u7406) | **\u951A\u70B9\u5F52\u5165\u7236 loop** |\n| \u961F\u5217\u540D\u6CE8\u518C\u8868(\u53EA\u5B9A\u4E49\u65E0\u63A8\u8FDB) | **\u6D88\u8D39 loop \u7684 `consumes_queues`** |\n| boot \u4E00\u6B21\u6027\u4EFB\u52A1(seed / migrate) | \u4E0D\u5EFA\u6A21(bootstrap)\u2014\u2014debt \u53EA\u7559\u7ED9\"\u5047\u88C5\u6709\u751F\u547D\u5468\u671F\u7684\u6B7B\u7269\" |\n| **\u4E00\u6B21\u6027\u6267\u884C\u8DEF\u5F84**(CLI \u547D\u4EE4\u3001\u6784\u5EFA\u7BA1\u7EBF\u3001\u542F\u52A8\u5F15\u5BFC\u94FE) | **anchored flow**(\u89C1 Pass 3)\u2014\u2014**\u4E0D\u662F** bootstrap,\u522B\u4E22 |\n\n> \u26A0\uFE0F \u4E0A\u8868\u6700\u540E\u4E00\u884C\u662F\u6700\u5BB9\u6613\u8BEF\u6740\u7684\u4E00\u7C7B\u3002\"\u6CA1\u6709\u72EC\u7ACB\u63A8\u8FDB\u673A\u5236\"\u53EA\u8BF4\u660E\u5B83**\u4E0D\u662F loop**,\u4E0D\u8BF4\u660E\u5B83\u4E0D\u503C\u5F97\u5EFA\u6A21\u3002\n> \u4E00\u4E2A CLI \u547D\u4EE4\u4ECE\u5165\u53E3\u5230\u843D\u76D8\u662F\u4E00\u6761\u5B8C\u6574\u7684\u3001\u7528\u6237\u53EF\u89C1\u7684\u3001\u4F1A\u51FA\u4E8B\u6545\u7684\u6267\u884C\u8DEF\u5F84,\u548C\u540E\u53F0\u5FAA\u73AF\u4E00\u6837\u9700\u8981\n> \u951A\u70B9\u548C\u6D4B\u8BD5\u5B88\u62A4\u3002**\u6740\u8FDB bootstrap \u4E4B\u524D\u5FC5\u95EE:\u8FD9\u662F\"\u542F\u52A8\u65F6\u8DD1\u4E00\u6B21\u5C31\u6CA1\u4EBA\u7BA1\u7684\u521D\u59CB\u5316\",\u8FD8\u662F\n> \"\u6BCF\u6B21\u7528\u6237\u8C03\u7528\u90FD\u4F1A\u91CD\u8DD1\u7684\u4E3B\u8DEF\u5F84\"?** \u540E\u8005\u662F anchored flow\u3002\n\n## Pass 3 \u2014 loop \u4E4B\u4E0A\u7684 loop(\u7EC4\u5408)\n\n\u5728\u5E78\u5B58 loop \u4E4B\u95F4\u627E**\u8FB9**,\u8FB9\u805A\u6210\u9AD8\u9636\u7ED3\u6784:\n\n- **\u751F\u4EA7/\u6D88\u8D39\u8FB9**:A enqueue \u7684\u961F\u5217\u88AB B consume(\u961F\u5217\u540D\u5339\u914D)\u2192 \u94FE\u8DEF\u8FB9\u3002\n- **\u5171\u4EAB\u72B6\u6001\u8F7D\u4F53**:\u4E24\u4E2A loop \u5199\u540C\u4E00\u5217 \u2192 **junction \u5019\u9009**(\u5E76\u53D1/\u5355\u5199\u8005\u98CE\u9669,\u6807 risk_class)\u3002\n- **\u770B\u62A4\u8FB9**:W \u76D1\u6D4B X \u7684\u6D3B\u6027\u5E76\u89E6\u53D1\u6062\u590D \u2192 `guarded_by`\u3002\n- **\u5185\u5D4C**:\u5B50\u72B6\u6001\u673A\u5171\u4EAB\u7236\u8FB9\u754C\u4F46\u6709\u81EA\u5DF1\u7684\u72B6\u6001 \u2192 `parent` + `embedded: true`\u3002\n- **\u7AEF\u5230\u7AEF\u6709\u5E8F\u7A7F\u8D8A**(\u4E00\u6B21\u7528\u6237\u53EF\u89C1\u7684\u5B8C\u6574\u65C5\u7A0B)\u2192 **flow**\u3002flow \u6709**\u4E24\u79CD\u5F62\u6001,\u5FC5\u987B\u663E\u5F0F\u58F0\u660E `shape`**:\n\n| shape | \u4EC0\u4E48\u65F6\u5019\u7528 | \u600E\u4E48\u5199 |\n|---|---|---|\n| `composed` | \u65C5\u7A0B\u7531\u591A\u4E2A loop \u4E32\u8D77\u6765,\u81EA\u5DF1\u4E0D\u6301\u6709\u5B9E\u73B0 | `traverses`/`guarded_by`/`crosses`/`references` \u7EC4\u5408\u522B\u7684\u8282\u70B9,**\u4E0D\u5199 anchors** |\n| `anchored` | \u65C5\u7A0B**\u81EA\u5DF1\u5C31\u662F\u5B9E\u73B0**\u2014\u2014\u4E00\u6B21\u6027\u6267\u884C\u8DEF\u5F84,\u4E0D\u7531\u540E\u53F0 loop \u7EC4\u6210 | \u5199 `anchors`(`path#symbol`,\u540C Loop.anchors),\u53EF\u9009 `scenarios` \u7ED1\u6D4B\u8BD5 |\n\n**`anchored` flow \u662F\u96F6-loop \u4ED3\u5E93\u7684\u4E3B\u8981\u5EFA\u6A21\u624B\u6BB5\u3002** \u4E00\u4E2A CLI / \u6784\u5EFA\u5DE5\u5177 / \u4E00\u6B21\u6027\u7BA1\u7EBF\u53EF\u80FD\u4E00\u4E2A loop \u90FD\u6CA1\u6709,\n\u4F46\u5B83\u7167\u6837\u6709\u503C\u5F97\u9489\u4F4F\u7684\u884C\u4E3A\u3002\u8FD9\u7C7B\u4ED3\u5E93\u5982\u679C\u53EA\u627E loop,\u4F1A\u5F97\u5230\u4E00\u4EFD\u7A7A\u6A21\u578B\u2014\u2014\u90A3\u4E0D\u662F\"\u8FD9\u4E2A\u4ED3\u5E93\u6CA1\u4EC0\u4E48\u597D\u5EFA\u6A21\u7684\",\n\u662F**\u5EFA\u6A21\u65B9\u5F0F\u9009\u9519\u4E86**\u3002\n\n- `anchored` flow **\u53EF\u4EE5\u540C\u65F6\u7EC4\u5408**:\u81EA\u5DF1\u6709 update \u4E13\u5C5E\u4EE3\u7801\u3001\u53C8 `references` \u53E6\u4E00\u6761 flow,\u4E24\u8005\u4E0D\u51B2\u7A81\n (\u951A\u70B9\u662F\u5B83\u81EA\u5DF1\u7684\u8D21\u732E,\u4E0D\u4E0E\u88AB\u7EC4\u5408\u90E8\u5206\u91CD\u590D\u8BA1\u5206)\u3002\n- `composed` flow **\u4E0D\u8981\u6302 `scenarios`**:\u5B83\u4E0D\u8FDB\u8BC4\u7EA7,\u6302\u4E0A\u53BB\u4E0D\u4F1A\u88AB\u8BC4\u4F30(`check` \u4F1A warn)\u3002\n \u6D4B\u8BD5\u573A\u666F\u6302\u5230\u5B83\u7EC4\u5408\u7684\u90A3\u4E9B loop \u4E0A\u3002\n- \u5224\u636E\u901F\u8BB0:**\u95EE\"\u8FD9\u6761\u65C5\u7A0B\u7684\u4EE3\u7801\u5728\u54EA\"\u3002\u7B54\u5F97\u51FA\u5177\u4F53\u7B26\u53F7 \u2192 `anchored`;\u7B54\"\u5728\u5B83\u7A7F\u8FC7\u7684\u90A3\u4E9B loop \u91CC\" \u2192 `composed`\u3002**\n\n\u6BCF\u6761\u8FB9\u7ED9\u8BC1\u636E\u951A\u70B9;\u4EA4\u63A5\u53E3(handoff)\u4F18\u5148\u5EFA junction\u2014\u2014\u8DE8 loop \u4EA4\u63A5\u662F\u4E8B\u6545\u9AD8\u53D1\u533A\u3002\n\n**\u4E24\u6761\u8865\u5145\u89C4\u5219**:\n- **\u8D8A\u754C\u7AEF\u8BB0 stub \u8FB9,\u4E0D\u8981\u4E22**:\u8FB9\u7684\u5BF9\u7AEF\u5728\u626B\u63CF\u8303\u56F4\u5916\u65F6,\u8BB0 `stub` \u60AC\u7A7A\u8FB9\u5E76\u6807\u6CE8\"\u5BF9\u7AEF\u672A\u77E5,\u7591\u5728 X\"\u2014\u2014\u62D2\u7EDD\u7F16\u9020\u662F\u5BF9\u7684,\u4F46\u7EBF\u7D22\u4FDD\u7559\u7ED9\u8DE8\u8303\u56F4\u4E0B\u4E00\u8F6E,\u4E22\u5F03\u7B49\u4E8E\u91CD\u67E5\u3002**stub \u53EA\u8FDB\u62A5\u544A\u7684 NOTES/\u8349\u6848,\u7EDD\u4E0D\u5199\u8FDB model YAML**(\u6A21\u578B\u91CC\u6CA1\u6709 edge \u8282\u70B9;\u8FB9\u53EA\u5728\u6838\u5B9E\u53CC\u7AEF\u540E\u7269\u5316\u4E3A junction/flow \u5F15\u7528)\u3002\n- **\u4EA4\u63A5\u53E3\u9644\u8FD1\u6316\u4E8B\u6545\u6CE8\u91CA**:\u5BF9\u6BCF\u4E2A handoff \u5019\u9009,grep \u9644\u8FD1\u6CE8\u91CA\u7684 incident / race / postmortem / \u65E5\u671F / bug \u5F15\u7528\u2014\u2014**\u6709\u771F\u5B9E\u4E8B\u6545\u80CC\u4E66\u7684 junction \u4F18\u5148\u7EA7\u6700\u9AD8**(\u5DF2\u4ED8\u8FC7\u5B66\u8D39\u7684\u98CE\u9669\u70B9)\u3002\n\n## Pass 4 \u2014 trace \u5347\u7EF4(\u6709\u8FD0\u884C\u65F6\u6570\u636E\u65F6)\n\n- \u62C9**\u670D\u52A1\u62D3\u6251 + span \u94FE**:\u8DE8\u670D\u52A1\u95ED\u73AF \u2192 \u9A8C\u8BC1/\u53D1\u73B0\u9759\u6001\u65E0\u6CD5\u62FC\u63A5\u7684\u94FE\u8DEF\u3002\n- **\u53EA\u5728\u8FD0\u884C\u65F6\u51FA\u73B0\u7684 loop**:\u5BA2\u6237\u7AEF\u8F6E\u8BE2\u3001\u7F51\u5173\u91CD\u8BD5\u3001\u5916\u90E8\u56DE\u8C03\u95ED\u73AF\u3002\n- **\u9891\u7387/\u5EF6\u8FDF/\u91CD\u8BD5\u7387\u805A\u5408** \u2192 junction \u98CE\u9669\u5206\u7EA7\u7684\u91CF\u5316\u8BC1\u636E\u3002\n- **\u53CC\u5411\u5BF9\u8D26**:trace \u91CC\u6D3B\u8DC3\u4F46\u6A21\u578B\u6CA1\u6709 \u2192 \u65B0\u53D1\u73B0\u5019\u9009(\u56DE Pass 2 \u8BC1\u4F2A);\u6A21\u578B\u6709\u4F46 trace \u957F\u671F\u65E0 \u2192 dormant \u5019\u9009(\u4E0D\u662F\u5220\u9664,\u6807 dormant)\u3002\n- **\u964D\u7EA7\u89C4\u5219(\u51B7\u542F\u52A8/\u4F4E\u91C7\u6837\u515C\u5E95)**:trace \u7F3A\u5931\u3001\u91C7\u6837\u7387\u4F4E\u6216\u89C2\u6D4B\u7A97\u53E3\u4E0D\u8DB3\u65F6,**\u6302\u8D77 dormant \u5224\u5B9A**(\u672A\u88AB\u91C7\u6837 \u2260 \u4E0D\u6D3B\u8DC3),\u53EA\u505A\u6B63\u5411\u53D1\u73B0,\u6A21\u578B\u5224\u5B9A\u9000\u56DE Pass 1\u20133 \u7EAF\u9759\u6001\u3002dormant \u5224\u5B9A\u5FC5\u987B\u6CE8\u660E\u89C2\u6D4B\u7A97\u53E3\u4E0E\u91C7\u6837\u7387\u3002\n\n## \u8F93\u51FA\u4E0E\u95ED\u73AF\n\n```\nLLM \u56DB\u904D\u626B\u63CF \u2192 model YAML \u8349\u6848\n \u2192 loopgraph check --strict-anchors # \u951A\u70B9\u771F\u5B9E\u6027(\u673A\u5668)\n \u2192 loopgraph reconcile # \u673A\u68B0\u4FE1\u53F7\u53CD\u5411\u5BF9\u8D26\n \u2192 \u4EBA\u5BA1 \u2192 \u843D\u5E93\n```\n"; /** * Parallel (multi-agent) modeling instructions for a LARGE repo — the second * discovery entry point next to `LOOP_DISCOVERY_PROMPT` (Proposal 016 T2). * `loop-discovery.md` says HOW to find behavior; this one says how to split that * work across agents and put it back together without duplicate or colliding * nodes. * * Every rule here is a fixed incident from one real full-repo run (5 domains, * 60 nodes), stated GENERICALLY — the privacy rule at the top of this file * applies verbatim: no target-repo package names, symbols, or loop ids. The * incident is named ("what this prevents") because a rule without its accident * reads as style advice and gets dropped by the next agent under time pressure. */ export declare const LOOP_DISCOVERY_PARALLEL_PROMPT = "# \u5E76\u884C\u5EFA\u6A21\u6307\u4EE4(\u5927\u4ED3\u5206\u57DF\u5EFA\u6A21)\n\n`loop-discovery.md` \u8BB2**\u600E\u4E48\u53D1\u73B0\u884C\u4E3A**;\u8FD9\u4E00\u4EFD\u8BB2**\u600E\u4E48\u628A\u53D1\u73B0\u5DE5\u4F5C\u62C6\u7ED9\u591A\u4E2A agent \u5E76\u884C\u505A,\u518D\u5408\u56DE\u4E00\u5F20\u56FE**\u3002\n\u6BCF\u6761\u89C4\u7EA6\u540E\u9762\u90FD\u6807\u4E86\u5B83\u9632\u7684**\u771F\u5B9E\u4E8B\u6545**\u2014\u2014\u4E00\u6B21 5 \u57DF\u5E76\u884C\u300160 \u8282\u70B9\u7684\u5168\u4ED3\u5EFA\u6A21\u91CC\u771F\u5B9E\u8E29\u8FC7\u7684\u5751\u3002\n\n## \u4F55\u65F6\u7528\u8FD9\u4E00\u4EFD\n\n| \u4ED3\u5E93\u89C4\u6A21 | \u8D70\u54EA\u6761\u8DEF |\n|---|---|\n| \u6E90\u6587\u4EF6 < ~150 | \u5355 agent \u8D70 `loop-discovery.md`,\u4E00\u904D\u626B\u5B8C\u3002\u5E76\u884C\u7684\u534F\u8C03\u6210\u672C\u5927\u4E8E\u6536\u76CA |\n| \u6E90\u6587\u4EF6 \u2265 ~150 | \u5206\u57DF\u5E76\u884C:\u4E3B\u63A7\u5207\u57DF \u2192 N \u4E2A agent \u5404\u81EA\u8DD1 `loop-discovery.md` \u2192 \u4E3B\u63A7\u5408\u5E76\u88C1\u51B3 |\n\n\u9608\u503C\u662F\u7ECF\u9A8C\u503C\u4E0D\u662F\u5224\u636E\u3002\u771F\u6B63\u7684\u5224\u636E:**\u4E00\u4E2A agent \u7684\u4E0A\u4E0B\u6587\u88C5\u4E0D\u4E0B\u6574\u4ED3\u7684\u5019\u9009\u6E05\u5355\u65F6**\u5C31\u8BE5\u5206\u57DF\u3002\n\n\u4E3B\u63A7(\u4F60,\u53D1\u8D77\u8FD9\u6B21\u5EFA\u6A21\u7684\u90A3\u4E2A agent)\u8D1F\u8D23\u4E09\u4EF6\u4E8B:**\u5207\u57DF\u3001\u53D1\u53F7\u6BB5\u3001\u5408\u5E76\u88C1\u51B3**\u3002\u53D1\u73B0\u5DE5\u4F5C\u5168\u90E8\u4E0B\u653E\u3002\n\n## \u7B2C\u4E00\u6B65:\u5207\u57DF\u2014\u2014\u6309\u884C\u4E3A\u5F52\u5C5E,\u4E0D\u6309\u5305\u5F52\u5C5E\n\n**\u6BCF\u4E2A\u57DF\u662F\u4E00\u7EC4\u884C\u4E3A,\u4E0D\u662F\u4E00\u7EC4\u76EE\u5F55\u3002** \u5206\u57DF\u6587\u4E66\u91CC\u5FC5\u987B\u9010\u6761\u5199\u6E05\u6BCF\u4E2A\u57DF**\u8BA4\u9886\u54EA\u4E9B\u884C\u4E3A**,\u76EE\u5F55\u53EA\u662F\u5B83\u7684\u53D6\u8BC1\u8303\u56F4\u3002\n\n**\u8DE8\u5305\u884C\u4E3A\u5FC5\u987B\u5728\u5207\u57DF\u65F6\u663E\u5F0F\u6307\u5B9A\u552F\u4E00\u5F52\u5C5E**:\u4E00\u4E2A\u884C\u4E3A\u7684\u89E6\u53D1\u70B9\u5728 A \u5305\u3001\u771F\u6B63\u5E72\u6D3B\u7684\u5B9E\u73B0\u5728 B \u5305\u65F6,\n\u5728\u5206\u57DF\u6587\u4E66\u91CC\u70B9\u540D\"\u8FD9\u4E2A\u884C\u4E3A\u5F52 A \u57DF(\u6216 B \u57DF),\u53E6\u4E00\u57DF\u53EA\u4F5C\u4E3A\u4E0A\u6E38/\u4E0B\u6E38\u63D0\u53CA,\u4E0D\u5EFA\u8282\u70B9\"\u3002\n\n> **\u9632\u7684\u4E8B\u6545**:\u6309\u5305\u5207\u57DF\u65F6,\u4E24\u4E2A\u57DF\u5404\u81EA\u5728\u81EA\u5DF1\u7684\u5305\u91CC\u770B\u89C1\u540C\u4E00\u4E2A\u884C\u4E3A\u7684\u4E00\u534A,\u5404\u81EA\u8BA4\u9886\u3001\u5404\u81EA\u5EFA\u4E86\u4E00\u4E2A loop\n> \u2014\u2014\u540C\u4E00\u884C\u4E3A\u5728\u6700\u7EC8\u6A21\u578B\u91CC\u4EE5\u4E24\u4E2A id \u51FA\u73B0,\u951A\u70B9\u91CD\u590D\u3001\u8BA1\u5206\u4E24\u6B21,\u9760\u4EBA\u5DE5 `uniq -c` \u951A\u70B9\u624D\u53D1\u73B0\u3002\n\n\u5206\u57DF\u6587\u4E66(\u5EFA\u6A21\u5F00\u59CB\u524D\u5FC5\u987B\u5148\u5199\u51FA\u6765,\u5B83\u662F\u5E76\u884C\u7684\u552F\u4E00\u5951\u7EA6)\u6BCF\u4E2A\u57DF\u4E00\u884C:\n\n```\n\u57DF\u540D | \u53D6\u8BC1\u76EE\u5F55 | \u8BA4\u9886\u7684\u884C\u4E3A(\u9010\u6761) | \u660E\u786E\u4E0D\u5F52\u5B83\u7684\u8DE8\u754C\u884C\u4E3A | id \u53F7\u6BB5\n```\n\n## \u7B2C\u4E8C\u6B65:\u5206 id \u53F7\u6BB5\u2014\u2014\u5E76\u884C\u9694\u79BB\u53EA\u9760\u53F7\u6BB5\n\n\u6A21\u578B\u662F **file-per-node**(\u4E00\u4E2A\u8282\u70B9\u4E00\u4E2A\u6587\u4EF6,**\u6587\u4EF6\u540D\u5FC5\u987B\u7B49\u4E8E\u8282\u70B9 id**)\u3002\n\u53EA\u8981\u53F7\u6BB5\u4E0D\u91CD\u53E0,\u591A\u4E2A agent \u540C\u65F6\u5199\u540C\u4E00\u4E2A\u76EE\u5F55**\u5929\u7136\u4E0D\u51B2\u7A81**\u2014\u2014\u8FD9\u5C31\u662F\u5168\u90E8\u7684\u51B2\u7A81\u89E3\u3002\n\n| \u8282\u70B9\u7C7B\u578B | \u5207\u6BB5\u65B9\u5F0F | \u4F8B |\n|---|---|---|\n| loop | `L` / `N` \u53CC\u524D\u7F00\u5404\u81EA\u5207\u6BB5 | A \u57DF `L1-L9` + `N1-N9`,B \u57DF `L10-L29` + `N10-N29` |\n| flow | `C` \u5207\u6BB5 | A \u57DF `C1-C9`,B \u57DF `C10-C29` |\n| junction | \u4E0D\u5207\u53F7\u6BB5,\u7528**\u57DF\u540D\u524D\u7F00** | `J-<\u57DF\u540D>-<\u77ED\u540D>` |\n| scenario | \u4E0D\u5207\u53F7\u6BB5,**\u8DDF\u5BBF\u4E3B\u8282\u70B9 id \u8D70** | `GWT-L12-001` |\n| debt | \u4E0D\u5207\u53F7\u6BB5,\u7528\u57DF\u540D | `DEBT-<\u57DF\u540D>-<\u77ED\u540D>` |\n\n\u53F7\u6BB5\u4E00\u6B21\u53D1\u591F(\u6BCF\u57DF\u7559\u51FA\u5B9E\u9645\u9884\u8BA1\u6570\u7684 2-3 \u500D\u4F59\u91CF)\u3002**\u4E2D\u9014\u6269\u53F7\u6BB5\u8981\u4E3B\u63A7\u7EDF\u4E00\u53D1,agent \u4E0D\u8BB8\u81EA\u53D6\u3002**\n\n**\u7981\u6B62\u7ED9\u6587\u4EF6\u540D\u53E6\u52A0\u57DF\u524D\u7F00\u3002** \u6587\u4EF6\u540D\u5C31\u662F id,\u4E0D\u591A\u4E00\u4E2A\u5B57\u7B26\u3002\n\n> **\u9632\u7684\u4E8B\u6545**:\u6709\u4E2A\u57DF\u4E3A\"\u907F\u514D\u649E\u8F66\"\u7ED9\u81EA\u5DF1\u6240\u6709\u6587\u4EF6\u540D\u52A0\u4E86\u57DF\u524D\u7F00,\u7ED3\u679C 30 \u4E2A\u8282\u70B9\u5168\u90E8\u89E6\u53D1\n> filename-id \u4E0D\u4E00\u81F4\u544A\u8B66\u2014\u2014\u5B83\u60F3\u89E3\u51B3\u7684\u95EE\u9898\u53F7\u6BB5\u65E9\u5C31\u89E3\u51B3\u4E86,\u52A0\u524D\u7F00\u7EAF\u5C5E\u81EA\u9020\u95EE\u9898\u3002\n\n## \u7B2C\u4E09\u6B65:\u6D3E\u53D1\n\n\u6BCF\u4E2A\u5EFA\u6A21 agent \u6536\u5230\u7684 prompt \u5FC5\u987B\u5305\u542B:\n\n1. **\u5B83\u7684\u57DF**:\u53D6\u8BC1\u76EE\u5F55 + \u8BA4\u9886\u7684\u884C\u4E3A\u6E05\u5355 + \u660E\u786E\u4E0D\u5F52\u5B83\u7684\u8DE8\u754C\u884C\u4E3A(\u7167\u6284\u5206\u57DF\u6587\u4E66\u90A3\u4E00\u884C);\n2. **\u5B83\u7684 id \u53F7\u6BB5**;\n3. `loop-discovery.md` \u5168\u6587(\u65B9\u6CD5\u8BBA\u4E0D\u91CD\u5199,\u76F4\u63A5\u5F15\u7528);\n4. **\u884C\u4E3A\u8BED\u8A00\u89C4\u7EA6**(\u4E0B\u4E00\u8282);\n5. **\u4EA7\u51FA\u8981\u6C42**:model YAML(file-per-node,\u6587\u4EF6\u540D = id)+ \u4E00\u4EFD\u5206\u57DF\u62A5\u544A(\u5EFA\u4E86\u4EC0\u4E48\u3001\u6740\u4E86\u4EC0\u4E48\u3001\u54EA\u4E9B\u8FB9\u60AC\u7A7A\u3001\u54EA\u4E9B\u5730\u65B9\u5B83\u6CA1\u6562\u5EFA)\u3002\n\n**agent \u4E4B\u95F4\u4E0D\u901A\u4FE1\u3002** \u9700\u8981\u8DE8\u57DF\u7684\u4FE1\u606F\u4E00\u5F8B\u8D70\u4E3B\u63A7:\u60AC\u7A7A\u7684\u8FB9\u5199\u8FDB\u5206\u57DF\u62A5\u544A\u7684 NOTES,\u7531\u4E3B\u63A7\u5728\u5408\u5E76\u9636\u6BB5\u8865\u5EFA\u3002\n\n## \u884C\u4E3A\u8BED\u8A00\u89C4\u7EA6(\u6240\u6709\u57DF\u7EDF\u4E00)\n\n**`title` / `boundary` \u7528\u4E1A\u52A1\u884C\u4E3A\u8BED\u8A00\u5199\"\u627F\u8BFA\u4E86\u4EC0\u4E48\",\u5B9E\u73B0\u673A\u5236\u8FDB `notes` / `anchors`\u3002**\n\n| | \u4F8B |\n|---|---|\n| \u2705 \u6B63\u4F8B | `title: \u591A\u6B21\u53D8\u66F4\u5408\u5E76\u4E3A\u4E00\u5E27\u3001\u5237\u65B0\u8282\u594F\u6709\u4E0A\u9650` |\n| \u274C \u53CD\u4F8B | `title: \u6E32\u67D3\u8C03\u5EA6\u5FAA\u73AF(requestRender \u2192 \u8282\u6D41 setTimeout \u81EA\u6211\u91CD\u6392)` |\n\n\u53CD\u4F8B\u9519\u5728:\u5B83\u5199\u7684\u662F**\u8C03\u7528\u94FE**,\u4E0D\u662F**\u884C\u4E3A**\u3002\u8C03\u7528\u94FE\u56DE\u7B54\"\u4EE3\u7801\u600E\u4E48\u5199\u7684\",\u884C\u4E3A\u56DE\u7B54\"\u7CFB\u7EDF\u627F\u8BFA\u4E86\u4EC0\u4E48\"\n\u2014\u2014\u53EA\u6709\u540E\u8005\u80FD\u8BA9\u4E00\u4E2A\u4E0D\u8BFB\u4EE3\u7801\u7684\u4EBA\u505A\u5224\u65AD,\u800C\u8FD9\u6B63\u662F\u8FD9\u5F20\u56FE\u5B58\u5728\u7684\u7406\u7531\u3002\u673A\u5236\u4FE1\u606F\u4E0D\u4E22,\u632A\u8FDB `notes`/`mechanism`/`anchors`\u3002\n\n> **\u9632\u7684\u4E8B\u6545**:\u4E00\u6574\u8F6E\u5EFA\u6A21\u7684 title \u5168\u662F\u8C03\u7528\u94FE\u8BCD\u6C47,\u62A5\u544A\u9875\"\u5728\u505A\u4EC0\u4E48\"\u90A3\u4E00\u680F\u76F4\u63A5\u66B4\u9732:\n> \u8BFB\u8005\u770B\u5230\u4E00\u4E32\u7B26\u53F7\u540D,\u7B54\u4E0D\u51FA\u8FD9\u4E2A\u7CFB\u7EDF\u5728\u5E72\u4EC0\u4E48\u3002\u8FD4\u5DE5\u4EE3\u4EF7\u662F\u9010\u8282\u70B9\u91CD\u5199\u3002\n\n\u81EA\u68C0\u4E00\u53E5\u8BDD:**\u628A title \u5FF5\u7ED9\u4E00\u4E2A\u6CA1\u8BFB\u8FC7\u8FD9\u4E2A\u4ED3\u5E93\u4EE3\u7801\u7684\u4EBA\u542C,\u4ED6\u80FD\u4E0D\u80FD\u542C\u61C2\u7CFB\u7EDF\u627F\u8BFA\u4E86\u4EC0\u4E48\u3002**\n\n## id \u524D\u7F00\u7EA6\u5B9A(\u5F15\u64CE\u5F3A\u5236,\u5199\u9519\u76F4\u63A5\u62A5\u9519)\n\n| \u7C7B\u578B | \u683C\u5F0F | \u4F8B |\n|---|---|---|\n| loop | `L` \u6216 `N` + 1-2 \u4F4D\u6570\u5B57 + \u53EF\u9009\u5C0F\u5199\u5B57\u6BCD | `L1` `L12` `L3a` `N7` |\n| flow | `C` + \u6570\u5B57(\u65E0\u4E0A\u9650) | `C1` `C42` |\n| junction | `J-` + \u5C0F\u5199\u5B57\u6BCD/\u6570\u5B57/`-`/`_` | `J-write-lease` |\n| scenario | `GWT-<\u5BBF\u4E3B>-<\u4E09\u4F4D\u5E8F\u53F7>`,**\u4E2D\u6BB5\u53EA\u6536\u5B57\u6BCD\u6570\u5B57** | `GWT-L12-001` `GWT-C3-001` |\n| debt | `DEBT-` + \u5B57\u6BCD\u6570\u5B57/`-` | `DEBT-dead-state` |\n\njunction \u7684 id \u5E26 `-`,\u800C scenario \u7684\u4E2D\u6BB5\u4E0D\u6536 `-`\u2014\u2014\u7ED9 junction \u6302\u573A\u666F\u65F6\u628A\u5B83\u7684\u77ED\u540D\u538B\u6210\u5B57\u6BCD\u6570\u5B57\n(`J-write-lease` \u2192 `GWT-WRITELEASE-001`),\u5E76\u5728 junction \u7684 `scenarios` \u91CC\u5F15\u7528\u8FD9\u4E2A id\u3002\n\n> **\u9632\u7684\u4E8B\u6545**:\u8FD9\u5957\u7EA6\u5B9A\u6B64\u524D\u53EA\u6D3B\u5728 schema \u7684\u62A5\u9519\u6B63\u5219\u91CC,\u6CA1\u6709\u4E00\u5904\u6587\u6863\u5199\u8FC7\u3002\n> \u4E00\u6B21\u5EFA\u6A21\u91CC\u4E24\u4E2A\u5EFA\u6A21 agent \u548C\u4E3B\u63A7\u5404\u649E\u4E00\u6B21\u683C\u5F0F\u9519\u8BEF,\u5168\u9760 `check` \u62A5\u9519\u53CD\u63A8\u3002\n\n## \u7B2C\u56DB\u6B65:\u5408\u5E76\u4E0E\u88C1\u51B3(\u4E3B\u63A7\u505A,\u4E0D\u4E0B\u653E)\n\n\u5E76\u884C\u7684\u6210\u672C\u5168\u5728\u8FD9\u4E00\u6B65\u3002\u9010\u6761\u8D70\u5B8C,\u4E0D\u8BB8\u8DF3:\n\n1. **\u91CD\u590D\u951A\u70B9\u88C1\u51B3**:\u628A\u6240\u6709\u8282\u70B9\u7684 `anchors` \u644A\u5E73\u6570\u4E00\u904D,\u540C\u4E00\u4E2A `path#symbol` \u51FA\u73B0\u5728\u4E24\u4E2A\u8282\u70B9\u4E0A\u5C31\u662F\u91CD\u590D\u5EFA\u6A21\u7684\u4FE1\u53F7\u3002\n **\u4EBA\u5DE5\u786E\u8BA4\u4FDD\u7559\u8C01**(\u901A\u5E38\u4FDD\u7559\u884C\u4E3A\u63CF\u8FF0\u66F4\u5B8C\u6574\u7684\u90A3\u4E2A),\u88AB\u7559\u4E0B\u7684\u8282\u70B9\u5E76\u5165\u9000\u573A\u8005\u7684\u72EC\u6709\u5185\u5BB9(\u951A\u70B9\u3001\u573A\u666F\u3001notes),\n \u7136\u540E**\u5168\u91CF\u4FEE\u6B63\u5BF9\u9000\u573A id \u7684\u5F15\u7528**:`traverses` / `guarded_by` / `crosses` / `between` / `parent` / scenario \u7684\u5BBF\u4E3B / \u81EA\u7531\u6587\u672C\u91CC\u7684\u63D0\u53CA,\u4E00\u4E2A\u90FD\u4E0D\u80FD\u6F0F\u3002\n > **\u9632\u7684\u4E8B\u6545**:\u91CD\u590D\u5EFA\u6A21\u5728\u5408\u5E76\u65F6\u9759\u9ED8\u5165\u5E93,\u540C\u4E00\u884C\u4E3A\u8BA1\u5206\u4E24\u6B21,\u6210\u7EE9\u5355\u865A\u9AD8\u3002\u8FD9\u4E00\u6B65**\u4E0D\u8BB8\u81EA\u52A8\u5316\u5408\u5E76**\u2014\u2014\n > \u81EA\u52A8 merge \u4F1A\u8BA9\"\u4E24\u4E2A\u57DF\u770B\u89C1\u540C\u4E00\u884C\u4E3A\u7684\u4E24\u4E2A\u4FA7\u9762\"\u8FD9\u79CD\u60C5\u51B5\u4E22\u6389\u5176\u4E2D\u4E00\u534A\u7684\u4FE1\u606F\u3002\n2. **\u8DE8\u5305 flow \u8865\u5EFA**:\u5404\u57DF\u62A5\u544A\u91CC\u7684\u60AC\u7A7A\u8FB9(\u5BF9\u7AEF\u5728\u522B\u7684\u57DF)\u5728\u8FD9\u91CC\u7269\u5316\u6210 flow \u7684 `traverses` \u6216 junction\u3002\n **\u8DE8\u57DF\u7684\u7AEF\u5230\u7AEF\u65C5\u7A0B\u53EA\u6709\u4E3B\u63A7\u80FD\u770B\u89C1**\u2014\u2014\u5B83\u662F\u5E76\u884C\u5EFA\u6A21\u552F\u4E00\u5FC5\u7136\u7F3A\u5931\u7684\u90E8\u5206,\u4E0D\u8865\u5C31\u7B49\u4E8E\u6CA1\u5EFA\u3002\n3. **\u81EA\u7531\u6587\u672C id \u5F15\u7528\u6838\u5BF9**:`notes` / `boundary` / `summary` \u91CC\u624B\u5199\u7684 `L12`\u3001`C3`\u3001`J-xxx` \u9010\u4E2A\u5BF9\u7167\u8282\u70B9\u8868\u3002\n > **\u9632\u7684\u4E8B\u6545**:\u4E00\u5904\"\u89C1 L4 ...\"\u7684\u9519\u8BEF\u5F15\u7528\u6D3B\u8FC7\u4E86\u4E24\u8F6E\u2014\u2014\u66F4\u7CDF\u7684\u662F\u540E\u6765 `L4` \u771F\u7684\u88AB\u5EFA\u51FA\u6765\u4E86,\n > \u8FD9\u4E2A\u5F15\u7528\u4ECE\"\u6307\u5411\u4E0D\u5B58\u5728\u7684\u8282\u70B9\"\u6076\u5316\u6210\"\u6307\u5411\u4E00\u4E2A\u6BEB\u4E0D\u76F8\u5173\u7684\u8282\u70B9\",\u4ECE\u6B64\u6CA1\u4EBA\u80FD\u9760\u8089\u773C\u53D1\u73B0\u3002\n4. **owner \u53E3\u5F84\u7EDF\u4E00**:\u5404\u57DF\u586B `owner` \u7684\u7C92\u5EA6\u4E0D\u4E00\u81F4\u4F1A\u8BA9\u62A5\u544A\u5206\u7EC4\u788E\u6389\u3002\u5408\u5E76\u65F6\u7EDF\u4E00\u6210\u540C\u4E00\u5C42\u7EA7(\u901A\u5E38\u662F\u5305\u540D)\u3002\n5. **\u6536\u53E3**:`loopgraph check . --repo-root . --strict-anchors` **exit 0**\u3002\u951A\u70B9\u4E0D\u771F\u5B9E\u3001\u5F15\u7528\u60AC\u7A7A\u3001\u56FE\u6709\u73AF,\u4E00\u6761\u90FD\u4E0D\u8BB8\u7559\u3002\n \u7136\u540E `loopgraph conformance` / `overview` \u770B\u4E00\u773C:\u6210\u7EE9\u5355\u548C\u5730\u56FE\u8BFB\u8D77\u6765\u662F\u4E0D\u662F\u4E00\u4E2A\u6B63\u5E38\u7CFB\u7EDF\u3002\n\n## \u8BDA\u5B9E\u4F18\u5148\u4E8E\u8986\u76D6\u7387\n\n**\u4E0D\u503C\u5F97\u5EFA\u6A21\u7684\u90E8\u5206,\u5728\u62A5\u544A\u91CC\u660E\u786E\u5217\u51FA\u6765\u5E76\u5199\u6E05\u7406\u7531,\u4E0D\u4E3A\u51D1\u6570\u628A CRUD \u5305\u88C5\u6210 loop\u3002**\n\n- \u7EAF\u589E\u5220\u6539\u67E5\u3001\u65E0\u72B6\u6001\u5DE5\u5177\u51FD\u6570\u3001\u4E00\u6B21\u6027 bootstrap:\u4E0D\u5EFA,\u5199\u8FDB\"\u672A\u5EFA\u6A21\u6E05\u5355\"\u5E76\u8BF4\u660E\u7406\u7531;\n- \u626B\u4E0D\u5230\u3001\u770B\u4E0D\u61C2\u3001\u62FF\u4E0D\u51C6\u7684:\u6807 unverified \u6216\u76F4\u63A5\u5217\u8FDB\u672A\u5EFA\u6A21\u6E05\u5355,**\u4E0D\u7F16\u9020\u951A\u70B9**;\n- \u6BCF\u4E2A\u57DF\u7684\u62A5\u544A\u5FC5\u987B**\u5BA3\u544A\u5B83\u6CA1\u8986\u76D6\u7684\u8FB9\u754C**(\u6D4F\u89C8\u5668\u7AEF\u4EE3\u7801\u3001vendored \u4F9D\u8D56\u3001\u8D8A\u754C\u7684\u5305),\u9632\"\u6CA1\u62A5=\u6CA1\u6709\"\u7684\u8BEF\u8BFB\u3002\n\n\u4E00\u5F20 60 \u4E2A\u771F\u8282\u70B9 + \u4E00\u4EFD\u8BDA\u5B9E\u7684\u672A\u5EFA\u6A21\u6E05\u5355,\u6BD4 90 \u4E2A\u6CE8\u6C34\u8282\u70B9\u6709\u7528\u5F97\u591A:\n**\u6CE8\u6C34\u8282\u70B9\u4F1A\u8BA9\u6210\u7EE9\u5355\u865A\u9AD8,\u800C\u6210\u7EE9\u5355\u865A\u9AD8\u4F1A\u8BA9\u8FD9\u5F20\u56FE\u5728\u7B2C\u4E00\u6B21\u88AB\u7528\u6765\u505A\u5224\u65AD\u65F6\u5C31\u5931\u53BB\u4FE1\u4EFB\u3002**\n"; export declare const SETUP_PR_TEMPLATE_PROMPT = "# \u4EFB\u52A1:\u7ED9\u672C\u4ED3\u5E93\u7684 PR \u6A21\u677F\u52A0 Loop \u58F0\u660E\u680F(loopgraph \u540C\u6B65\u901A\u9053 \u2461)\n\n\u4F60\u662F\u672C\u4ED3\u5E93\u7684 coding agent\u3002\u76EE\u6807:\u8BA9\u6BCF\u4E2A PR \u663E\u5F0F\u58F0\u660E\u5B83\u662F\u5426\u5F15\u5165/\u4FEE\u6539\u63A7\u5236\u5FAA\u73AF(loop),\u4E0E loopgraph \u7684\u786E\u5B9A\u6027\u5BF9\u8D26(\u901A\u9053 \u2460)\u4E92\u8BC1\u3002\n\n## \u6B65\u9AA4\n\n1. **\u627E\u5230\u73B0\u6709 PR/MR \u6A21\u677F**:GitHub \u4E3A `.github/pull_request_template.md` \u6216 `.github/PULL_REQUEST_TEMPLATE/*.md`;GitLab \u4E3A `.gitlab/merge_request_templates/*.md`\u3002\u6CA1\u6709\u5C31\u65B0\u5EFA\u5E73\u53F0\u5BF9\u5E94\u7684\u9ED8\u8BA4\u6A21\u677F\u3002\n2. **\u5E42\u7B49**:\u82E5\u6A21\u677F\u5DF2\u542B \"Loop \u58F0\u660E\" \u8282,\u4E0D\u8981\u91CD\u590D\u6DFB\u52A0\u3002\n3. **\u8FFD\u52A0\u4EE5\u4E0B\u8282**(\u4E0D\u6539\u52A8\u6A21\u677F\u5176\u4F59\u5185\u5BB9\u3001\u4E0D\u91CD\u6392\u683C\u5F0F):\n\n```markdown\n## Loop \u58F0\u660E\n\n\n- [ ] none \u2014 \u4E0D\u6D89\u53CA\u4EFB\u4F55 loop\n- [ ] \u5F15\u5165/\u4FEE\u6539: \n- [ ] uncertain \u2014 \u4E0D\u786E\u5B9A(\u5C06\u89E6\u53D1 loop \u53D1\u73B0 agent \u5206\u6790\u672C PR)\n```\n\n## \u89C4\u5219\n\n- \u58F0\u660E\u4E3A `uncertain` \u6216\"\u5F15\u5165/\u4FEE\u6539\"\u7684 PR,\u4F1A\u89E6\u53D1 advisory \u5206\u6790(\u901A\u9053 \u2462);\u58F0\u660E none \u4F46\u786E\u5B9A\u6027\u5BF9\u8D26\u6293\u5230\u65B0\u961F\u5217/\u5B9A\u65F6\u5668\u4FE1\u53F7 \u2192 \u77DB\u76FE,\u8981\u6C42\u6539\u58F0\u660E\u3002\n- \u63D0\u4EA4\u8FD9\u4E2A\u6539\u52A8\u65F6\u8BF4\u660E:\u8FD9\u662F\u58F0\u660E\u680F,\u4E0D\u662F\u95E8\u7981\u2014\u2014\u95E8\u7981\u53EA\u6709\u786E\u5B9A\u6027\u7684 `loopgraph check`\u3002\n"; /** * Machine-readable prefix of the version-pin marker burned into the generated * `setup-github-actions.md` (A3). `init` re-runs skip existing kit files (to * preserve a repo's edits), so on re-run after a loopgraph upgrade this marker * is how init detects that the burned pin has gone stale and WARNS — without * clobbering the file. Shared here so the writer and the reader (init.ts) can't * drift on the exact text. */ export declare const GITHUB_ACTIONS_PIN_MARKER = "loopgraph-pin:"; export declare function setupGithubActionsPrompt(versionPin: string): string; /** * The unified `/loopgraph` skill front door (the single entry a coding agent — * Claude Code, and any agent that can read a SKILL.md — routes through). Ships * to `.claude/skills/loopgraph/SKILL.md` in the target repo. Like the rest of * the kit it compiles into the PUBLIC npm package, so it must stay GENERIC — no * target-repo internals; example ids are the neutral L1/C1/J- forms only. */ export declare const LOOPGRAPH_SKILL = "---\nname: loopgraph\ndescription: >-\n \u6A21\u578B\u9A71\u52A8\u5DE5\u7A0B\u63A7\u5236(Model-Driven Engineering Control)\u7684\u7EDF\u4E00\u5165\u53E3\u3002\u5F53\u4ED3\u5E93\u91CC\u6709\n .loopgraph/ behavioral model,\u6216\u4F60\u8981:\u53D1\u73B0/\u5EFA\u6A21\u540E\u53F0\u63A7\u5236\u5FAA\u73AF(control loop /\n \u961F\u5217\u6D88\u8D39 / \u5B9A\u65F6\u5668 / \u72B6\u6001\u673A / \u8F6E\u8BE2 / \u91CD\u8BD5\u94FE)\u3001\u628A\u4E00\u6B21\u6539\u52A8\u5BF9\u7740\u6A21\u578B\u505A\u786E\u5B9A\u6027\u95E8\u7981\n (check)\u3001\u770B\u5B9E\u73B0\u76F8\u5BF9\u6A21\u578B\u6B20\u4E86\u54EA\u4E9B\u8D26(conformance / gaps)\u3001\u53EF\u89C6\u5316\u6574\u5F20\u6A21\u578B\n (graph),\u6216\u5728\u6539\u4EE3\u7801\u524D\u67E5\u6A21\u578B\u7684\u5F71\u54CD\u9762/\u6267\u884C\u8BA1\u5212/\u573A\u666F/\u8BC1\u636E\u65F6,\u4F7F\u7528\u672C skill\u3002\n Triggers: loopgraph, .loopgraph/model, control loop, loop discovery,\n behavioral drift, a PR's Loop declaration.\n---\n\n# loopgraph \u2014 \u7EDF\u4E00\u524D\u95E8\n\n**\u4E00\u53E5\u8BDD**:\u7ED3\u6784\u5316\u884C\u4E3A\u6A21\u578B\u662F\u89C4\u8303\u4E8B\u5B9E\u6E90,\u4EE3\u7801/\u6D4B\u8BD5/\u53EF\u89C2\u6D4B\u4FE1\u53F7\u662F\u5B83\u7684\u6295\u5C04\u4E0E\u8BC1\u636E\u3002\u65B9\u5411\u6C38\u4E0D\u53CD\u8F6C\u2014\u2014\u4EE3\u7801\u6765\u5BF9\u9F50\u6A21\u578B,\u4E0D\u662F\u53CD\u8FC7\u6765\u3002\u53D1\u73B0\u9760 LLM(\u4F60),\u9632\u8150\u9760\u5F15\u64CE(\u786E\u5B9A\u6027 CLI,\u6C38\u4E0D\u8C03 LLM)\u3002\n\n**\u524D\u7F6E**:\u547D\u4EE4\u90FD\u5728\u76EE\u6807\u4ED3\u5E93\u6839\u8DD1\u3002`.loopgraph/model/` \u4E0D\u5B58\u5728\u5C31\u5148 `npx loopgraph init`\u3002\u67E5\u8BE2\u4F18\u5148\u7528 MCP(`npx loopgraph mcp .`)\u62FF\u4EFB\u52A1\u76F8\u5173\u7684\u6A21\u578B\u5207\u7247,\u522B\u5168\u91CF\u8BFB spec\u3002\n\n## \u6309\u610F\u56FE\u8DEF\u7531\n\n### 1. \u6539\u4EE3\u7801\u524D\u5148\u7406\u89E3 \u2192 \u67E5\u6A21\u578B,\u522B\u8BFB\u5168\u91CF spec\n- MCP \u5DE5\u5177:`model_inspect`(\u5207\u7247\u5B9A\u4F4D)\u3001`model_impact`(\u6539\u8FD9\u4E2A\u7275\u52A8\u8C01)\u3001`model_plan`(\u4E00\u6761 flow \u600E\u4E48\u8DD1)\u3001`model_scenario`(GWT \u7EC6\u8282 + \u9A8C\u8BC1\u6D4B\u8BD5)\u3001`model_evidence`(\u8282\u70B9\u7684\u951A\u70B9/\u8BC1\u636E)\u3001`model_matrix`(flow \u7684 GWT\u2194test \u8986\u76D6)\u3002\n- \u6216 CLI:`loopgraph impact .` / `plan` / `scenario` / `evidence` / `matrix`\u3002\n- \u94C1\u5F8B:\u52A8\u624B\u524D\u5148 `model_impact` \u770B\u5F71\u54CD\u9762\u3002\n\n### 2. \u53D1\u73B0/\u5EFA\u6A21\u65B0\u884C\u4E3A \u2192 \u56DB\u904D\u626B\u63CF\n- \u4E25\u683C\u6267\u884C `.loopgraph/agent/loop-discovery.md`(\u4E24\u7C7B\u5019\u9009\u53EC\u56DE \u2192 \u4E09\u5224\u636E\u8BC1\u4F2A \u2192 \u7EC4\u5408 \u2192 trace \u5347\u7EF4)\u3002\n- \u4EA7\u51FA model YAML \u8349\u6848:\u6BCF\u6761\u65AD\u8A00\u5E26 `path#symbol` \u951A\u70B9\u5E76 grep \u5BF9 HEAD \u6838\u5B9E;\u6838\u5B9E\u4E0D\u5230\u6807 unverified,\u4E0D\u7F16\u9020\u3002\n- \u95ED\u73AF:`check --strict-anchors`(\u6838\u951A\u70B9)\u2192 `reconcile`(\u53CD\u5411\u5BF9\u8D26)\u2192 \u4EBA\u5BA1 \u2192 \u843D\u5E93\u3002**\u8349\u6848\u672A\u7ECF\u7EF4\u62A4\u8005\u6838\u5B9E\u4E0D\u843D\u5E93\u3002**\n\n**\u5148\u6309\u4ED3\u5E93\u89C4\u6A21\u9009\u8DEF**(\u7B2C\u4E00\u6B21\u7ED9\u6574\u4E2A\u4ED3\u5E93\u5EFA\u6A21\u65F6\u5C24\u5176\u91CD\u8981):\n\n- **\u6E90\u6587\u4EF6 < ~150(\u5C0F\u4ED3)**:\u5355 agent \u76F4\u63A5\u8DD1 `.loopgraph/agent/loop-discovery.md`,\u4E00\u904D\u626B\u5B8C\u3002\n- **\u6E90\u6587\u4EF6 \u2265 ~150(\u5927\u4ED3)**:\u5148\u8BFB `.loopgraph/agent/loop-discovery-parallel.md` \u2014\u2014 \u5206\u57DF(**\u6309\u884C\u4E3A\u5F52\u5C5E,\u4E0D\u6309\u5305\u5F52\u5C5E**)\u2192 \u53D1 id \u53F7\u6BB5 \u2192 \u5E76\u884C\u6D3E\u53D1 \u2192 **\u4E3B\u63A7\u5408\u5E76\u88C1\u51B3**\u3002\n\n\u5206\u4E0D\u6E05\u5C31\u770B\u4E0A\u4E0B\u6587\u88C5\u4E0D\u88C5\u5F97\u4E0B:\u4E00\u4E2A agent \u7684\u4E0A\u4E0B\u6587\u653E\u4E0D\u4E0B\u6574\u4ED3\u5019\u9009\u6E05\u5355\u65F6,\u5C31\u8BE5\u5206\u57DF\u5E76\u884C\u3002\n\u5E76\u884C\u7684\u6210\u672C\u5168\u5728\u5408\u5E76\u90A3\u4E00\u6B65(\u91CD\u590D\u951A\u70B9\u88C1\u51B3\u3001\u8DE8\u57DF flow \u8865\u5EFA\u3001id \u5F15\u7528\u6838\u5BF9),**\u4E0D\u8BB8\u81EA\u52A8\u5408\u5E76**\u3002\n\n**\u5982\u679C\u8FD9\u4E2A\u4ED3\u5E93\u4E00\u4E2A loop \u90FD\u6CA1\u6709(CLI / \u6784\u5EFA\u5DE5\u5177 / \u4E00\u6B21\u6027\u7BA1\u7EBF):\u4E0D\u8981\u5C31\u6B64\u6536\u5DE5\u4EA4\u7A7A\u6A21\u578B\u3002**\n\u96F6-loop \u662F\u5E38\u89C1\u5F62\u6001,\u4E0D\u662F\"\u6CA1\u4EC0\u4E48\u53EF\u5EFA\u6A21\u7684\"\u3002\u6539\u7528 `shape: anchored` \u7684 flow \u7ED9\u4E3B\u6267\u884C\u8DEF\u5F84\u5EFA\u6A21\u2014\u2014\n\u6BCF\u6761\u7528\u6237\u53EF\u89E6\u53D1\u7684\u5B8C\u6574\u8DEF\u5F84\u4E00\u6761 flow,`anchors` \u9489\u5165\u53E3\u548C\u5173\u952E\u7B26\u53F7,`scenarios` \u7ED1\u6D4B\u8BD5\u3002\n\u5224\u636E\u901F\u8BB0:**\u95EE\"\u8FD9\u6761\u65C5\u7A0B\u7684\u4EE3\u7801\u5728\u54EA\"\u3002\u7B54\u5F97\u51FA\u5177\u4F53\u7B26\u53F7 \u2192 `anchored` flow;\u7B54\"\u5728\u5B83\u7A7F\u8FC7\u7684\u90A3\u4E9B loop \u91CC\" \u2192 `composed` flow\u3002**\n\n### 3. \u95E8\u7981\u4E00\u6B21\u6539\u52A8(\u786E\u5B9A\u6027,\u96F6 LLM,\u552F\u4E00\u7684 gate)\n- `loopgraph check . --repo-root . --strict-anchors`\n- \u68C0\u67E5 schema / \u5F15\u7528\u5B8C\u6574\u6027 / \u56FE\u65E0\u73AF / \u951A\u70B9\u5B58\u5728\u6027 / canonical-writer \u4E0D\u53D8\u91CF\u3002\u4E9A\u79D2\u7EA7\u3001\u96F6\u7F51\u7EDC\u3001\u53EF\u590D\u73B0\u3002\u8FD9\u662F\u552F\u4E00\u4F1A fail \u4E00\u4E2A PR \u7684\u901A\u9053;\u53D1\u73B0\u5C42(LLM)\u6C38\u8FDC\u53EA\u51FA\u8349\u6848\u3001\u4E0D\u8FDB\u95E8\u7981\u3002\n\n### 4. \u770B\u5B9E\u73B0\u6B20\u6A21\u578B\u54EA\u4E9B\u8D26 \u2192 \u5C65\u7EA6\u6210\u7EE9\u5355\n- `loopgraph conformance . --repo-root .`\n- \u6BCF\u4E2A loop/junction \u7ED9 `met` / `partial` / `gap` + \u7F3A\u53E3\u6E05\u5355(no-anchor / anchor-missing / no-scenario / scenario-unverified / test-missing / queue-unmatched / evidence-missing)\u3002\n- \u8BFB\u6CD5:**\u6BCF\u6761 gap \u662F\u5B9E\u73B0\u6B20\u6A21\u578B\u7684\u4E00\u7B14\u8D26,\u4E0D\u662F\u6A21\u578B\u7684\u95EE\u9898**\u3002\u5148\u770B\u7EA2\u7684(gap)\u2014\u2014\u6A21\u578B\u58F0\u660E\u4E86\u3001\u4EE3\u7801\u6CA1\u63A5\u4F4F\u3002\u52A0 `--strict` \u8BA9\u6709\u7F3A\u53E3\u65F6\u975E\u96F6\u9000\u51FA\u3002\n\n### 5. \u53EF\u89C6\u5316\u6574\u5F20\u6A21\u578B \u2192 \u81EA\u5305\u542B HTML\n- `loopgraph graph . --repo-root .` \u2192 \u5199 `.loopgraph/ws/graph.html`(gitignore,\u79BB\u7EBF\u53EF\u5F00),\u6309\u5C65\u7EA6\u72B6\u6001\u4E0A\u8272,\u7EA2\u8282\u70B9\u4E00\u773C\u770B\u5230\u6F02\u79FB\u3002\n\n### 6. advisory \u5BF9\u8D26 / \u8986\u76D6(\u4E0D\u8FDB\u95E8\u7981)\n- `loopgraph reconcile . --repo-root .`:\u4EE3\u7801\u2192\u6A21\u578B(\u4EE3\u7801\u91CC\u6709\u6A21\u578B\u6F0F\u767B\u8BB0\u7684\u961F\u5217/\u5B9A\u65F6\u5668)\u3002\n- `loopgraph coverage .`:\u6A21\u578B\u81EA\u68C0(\u591A\u5C11\u8282\u70B9\u771F\u88AB\u951A\u70B9/\u573A\u666F\u7ED1\u4F4F)\u3002\n- `loopgraph snapshot . --repo-root .`:nightly \u5168\u91CF\u5FEB\u7167 + \u6F02\u79FB\u62A5\u544A(\u6C38\u4E0D\u8FDB\u95E8\u7981)\u3002\n\n## \u7EA2\u7EBF(\u4EFB\u4F55\u8DEF\u5F84\u90FD\u9075\u5B88)\n1. \u6BCF\u6761\u6A21\u578B\u65AD\u8A00\u5E26 `path#symbol` \u951A\u70B9,\u5BF9\u76EE\u6807\u4ED3 HEAD \u6838\u5B9E\u3002\n2. \u6A21\u578B\u662F\u4E8B\u5B9E\u6E90,\u4EE3\u7801\u6765\u5BF9\u9F50;\u8FD0\u884C\u6570\u636E\u53EA\u4F5C\u5B9E\u73B0\u72B6\u6001\u8BC1\u636E,\u4E0D\u53CD\u5411\u6539\u6A21\u578B\u8BED\u4E49\u3002\n3. \u53D1\u73B0\u9760 LLM,\u6838\u5B9E\u9760\u5F15\u64CE;\u95E8\u7981\u96F6 LLM\u3001\u96F6\u7F51\u7EDC\u3001\u96F6\u4EE3\u7801\u6267\u884C\u3002\n4. LLM \u53EA\u4EA7\u8349\u6848,\u843D\u5E93\u987B\u7ECF\u4EBA\u5BA1\u3002\n\n## \u4E0D\u6B62 Claude Code\n\u672C\u6587\u4EF6\u662F\u901A\u7528 agent \u5DE5\u4F5C\u6D41\u6307\u4EE4\u3002Cursor / Codex / Gemini CLI \u7B49\u4EFB\u4F55 coding agent \u90FD\u53EF\u8BFB `.claude/skills/loopgraph/SKILL.md` \u7167\u6B64\u6267\u884C;`npx loopgraph ` CLI \u4E0E `loopgraph mcp` server \u662F\u7EDF\u4E00\u63A5\u53E3\u3002\n"; //# sourceMappingURL=agent-kit.d.ts.map