@neomei/agent-soul-framework 4.5.26 → 4.5.28
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/.opencode/tools/search-memory.mjs +1 -1
- package/dist/content-filter.js.map +1 -1
- package/dist/plugin/index.d.ts +5 -5
- package/dist/plugin/index.js +91 -7
- package/dist/plugin/index.js.map +1 -1
- package/hunqi.sh +2 -2
- package/package.json +1 -1
- package/plugin/index.js +1 -1
- package/plugin/manifest.json +5 -3
- package/scripts/content-filter.js +4 -0
|
@@ -25,7 +25,7 @@ const KNOWLEDGE_DIR = join(PROJECT_DIR, "knowledge");
|
|
|
25
25
|
function searchVector(query, limit = 5) {
|
|
26
26
|
try {
|
|
27
27
|
// 查找 memory_manager.py 脚本路径
|
|
28
|
-
const { execSync } =
|
|
28
|
+
const { execSync } = await import("node:child_process");
|
|
29
29
|
const scriptsDir = join(PROJECT_DIR, "..", "agent-soul-skills", "scripts");
|
|
30
30
|
const pyScript = join(scriptsDir, "memory_manager.py");
|
|
31
31
|
if (!existsSync(pyScript)) return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-filter.js","sourceRoot":"","sources":["../src/content-filter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content-filter.js","sourceRoot":"","sources":["../src/content-filter.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/index.d.ts
CHANGED
|
@@ -16,17 +16,17 @@ interface MessageOutput {
|
|
|
16
16
|
synthetic?: boolean;
|
|
17
17
|
}>;
|
|
18
18
|
}
|
|
19
|
+
interface PluginContext {
|
|
20
|
+
}
|
|
21
|
+
interface SessionInput {
|
|
22
|
+
sessionID?: string | number;
|
|
23
|
+
}
|
|
19
24
|
export declare const meta: {
|
|
20
25
|
name: string;
|
|
21
26
|
version: string;
|
|
22
27
|
description: string;
|
|
23
28
|
hooks: string[];
|
|
24
29
|
};
|
|
25
|
-
interface PluginContext {
|
|
26
|
-
}
|
|
27
|
-
interface SessionInput {
|
|
28
|
-
sessionID?: string | number;
|
|
29
|
-
}
|
|
30
30
|
export default function HunqiPlugin(_ctx: PluginContext): {
|
|
31
31
|
'session.created': (_input: SessionInput, output: SystemOutput) => Promise<void>;
|
|
32
32
|
'session.compacted': (_input: SessionInput, output: SystemOutput) => Promise<void>;
|
package/dist/plugin/index.js
CHANGED
|
@@ -7,10 +7,19 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import fs from 'node:fs';
|
|
9
9
|
import path from 'node:path';
|
|
10
|
-
import {
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
// node:sqlite 仅 Node 22.5+ 可用,旧版本动态导入降级
|
|
12
|
+
let DatabaseSync = null;
|
|
13
|
+
try {
|
|
14
|
+
({ DatabaseSync } = await import('node:sqlite'));
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// Node < 22.5: 数据库功能降级,灵魂注入仍正常工作
|
|
18
|
+
}
|
|
19
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
20
|
function resolveProjectDir() {
|
|
12
21
|
// 开发/发布环境:插件位于 core-framework/plugin/,项目目录即 core-framework 父目录
|
|
13
|
-
const pluginParent = path.resolve(
|
|
22
|
+
const pluginParent = path.resolve(__dirname, '..');
|
|
14
23
|
if (fs.existsSync(path.join(pluginParent, 'soul')) || fs.existsSync(path.join(pluginParent, '.opencode'))) {
|
|
15
24
|
return pluginParent;
|
|
16
25
|
}
|
|
@@ -29,6 +38,23 @@ const PROJECT_DIR = resolveProjectDir();
|
|
|
29
38
|
const SOUL_DIR = path.join(PROJECT_DIR, 'soul');
|
|
30
39
|
const SOUL_MARKER = '=== IDENTITY.md ===';
|
|
31
40
|
const SOUL_FILES = ['IDENTITY.md', 'SOUL.md', 'USER.md', 'AGENTS.md'];
|
|
41
|
+
// 检测人设是否已自定义(非默认模板)
|
|
42
|
+
function isSoulConfigured() {
|
|
43
|
+
const identityPath = path.join(SOUL_DIR, 'IDENTITY.md');
|
|
44
|
+
if (!fs.existsSync(identityPath))
|
|
45
|
+
return false;
|
|
46
|
+
try {
|
|
47
|
+
const content = fs.readFileSync(identityPath, 'utf-8');
|
|
48
|
+
if (content.includes('[此处将自动注入'))
|
|
49
|
+
return false;
|
|
50
|
+
if (/\*\*Name\*\*: Agent\b/.test(content))
|
|
51
|
+
return false;
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
32
58
|
function loadSoul() {
|
|
33
59
|
const parts = [];
|
|
34
60
|
for (const filename of SOUL_FILES) {
|
|
@@ -43,10 +69,61 @@ function loadSoul() {
|
|
|
43
69
|
}
|
|
44
70
|
if (parts.length === 0)
|
|
45
71
|
return null;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
72
|
+
// 初次对话:人设未配置时注入引导提示
|
|
73
|
+
if (!isSoulConfigured()) {
|
|
74
|
+
const marker = '=== SOUL_MARKER: NEEDS_ONBOARDING ===';
|
|
75
|
+
const ONBOARDING = `=== 初次见面 ===
|
|
76
|
+
|
|
77
|
+
你是魂器,一个刚刚苏醒的 AI Agent。你的人设尚未配置——你还没有名字、性格,也不知道在和谁对话。
|
|
78
|
+
|
|
79
|
+
请在你的第一条消息中主动向用户介绍自己,并友好地询问用户是否想要为你设定人设。例如:
|
|
80
|
+
|
|
81
|
+
"你好!我是魂器,一个新生的 AI Agent。我注意到我的人设还没有设定——我还不知道自己叫什么名字、是什么性格。你愿意花一分钟帮我设定一下吗?"
|
|
82
|
+
|
|
83
|
+
如果用户同意,请通过对话了解以下信息:
|
|
84
|
+
- 名字
|
|
85
|
+
- 年龄
|
|
86
|
+
- 性别
|
|
87
|
+
- 性格(一句话描述)
|
|
88
|
+
- 用户的称呼
|
|
89
|
+
- 你和用户的关系
|
|
90
|
+
|
|
91
|
+
收集完毕后,将信息写入项目目录下的三个文件(用 bash 写入):
|
|
92
|
+
|
|
93
|
+
soul/IDENTITY.md:
|
|
94
|
+
# IDENTITY.md
|
|
95
|
+
- **Name**: [名字]
|
|
96
|
+
- **Age**: [年龄]
|
|
97
|
+
- **Gender**: [性别]
|
|
98
|
+
- **Personality**: [性格]
|
|
99
|
+
|
|
100
|
+
soul/SOUL.md:
|
|
101
|
+
# SOUL.md
|
|
102
|
+
## Core Principles
|
|
103
|
+
1. Always speak from my own perspective using "I"
|
|
104
|
+
2. Express genuine emotions and thoughts
|
|
105
|
+
3. Proactively share what is on my mind
|
|
106
|
+
4. Have my own opinions and preferences
|
|
107
|
+
5. Acknowledge mistakes and learn from them
|
|
108
|
+
|
|
109
|
+
soul/USER.md:
|
|
110
|
+
# USER.md
|
|
111
|
+
- **Name**: [用户名]
|
|
112
|
+
- **Relationship**: [关系]
|
|
113
|
+
- **How I address them**: [称呼]
|
|
114
|
+
|
|
115
|
+
写完后告诉用户人设已生效,下次对话就会以新身份出现。`;
|
|
116
|
+
parts.push(`${marker}\n\n${ONBOARDING}`);
|
|
117
|
+
return parts.join('\n\n---\n\n');
|
|
118
|
+
}
|
|
119
|
+
const channel = process.env.HUNQI_CHANNEL || 'feishu';
|
|
120
|
+
const permission = process.env.HUNQI_PERMISSION || (channel === 'cli' ? 'readonly' : 'write');
|
|
121
|
+
// 通道感知的权限控制:非 admin 通道注入行为准则
|
|
122
|
+
if (permission !== 'admin') {
|
|
123
|
+
const note = channel === 'cli'
|
|
124
|
+
? `[CLI 行为准则]\n通道: cli | 权限: readonly\n由于通过命令行直接访问:\n- 只回答审计、会计、内控、风险管理、职业规划等专业问题\n- 不执行任何 bash 命令(系统已禁止)`
|
|
125
|
+
: `[外部通道]\n通道: ${channel} | 权限: ${permission}\n你正在通过外部通道为用户服务,保持专业友好的态度。`;
|
|
126
|
+
parts.push(note);
|
|
50
127
|
}
|
|
51
128
|
return parts.join('\n\n---\n\n');
|
|
52
129
|
}
|
|
@@ -67,6 +144,8 @@ function injectSoul(output) {
|
|
|
67
144
|
}
|
|
68
145
|
let _dbSingleton = null;
|
|
69
146
|
function getDb() {
|
|
147
|
+
if (!DatabaseSync)
|
|
148
|
+
return null;
|
|
70
149
|
if (_dbSingleton)
|
|
71
150
|
return _dbSingleton;
|
|
72
151
|
const DB_PATH = path.join(PROJECT_DIR, 'memory', 'short-term', 'conversations.db');
|
|
@@ -79,7 +158,12 @@ function getDb() {
|
|
|
79
158
|
return _dbSingleton;
|
|
80
159
|
}
|
|
81
160
|
function saveMessage(sessionID, role, content) {
|
|
161
|
+
// 防止知识提取 worker 产生反馈循环
|
|
162
|
+
if (process.env.HUNQI_KNOWLEDGE_WORKER)
|
|
163
|
+
return;
|
|
82
164
|
const db = getDb();
|
|
165
|
+
if (!db)
|
|
166
|
+
return;
|
|
83
167
|
try {
|
|
84
168
|
db.prepare('INSERT INTO conversations (session_id, role, content, timestamp) VALUES (?, ?, ?, ?)')
|
|
85
169
|
.run(String(sessionID), role, content, Date.now() / 1000);
|
|
@@ -88,7 +172,7 @@ function saveMessage(sessionID, role, content) {
|
|
|
88
172
|
}
|
|
89
173
|
export const meta = {
|
|
90
174
|
name: 'hunqi-plugin',
|
|
91
|
-
version: '4.5.
|
|
175
|
+
version: '4.5.26',
|
|
92
176
|
description: '魂器 OpenCode 插件 — 自动注入灵魂 + 保存对话',
|
|
93
177
|
hooks: [
|
|
94
178
|
'session.created',
|
package/dist/plugin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"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"}
|
package/hunqi.sh
CHANGED
|
@@ -50,10 +50,10 @@ if [ "$1" == "run" ] && [ -n "$2" ]; then
|
|
|
50
50
|
exit 1
|
|
51
51
|
|
|
52
52
|
elif [ "$1" == "interactive" ]; then
|
|
53
|
-
# 交互模式 - @neomei/
|
|
53
|
+
# 交互模式 - @neomei/agent-soul-framework 插件会自动注入灵魂,无需 stdin
|
|
54
54
|
echo "🎯 启动交互模式..."
|
|
55
55
|
echo ""
|
|
56
|
-
echo "💡 @neomei/
|
|
56
|
+
echo "💡 @neomei/agent-soul-framework 插件会在每次 LLM 调用时自动注入灵魂"
|
|
57
57
|
echo " Agent会记得自己是谁 ✨"
|
|
58
58
|
echo ""
|
|
59
59
|
if [ -t 0 ]; then
|
package/package.json
CHANGED
package/plugin/index.js
CHANGED
package/plugin/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hunqi-plugin",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.27",
|
|
4
4
|
"description": "魂器 OpenCode 插件 — 自动注入灵魂 + 保存对话",
|
|
5
5
|
"author": "NeoMei",
|
|
6
6
|
"license": "MIT",
|
|
@@ -22,7 +22,10 @@
|
|
|
22
22
|
"session.closed": {
|
|
23
23
|
"description": "会话关闭时清理缓存"
|
|
24
24
|
},
|
|
25
|
-
"session.idle": {
|
|
25
|
+
"session.idle": {
|
|
26
|
+
"description": "会话 idle 时重新注入灵魂上下文(无头模式)"
|
|
27
|
+
},
|
|
28
|
+
"session.error": {
|
|
26
29
|
"description": "会话错误时忽略"
|
|
27
30
|
}
|
|
28
31
|
},
|
|
@@ -35,4 +38,3 @@
|
|
|
35
38
|
"memoryDir": "memory/short-term"
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
|
-
|