sentinel-agentos 0.3.0 → 0.3.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/README.md CHANGED
@@ -604,6 +604,268 @@ print(requests.get(f"{BASE}/pipeline/report", headers=HEADERS).text)
604
604
 
605
605
  ---
606
606
 
607
+ ---
608
+
609
+ ## 🔌 sentinel-guard Skill — OpenClaw 实际对接
610
+
611
+ > 这是 Sentinel AgentOS 接入 OpenClaw Agent 框架的**生产级 skill**。
612
+ > 提供一个统一入口 `sentinel.execute()`,自动走完 Guard → Execute → Verify + Audit + Memory + Evaluator 三层面。
613
+ > 使用前务必阅读 [sentinel-guard SKILL.md](../skills/sentinel-guard/SKILL.md)。
614
+
615
+ ### 统一入口 vs 传统两段式
616
+
617
+ **传统方式(preCheck + postCheck 两次调用)**:
618
+
619
+ ```javascript
620
+ const guard = require('./sentinel-guard');
621
+ const check = guard.preCheck('exec', { command: '...' }); // 只做拦截
622
+ if (!check.passed) return ...;
623
+ // 执行...
624
+ guard.postCheck('exec', params, result); // 只做审计
625
+ ```
626
+
627
+ **统一入口(推荐)**:
628
+
629
+ ```javascript
630
+ const sentinel = require('./sentinel-guard');
631
+ const result = await sentinel.execute('exec', { command: 'npm test' }, () => exec('npm test'));
632
+
633
+ // result.allowed — Guard 是否放行
634
+ // result.result — 执行函数的返回值
635
+ // result.auditId — 审计 ID
636
+ // result.verify — Verify Gate 状态 (PASS/WARN/FAIL)
637
+ // result.profile — 当前质量评分 (0-100)
638
+ ```
639
+
640
+ ### 执行流程详解
641
+
642
+ ```
643
+ sentinel.execute(toolName, params, fn)
644
+
645
+ ├─ 第1层: 确定性命令/文件拦截 (<1μs,零 LLM)
646
+ │ ├─ 危险命令正则匹配 (rm -rf /, mkfs, dd if=, fork bomb...)
647
+ │ ├─ 警告命令正则匹配 (git push --force, npm publish, DROP TABLE...)
648
+ │ ├─ 敏感文件 glob 匹配 (.env, *.key, *.pem, .git/**...)
649
+ │ └─ 保护文件匹配 (package.json, MEMORY.md, AGENTS.md...)
650
+
651
+ ├─ 第2层: AgentOS Pipeline
652
+ │ ├─ Schema Gate — 参数格式校验 (required/types/pathDeny/maxSize/secrets)
653
+ │ ├─ Risk Gate — 四维公式评分 → auto/notify/confirm/deny
654
+ │ └─ Snapshot Gate — 执行前文件 hash 快照
655
+
656
+ ├─ 第3层: 实际执行 fn()
657
+ │ └─ 异常捕获,失败也记录审计
658
+
659
+ ├─ 第4层: Verify + Audit + Evaluator
660
+ │ ├─ Verify Gate — 8 项确定性校验 (文件存在/变更/lint/格式...)
661
+ │ ├─ Audit Log — JSONL 不可篡改审计
662
+ │ ├─ PreExecEvaluator — 参数质量+上下文利用评分
663
+ │ ├─ RuntimeEvaluator — 重试/超时/自纠正评分
664
+ │ ├─ PostExecEvaluator — 验证通过/用户接受/结果利用率评分
665
+ │ └─ AgentProfiler — 综合评分 0-100 + 趋势 + 亮点/警告
666
+
667
+ ├─ 第5层: Memory 同步
668
+ │ ├─ Working Memory — 消息+工具结果缓存
669
+ │ ├─ Episodic Memory — 事件记录
670
+ │ └─ Semantic Memory — (自动迁移时写入)
671
+
672
+ └─ 返回统一结果
673
+ ```
674
+
675
+ ### execute() 完整返回值
676
+
677
+ | 字段 | 类型 | 说明 |
678
+ |------|------|------|
679
+ | `allowed` | boolean | 是否通过 Guard 层 |
680
+ | `blocked` | boolean | 是否被拦截 |
681
+ | `risk` | `'auto' | 'confirm' | 'deny'` | 风险等级 |
682
+ | `reason` | string? | 拦截/警告原因(blocked=true 时) |
683
+ | `needsConfirmation` | boolean? | 是否需要用户确认 |
684
+ | `result` | any | 执行函数的返回值 |
685
+ | `error` | string? | 执行异常信息 |
686
+ | `auditId` | string | 审计条目 ID(如 `op_5`) |
687
+ | `verify` | `'PASS' | 'WARN' | 'FAIL'` | Verify Gate 状态 |
688
+ | `profile` | number | 当前 Agent 质量评分 (0-100) |
689
+
690
+ **被拦截示例**:
691
+
692
+ ```json
693
+ {
694
+ "allowed": false,
695
+ "blocked": true,
696
+ "risk": "DENY",
697
+ "reason": "🚫 危险命令: rm -rf / — 删除整个系统"
698
+ }
699
+ ```
700
+
701
+ **正常通过示例**:
702
+
703
+ ```json
704
+ {
705
+ "allowed": true,
706
+ "blocked": false,
707
+ "risk": "auto",
708
+ "result": "hello output",
709
+ "auditId": "op_5",
710
+ "verify": "PASS",
711
+ "profile": 85
712
+ }
713
+ ```
714
+
715
+ ### 自动迁移 MEMORY.md → Semantic Memory
716
+
717
+ 首次加载 sentinel-guard 时自动执行,仅一次:
718
+
719
+ 1. 解析 `MEMORY.md` 的 Markdown 结构(支持 bullet 列表和表格行)
720
+ 2. 提取用户事实 (👤 关于老板 / 🆔 关于我) → `semantic.addFact()`
721
+ 3. 提取工作方式规则 (🤖 我的工作方式) → `semantic.learnRule()`
722
+ 4. 提取项目上下文 (📦 coderev / agentos) → `semantic.setProjectContext()`
723
+ 5. 提取环境记录 (💻 环境记录) → `semantic.addFact()`
724
+ 6. 提取关键决策 (💡 关键决策记录) → `episodic.record('decision', ...)`
725
+ 7. 生成 `.sentinel-migrated` 标记文件防止重复
726
+
727
+ 迁移后原有 MEMORY.md 不受影响(只读不写),两套记忆并行:
728
+
729
+ | 记忆系统 | 用途 | 格式 |
730
+ |---------|------|------|
731
+ | `MEMORY.md` | 人类编辑,session 注入上下文 | Markdown |
732
+ | AgentOS Semantic Memory | 程序读写,自动学习 | 结构化 JSON (`.agentos/`) |
733
+
734
+ ### 规则配置 guard-rules.json
735
+
736
+ 所有 Guard 黑白名单可通过 `guard-rules.json` 直接编辑,无需改源码:
737
+
738
+ ```json
739
+ {
740
+ "dangerous": [
741
+ ["rm -rf /", "删除整个系统"],
742
+ ["sudo rm", "超级用户删除"],
743
+ ["mkfs", "格式化磁盘"]
744
+ ],
745
+ "warning": [
746
+ ["git push --force", "强制覆盖远程分支"],
747
+ ["npm publish\\b", "发布 npm 公共包"],
748
+ ["DROP (TABLE|DATABASE)", "删除数据库"]
749
+ ],
750
+ "sensitiveFiles": [
751
+ ".env", ".env.*", "*.key", "*.pem",
752
+ ".git/**", "**/credentials/**"
753
+ ],
754
+ "protectedFiles": [
755
+ "package.json", "MEMORY.md", "AGENTS.md", "SOUL.md"
756
+ ],
757
+ "schema": [
758
+ { "tool": "exec", "required": ["command"] },
759
+ {
760
+ "tool": "write",
761
+ "required": ["path", "content"],
762
+ "pathDeny": [".env", "*.key", ".git/**"],
763
+ "maxSize": { "content": 1048576 },
764
+ "secrets": ["content"]
765
+ }
766
+ ]
767
+ }
768
+ ```
769
+
770
+ | 配置项 | 类型 | 说明 |
771
+ |--------|------|------|
772
+ | `dangerous` | `[regex, desc][]` | 匹配到直接拒绝 |
773
+ | `warning` | `[regex, desc][]` | 匹配到需用户确认 |
774
+ | `sensitiveFiles` | `string[]` | glob 模式,禁止读写 |
775
+ | `protectedFiles` | `string[]` | 精确匹配,禁止删除 |
776
+ | `schema` | `SchemaRule[]` | AgentOS Schema Gate 规则 |
777
+
778
+ ### 完整 API 参考
779
+
780
+ ```javascript
781
+ const sentinel = require('./sentinel-guard');
782
+ ```
783
+
784
+ | 方法 | 类型 | 说明 |
785
+ |------|------|------|
786
+ | `execute(tool, params, fn, opts?)` | async | **统一入口**,走完三层 |
787
+ | `preCheck(tool, params)` | sync | [兼容] 仅确定性拦截 |
788
+ | `postCheck(tool, params, result)` | sync | [兼容] 仅审计记录 |
789
+ | `injectContext()` | sync → string | Session 启动时注入 Memory 上下文 |
790
+ | `endSession()` | sync | Session 结束:追加 daily log → 清空 Working → 同步 Episodic |
791
+ | `status()` | sync → string | AgentOS 状态报告 |
792
+ | `fullStatus()` | sync → object | 完整状态快照 (JSON) |
793
+ | `compactReport()` | sync → string | 精简版评估报告 |
794
+ | `fullReport()` | sync → string | 完整评估报告 |
795
+ | `audit(limit?)` | sync → array | 最近 N 条审计记录 |
796
+ | `feedback(signal)` | sync | 记录用户反馈信号 |
797
+
798
+ ### Session 生命周期
799
+
800
+ ```
801
+ Session 启动
802
+ ├─ require('./sentinel-guard') ← 首次自动迁移 MEMORY.md
803
+ ├─ sentinel.injectContext() ← 注入 Semantic+Episodic 上下文
804
+
805
+ Session 运行中
806
+ ├─ sentinel.execute('exec', ...) ← 每次工具调用
807
+ ├─ sentinel.execute('write', ...)
808
+ ├─ sentinel.feedback('user_used_result') ← 关键节点记录反馈
809
+
810
+ Session 结束
811
+ └─ sentinel.endSession() ← 追加 daily log + 清空 Working
812
+ ```
813
+
814
+ ### AgentOS 与 sentinel-guard 功能对照
815
+
816
+ | 功能 | AgentOS 源码 | sentinel-guard skill | 覆盖率 |
817
+ |------|------------|---------------------|:------:|
818
+ | Schema Gate (12 项校验) | ✅ `schema-gate.ts` | ✅ `execute()` 内自动 | 100% |
819
+ | Risk Gate (四维公式) | ✅ `risk-gate.ts` | ✅ `execute()` 内自动 | 100% |
820
+ | 确定性命令拦截 | ❌ (依赖 Sandbox) | ✅ 正则匹配 (<1μs) | **额外增强** |
821
+ | Snapshot Gate | ✅ `snapshot-verify.ts` | ✅ `execute()` 内自动 | 100% |
822
+ | Verify Gate (8 项校验) | ✅ `snapshot-verify.ts` | ✅ `execute()` 内自动 | 100% |
823
+ | Audit Log (JSONL) | ✅ `audit-log.ts` | ✅ 双写 (AgentOS + 自身) | 100% |
824
+ | 规则可配置 | ❌ (代码硬编码) | ✅ `guard-rules.json` | **额外增强** |
825
+ | Working Memory | ✅ `working.ts` | ✅ 消息+工具缓存 | 100% |
826
+ | Episodic Memory | ✅ `episodic.ts` | ✅ 事件自动记录 | 100% |
827
+ | Semantic Memory | ✅ `semantic.ts` | ✅ 自动迁移+初始值 | 100% |
828
+ | MEMORY.md 迁移 | ✅ `memory-bridge.ts` | ✅ 首次加载自动跑 | 100% |
829
+ | Session 注入上下文 | ✅ `injectContext()` | ✅ `sentinel.injectContext()` | 100% |
830
+ | Session 清理 | ✅ `endSession()` | ✅ 含 daily log | 100% |
831
+ | PreExecEvaluator | ✅ `exec-evaluator.ts` | ✅ `execute()` 内自动 | 100% |
832
+ | RuntimeEvaluator | ✅ `exec-evaluator.ts` | ✅ `execute()` 内自动 | 100% |
833
+ | PostExecEvaluator | ✅ `exec-evaluator.ts` | ✅ `execute()` 内自动 | 100% |
834
+ | AgentProfiler | ✅ `profiler.ts` | ✅ `execute()` 返回 profile | 100% |
835
+ | ImplicitFeedback | ✅ `feedback.ts` | ✅ `recordFeedback()` | 100% |
836
+ | Daily Log 注入 | ✅ `evaluation-bridge.ts` | ✅ `endSession()` 自动 | 100% |
837
+ | Compact/Full Report | ✅ `evaluation-bridge.ts` | ✅ `compactReport()`/`fullReport()` | 100% |
838
+ | Sandbox 沙箱 | ✅ `sandbox.ts` | ❌ (暂未接入) | 0% |
839
+ | HTTP API | ✅ `server.ts` | ❌ (skill 为进程内调用) | N/A |
840
+ | **按设计范围总计** | **20 项** | **20/20** | **100%** |
841
+
842
+ ### 快速入门(5 步接入)
843
+
844
+ ```javascript
845
+ // 1. 加载 skill(自动迁移 MEMORY.md)
846
+ const sentinel = require('./sentinel-guard');
847
+
848
+ // 2. Session 启动 — 注入记忆上下文
849
+ const context = sentinel.injectContext();
850
+
851
+ // 3. 工具调用 — 统一入口,三层全走
852
+ const r = await sentinel.execute('write',
853
+ { path: 'src/main.ts', content: 'console.log("hi")' },
854
+ () => fs.writeFileSync('src/main.ts', 'console.log("hi")')
855
+ );
856
+ if (!r.allowed) return { blocked: true, reason: r.reason };
857
+
858
+ // 4. 记录反馈
859
+ sentinel.feedback('user_used_result');
860
+
861
+ // 5. Session 结束 — 追加 daily log + 清理
862
+ sentinel.endSession();
863
+ ```
864
+
865
+ 完整示例代码见 `sentinel-guard/SKILL.md`,配置文件见 `sentinel-guard/guard-rules.json`。
866
+
867
+ ---
868
+
607
869
  ### API 层 · SDK API
608
870
 
609
871
  ```typescript
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Evaluation Bridge — Evaluator 三阶段评估接入 OpenClaw
3
+ *
4
+ * 职责:在每个 tool call 的 preCheck/postCheck 中自动采集指标,
5
+ * 累积到 Profiler,定期生成质量报告注入 daily log。
6
+ *
7
+ * 数据流:
8
+ * Guard preCheck → PreExecEvaluator → 参数质量+上下文利用评分
9
+ * tool 执行 → RuntimeEvaluator → 重试/超时/自纠正评分
10
+ * Guard postCheck → PostExecEvaluator → 验证通过/用户接受评分
11
+ * ↓
12
+ * AgentProfiler → 综合评分(0-100) + 趋势 + 警告/亮点
13
+ * ↓
14
+ * ImplicitFeedback → 从 audit log 推断用户满意度
15
+ */
16
+ import { WorkingMemory } from '../memory/working';
17
+ import { AgentProfile } from '../evaluator/profiler';
18
+ export declare class EvaluationBridge {
19
+ private schemaGate;
20
+ private riskGate;
21
+ private working;
22
+ private preEvaluator;
23
+ private runtimeEvaluator;
24
+ private postEvaluator;
25
+ private feedback;
26
+ private profiler;
27
+ private sessionId;
28
+ private pending;
29
+ constructor(working: WorkingMemory, sessionId?: string);
30
+ /** tool 执行前:采集 PreExec 指标,返回操作 ID */
31
+ preExec(toolName: string, params: Record<string, unknown>): string;
32
+ /** tool 执行后:采集 Runtime + PostExec 指标,计入 Profiler */
33
+ postExec(opId: string, options?: {
34
+ hadTimeout?: boolean;
35
+ retryCount?: number;
36
+ wasSelfCorrected?: boolean;
37
+ verifyPassed?: boolean;
38
+ verifyChecks?: number;
39
+ verifyFailures?: number;
40
+ result?: unknown;
41
+ }): void;
42
+ /** 记录隐式反馈信号 */
43
+ recordFeedback(signal: string, confidence?: number): void;
44
+ /** 获取综合质量画像 */
45
+ getProfile(): AgentProfile;
46
+ /** 获取满意度分数 */
47
+ getSatisfaction(): number;
48
+ /** 获取反馈统计 */
49
+ getFeedbackStats(): {
50
+ totalSignals: number;
51
+ positiveSignals: number;
52
+ negativeSignals: number;
53
+ averageStrength: number;
54
+ mostCommonSignal: import("..").SignalType | null;
55
+ };
56
+ /** 获取工具准确率 */
57
+ getToolAccuracy(): Record<string, {
58
+ calls: number;
59
+ successRate: number;
60
+ }>;
61
+ /** 获取结果利用率 */
62
+ getUtilizationRate(): number;
63
+ /** 获取本次会话的操作数 */
64
+ getOperationCount(): number;
65
+ /** 生成人类可读的评估报告 */
66
+ generateReport(): string;
67
+ /** 生成精简版报告(注入 daily log) */
68
+ generateCompactReport(): string;
69
+ /** 追加报告到 daily log */
70
+ appendToDailyLog(workspaceRoot: string): void;
71
+ /** 导出可序列化的状态 */
72
+ exportState(): object;
73
+ /** 导入之前的状态(用于恢复) */
74
+ importState(state: any): void;
75
+ }
76
+ export declare function getEvaluationBridge(working?: WorkingMemory, sessionId?: string): EvaluationBridge;
77
+ export declare function resetEvaluationBridge(): void;
78
+ //# sourceMappingURL=evaluation-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-bridge.d.ts","sourceRoot":"","sources":["../../src/adapters/evaluation-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlD,OAAO,EAAiB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAKpE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,OAAO,CAAmF;gBAEtF,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM;IActD,qCAAqC;IACrC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAalE,oDAAoD;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;QAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,OAAO,CAAC;KACb,GAAG,IAAI;IAwCb,eAAe;IACf,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IAkBzD,eAAe;IACf,UAAU,IAAI,YAAY;IAI1B,cAAc;IACd,eAAe,IAAI,MAAM;IAIzB,aAAa;IACb,gBAAgB;;;;;;;IAIhB,cAAc;IACd,eAAe;;;;IAIf,cAAc;IACd,kBAAkB,IAAI,MAAM;IAI5B,iBAAiB;IACjB,iBAAiB,IAAI,MAAM;IAM3B,kBAAkB;IAClB,cAAc,IAAI,MAAM;IA0CxB,4BAA4B;IAC5B,qBAAqB,IAAI,MAAM;IAc/B,sBAAsB;IACtB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAiB7C,gBAAgB;IAChB,WAAW,IAAI,MAAM;IAWrB,oBAAoB;IACpB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;CAI9B;AAKD,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAMjG;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ /**
3
+ * Evaluation Bridge — Evaluator 三阶段评估接入 OpenClaw
4
+ *
5
+ * 职责:在每个 tool call 的 preCheck/postCheck 中自动采集指标,
6
+ * 累积到 Profiler,定期生成质量报告注入 daily log。
7
+ *
8
+ * 数据流:
9
+ * Guard preCheck → PreExecEvaluator → 参数质量+上下文利用评分
10
+ * tool 执行 → RuntimeEvaluator → 重试/超时/自纠正评分
11
+ * Guard postCheck → PostExecEvaluator → 验证通过/用户接受评分
12
+ * ↓
13
+ * AgentProfiler → 综合评分(0-100) + 趋势 + 警告/亮点
14
+ * ↓
15
+ * ImplicitFeedback → 从 audit log 推断用户满意度
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || (function () {
34
+ var ownKeys = function(o) {
35
+ ownKeys = Object.getOwnPropertyNames || function (o) {
36
+ var ar = [];
37
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
+ return ar;
39
+ };
40
+ return ownKeys(o);
41
+ };
42
+ return function (mod) {
43
+ if (mod && mod.__esModule) return mod;
44
+ var result = {};
45
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
+ __setModuleDefault(result, mod);
47
+ return result;
48
+ };
49
+ })();
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.EvaluationBridge = void 0;
52
+ exports.getEvaluationBridge = getEvaluationBridge;
53
+ exports.resetEvaluationBridge = resetEvaluationBridge;
54
+ const schema_gate_1 = require("../guard/schema-gate");
55
+ const risk_gate_1 = require("../guard/risk-gate");
56
+ const exec_evaluator_1 = require("../evaluator/exec-evaluator");
57
+ const exec_evaluator_2 = require("../evaluator/exec-evaluator");
58
+ const exec_evaluator_3 = require("../evaluator/exec-evaluator");
59
+ const profiler_1 = require("../evaluator/profiler");
60
+ const feedback_1 = require("../evaluator/feedback");
61
+ const fs = __importStar(require("fs"));
62
+ const path = __importStar(require("path"));
63
+ class EvaluationBridge {
64
+ schemaGate;
65
+ riskGate;
66
+ working;
67
+ preEvaluator;
68
+ runtimeEvaluator;
69
+ postEvaluator;
70
+ feedback;
71
+ profiler;
72
+ sessionId;
73
+ // 待完成的评估周期(pre 已记录,等待 post)
74
+ pending = new Map();
75
+ constructor(working, sessionId) {
76
+ this.schemaGate = new schema_gate_1.SchemaGate();
77
+ this.riskGate = new risk_gate_1.RiskGate();
78
+ this.working = working;
79
+ this.preEvaluator = new exec_evaluator_1.PreExecEvaluator(this.schemaGate, this.riskGate, this.working);
80
+ this.runtimeEvaluator = new exec_evaluator_2.RuntimeEvaluator();
81
+ this.postEvaluator = new exec_evaluator_3.PostExecEvaluator();
82
+ this.feedback = new feedback_1.ImplicitFeedbackEngine();
83
+ this.profiler = new profiler_1.AgentProfiler(this.feedback);
84
+ this.sessionId = sessionId || `eval_${Date.now()}`;
85
+ }
86
+ // ============== 生命周期 ==============
87
+ /** tool 执行前:采集 PreExec 指标,返回操作 ID */
88
+ preExec(toolName, params) {
89
+ const opId = `op_${Date.now()}_${Math.random().toString(36).slice(2, 6)}`;
90
+ const preMetric = this.preEvaluator.evaluate(toolName, params);
91
+ this.pending.set(opId, {
92
+ preMetric,
93
+ startTime: Date.now(),
94
+ toolName,
95
+ });
96
+ return opId;
97
+ }
98
+ /** tool 执行后:采集 Runtime + PostExec 指标,计入 Profiler */
99
+ postExec(opId, options = {}) {
100
+ const entry = this.pending.get(opId);
101
+ if (!entry)
102
+ return;
103
+ const endTime = Date.now();
104
+ const { preMetric, startTime, toolName } = entry;
105
+ this.pending.delete(opId);
106
+ // Runtime 评估
107
+ const runtime = this.runtimeEvaluator.evaluate({
108
+ toolName,
109
+ startTime,
110
+ endTime,
111
+ retryCount: options.retryCount ?? 0,
112
+ wasSelfCorrected: options.wasSelfCorrected ?? false,
113
+ hadTimeout: options.hadTimeout ?? false,
114
+ toolResult: options.result,
115
+ });
116
+ // Post 评估
117
+ const post = this.postEvaluator.evaluate({
118
+ verifyPassed: options.verifyPassed ?? true,
119
+ verifyChecks: options.verifyChecks ?? 1,
120
+ verifyFailures: options.verifyFailures ?? 0,
121
+ userAccepted: true, // 默认 true,feedback 会修正
122
+ userProvidedEdit: false,
123
+ resultWasUsed: false,
124
+ });
125
+ // 追踪结果(后续 detected usage)
126
+ if (options.result !== undefined) {
127
+ this.postEvaluator.trackResult(opId, options.result);
128
+ }
129
+ // 入 Profiler
130
+ this.profiler.recordCycle(this.sessionId, preMetric, runtime, post);
131
+ }
132
+ // ============== Feedback ==============
133
+ /** 记录隐式反馈信号 */
134
+ recordFeedback(signal, confidence) {
135
+ const validSignals = [
136
+ 'user_deleted_code', 'user_modified_output', 'user_repeated_instruction',
137
+ 'user_immediate_continue', 'user_used_result', 'user_silence_then_praise',
138
+ 'user_interrupted', 'agent_self_corrected', 'user_explicit_approval',
139
+ 'user_shared_output', 'user_provided_correction', 'user_ignored_result',
140
+ ];
141
+ if (!validSignals.includes(signal)) {
142
+ console.warn(`[Evaluator] Unknown signal: ${signal}`);
143
+ return;
144
+ }
145
+ this.feedback.record(signal, this.sessionId, undefined, confidence ?? 0.8);
146
+ }
147
+ // ============== 查询 ==============
148
+ /** 获取综合质量画像 */
149
+ getProfile() {
150
+ return this.profiler.getProfile(this.sessionId);
151
+ }
152
+ /** 获取满意度分数 */
153
+ getSatisfaction() {
154
+ return this.feedback.getSatisfactionScore(this.sessionId);
155
+ }
156
+ /** 获取反馈统计 */
157
+ getFeedbackStats() {
158
+ return this.feedback.stats();
159
+ }
160
+ /** 获取工具准确率 */
161
+ getToolAccuracy() {
162
+ return this.runtimeEvaluator.getToolAccuracy();
163
+ }
164
+ /** 获取结果利用率 */
165
+ getUtilizationRate() {
166
+ return this.postEvaluator.getUtilizationRate();
167
+ }
168
+ /** 获取本次会话的操作数 */
169
+ getOperationCount() {
170
+ return this.pending.size + (this.getProfile().totalOps || 0);
171
+ }
172
+ // ============== 报告生成 ==============
173
+ /** 生成人类可读的评估报告 */
174
+ generateReport() {
175
+ const profile = this.getProfile();
176
+ const feedbackStats = this.getFeedbackStats();
177
+ const toolAcc = this.getToolAccuracy();
178
+ const satisfaction = this.getSatisfaction();
179
+ const lines = [
180
+ '═══ 📊 AgentOS Evaluator 报告 ═══',
181
+ '',
182
+ `🎯 综合评分: ${profile.overallScore}/100`,
183
+ '',
184
+ '📈 分项评分:',
185
+ ` ├─ 参数质量: ${profile.breakdown.preExec}/100`,
186
+ ` ├─ 执行质量: ${profile.breakdown.runtime}/100`,
187
+ ` ├─ 结果验证: ${profile.breakdown.postExec}/100`,
188
+ ` └─ 用户满意度: ${profile.breakdown.userSatisfaction}/100`,
189
+ '',
190
+ `📊 趋势: ${profile.trends.improving ? '📈 上升' : '📉 下降'} (最近${profile.trends.recentOps}次: ${Math.round(profile.trends.recentScore)}/100)`,
191
+ '',
192
+ ];
193
+ if (profile.strengths.length > 0) {
194
+ lines.push('✅ 亮点:');
195
+ for (const s of profile.strengths)
196
+ lines.push(` · ${s}`);
197
+ lines.push('');
198
+ }
199
+ if (profile.warnings.length > 0) {
200
+ lines.push('⚠️ 需改进:');
201
+ for (const w of profile.warnings)
202
+ lines.push(` · ${w}`);
203
+ lines.push('');
204
+ }
205
+ lines.push(`💬 反馈: ${feedbackStats.totalSignals} 信号 (${feedbackStats.positiveSignals}正 / ${feedbackStats.negativeSignals}负)`);
206
+ lines.push(`🛠 工具准确率: ${Object.entries(toolAcc).map(([t, v]) => `${t}:${v.successRate}`).join(', ')}`);
207
+ lines.push(`📐 满意度: ${satisfaction}`);
208
+ lines.push('');
209
+ lines.push('══════════════════════════════');
210
+ return lines.join('\n');
211
+ }
212
+ /** 生成精简版报告(注入 daily log) */
213
+ generateCompactReport() {
214
+ const profile = this.getProfile();
215
+ return [
216
+ `## 📊 AgentOS Evaluator 今日评估`,
217
+ '',
218
+ `**综合评分**: ${profile.overallScore}/100 | Pre:${profile.breakdown.preExec}/100 | Run:${profile.breakdown.runtime}/100 | Post:${profile.breakdown.postExec}/100`,
219
+ `**趋势**: ${profile.trends.improving ? '📈 上升' : '📉 下降'} | **操作数**: ${profile.totalOps}`,
220
+ profile.warnings.length > 0 ? `**⚠️**: ${profile.warnings.join('; ')}` : '',
221
+ profile.strengths.length > 0 ? `**✅**: ${profile.strengths.join('; ')}` : '',
222
+ '',
223
+ ].filter(Boolean).join('\n');
224
+ }
225
+ /** 追加报告到 daily log */
226
+ appendToDailyLog(workspaceRoot) {
227
+ const dateKey = new Date().toISOString().split('T')[0];
228
+ const dailyFile = path.join(workspaceRoot, 'memory', `${dateKey}.md`);
229
+ const report = this.generateCompactReport();
230
+ try {
231
+ const existing = fs.existsSync(dailyFile) ? fs.readFileSync(dailyFile, 'utf-8') : '';
232
+ if (!existing.includes('AgentOS Evaluator')) {
233
+ fs.appendFileSync(dailyFile, `\n${report}\n`, 'utf-8');
234
+ }
235
+ }
236
+ catch (e) {
237
+ console.warn('[Evaluator] Failed to append report:', e);
238
+ }
239
+ }
240
+ // ============== 持久化 ==============
241
+ /** 导出可序列化的状态 */
242
+ exportState() {
243
+ return {
244
+ sessionId: this.sessionId,
245
+ profile: this.getProfile(),
246
+ feedback: this.getFeedbackStats(),
247
+ toolAccuracy: this.getToolAccuracy(),
248
+ utilizationRate: this.getUtilizationRate(),
249
+ exportedAt: new Date().toISOString(),
250
+ };
251
+ }
252
+ /** 导入之前的状态(用于恢复) */
253
+ importState(state) {
254
+ if (state.sessionId)
255
+ this.sessionId = state.sessionId;
256
+ // Profiler/Feedback 不支持完整恢复,只恢复 sessionId
257
+ }
258
+ }
259
+ exports.EvaluationBridge = EvaluationBridge;
260
+ // ============== Singleton ==============
261
+ let _evalBridge = null;
262
+ function getEvaluationBridge(working, sessionId) {
263
+ if (!_evalBridge) {
264
+ if (!working)
265
+ throw new Error('First call requires WorkingMemory instance');
266
+ _evalBridge = new EvaluationBridge(working, sessionId);
267
+ }
268
+ return _evalBridge;
269
+ }
270
+ function resetEvaluationBridge() {
271
+ _evalBridge = null;
272
+ }
273
+ //# sourceMappingURL=evaluation-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluation-bridge.js","sourceRoot":"","sources":["../../src/adapters/evaluation-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Memory Bridge — 将 AgentOS Memory 三层接入 OpenClaw 工作流
3
+ *
4
+ * ┌─────────────┐ ┌──────────────┐ ┌──────────────┐
5
+ * │ MEMORY.md │ → │ Semantic │ ← │ 会话中学习 │
6
+ * │ 旧文件系统 │ │ Memory │ │ 新规则/偏好 │
7
+ * └─────────────┘ └──────┬───────┘ └──────────────┘
8
+ * │
9
+ * ┌──────────────────────┼──────────────────────┐
10
+ * │ │ │
11
+ * ▼ ▼ ▼
12
+ * Session启动 Session运行 Session结束
13
+ * 注入上下文 工具结果缓存 事件→Episodic
14
+ * 消息→Working 偏好→Semantic
15
+ *
16
+ * 用法:
17
+ * 1. Session 启动: MemoryBridge.onSessionStart(workspaceRoot)
18
+ * → 返回要注入的上下文字符串
19
+ * 2. Session 中: MemoryBridge.getWorkingMemory()
20
+ * → 获取 Working Memory 实例
21
+ * 3. Session 结束: MemoryBridge.onSessionEnd()
22
+ * → 清空 Working、同步 Episodic
23
+ */
24
+ import { WorkingMemory } from '../memory/working';
25
+ import { EpisodicMemory } from '../memory/episodic';
26
+ import { SemanticMemoryStore } from '../memory/semantic';
27
+ import { EventType } from '../types';
28
+ export interface MemorySnapshot {
29
+ semantic: Record<string, unknown>;
30
+ episodic: Record<string, unknown>;
31
+ working: Record<string, unknown>;
32
+ }
33
+ export declare class MemoryBridge {
34
+ private working;
35
+ private episodic;
36
+ private semantic;
37
+ private started;
38
+ private startTime;
39
+ constructor(workspaceRoot: string);
40
+ /**
41
+ * Session 启动时调用
42
+ * 返回要注入到系统提示的上下文摘要
43
+ */
44
+ onSessionStart(): string;
45
+ /**
46
+ * Session 运行中:记录一条消息到 Working Memory
47
+ */
48
+ recordMessage(role: 'user' | 'agent' | 'tool', content: string): void;
49
+ /**
50
+ * Session 运行中:缓存工具调用结果
51
+ */
52
+ cacheToolResult(toolName: string, result: unknown): void;
53
+ /**
54
+ * Session 结束:清空 Working + 同步到 Episodic
55
+ *
56
+ * @param autoRecord 是否自动从 Working 提取事件到 Episodic
57
+ */
58
+ onSessionEnd(autoRecord?: boolean): void;
59
+ /**
60
+ * 记录自定义事件到 Episodic Memory
61
+ */
62
+ recordEvent(type: EventType, content: string, tags?: string[], relatedEntities?: string[], importanceBoost?: number): void;
63
+ /** 学习新规则 */
64
+ learnRule(rule: string, source: string): void;
65
+ /** 设置用户偏好 */
66
+ setPreference(key: string, value: unknown): void;
67
+ /** 添加用户事实 */
68
+ addFact(fact: string): void;
69
+ /** 更新项目上下文 */
70
+ setProjectContext(name: string, ctx: {
71
+ description?: string;
72
+ techStack?: string[];
73
+ conventions?: string[];
74
+ architecture?: string;
75
+ knownIssues?: string[];
76
+ }): void;
77
+ /** 获取项目上下文 */
78
+ getProjectContext(name: string): {
79
+ description: string;
80
+ techStack: string[];
81
+ conventions: string[];
82
+ architecture: string;
83
+ knownIssues: string[];
84
+ } | undefined;
85
+ /** 获取完整记忆状态快照 */
86
+ getSnapshot(): MemorySnapshot;
87
+ /** 获取 Working Memory 实例(供中间件使用) */
88
+ getWorkingMemory(): WorkingMemory;
89
+ /** 获取 Semantic Memory 实例 */
90
+ getSemanticMemory(): SemanticMemoryStore;
91
+ /** 获取 Episodic Memory 实例 */
92
+ getEpisodicMemory(): EpisodicMemory;
93
+ /** 获取 session 持续时间(ms) */
94
+ getElapsedMs(): number;
95
+ /**
96
+ * 从 Working Memory 自动提取关键事件到 Episodic
97
+ */
98
+ private autoRecordFromWorking;
99
+ /** 刷新所有持久化(确保写入磁盘) */
100
+ flush(): void;
101
+ /** 生成状态报告 */
102
+ statusReport(): string;
103
+ /**
104
+ * 从现有的 MEMORY.md 文件迁移数据到 Semantic Memory
105
+ * 只运行一次,迁移后旧文件可以保留或删除
106
+ */
107
+ migrateFromMemoryMd(memoryPath: string): {
108
+ imported: number;
109
+ skipped: number;
110
+ };
111
+ }
112
+ /** 获取全局 MemoryBridge 实例 */
113
+ export declare function getMemoryBridge(workspaceRoot?: string): MemoryBridge;
114
+ /** 重置全局实例(用于测试) */
115
+ export declare function resetMemoryBridge(): void;
116
+ //# sourceMappingURL=memory-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-bridge.d.ts","sourceRoot":"","sources":["../../src/adapters/memory-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGrC,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,aAAa,EAAE,MAAM;IAWjC;;;OAGG;IACH,cAAc,IAAI,MAAM;IAqBxB;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrE;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAIxD;;;;OAIG;IACH,YAAY,CAAC,UAAU,UAAO,GAAG,IAAI;IAYrC;;OAEG;IACH,WAAW,CACT,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,eAAe,GAAE,MAAM,EAAO,EAC9B,eAAe,SAAI,GAClB,IAAI;IAMP,YAAY;IACZ,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI7C,aAAa;IACb,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAIhD,aAAa;IACb,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,cAAc;IACd,iBAAiB,CACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE;QACH,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,GACA,IAAI;IAIP,cAAc;IACd,iBAAiB,CAAC,IAAI,EAAE,MAAM;;;;;;;IAM9B,iBAAiB;IACjB,WAAW,IAAI,cAAc;IAQ7B,mCAAmC;IACnC,gBAAgB,IAAI,aAAa;IAIjC,4BAA4B;IAC5B,iBAAiB,IAAI,mBAAmB;IAIxC,4BAA4B;IAC5B,iBAAiB,IAAI,cAAc;IAInC,0BAA0B;IAC1B,YAAY,IAAI,MAAM;IAMtB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6B7B,sBAAsB;IACtB,KAAK,IAAI,IAAI;IAIb,aAAa;IACb,YAAY,IAAI,MAAM;IAgBtB;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAsF/E;AAKD,2BAA2B;AAC3B,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,YAAY,CAQpE;AAED,mBAAmB;AACnB,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC"}
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ /**
3
+ * Memory Bridge — 将 AgentOS Memory 三层接入 OpenClaw 工作流
4
+ *
5
+ * ┌─────────────┐ ┌──────────────┐ ┌──────────────┐
6
+ * │ MEMORY.md │ → │ Semantic │ ← │ 会话中学习 │
7
+ * │ 旧文件系统 │ │ Memory │ │ 新规则/偏好 │
8
+ * └─────────────┘ └──────┬───────┘ └──────────────┘
9
+ * │
10
+ * ┌──────────────────────┼──────────────────────┐
11
+ * │ │ │
12
+ * ▼ ▼ ▼
13
+ * Session启动 Session运行 Session结束
14
+ * 注入上下文 工具结果缓存 事件→Episodic
15
+ * 消息→Working 偏好→Semantic
16
+ *
17
+ * 用法:
18
+ * 1. Session 启动: MemoryBridge.onSessionStart(workspaceRoot)
19
+ * → 返回要注入的上下文字符串
20
+ * 2. Session 中: MemoryBridge.getWorkingMemory()
21
+ * → 获取 Working Memory 实例
22
+ * 3. Session 结束: MemoryBridge.onSessionEnd()
23
+ * → 清空 Working、同步 Episodic
24
+ */
25
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ var desc = Object.getOwnPropertyDescriptor(m, k);
28
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
29
+ desc = { enumerable: true, get: function() { return m[k]; } };
30
+ }
31
+ Object.defineProperty(o, k2, desc);
32
+ }) : (function(o, m, k, k2) {
33
+ if (k2 === undefined) k2 = k;
34
+ o[k2] = m[k];
35
+ }));
36
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
37
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
38
+ }) : function(o, v) {
39
+ o["default"] = v;
40
+ });
41
+ var __importStar = (this && this.__importStar) || (function () {
42
+ var ownKeys = function(o) {
43
+ ownKeys = Object.getOwnPropertyNames || function (o) {
44
+ var ar = [];
45
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
46
+ return ar;
47
+ };
48
+ return ownKeys(o);
49
+ };
50
+ return function (mod) {
51
+ if (mod && mod.__esModule) return mod;
52
+ var result = {};
53
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
54
+ __setModuleDefault(result, mod);
55
+ return result;
56
+ };
57
+ })();
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.MemoryBridge = void 0;
60
+ exports.getMemoryBridge = getMemoryBridge;
61
+ exports.resetMemoryBridge = resetMemoryBridge;
62
+ const working_1 = require("../memory/working");
63
+ const episodic_1 = require("../memory/episodic");
64
+ const semantic_1 = require("../memory/semantic");
65
+ const fs = __importStar(require("fs"));
66
+ class MemoryBridge {
67
+ working;
68
+ episodic;
69
+ semantic;
70
+ started = false;
71
+ startTime;
72
+ constructor(workspaceRoot) {
73
+ this.working = new working_1.WorkingMemory(50000);
74
+ this.episodic = new episodic_1.EpisodicMemory(500);
75
+ this.semantic = new semantic_1.SemanticMemoryStore();
76
+ this.startTime = Date.now();
77
+ // 持久化到 .agentos/ 目录
78
+ this.episodic.enablePersistence(workspaceRoot);
79
+ this.semantic.enablePersistence(workspaceRoot);
80
+ }
81
+ /**
82
+ * Session 启动时调用
83
+ * 返回要注入到系统提示的上下文摘要
84
+ */
85
+ onSessionStart() {
86
+ this.started = true;
87
+ this.startTime = Date.now();
88
+ const parts = [];
89
+ // 1. Semantic Memory 上下文(替代 MEMORY.md)
90
+ const semanticCtx = this.semantic.generateContextSummary();
91
+ if (semanticCtx) {
92
+ parts.push(semanticCtx);
93
+ }
94
+ // 2. Episodic Memory 上下文(最近7天+高重要性事件)
95
+ const episodicCtx = this.episodic.generateContextSummary();
96
+ if (episodicCtx) {
97
+ parts.push(episodicCtx);
98
+ }
99
+ return parts.join('\n\n---\n\n');
100
+ }
101
+ /**
102
+ * Session 运行中:记录一条消息到 Working Memory
103
+ */
104
+ recordMessage(role, content) {
105
+ this.working.addMessage(role, content);
106
+ }
107
+ /**
108
+ * Session 运行中:缓存工具调用结果
109
+ */
110
+ cacheToolResult(toolName, result) {
111
+ this.working.cacheToolResult(toolName, result);
112
+ }
113
+ /**
114
+ * Session 结束:清空 Working + 同步到 Episodic
115
+ *
116
+ * @param autoRecord 是否自动从 Working 提取事件到 Episodic
117
+ */
118
+ onSessionEnd(autoRecord = true) {
119
+ if (!this.started)
120
+ return;
121
+ if (autoRecord) {
122
+ this.autoRecordFromWorking();
123
+ }
124
+ this.episodic.record('note', `Session ended`, ['session'], [], 0);
125
+ this.working.clear();
126
+ this.started = false;
127
+ }
128
+ /**
129
+ * 记录自定义事件到 Episodic Memory
130
+ */
131
+ recordEvent(type, content, tags = [], relatedEntities = [], importanceBoost = 0) {
132
+ this.episodic.record(type, content, tags, relatedEntities, importanceBoost);
133
+ }
134
+ // === Semantic Memory 快捷方法 ===
135
+ /** 学习新规则 */
136
+ learnRule(rule, source) {
137
+ this.semantic.learnRule(rule, source);
138
+ }
139
+ /** 设置用户偏好 */
140
+ setPreference(key, value) {
141
+ this.semantic.setPreference(key, value);
142
+ }
143
+ /** 添加用户事实 */
144
+ addFact(fact) {
145
+ this.semantic.addFact(fact);
146
+ }
147
+ /** 更新项目上下文 */
148
+ setProjectContext(name, ctx) {
149
+ this.semantic.setProjectContext(name, ctx);
150
+ }
151
+ /** 获取项目上下文 */
152
+ getProjectContext(name) {
153
+ return this.semantic.getProjectContext(name);
154
+ }
155
+ // === 查询方法 ===
156
+ /** 获取完整记忆状态快照 */
157
+ getSnapshot() {
158
+ return {
159
+ semantic: this.semantic.getMemory(),
160
+ episodic: { events: this.episodic.getAll(), count: this.episodic.count },
161
+ working: this.working.getState(),
162
+ };
163
+ }
164
+ /** 获取 Working Memory 实例(供中间件使用) */
165
+ getWorkingMemory() {
166
+ return this.working;
167
+ }
168
+ /** 获取 Semantic Memory 实例 */
169
+ getSemanticMemory() {
170
+ return this.semantic;
171
+ }
172
+ /** 获取 Episodic Memory 实例 */
173
+ getEpisodicMemory() {
174
+ return this.episodic;
175
+ }
176
+ /** 获取 session 持续时间(ms) */
177
+ getElapsedMs() {
178
+ return Date.now() - this.startTime;
179
+ }
180
+ // === 私有方法 ===
181
+ /**
182
+ * 从 Working Memory 自动提取关键事件到 Episodic
183
+ */
184
+ autoRecordFromWorking() {
185
+ const state = this.working.getState();
186
+ // 记录消息数
187
+ if (state.recentMessages.length > 0) {
188
+ const userMsgs = state.recentMessages.filter((m) => m.role === 'user').length;
189
+ const agentMsgs = state.recentMessages.filter((m) => m.role === 'agent').length;
190
+ this.episodic.record('note', `Session: ${userMsgs} user msgs, ${agentMsgs} agent responses`, ['session', 'messages'], [], 0);
191
+ }
192
+ // 记录工具调用
193
+ if (state.recentToolResults.size > 0) {
194
+ const toolNames = Array.from(state.recentToolResults.keys());
195
+ this.episodic.record('tool_call', `Tools used: ${toolNames.join(', ')}`, ['tools', ...toolNames], [], 0);
196
+ }
197
+ }
198
+ /** 刷新所有持久化(确保写入磁盘) */
199
+ flush() {
200
+ this.semantic.flush();
201
+ }
202
+ /** 生成状态报告 */
203
+ statusReport() {
204
+ const snapshot = this.getSnapshot();
205
+ const sessionMinutes = Math.round(this.getElapsedMs() / 60000);
206
+ return [
207
+ '═══ AgentOS Memory Bridge ═══',
208
+ `⏱ Session: ${sessionMinutes} min`,
209
+ `🧠 Working: ${snapshot.working.recentMessages ? snapshot.working.recentMessages?.toString().length : 0} messages`,
210
+ `📖 Episodic: ${this.episodic.count} events`,
211
+ `💎 Semantic: ${Object.keys(this.semantic.getMemory().userPreferences || {}).length} prefs, ${this.semantic.getMemory().userFacts.length} facts`,
212
+ '══════════════════════════════',
213
+ ].join('\n');
214
+ }
215
+ // === 迁移 ===
216
+ /**
217
+ * 从现有的 MEMORY.md 文件迁移数据到 Semantic Memory
218
+ * 只运行一次,迁移后旧文件可以保留或删除
219
+ */
220
+ migrateFromMemoryMd(memoryPath) {
221
+ const result = { imported: 0, skipped: 0 };
222
+ if (!fs.existsSync(memoryPath)) {
223
+ console.warn('MEMORY.md not found at', memoryPath);
224
+ return result;
225
+ }
226
+ // 简单解析 MEMORY.md 的 Markdown 结构
227
+ const content = fs.readFileSync(memoryPath, 'utf-8');
228
+ const lines = content.split('\n');
229
+ let currentSection = '';
230
+ const sections = {};
231
+ for (const line of lines) {
232
+ if (line.startsWith('## ')) {
233
+ currentSection = line.replace('## ', '').trim();
234
+ sections[currentSection] = [];
235
+ }
236
+ else if (currentSection && line.trim().startsWith('- ')) {
237
+ sections[currentSection]?.push(line.trim().replace(/^-\s*/, ''));
238
+ }
239
+ }
240
+ // 导入项目上下文
241
+ const coderevSection = sections['📦 核心项目:coderev'] || sections['📦 coderev'] || [];
242
+ if (coderevSection.length > 0) {
243
+ this.semantic.setProjectContext('coderev', {
244
+ description: 'AI 驱动的代码审查 CLI 工具',
245
+ techStack: ['TypeScript', 'Node.js', 'CLI'],
246
+ conventions: coderevSection.slice(0, 5),
247
+ });
248
+ result.imported++;
249
+ }
250
+ const agentosSection = sections['📦 Sentinel AgentOS'] || sections['AgentOS'] || [];
251
+ if (agentosSection.length > 0 || sections['Sentinel AgentOS(项目 #2)']) {
252
+ this.semantic.setProjectContext('agentos', {
253
+ description: 'AI Agent 操作系统 — 确定性 Guard + 分层记忆 + 自动评估',
254
+ techStack: ['TypeScript', 'Node.js', 'Jest'],
255
+ });
256
+ result.imported++;
257
+ }
258
+ // 导入用户事实
259
+ if (sections['👤 关于老板']) {
260
+ for (const fact of sections['👤 关于老板']) {
261
+ this.semantic.addFact(fact);
262
+ result.imported++;
263
+ }
264
+ }
265
+ if (sections['🆔 关于我']) {
266
+ for (const fact of sections['🆔 关于我']) {
267
+ this.semantic.addFact(fact);
268
+ result.imported++;
269
+ }
270
+ }
271
+ // 导入工作方式中的规则
272
+ const workwaySection = sections['🤖 我的工作方式'] || [];
273
+ for (const rule of workwaySection) {
274
+ this.semantic.learnRule(rule, 'MEMORY.md migration');
275
+ result.imported++;
276
+ }
277
+ // 导入环境记录
278
+ if (sections['💻 环境记录']) {
279
+ for (const env of sections['💻 环境记录']) {
280
+ this.semantic.addFact(env);
281
+ result.imported++;
282
+ }
283
+ }
284
+ // 导入关键决策
285
+ const decisionsSection = sections['💡 关键决策记录'] || [];
286
+ if (decisionsSection.length > 0) {
287
+ for (const decision of decisionsSection) {
288
+ this.episodic.record('decision', decision, ['memigration'], []);
289
+ result.imported++;
290
+ }
291
+ }
292
+ this.semantic.flush();
293
+ return result;
294
+ }
295
+ }
296
+ exports.MemoryBridge = MemoryBridge;
297
+ // ============= Singleton =============
298
+ let _bridge = null;
299
+ /** 获取全局 MemoryBridge 实例 */
300
+ function getMemoryBridge(workspaceRoot) {
301
+ if (!_bridge && workspaceRoot) {
302
+ _bridge = new MemoryBridge(workspaceRoot);
303
+ }
304
+ if (!_bridge) {
305
+ throw new Error('MemoryBridge not initialized. Call getMemoryBridge(workspaceRoot) first.');
306
+ }
307
+ return _bridge;
308
+ }
309
+ /** 重置全局实例(用于测试) */
310
+ function resetMemoryBridge() {
311
+ if (_bridge) {
312
+ _bridge.flush();
313
+ _bridge = null;
314
+ }
315
+ }
316
+ //# sourceMappingURL=memory-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-bridge.js","sourceRoot":"","sources":["../../src/adapters/memory-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/adapters/migrate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ /**
37
+ * 迁移脚本:从现有 MEMORY.md → AgentOS Semantic Memory
38
+ *
39
+ * 运行: npx ts-node src/adapters/migrate.ts
40
+ * 迁移后旧 MEMORY.md 不会删除,只是作为额外备份
41
+ */
42
+ const memory_bridge_1 = require("./memory-bridge");
43
+ const path = __importStar(require("path"));
44
+ const WORKSPACE = path.resolve(__dirname, '..', '..', '..', '..');
45
+ const MEMORY_MD = path.join(WORKSPACE, 'MEMORY.md');
46
+ console.log('═══════════════════════════════');
47
+ console.log('🧠 MEMORY.md → AgentOS 迁移');
48
+ console.log('═══════════════════════════════');
49
+ console.log(`Workspace: ${WORKSPACE}`);
50
+ console.log(`MEMORY.md: ${MEMORY_MD}`);
51
+ console.log('');
52
+ const bridge = new memory_bridge_1.MemoryBridge(WORKSPACE);
53
+ const result = bridge.migrateFromMemoryMd(MEMORY_MD);
54
+ bridge.flush();
55
+ console.log(`✅ 迁移完成!`);
56
+ console.log(` 导入: ${result.imported} 条`);
57
+ console.log(` 跳过: ${result.skipped} 条`);
58
+ console.log('');
59
+ console.log('📊 迁移后状态:');
60
+ console.log(bridge.statusReport());
61
+ console.log('');
62
+ console.log('💡 MEMORY.md 文件未删除,可手动删除或保留作备份。');
63
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/adapters/migrate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;GAKG;AACH,mDAA+C;AAC/C,2CAA6B;AAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAEpD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAC/C,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AACzC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAEhB,MAAM,MAAM,GAAG,IAAI,4BAAY,CAAC,SAAS,CAAC,CAAC;AAE3C,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACrD,MAAM,CAAC,KAAK,EAAE,CAAC;AAEf,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACvB,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;AAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACzB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC"}
package/dist/cli.js CHANGED
@@ -340,8 +340,11 @@ const guard = require('../sentinel-guard');
340
340
  fatal(`Unknown command: ${cmd}. Run 'sentinel-agentos help' for usage.`);
341
341
  }
342
342
  }
343
- main().catch((err) => {
344
- console.error('❌', err.message);
345
- process.exit(1);
346
- });
343
+ // Only auto-run when invoked directly, not via require/test
344
+ if (require.main === module) {
345
+ main().catch((err) => {
346
+ console.error('❌', err.message);
347
+ process.exit(1);
348
+ });
349
+ }
347
350
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sentinel-agentos",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Sentinel AgentOS — 确定性 Guard 层 + 分层记忆 + 自动评估,让任何 Agent 变得可靠、可审计、可改进",
5
5
  "keywords": [
6
6
  "agent",