feihong-code 0.2.2 → 0.5.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/.github/FUNDING.yml +4 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +37 -37
- package/.github/ISSUE_TEMPLATE/config.yml +14 -14
- package/.github/ISSUE_TEMPLATE/feature_request.md +28 -28
- package/.github/PULL_REQUEST_TEMPLATE.md +46 -46
- package/.github/SECURITY.md +67 -67
- package/.github/dependabot.yml +16 -0
- package/.github/workflows/ci.yml +1 -1
- package/AGENT-GUIDE.md +382 -237
- package/CHANGELOG.md +405 -73
- package/CODE_OF_CONDUCT.md +56 -56
- package/CONTRIBUTING.md +68 -68
- package/LICENSE +22 -22
- package/README.md +31 -25
- package/README.self-evolve.md +274 -0
- package/dist/agent/code-review.js +2 -0
- package/dist/agent/code-review.js.map +1 -1
- package/dist/agent/code-writer.js +70 -17
- package/dist/agent/code-writer.js.map +1 -1
- package/dist/agent/context-compactor.js +13 -4
- package/dist/agent/context-compactor.js.map +1 -1
- package/dist/agent/experience.js +262 -62
- package/dist/agent/experience.js.map +1 -1
- package/dist/agent/orchestrator.js +148 -68
- package/dist/agent/orchestrator.js.map +1 -1
- package/dist/agent/quality-gate.js +10 -4
- package/dist/agent/quality-gate.js.map +1 -1
- package/dist/agent/repo-context.js +181 -0
- package/dist/agent/repo-context.js.map +1 -0
- package/dist/agent/repo-reader.js +92 -99
- package/dist/agent/repo-reader.js.map +1 -1
- package/dist/agent/self-heal.js +38 -48
- package/dist/agent/self-heal.js.map +1 -1
- package/dist/agent/self-improver.js +65 -61
- package/dist/agent/self-improver.js.map +1 -1
- package/dist/agent/subagent-summary.js +31 -0
- package/dist/agent/subagent-summary.js.map +1 -0
- package/dist/agent/subagent.js +52 -2
- package/dist/agent/subagent.js.map +1 -1
- package/dist/agent/symbol-index.js +160 -0
- package/dist/agent/symbol-index.js.map +1 -0
- package/dist/agent/team.js +193 -0
- package/dist/agent/team.js.map +1 -0
- package/dist/cli/commands.js +124 -143
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/index.js +113 -106
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/repl.js +82 -7
- package/dist/cli/repl.js.map +1 -1
- package/dist/cli/run.js +601 -95
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/tui.js +145 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/cli/version.js +1 -1
- package/dist/enterprise/audit.js +75 -12
- package/dist/enterprise/audit.js.map +1 -1
- package/dist/enterprise/index.js +14 -11
- package/dist/enterprise/index.js.map +1 -1
- package/dist/enterprise/policy.js +22 -10
- package/dist/enterprise/policy.js.map +1 -1
- package/dist/harness/executor.js +127 -0
- package/dist/harness/executor.js.map +1 -0
- package/dist/harness/harness.js +87 -0
- package/dist/harness/harness.js.map +1 -0
- package/dist/harness/index.js +31 -0
- package/dist/harness/index.js.map +1 -0
- package/dist/harness/loader.js +138 -0
- package/dist/harness/loader.js.map +1 -0
- package/dist/harness/reporter.js +34 -0
- package/dist/harness/reporter.js.map +1 -0
- package/dist/harness/types.js +10 -0
- package/dist/harness/types.js.map +1 -0
- package/dist/harness/verifier.js +48 -0
- package/dist/harness/verifier.js.map +1 -0
- package/dist/hello.js +14 -0
- package/dist/hello.js.map +1 -0
- package/dist/memory/auto-summarize.js +208 -0
- package/dist/memory/auto-summarize.js.map +1 -0
- package/dist/memory/index.js +228 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/models/model-router.js +23 -10
- package/dist/models/model-router.js.map +1 -1
- package/dist/plugins/plugin-loader.js +179 -0
- package/dist/plugins/plugin-loader.js.map +1 -0
- package/dist/runtime/event-log.js.map +1 -1
- package/dist/runtime/hooks.js +80 -0
- package/dist/runtime/hooks.js.map +1 -0
- package/dist/self-evolve/hook.js +60 -0
- package/dist/self-evolve/hook.js.map +1 -0
- package/dist/shared/config.js +35 -3
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/i18n.js +535 -0
- package/dist/shared/i18n.js.map +1 -0
- package/dist/skills/grill.js +2 -1
- package/dist/skills/grill.js.map +1 -1
- package/dist/skills/self-heal.js +73 -0
- package/dist/skills/self-heal.js.map +1 -0
- package/dist/skills/skill-loader.js +131 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-market.js +195 -0
- package/dist/skills/skill-market.js.map +1 -0
- package/dist/tools/analysis/code-analyzer.js +45 -18
- package/dist/tools/analysis/code-analyzer.js.map +1 -1
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp/index.js +84 -0
- package/dist/tools/mcp/index.js.map +1 -0
- package/dist/tools/mcp/mcp-client.js +172 -0
- package/dist/tools/mcp/mcp-client.js.map +1 -0
- package/dist/tools/sandbox.js +126 -0
- package/dist/tools/sandbox.js.map +1 -0
- package/dist/tools/shell/exec.js +25 -0
- package/dist/tools/shell/exec.js.map +1 -1
- package/dist/tools/shell/run-shell.tool.js +4 -1
- package/dist/tools/shell/run-shell.tool.js.map +1 -1
- package/dist/tools/skills/load-skill.tool.js +36 -0
- package/dist/tools/skills/load-skill.tool.js.map +1 -0
- package/dist/tools/tool.interface.js.map +1 -1
- package/dist/tools/tool.registry.js +37 -1
- package/dist/tools/tool.registry.js.map +1 -1
- package/dist/tools/web/web.tool.js +139 -0
- package/dist/tools/web/web.tool.js.map +1 -0
- package/dist/web/auth.js +42 -3
- package/dist/web/auth.js.map +1 -1
- package/dist/web/channels.js +171 -0
- package/dist/web/channels.js.map +1 -0
- package/dist/web/public/index.html +3253 -39
- package/dist/web/public/index.html.tmp +3117 -0
- package/dist/web/public/index_new.html +3196 -0
- package/dist/web/server.js +790 -11
- package/dist/web/server.js.map +1 -1
- package/dist/web/task-queue.js +352 -0
- package/dist/web/task-queue.js.map +1 -0
- package/dist/web/web-config.js +143 -0
- package/dist/web/web-config.js.map +1 -0
- package/docs/Deployment_Guide_EN.md +288 -0
- package/docs/Technical_Manual_EN.md +216 -0
- package/docs/User_Manual_EN.md +314 -0
- package/docs/self-evolve-implementation.md +165 -0
- package/docs/self-evolve.md +166 -0
- package/docs//344/272/247/345/223/201/345/274/200/345/217/221/346/226/207/346/241/243.md +614 -614
- package/docs//344/274/201/344/270/232/351/203/250/347/275/262/344/270/216/345/220/210/350/247/204.md +267 -267
- package/docs//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +318 -358
- package/docs//345/270/270/350/247/201/351/227/256/351/242/230/344/270/216/346/225/205/351/232/234/346/216/222/346/237/245.md +130 -130
- package/docs//346/212/200/346/234/257/350/257/264/346/230/216/344/271/246.md +216 -303
- package/docs//346/236/266/346/236/204/344/270/216API.md +238 -238
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +196 -196
- package/docs//351/203/250/347/275/262/346/214/207/345/215/227.md +165 -165
- package/docs//351/203/250/347/275/262/350/257/264/346/230/216/344/271/246.md +288 -0
- package/docs//351/205/215/347/275/256/345/217/202/350/200/203.md +127 -127
- package/package.json +114 -109
- package/tool-schema.json +127 -127
package/CODE_OF_CONDUCT.md
CHANGED
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
# 行为准则
|
|
2
|
-
|
|
3
|
-
## 我们的承诺
|
|
4
|
-
|
|
5
|
-
为了营造一个开放和友好的环境,我们作为贡献者和维护者承诺:
|
|
6
|
-
|
|
7
|
-
- 不受性别、种族、民族、性取向、性别认同、残疾、外貌、体型、年龄、宗教或国籍的影响
|
|
8
|
-
- 以尊重和包容的态度对待每一位参与者
|
|
9
|
-
- 致力于创造一个无骚扰的环境
|
|
10
|
-
|
|
11
|
-
## 我们的标准
|
|
12
|
-
|
|
13
|
-
**促进积极互动的行为:**
|
|
14
|
-
- 使用友好和包容的语言
|
|
15
|
-
- 尊重不同的观点和经历
|
|
16
|
-
- 虚心接受建设性反馈
|
|
17
|
-
- 关注社区的整体利益
|
|
18
|
-
- 对同类表现出同理心
|
|
19
|
-
|
|
20
|
-
**不可接受的行为:**
|
|
21
|
-
- 使用性化的语言或图像,以及任何形式的性关注或挑逗
|
|
22
|
-
- 恶意的评论、侮辱性的贬低攻击或个人/政治攻击
|
|
23
|
-
- 公开或私下的骚扰
|
|
24
|
-
- 未经明确许可发布他人的私人信息,如物理或电子邮件地址
|
|
25
|
-
- 其他在专业场所被认为不恰当的行为
|
|
26
|
-
|
|
27
|
-
## 执行责任
|
|
28
|
-
|
|
29
|
-
社区领导者负责澄清和执行我们接受的行为标准,并将根据以下原则采取适当和公平的纠正措施:
|
|
30
|
-
|
|
31
|
-
1. 以建设性的方式提供纠正性反馈
|
|
32
|
-
2. 移除、编辑或不接受违反本行为准则的评论、提交、代码、问题和其他贡献
|
|
33
|
-
3. 暂时或永久禁止任何被视为不合适、威胁、冒犯或有害的行为
|
|
34
|
-
|
|
35
|
-
## 范围
|
|
36
|
-
|
|
37
|
-
本行为准则适用于:
|
|
38
|
-
- 项目空间和公共空间,当个人正式代表项目或其社区时
|
|
39
|
-
- 代表项目的官方电子邮件、社交媒体账户或在线活动中
|
|
40
|
-
|
|
41
|
-
## 报告
|
|
42
|
-
|
|
43
|
-
如目睹或遭受不法行为,请通过以下方式联系项目负责人:
|
|
44
|
-
|
|
45
|
-
- **GitHub Issues**: https://github.com/wch887292/feihong-code/issues
|
|
46
|
-
- **邮件**: wch887292@gmail.com
|
|
47
|
-
|
|
48
|
-
所有投诉将被认真、及时地审查和调查。
|
|
49
|
-
|
|
50
|
-
## attribution
|
|
51
|
-
|
|
52
|
-
本行为准则改编自 [Contributor Covenant](https://www.contributor-covenant.org),版本 2.1。
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
**晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹**
|
|
1
|
+
# 行为准则
|
|
2
|
+
|
|
3
|
+
## 我们的承诺
|
|
4
|
+
|
|
5
|
+
为了营造一个开放和友好的环境,我们作为贡献者和维护者承诺:
|
|
6
|
+
|
|
7
|
+
- 不受性别、种族、民族、性取向、性别认同、残疾、外貌、体型、年龄、宗教或国籍的影响
|
|
8
|
+
- 以尊重和包容的态度对待每一位参与者
|
|
9
|
+
- 致力于创造一个无骚扰的环境
|
|
10
|
+
|
|
11
|
+
## 我们的标准
|
|
12
|
+
|
|
13
|
+
**促进积极互动的行为:**
|
|
14
|
+
- 使用友好和包容的语言
|
|
15
|
+
- 尊重不同的观点和经历
|
|
16
|
+
- 虚心接受建设性反馈
|
|
17
|
+
- 关注社区的整体利益
|
|
18
|
+
- 对同类表现出同理心
|
|
19
|
+
|
|
20
|
+
**不可接受的行为:**
|
|
21
|
+
- 使用性化的语言或图像,以及任何形式的性关注或挑逗
|
|
22
|
+
- 恶意的评论、侮辱性的贬低攻击或个人/政治攻击
|
|
23
|
+
- 公开或私下的骚扰
|
|
24
|
+
- 未经明确许可发布他人的私人信息,如物理或电子邮件地址
|
|
25
|
+
- 其他在专业场所被认为不恰当的行为
|
|
26
|
+
|
|
27
|
+
## 执行责任
|
|
28
|
+
|
|
29
|
+
社区领导者负责澄清和执行我们接受的行为标准,并将根据以下原则采取适当和公平的纠正措施:
|
|
30
|
+
|
|
31
|
+
1. 以建设性的方式提供纠正性反馈
|
|
32
|
+
2. 移除、编辑或不接受违反本行为准则的评论、提交、代码、问题和其他贡献
|
|
33
|
+
3. 暂时或永久禁止任何被视为不合适、威胁、冒犯或有害的行为
|
|
34
|
+
|
|
35
|
+
## 范围
|
|
36
|
+
|
|
37
|
+
本行为准则适用于:
|
|
38
|
+
- 项目空间和公共空间,当个人正式代表项目或其社区时
|
|
39
|
+
- 代表项目的官方电子邮件、社交媒体账户或在线活动中
|
|
40
|
+
|
|
41
|
+
## 报告
|
|
42
|
+
|
|
43
|
+
如目睹或遭受不法行为,请通过以下方式联系项目负责人:
|
|
44
|
+
|
|
45
|
+
- **GitHub Issues**: https://github.com/wch887292/feihong-code/issues
|
|
46
|
+
- **邮件**: wch887292@gmail.com
|
|
47
|
+
|
|
48
|
+
所有投诉将被认真、及时地审查和调查。
|
|
49
|
+
|
|
50
|
+
## attribution
|
|
51
|
+
|
|
52
|
+
本行为准则改编自 [Contributor Covenant](https://www.contributor-covenant.org),版本 2.1。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
**晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹**
|
package/CONTRIBUTING.md
CHANGED
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
# 贡献指南(CONTRIBUTING)
|
|
2
|
-
|
|
3
|
-
感谢关注 **飞虹 Code(Muse Code 参照复刻)**。本文件约定开发协作规范,请提交前阅读。
|
|
4
|
-
|
|
5
|
-
## 一、项目署名(强制)
|
|
6
|
-
|
|
7
|
-
所有开发产出(源码注释头部、README、LICENSE、文档、页脚、about)必须标注:
|
|
8
|
-
|
|
9
|
-
- 公司:**晋江市飞虹智科技企业管理有限公司**
|
|
10
|
-
- 中心:**飞扬企源研发中心**
|
|
11
|
-
- 负责人:**吴赐虹**
|
|
12
|
-
|
|
13
|
-
源码文件头部统一使用:
|
|
14
|
-
|
|
15
|
-
```ts
|
|
16
|
-
/**
|
|
17
|
-
* 飞虹 Code (Muse Code 参照复刻)
|
|
18
|
-
* 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
19
|
-
*/
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## 二、架构约定(feature-first 分层)
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
src/
|
|
26
|
-
cli/ 入口、参数解析、REPL、运行时装配
|
|
27
|
-
shared/ 配置、错误、日志、共享类型(基础设施)
|
|
28
|
-
agent/ Orchestrator / Planner / Prompts
|
|
29
|
-
tools/ 工具实现(file / shell / search / verify)+ registry
|
|
30
|
-
models/ 模型路由 + providers(openai-compatible / ollama / mock)
|
|
31
|
-
runtime/ 事件日志、会话状态(单一可信源)
|
|
32
|
-
skills/ 高级技能(/plan /grill /goal)
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
铁律:
|
|
36
|
-
|
|
37
|
-
1. **边界必须校验**:所有外部输入(CLI 参数、模型响应、工具入参)用 zod 校验。
|
|
38
|
-
2. **集中配置**:配置只在 `shared/config.ts` 读取,启动即校验(fail-fast),懒加载不影响 `--version`。
|
|
39
|
-
3. **类型化错误**:抛出 `AppError` 子类(`ConfigError`/`ModelError`/`ToolError`/`ApprovalRequiredError`/`SecurityError`),禁止裸 `throw`。
|
|
40
|
-
4. **结构化日志**:通过 `shared/logger` 输出 JSON 日志,密钥自动脱敏;每次运行带 `runId`。
|
|
41
|
-
5. **单一可信源**:Agent 行为以 `runtime/event-log` 的 append-only JSONL 为准,支持审计与恢复。
|
|
42
|
-
|
|
43
|
-
## 三、安全底线
|
|
44
|
-
|
|
45
|
-
- 文件工具限制在项目根沙箱内(防 `../` 穿越)。
|
|
46
|
-
- shell 工具走白名单 + 危险命令拦截 + 审批(`ApprovalRequiredError`)。
|
|
47
|
-
- 日志/响应中任何密钥字段自动转 `[REDACTED]`。
|
|
48
|
-
- 禁止在代码、日志、提交信息中泄露真实凭证。
|
|
49
|
-
|
|
50
|
-
## 四、提交规范
|
|
51
|
-
|
|
52
|
-
- 提交信息用中文,句式「动词 + 内容」,如:`feat: 新增 ollama provider`、`fix: 修复 zod v4 record 校验`。
|
|
53
|
-
- 不提交 `node_modules/`、`dist/`、`.env`、日志与本地 demo 产物(见 `.gitignore`)。
|
|
54
|
-
- 大改动先建分支,描述清楚动机与验证方式。
|
|
55
|
-
|
|
56
|
-
## 五、本地开发
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
npm install
|
|
60
|
-
npm run build # tsc 编译到 dist/
|
|
61
|
-
npm run dev # tsx 直接跑源码
|
|
62
|
-
node dist/cli/index.js --version
|
|
63
|
-
node dist/cli/index.js "<需求>" # 未配 FH_PROVIDERS 自动离线 Mock 闭环
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
© 2026 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
1
|
+
# 贡献指南(CONTRIBUTING)
|
|
2
|
+
|
|
3
|
+
感谢关注 **飞虹 Code(Muse Code 参照复刻)**。本文件约定开发协作规范,请提交前阅读。
|
|
4
|
+
|
|
5
|
+
## 一、项目署名(强制)
|
|
6
|
+
|
|
7
|
+
所有开发产出(源码注释头部、README、LICENSE、文档、页脚、about)必须标注:
|
|
8
|
+
|
|
9
|
+
- 公司:**晋江市飞虹智科技企业管理有限公司**
|
|
10
|
+
- 中心:**飞扬企源研发中心**
|
|
11
|
+
- 负责人:**吴赐虹**
|
|
12
|
+
|
|
13
|
+
源码文件头部统一使用:
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
/**
|
|
17
|
+
* 飞虹 Code (Muse Code 参照复刻)
|
|
18
|
+
* 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
|
19
|
+
*/
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 二、架构约定(feature-first 分层)
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
src/
|
|
26
|
+
cli/ 入口、参数解析、REPL、运行时装配
|
|
27
|
+
shared/ 配置、错误、日志、共享类型(基础设施)
|
|
28
|
+
agent/ Orchestrator / Planner / Prompts
|
|
29
|
+
tools/ 工具实现(file / shell / search / verify)+ registry
|
|
30
|
+
models/ 模型路由 + providers(openai-compatible / ollama / mock)
|
|
31
|
+
runtime/ 事件日志、会话状态(单一可信源)
|
|
32
|
+
skills/ 高级技能(/plan /grill /goal)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
铁律:
|
|
36
|
+
|
|
37
|
+
1. **边界必须校验**:所有外部输入(CLI 参数、模型响应、工具入参)用 zod 校验。
|
|
38
|
+
2. **集中配置**:配置只在 `shared/config.ts` 读取,启动即校验(fail-fast),懒加载不影响 `--version`。
|
|
39
|
+
3. **类型化错误**:抛出 `AppError` 子类(`ConfigError`/`ModelError`/`ToolError`/`ApprovalRequiredError`/`SecurityError`),禁止裸 `throw`。
|
|
40
|
+
4. **结构化日志**:通过 `shared/logger` 输出 JSON 日志,密钥自动脱敏;每次运行带 `runId`。
|
|
41
|
+
5. **单一可信源**:Agent 行为以 `runtime/event-log` 的 append-only JSONL 为准,支持审计与恢复。
|
|
42
|
+
|
|
43
|
+
## 三、安全底线
|
|
44
|
+
|
|
45
|
+
- 文件工具限制在项目根沙箱内(防 `../` 穿越)。
|
|
46
|
+
- shell 工具走白名单 + 危险命令拦截 + 审批(`ApprovalRequiredError`)。
|
|
47
|
+
- 日志/响应中任何密钥字段自动转 `[REDACTED]`。
|
|
48
|
+
- 禁止在代码、日志、提交信息中泄露真实凭证。
|
|
49
|
+
|
|
50
|
+
## 四、提交规范
|
|
51
|
+
|
|
52
|
+
- 提交信息用中文,句式「动词 + 内容」,如:`feat: 新增 ollama provider`、`fix: 修复 zod v4 record 校验`。
|
|
53
|
+
- 不提交 `node_modules/`、`dist/`、`.env`、日志与本地 demo 产物(见 `.gitignore`)。
|
|
54
|
+
- 大改动先建分支,描述清楚动机与验证方式。
|
|
55
|
+
|
|
56
|
+
## 五、本地开发
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm install
|
|
60
|
+
npm run build # tsc 编译到 dist/
|
|
61
|
+
npm run dev # tsx 直接跑源码
|
|
62
|
+
node dist/cli/index.js --version
|
|
63
|
+
node dist/cli/index.js "<需求>" # 未配 FH_PROVIDERS 自动离线 Mock 闭环
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
© 2026 晋江市飞虹智科技企业管理有限公司 · 飞扬企源研发中心 · 负责人:吴赐虹
|
package/LICENSE
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 晋江市飞虹智科技企业管理有限公司
|
|
4
|
-
飞扬企源研发中心 · 负责人:吴赐虹
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 晋江市飞虹智科技企业管理有限公司
|
|
4
|
+
飞扬企源研发中心 · 负责人:吴赐虹
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
> **English / 英文文档**:[README_EN.md](README_EN.md) · [FAQ (English)](FAQ_EN.md)
|
|
2
|
+
|
|
1
3
|
# 飞虹 Code(fhcode)
|
|
2
4
|
|
|
3
5
|
> **终端 AI 编程智能体** · 对标 Meta Muse Code · 全功能 M0→M9.1 完成 · 企业级 RBAC/审计/SWE Agent
|
|
@@ -8,16 +10,18 @@
|
|
|
8
10
|
[](https://typescriptlang.org)
|
|
9
11
|
[](https://github.com/wch887292/feihong-code/stargazers)
|
|
10
12
|
[](https://github.com/wch887292/feihong-code/issues)
|
|
11
|
-
[](https://www.npmjs.com/package/feihong-code)
|
|
12
|
-
[](https://www.npmjs.com/package/feihong-code)
|
|
13
|
-
[](https://www.npmjs.com/package/feihong-code)
|
|
13
|
+
[](https://www.npmjs.com/package/feihong-code)
|
|
14
|
+
[](https://www.npmjs.com/package/feihong-code)
|
|
15
|
+
[](https://www.npmjs.com/package/feihong-code)
|
|
14
16
|
[](https://github.com/wch887292/feihong-code/actions)
|
|
15
17
|
|
|
16
|
-
**🔍 关键词**:AI Agent · 代码生成 · SWE Agent · CLI · 多模型路由 · 企业级权限 · 离线可用
|
|
17
|
-
|
|
18
|
-
**📦 一键安装**:`npm install -g feihong-code` · 国内镜像:`npm install -g feihong-code --registry=https://registry.npmmirror.com`
|
|
18
|
+
**🔍 关键词**:AI Agent · 代码生成 · SWE Agent · CLI · 多模型路由 · 企业级权限 · 离线可用
|
|
19
|
+
|
|
20
|
+
**📦 一键安装**:`npm install -g feihong-code` · 国内镜像:`npm install -g feihong-code --registry=https://registry.npmmirror.com`
|
|
19
21
|
**🚀 5 分钟上手**:`fhcode --version` → `fhcode chat`(离线模式免 API Key 即可对话)
|
|
20
22
|
|
|
23
|
+
**🌐 中英文双语界面**:`fhcode --lang zh|en` 切换 CLI 语言,或设置环境变量 `FHCODE_LANG=zh|en`(默认按系统 locale 自动检测)。Web 控制台(`fhcode serve`)同样支持中英文一键切换。
|
|
24
|
+
|
|
21
25
|
|
|
22
26
|
---
|
|
23
27
|
|
|
@@ -74,21 +78,21 @@ export FH_ROLE=developer
|
|
|
74
78
|
|
|
75
79
|
---
|
|
76
80
|
|
|
77
|
-
### 🆚 与其他工具对比
|
|
78
|
-
|
|
79
|
-
| 能力 | **fhcode(飞虹 Code)** | Claude Code | Cursor CLI | Aider | OpenCode |
|
|
80
|
-
|---|---|---|---|---|---|
|
|
81
|
-
| 终端原生 CLI | ✅ | ✅ | ⚠️(编辑器内) | ✅ | ✅ |
|
|
82
|
-
| 多模型路由(DeepSeek/通义/Ollama/OpenAI) | ✅ | ❌(仅 Anthropic) | ⚠️ | ⚠️ | ✅ |
|
|
83
|
-
| 离线 / 私有化(数据不出内网) | ✅(Ollama 本地) | ❌ | ❌ | ⚠️ | ✅ |
|
|
84
|
-
| 企业级 RBAC / 审计链 | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
85
|
-
| 全自动 SWE Agent(M0→M9.1) | ✅ | ✅ | ⚠️ | ✅ | ⚠️ |
|
|
86
|
-
| 多子代理并行(M2) | ✅ | ✅ | ❌ | ❌ | ❌ |
|
|
87
|
-
| 自我进化(M6) | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
88
|
-
| 开源可自托管(MIT) | ✅ | ❌ | ❌ | ✅ Apache-2.0 | ✅ MIT |
|
|
89
|
-
|
|
90
|
-
> 最适合:**数据不出内网**、需要**企业权限审计**、希望**混合调度多家大模型**的团队与个人开发者。
|
|
91
|
-
|
|
81
|
+
### 🆚 与其他工具对比
|
|
82
|
+
|
|
83
|
+
| 能力 | **fhcode(飞虹 Code)** | Claude Code | Cursor CLI | Aider | OpenCode |
|
|
84
|
+
|---|---|---|---|---|---|
|
|
85
|
+
| 终端原生 CLI | ✅ | ✅ | ⚠️(编辑器内) | ✅ | ✅ |
|
|
86
|
+
| 多模型路由(DeepSeek/通义/Ollama/OpenAI) | ✅ | ❌(仅 Anthropic) | ⚠️ | ⚠️ | ✅ |
|
|
87
|
+
| 离线 / 私有化(数据不出内网) | ✅(Ollama 本地) | ❌ | ❌ | ⚠️ | ✅ |
|
|
88
|
+
| 企业级 RBAC / 审计链 | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
89
|
+
| 全自动 SWE Agent(M0→M9.1) | ✅ | ✅ | ⚠️ | ✅ | ⚠️ |
|
|
90
|
+
| 多子代理并行(M2) | ✅ | ✅ | ❌ | ❌ | ❌ |
|
|
91
|
+
| 自我进化(M6) | ✅ | ❌ | ❌ | ❌ | ❌ |
|
|
92
|
+
| 开源可自托管(MIT) | ✅ | ❌ | ❌ | ✅ Apache-2.0 | ✅ MIT |
|
|
93
|
+
|
|
94
|
+
> 最适合:**数据不出内网**、需要**企业权限审计**、希望**混合调度多家大模型**的团队与个人开发者。
|
|
95
|
+
|
|
92
96
|
## 二、核心特性
|
|
93
97
|
|
|
94
98
|
### 🔥 主要亮点
|
|
@@ -115,7 +119,7 @@ export FH_ROLE=developer
|
|
|
115
119
|
### 🌟 技术亮点
|
|
116
120
|
- **零依赖侵入**:仅依赖 `express` + `zod`,无框架包袱
|
|
117
121
|
- **TypeScript 全量类型安全**:tsc --noEmit 零错误
|
|
118
|
-
- **完整测试覆盖**:
|
|
122
|
+
- **完整测试覆盖**:42 单元测试 + 145 集成验证断言(M4/M6/M7/M8/M9/M9-real 全离线)
|
|
119
123
|
- **CI/CD 就绪**:GitHub Actions 三流水线(build/enterprise/security),零 Secrets 可跑
|
|
120
124
|
- **Docker 多阶段构建**:支持容器化部署
|
|
121
125
|
|
|
@@ -147,10 +151,11 @@ npm install -g feihong-code
|
|
|
147
151
|
# 国内镜像(加速)
|
|
148
152
|
npm install -g feihong-code --registry=https://registry.npmmirror.com
|
|
149
153
|
fhcode --version # 直接调用 bin(Windows 下为 fhcode.cmd)
|
|
154
|
+
> 也支持别名包:`npm install -g feihong-cli`(与 feihong-code 同源,bin 同为 `fhcode`)。
|
|
150
155
|
```
|
|
151
156
|
|
|
152
157
|
> 要求 Node.js >= 18。入口 `dist/cli/index.js` 已带 `#!/usr/bin/env node` shebang。
|
|
153
|
-
>
|
|
158
|
+
> 源码与问题反馈请前往 GitHub 仓库:<https://github.com/wch887292/feihong-code>
|
|
154
159
|
### 方式三:Docker
|
|
155
160
|
|
|
156
161
|
```bash
|
|
@@ -499,9 +504,10 @@ node dist/cli/index.js --version
|
|
|
499
504
|
|
|
500
505
|
关注飞虹智 klAI 动态,获取最新开源项目更新与技术教程:
|
|
501
506
|
|
|
502
|
-
|
|
507
|
+
- 🏠 官网与开源矩阵:[https://www.klai.top/opensource.html](https://www.klai.top/opensource.html)
|
|
508
|
+
- 🤖 AI Agent 入口:[https://www.klai.top/openclaw.html](https://www.klai.top/openclaw.html)
|
|
503
509
|
|
|
504
|
-
|
|
510
|
+
加入 **飞虹智企微小助手**,获取:
|
|
505
511
|
- 技术答疑与部署指导
|
|
506
512
|
- 开源项目更新通知
|
|
507
513
|
- 本地化服务预约(泉州地区)
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
# 飞虹 Code - 自我迭代升级系统
|
|
2
|
+
|
|
3
|
+
> 让 AI 编程助手能够自我学习、持续进化
|
|
4
|
+
|
|
5
|
+
## 🎯 系统概述
|
|
6
|
+
|
|
7
|
+
Self-Evolve 是飞虹 Code 的**元技能系统**,让它能够:
|
|
8
|
+
|
|
9
|
+
1. **自动记录失败** - 每次任务失败都会被记录并分析
|
|
10
|
+
2. **提取错误模式** - 识别重复出现的错误类型
|
|
11
|
+
3. **创建解决技能** - 当遇到无解问题时,自动生成新技能
|
|
12
|
+
4. **定期复盘优化** - 每日/每周回顾,持续改进
|
|
13
|
+
|
|
14
|
+
## 📦 包含内容
|
|
15
|
+
|
|
16
|
+
### 核心系统
|
|
17
|
+
- `skills/self-evolve/SKILL.md` - Self-Evolve 技能定义
|
|
18
|
+
- `src/self-evolve/manager.js` - 核心管理器
|
|
19
|
+
- `src/self-evolve/hook.ts` - 集成钩子
|
|
20
|
+
- `src/cli/self-evolve-cli.js` - 命令行接口
|
|
21
|
+
|
|
22
|
+
### 文档
|
|
23
|
+
- `docs/self-evolve.md` - 用户文档
|
|
24
|
+
- `docs/self-evolve-implementation.md` - 实现指南
|
|
25
|
+
|
|
26
|
+
### 测试
|
|
27
|
+
- `tests/unit/self-evolve.test.js` - 单元测试
|
|
28
|
+
- `tests/demo/self-evolve-demo.js` - 演示脚本
|
|
29
|
+
|
|
30
|
+
### 脚本
|
|
31
|
+
- `scripts/self-evolve-setup.sh` - 初始化脚本
|
|
32
|
+
- `scripts/quick-start.js` - 快速开始脚本
|
|
33
|
+
|
|
34
|
+
## 🚀 快速开始
|
|
35
|
+
|
|
36
|
+
### 1. 初始化系统
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# 运行安装脚本
|
|
40
|
+
bash scripts/self-evolve-setup.sh
|
|
41
|
+
|
|
42
|
+
# 或使用 Node.js 快速开始
|
|
43
|
+
node scripts/quick-start.js
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2. 查看系统状态
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# 设置别名(可选)
|
|
50
|
+
alias fe='fhcode self-evolve'
|
|
51
|
+
|
|
52
|
+
# 查看统计
|
|
53
|
+
fe status
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 3. 开始使用
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# 列出失败记录
|
|
60
|
+
fe failures list
|
|
61
|
+
|
|
62
|
+
# 查看技能库
|
|
63
|
+
fe skills list
|
|
64
|
+
|
|
65
|
+
# 每日复盘
|
|
66
|
+
fe review --daily
|
|
67
|
+
|
|
68
|
+
# 分析错误模式
|
|
69
|
+
fe analyze
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 📊 核心功能
|
|
73
|
+
|
|
74
|
+
### 失败记录
|
|
75
|
+
自动记录所有失败的执行,包括:
|
|
76
|
+
- 错误类型(编译、运行时、路径、权限、API等)
|
|
77
|
+
- 完整的错误信息
|
|
78
|
+
- 尝试的解决方案
|
|
79
|
+
- 根本原因分析
|
|
80
|
+
|
|
81
|
+
### 错误模式识别
|
|
82
|
+
- 按类型统计失败频率
|
|
83
|
+
- 识别重复出现的错误
|
|
84
|
+
- 建议创建针对性技能
|
|
85
|
+
|
|
86
|
+
### 技能自动生成
|
|
87
|
+
当遇到无法解决的新问题时:
|
|
88
|
+
```bash
|
|
89
|
+
# 系统会提示创建技能
|
|
90
|
+
fe create-skill \
|
|
91
|
+
--name my-error-handler \
|
|
92
|
+
--description "处理我的特定错误" \
|
|
93
|
+
--pattern error-type \
|
|
94
|
+
--solution "具体解决步骤" \
|
|
95
|
+
--triggers "触发关键词"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 定期复盘
|
|
99
|
+
```bash
|
|
100
|
+
# 每日复盘
|
|
101
|
+
fe review --daily
|
|
102
|
+
|
|
103
|
+
# 查看周统计
|
|
104
|
+
fe status --week
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## 🔄 工作流程
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
任务执行
|
|
111
|
+
↓
|
|
112
|
+
成功? → 记录成功
|
|
113
|
+
↓ 失败
|
|
114
|
+
自动记录失败
|
|
115
|
+
↓
|
|
116
|
+
搜索已知解决方案
|
|
117
|
+
↓ 找到 → 应用方案
|
|
118
|
+
↓ 未找到
|
|
119
|
+
分析根因
|
|
120
|
+
↓
|
|
121
|
+
创建新技能? → 是 → 保存到 ~/.feihong-code/skills/
|
|
122
|
+
↓ 否
|
|
123
|
+
标记待人工处理
|
|
124
|
+
↓
|
|
125
|
+
每日复盘 → 优化系统
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## 📁 数据结构
|
|
129
|
+
|
|
130
|
+
所有数据存储在 `~/.feihong-code/self-evolve/`:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
~/.feihong-code/
|
|
134
|
+
├── self-evolve/
|
|
135
|
+
│ ├── config.json # 配置
|
|
136
|
+
│ ├── failures.json # 失败记录
|
|
137
|
+
│ ├── skills-index.json # 技能索引
|
|
138
|
+
│ ├── history.json # 操作历史
|
|
139
|
+
│ └── report-YYYY-MM-DD.json # 每日报告
|
|
140
|
+
├── skills/
|
|
141
|
+
│ └── <skill-name>/
|
|
142
|
+
│ └── SKILL.md
|
|
143
|
+
└── ...
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## 🔧 集成开发
|
|
147
|
+
|
|
148
|
+
### 在工具中记录失败
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
import { selfEvolveHook } from './self-evolve/hook.ts';
|
|
152
|
+
|
|
153
|
+
try {
|
|
154
|
+
await someToolCall(input);
|
|
155
|
+
} catch (error) {
|
|
156
|
+
selfEvolveHook.onToolFailure({
|
|
157
|
+
tool: 'tool-name',
|
|
158
|
+
input: input,
|
|
159
|
+
error: error.message,
|
|
160
|
+
attemptedSolutions: []
|
|
161
|
+
});
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 定期复盘
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
// 每天运行
|
|
170
|
+
const report = await selfEvolveHook.dailyReview();
|
|
171
|
+
console.log(`今日失败: ${report.total_failures}`);
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## 📚 与现有系统集成
|
|
175
|
+
|
|
176
|
+
Self-Evolve 可以与以下技能配合:
|
|
177
|
+
|
|
178
|
+
| 技能 | 集成点 | 作用 |
|
|
179
|
+
|------|--------|------|
|
|
180
|
+
| `/self-heal` | 自动创建修复技能 | 解决技术错误 |
|
|
181
|
+
| `/plan` | 计划时参考历史 | 避免重复失败 |
|
|
182
|
+
| `/goal` | 目标设定参考 | 追踪迭代进度 |
|
|
183
|
+
|
|
184
|
+
## 🎯 使用示例
|
|
185
|
+
|
|
186
|
+
### 示例1:处理编译错误
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# 分析最近7天的编译错误
|
|
190
|
+
fe analyze --days 7 --type compile-error
|
|
191
|
+
|
|
192
|
+
# 创建通用编译错误处理技能
|
|
193
|
+
fe create-skill \
|
|
194
|
+
--name compile-error-handler \
|
|
195
|
+
--description "处理TypeScript编译错误" \
|
|
196
|
+
--pattern compile-error \
|
|
197
|
+
--solution "1. 检查导入路径\n2. 验证类型定义\n3. 安装缺失依赖" \
|
|
198
|
+
--triggers "error TS, syntax error, cannot find module"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### 示例2:处理路径穿越
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
# 创建路径安全技能
|
|
205
|
+
fe create-skill \
|
|
206
|
+
--name path-security-handler \
|
|
207
|
+
--description "处理路径穿越安全问题" \
|
|
208
|
+
--pattern path-error \
|
|
209
|
+
--solution "1. 验证路径在workspace内\n2. 使用相对路径\n3. 规范化路径" \
|
|
210
|
+
--triggers "path traversal, outside workspace, EACCES"
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 示例3:查看每日复盘
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
fe review --daily
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
输出:
|
|
220
|
+
```
|
|
221
|
+
📅 每日复盘报告
|
|
222
|
+
========================================
|
|
223
|
+
日期: 2026-08-16
|
|
224
|
+
失败任务: 5
|
|
225
|
+
已解决: 3
|
|
226
|
+
待处理: 2
|
|
227
|
+
新技能: 1
|
|
228
|
+
|
|
229
|
+
今日失败详情:
|
|
230
|
+
✅ [a1b2c3d4] compile-error: error TS2307...
|
|
231
|
+
⏳ [e5f6g7h8] path-error: Path traversal...
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## 🛡️ 纪律与原则
|
|
235
|
+
|
|
236
|
+
1. **诚实记录** - 失败就是失败,不伪造成功
|
|
237
|
+
2. **及时复盘** - 每日至少一次复盘分析
|
|
238
|
+
3. **渐进改进** - 每次迭代只优化一个方面
|
|
239
|
+
4. **验证优先** - 新技能必须经过测试验证
|
|
240
|
+
5. **可追溯** - 所有变更记录保存历史版本
|
|
241
|
+
|
|
242
|
+
## 📈 版本历史
|
|
243
|
+
|
|
244
|
+
- **v1.0.0** (2026-08-16) - 初始版本
|
|
245
|
+
- 基础失败记录功能
|
|
246
|
+
- 技能自动生成
|
|
247
|
+
- 每日复盘
|
|
248
|
+
- CLI 接口
|
|
249
|
+
|
|
250
|
+
## 🔮 未来规划
|
|
251
|
+
|
|
252
|
+
- [ ] 自动检测技能冲突
|
|
253
|
+
- [ ] 技能效果追踪
|
|
254
|
+
- [ ] 团队共享技能库
|
|
255
|
+
- [ ] AI 辅助技能创建
|
|
256
|
+
- [ ] 失败预测模型
|
|
257
|
+
|
|
258
|
+
## 🤝 贡献指南
|
|
259
|
+
|
|
260
|
+
欢迎贡献!请遵循以下步骤:
|
|
261
|
+
|
|
262
|
+
1. Fork 本仓库
|
|
263
|
+
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
|
|
264
|
+
3. 提交更改 (`git commit -m 'Add amazing feature'`)
|
|
265
|
+
4. 推送到分支 (`git push origin feature/amazing-feature`)
|
|
266
|
+
5. 创建 Pull Request
|
|
267
|
+
|
|
268
|
+
## 📄 许可证
|
|
269
|
+
|
|
270
|
+
MIT License
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
**让飞虹 Code 越来越聪明!** 🚀
|
|
@@ -57,6 +57,8 @@ function reviewCode(filePath, content, rules = DEFAULT_RULES) {
|
|
|
57
57
|
for (let i = 0; i < lines.length; i++) {
|
|
58
58
|
const line = lines[i];
|
|
59
59
|
for (const rule of rules) {
|
|
60
|
+
// 关键:规则正则带 g 标志时 RegExp.test 会残留 lastIndex,必须每次重置,否则跨行误判
|
|
61
|
+
rule.pattern.lastIndex = 0;
|
|
60
62
|
if (rule.pattern.test(line)) {
|
|
61
63
|
issues.push({
|
|
62
64
|
ruleId: rule.id,
|